Leitura automática de recuperação judicial
Extrator de Credores
Centenas de páginas de credores viram planilha auditável em minutos, com CPF/CNPJ validado e desvio do passivo de 46% para 0%.
- mais rápido num PDF de 120 páginas (45 → 5,5 min)
- 8×
- de desvio do passivo extraído (antes: 46%)
- 0%
- testes automatizados
- 354
- extensões de arquivo aceitas
- 10
Números medidos no repositório.
Tempo de processamento
PDF de 120 páginas, ~7 mil credores
- IA em todas as páginas~45 min
- Texto nativo primeiro~5,5 min
Desvio do passivo extraído vs. total impresso
mesmo documento
- Antes da correção do leitor46%
- Depois0%
Contexto e problema
Em recuperações judiciais, a lista de credores chega em PDFs de centenas de páginas (às vezes escaneados), com a mesma lista impressa em várias camadas (consolidada, por empresa, partes relacionadas), totais e subtotais no meio. Para avaliar a exposição, alguém precisava transcrever credores, CPF/CNPJ e valores à mão, um processo lento e cheio de armadilhas: credores duplicados e até CEPs somados como valores.
O Extrator de Credores lê PDFs, imagens e planilhas, extrai credores e valores, valida os documentos, unifica por raiz do CNPJ e anexa no CRM uma planilha pronta para análise, com uma fila de revisão para o que não fecha.
Restrições que eu me impus
- A saída da extração é palpite, não dado. Tudo passa por validação antes de chegar ao CRM, e o que falha vira revisão humana.
- A soma tem que fechar. O total extraído é comparado com o total impresso no documento.
- IA só onde precisa. Ela é cara e lenta, e erra valores quando o texto nativo já resolve.
- Lista auditável. Cada linha precisa ser rastreável até a página de origem.
Decisões que definiram o produto
Arquitetura
O arquivo é lido primeiro como texto nativo, usando coordenadas e tabelas. O OCR só entra em páginas sem texto, com resolução maior quando preciso. As páginas são classificadas para não somar a mesma lista duas vezes, e a IA só olha o que ficou suspeito. Depois vêm a normalização, a validação, a unificação por raiz do CNPJ e a planilha anexada ao CRM.Dígito verificador inválido, documento não resolvido, valor zerado, fora de faixa ou maior que o total impresso: a linha vai para uma fila de revisão humana e nunca chega ao CRM. Um arquivo sem a empresa em recuperação identificada é bloqueado inteiro.
Planilhas pulam a leitura de PDF e entram direto na normalização. As páginas são processadas em paralelo, com o número de workers limitado à CPU disponível no contêiner, e um cache pelo hash do arquivo evita reprocessar o mesmo documento.
Meu papel
Fiz tudo: do protótipo, um script simples com interface mínima, à versão atual, com núcleo de extração em módulos, API, interface em React, agendador, quality gate e 354 testes, incluindo testes de regressão por caso.
O que o produto entrega
- Entrada flexível: PDF nativo ou escaneado, seis extensões de imagem e planilhas.
- Processamento individual e em lote, com histórico e um modo agendado que deduplica arquivos repetidos.
- Planilha final para o CRM, além de CSV e um resumo executivo em PDF.
- Tela de revisão para as linhas que o quality gate segurou.
O que eu faria diferente
- Testar com a saída real do extrator. Um teste de regressão passou por semanas com um dado injetado à mão, enquanto a correção real não rodava em produção.
- Um schema único para o registro de credor. Um campo novo precisava ser lembrado em cinco lugares, e esquecer um deles fazia o dado sumir em silêncio.
- Smoke test de ponta a ponta para cada exportação. Um endpoint respondeu erro em todas as chamadas até alguém usá-lo de verdade.