Todos os projetos
Case corporativo

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%.

Papel
Autor · produto, arquitetura e engenharia
Período
jun a ago 2026
Stack
  • Python
  • FastAPI
  • React
  • pdfplumber
  • Tesseract
  • Gemini
  • Claude
  • Docker
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%
Medições de um caso real de referência, antes e depois de priorizar o texto nativo. Os números não incluem dados do processo.

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

UploadPDF, imagem, planilhaDetecçãoFormato e camadaTexto nativoCoordenadas e tabelasOCRSem texto · DPI 300→500PáginasEvita somar em dobroIASó páginas suspeitasNormalizaçãoValores e limitesQuality gateDígito verificadorUnificaçãoSoma por raiz do CNPJPlanilha + CRMAnexo e etapa do cardFila de revisãoNunca vai ao CRM

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.

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.

Quer algo parecido no seu time?

Falar comigo