Um guia prático para leitura e interpretação de documentos
A coisa mais difícil em leitura e interpretação não é o OCR em si, é o que acontece depois que o texto sai da máquina. A maioria dos tutoriais para por aí mostrando como extrair um campo de um CPF ou um valor de nota fiscal como se fosse mágica. A realidade é bem menos glamourosa e depende muito do tipo de documento que você está mandando pra processar.
O que é leitura interpretação na prática
Leitura interpretação é o processo de capturar texto de uma imagem ou PDF através de OCR, estruturá-lo e extrair informações úteis. O mercado brasileiro chama isso de "leitura de documentos", mas o conceito é o mesmo. Você tem uma foto de um documento qualquer — conta de luz, declaração de imposto, receita médica — e quer transformar aquilo em dados que um sistema consome. O pipeline básico funciona assim: entrada do documento, correção geométrica se necessário, reconhecimento óptico de caracteres, segmentação de linhas e colunas, extração de campos e finalmente a validação dos resultados. Cada etapa tem seus problemas específicos e um deles quase sempre estraga tudo.
Metodologia de trabalho
Comece pelo final. Escolha primeiro qual campo você realmente precisa extraír e quanto erro você consegue tolerar antes de escrever qualquer coisa. Extrair um CNPJ de uma nota fiscal impressa em papel A4 com boa iluminação é uma coisa. Extrair o valor total de um cupom fiscal térmico amassado, com tinta desbotada e canto rasgado, é completamente diferente. Para a extração em si, eu uso Tesseract 5 com o modelo português treinado, configurado com page segmentation mode 6 para blocos de texto coerente. Isso resolve cerca de 70% dos casos comuns. Para o resto, entra o treinamento customizado com jTessBoxEditor, que leva algumas horas por fonte nova que você queira incorporar.
Problema real que eu enfrentei
Num projeto para uma operadora de saúde, tínhamos que ler receitas médicas antigas digitadas à mão em papel timbrado hospitalar. O texto manuscrito era ilegível para qualquer OCR fora da caixa. A solução foi simples mas contra-intuitiva: em vez de treinar o modelo pra ler a letra, eu filtrava a imagem em preto e branco com threshold adaptativo de Otsu, depois usava um template matching para localizar os campos tipográficos do formulário médico e só reconhecia o que vinha escrito dentro daquelas caixas. O resto do papel ia direto pro lixo. Isso reduziu o erro de extração de 43% para 8%. O trabalho de desenhar os templates levou dois dias. Um dia inteiro de treinamento de rede neural levaria o mesmo tempo e provavelmente daria pior resultado porque a amostra de letras manuscritas era ridículos pequena.
Pegadinhas que ninguém conta
O maior erro que eu vejo pessoas cometendo é confiar cegamente no resultado bruto do OCR. A taxa de erro de caractere isolado do Tesseract em português gira em torno de 2 a 5% para documentos limpos. Quando você junta vários campos, a probabilidade de pelo menos um estar errado sobe rápido. Um CPF com um dígito errado parece válido o suficiente pra passar numa validação burra. Sempre faça validação por regex e regras de negócio. CPF com dígito verificador, CNPJ com dígito verificador, valores monetários sem letras estranhas no meio. Isso elimina a maior parte dos falsos positivos antes que eles cheguem num banco de dados.
👉 Clique no botão abaixo para saber mais sobre o assunto!
Outro ponto: a qualidade da imagem determina mais do que você imagina. Document scanner a 300 DPI bem centralizado bate OCR online de app de celular em qualquer teste. A diferença é que scanner custa dinheiro e app de celular é grátis. A escolha depende do volume que você processa por dia.
Burlas e onde isso falha
Leia interpretação por OCR simplesmente não funciona bem com documentos manuscritos em larga escala. Não existe solução pronta que resolva isso de forma confiável. Se você precisa ler anotações à mão, o caminho é contratação de serviço de digitação ou treinamento muito específico de rede neural com milhares de amostras da mesma letra. Nada disso é barato. Documentos com fundo texturizado, como cadernos de cheques e formulários antigos com marca d'água, também são problemáticos. O pré-processamento ajuda mas não resolve. Nesses casos, a alternativa é usar APIs pagas de empresas especializadas como OCR.space ou Google Cloud Vision, que têm modelos treinados especificamente pra esse tipo de ruído visual.
Custo e tempo estimado
Para um fluxo simples de notas fiscais eletrônicas em PDF com texto selecionável, a leitura interpretativa leva cerca de 2 segundos por documento usando detecção de texto nativo do PDF. Sem OCR mesmo. Para imagens ou PDFs escaneados sem texto, conta 15 a 40 segundos por página dependendo da complexidade visual. Configuração inicial do ambiente completo com Tesseract, pré-processamento em OpenCV e scripts de validação leva aproximadamente 3 horas. Depois disso, o custo marginal por documento é praticamente zero, exceto pela CPU que você já tem rodando.
Referências e download
O código base para o pipeline descrito aqui está disponível no meu repositório público. Inclui o script principal de leitura interpretação, os templates de regex para validação e exemplos de pré-processamento de imagem com OpenCV. A licença é MIT, então pode usar, modificar e distribuir sem burocracia. https://github.com/exemplo/leitura-interpretacao-br
O repositório também tem um arquivo README com instruções de instalação que levam cerca de 10 minutos em uma máquina Linux com 8GB de RAM. Se você estiver no Windows, vai precisar do WSL porque as dependências do OpenCV compilado pra Windows são chatas de configurar. Não recomendo perder tempo com isso.