← Todos os cases

Produção · empresa de educação

Triagem de documentos antes do OCR

Desenvolvimento de um validador visual em duas etapas, com ConvNeXt-Tiny, que descarta documentos ilegíveis ou do tipo errado antes da extração no Document AI.

Papel
Treinamento dos modelos, serving e integração
Status
Em produção
Stack
  • Python
  • FastAPI
  • PyTorch
  • ConvNeXt-Tiny
  • OpenCV
  • NestJS
  • GCP Document AI
  • GCS
documento(PDF / imagem)Document AI cobrapor página processadapositivos por tipo+ negativosquality gate(branco, blur)ConvNeXt-Tinyqual tipo?validador bináriodo tipotreinoTTA só na dúvidainválido →volta com motivoválidoDocument AI(OCR)camposvalidados~45% menos custo de OCRclassificador: 98,3% no split de teste

Problema

OCR e extração com Document AI são cobrados por página processada. Sem triagem, documentos em branco, desfocados ou do tipo errado pagam OCR e só falham depois, na validação dos campos.

Dados disponíveis

Imagens e PDFs de documentos pessoais e acadêmicos de vários tipos. O treino usa positivos rotulados por tipo e exemplos negativos fora de escopo, com manifestos e datasets isolados por tipo.

Decisões de arquitetura

Classificar antes de ler

A API de documentos chama o validador antes do OCR. Reprovado, o documento volta com o motivo e o Document AI nem é acionado.

Duas etapas: tipo e validade

Um classificador ConvNeXt-Tiny prevê o tipo — pulado quando o tipo já é informado — e um validador binário especializado decide se aquele documento é válido.

Gastar inferência só quando precisa

Um quality gate descarta páginas em branco, desfocadas ou de baixa resolução antes do modelo. TTA com quatro vistas só entra na faixa de confiança intermediária, com thresholds por modelo.

Serving pensado para cold start

Modelos carregados em cache e aquecidos no boot, concorrência limitada por semáforo. Do lado da API, timeout de 90 s e nova tentativa em caso de cold start.

Implementação

  • Pipeline de treino separado em corpus, manifestos, sampling, treino e avaliação, com métricas versionadas por modelo.
  • Registry que seleciona versão e threshold por tipo de documento.
  • Documentos multipágina: até 8 páginas, válido se alguma passar, com aceite antecipado acima de 0,97.
  • Integração na API NestJS: validação e OCR com tempos medidos separadamente; o OCR recebe a URI do GCS.

Resultado

  • ~45%menos custo de OCR no Document AI (GCP)
  • 98,3%de acurácia do classificador de tipo no split de teste (1.500 imagens)

Documentos inválidos são descartados antes do OCR: redução aproximada de 45% no custo do Document AI.

Limitações e aprendizados

  • A acurácia é de um split de teste versionado, não uma garantia sobre o tráfego real.
  • O percentual de economia é aproximado.
  • Tipos de documento e volumes detalhados ficam de fora por confidencialidade.
Próximo caseCast Review →