por que meu ocr está impreciso
O que o OCR erra, e como corrigir
OCR é reconhecimento, não conversão, então ele tem uma taxa de acerto e não um resultado. A maior parte do que determina essa taxa foi decidida antes de o arquivo chegar a qualquer programa — no scanner.
01
O que o OCR está fazendo
O reconhecimento óptico de caracteres pega a imagem de uma página, encontra as formas que parecem texto e decide de qual caractere cada forma mais se aproxima. Os motores modernos depois conferem o resultado contra um modelo de linguagem, e é por isso que um "rn" lido errado como "m" costuma ser corrigido em silêncio numa palavra real e deixado como está num código de produto.
Esse último ponto é o que precisa ser entendido. O OCR é mais preciso justamente onde você menos precisa — prosa comum, em que o contexto o resgata — e menos preciso em números de série, referências de conta e cifras, em que não há contexto para resgatar nada e em que um erro custa mais caro.
02
O que arruína a precisão
Resolução abaixo de 300 DPI. É o maior fator isolado. A 300 DPI, um caractere de 10 pontos tem cerca de 40 pixels de altura e é inequívoco. A 150 DPI ele tem 20 pixels e o motor está chutando entre formas parecidas. Digitalizar acima de 400 DPI raramente ajuda e deixa tudo mais lento.
Inclinação. Uma página digitalizada uns dois graus fora do prumo é muito mais difícil de ler, porque a detecção de linhas pressupõe linhas de base horizontais. Dois graus já bastam para atrapalhar e passam fácil despercebidos a olho nu.
Contraste ruim. Fotocópias fracas, fundos acinzentados, papel colorido e marca-texto sobre a escrita reduzem a separação entre tinta e papel de que o motor depende.
Defeitos de JPEG. Comprimir muito uma digitalização antes de rodar o OCR borra as bordas dos caracteres. Se você vai fazer as duas coisas, OCR primeiro e compressão depois.
Diagramação. Texto em várias colunas, tabelas, boxes e notas de rodapé obrigam o motor a descobrir a ordem de leitura antes de ler qualquer coisa, e errar isso embaralha um reconhecimento que de resto era perfeito.
03
O que o OCR não vai fazer
Letra de mão, em geral. Reconhecer letra cursiva é um problema substancialmente mais difícil que reconhecer letra de forma impressa, e o OCR de uso geral vai mal nisso. Letras de forma maiúsculas e bem-feitas às vezes funcionam.
Reconstruir uma tabela direito. Ele muitas vezes lê cada célula corretamente e ainda assim produz uma tabela estruturalmente errada, porque decidir onde as colunas começam é uma inferência separada da leitura dos caracteres.
Recuperar informação que não está lá. Se a digitalização está fraca demais para você ler um dígito com certeza, nenhum motor vai se sair melhor — e, ao contrário de você, ele vai se comprometer com uma resposta sem sinalizar a dúvida.
04
Como obter um resultado melhor
Digitalize de novo, se puder. Trinta segundos a 300 DPI, reto, com bom contraste, ganham de qualquer quantidade de pós-processamento numa digitalização ruim. Se o documento vai ser usado para valer, é tempo bem gasto.
Endireite antes de reconhecer. Mesmo um alinhamento aproximado recupera muita coisa numa página que entrou torta.
Converta para escala de cinza em vez de preto e branco agressivo. A conversão para dois níveis puros no limiar errado come traços finos e fecha os miolos das letras, e as duas coisas prejudicam o reconhecimento.
Defina o idioma. Um motor esperando inglês num documento em português vai corrigir até chegar a um absurdo convicto.
Depois confira a saída — especificamente os números. Leia as cifras contra o original em vez de passar os olhos pela prosa. É ali que se escondem os erros que sobrevivem, e um dígito lido errado parece perfeitamente plausível na página.