# app/layouts/equatorial_go.py import re from datetime import datetime import fitz import logging def converter_valor(valor_str): try: if not valor_str: return 0.0 valor_limpo = str(valor_str).replace('.', '').replace(',', '.') valor_limpo = re.sub(r'[^\d.]', '', valor_limpo) return float(valor_limpo) if valor_limpo else 0.0 except (ValueError, TypeError): return 0.0 def extrair_dados(texto_final): import logging logging.debug("\n========== INÍCIO DO TEXTO EXTRAÍDO ==========\n" + texto_final + "\n========== FIM ==========") def extrair_seguro(patterns, texto_busca, flags=re.IGNORECASE | re.MULTILINE): if not isinstance(patterns, list): patterns = [patterns] for pattern in patterns: match = re.search(pattern, texto_busca, flags) if match: for group in match.groups(): if group: return group.strip() return "" nota_fiscal = extrair_seguro(r'NOTA FISCAL Nº\s*(\d+)', texto_final) # --- Unidade Consumidora (UC): 8–12 dígitos, SEM hífen --- uc = extrair_seguro([ r'UNIDADE\s*CONSUMIDORA\D*?(\d{8,12})', r'\bUC\D*?(\d{8,12})', r'INSTALA[ÇC][ÃA]O\D*?(\d{8,12})', ], texto_final) # fallback: maior sequência "solta" de 8–10 dígitos sem hífen if not uc: seqs = re.findall(r'(?