Imagem para texto (OCR): como funciona e como tirar um texto limpo

Atualizado:

OCR, reconhecimento óptico de caracteres, transforma a imagem de um texto em texto que dá para copiar, buscar e editar. É ele que lê o print de uma mensagem de erro, a foto de uma carta ou um contrato escaneado. A maioria dos erros vem da imagem, não do programa, então alguns minutos cuidando da foto costumam poupar mais tempo do que corrigir o resultado.

Como o OCR lê uma imagem

O Tesseract, o motor de código aberto por trás da maioria das ferramentas de OCR gratuitas, trabalha em três etapas. Primeiro passa a imagem para preto e branco, decidindo para cada pixel se é tinta ou papel. Depois encontra os blocos, as colunas e as linhas de texto. Por fim, desde a versão 4.00, uma rede neural lê cada linha inteira de uma vez, e não letra por letra, e os dados do idioma a ajudam a escolher entre formas parecidas.

Cada etapa pode falhar do seu jeito: uma sombra na página estraga o preto e branco, uma foto torta estraga as linhas e o idioma errado estraga as letras.

Imagem para texto (OCR)

O que mais faz diferença

Problemas comuns e o que fazer

O que você vêO que fazer
Letras faltando ou quebradasTire a foto com luz uniforme, sem sombras; aumente o contraste ou escaneie a 300 dpi
Linhas misturadas ou fora de ordemEndireite a imagem; para notas fiscais e tabelas, leia linha por linha
Sinais sem sentido nas bordasCorte as bordas escuras do scanner, deixando uma margem branca estreita
Acentos perdidosEscolha o idioma do texto antes de ler
Texto claro em fundo escuro mal lidoInverta as cores antes: o motor espera texto escuro em fundo claro
0 e O, 1 e l, 5 e S trocadosConfira no olho códigos, valores e nomes: não há palavras que ajudem o motor a adivinhar

Erros em números são os mais graves, porque nada no texto os denuncia. Compare sempre valores, datas e números de referência com a imagem.

Prints, fotos e escaneamentos

Um print de tela é o caso fácil: nítido, reto e com luz uniforme. O único problema é o texto pequeno das interfaces, que a ferramenta do nTools amplia antes de ler. Uma foto de página traz os casos difíceis: perspectiva, sombras, desfoque e fundo carregado. Um escaneamento em scanner de mesa a 300 dpi é a melhor fonte para documentos longos.

PDF escaneado

Um PDF feito de um escaneamento é um conjunto de imagens: não dá para selecionar o texto, uma busca não acha nada e um leitor de tela não tem o que ler. As diretrizes de acessibilidade do W3C (WCAG) tratam esse PDF como imagens de texto e recomendam passar OCR nele e depois conferir o texto reconhecido e a ordem de leitura. Se você consegue selecionar o texto de um PDF, ele já é texto, e copiar é mais preciso que qualquer OCR.

O PDF para Word lê as páginas escaneadas com OCR e gera um documento editável; você também pode transformar as páginas em imagens e lê-las no Imagem para texto.

PDF para Word

Para onde vai a imagem

Muitos serviços de OCR enviam a imagem para um servidor. O Tesseract também pode rodar dentro do navegador, compilado para WebAssembly: é assim que a ferramenta do nTools funciona, então a imagem e o texto ficam no seu aparelho. O navegador só baixa o motor e os dados do idioma escolhido.

Perguntas frequentes

O OCR consegue ler letra à mão?

Mal. O Tesseract é treinado com texto impresso; letra de forma bem caprichada às vezes funciona, a letra comum não. Letra à mão precisa de motores treinados especialmente para isso.

Qual a precisão do OCR?

Numa página impressa limpa escaneada a 300 dpi, quase todo caractere sai certo. Fotos, texto pequeno e fontes diferentes trazem mais erros. A confiança que a ferramenta mostra é uma estimativa do próprio motor, um sinal de alerta, não uma garantia.

Por que 0 e O, ou 1 e l, são trocados?

As formas são quase iguais em muitas fontes. Em palavras comuns os dados do idioma ajudam a escolher; em códigos, números de série e senhas não, então confira esses caractere por caractere.

Quais idiomas ele lê?

O Tesseract tem dados para mais de 100 idiomas. A ferramenta do nTools oferece inglês, espanhol, francês, alemão, italiano e português; escolha o idioma antes de ler, porque ele muda as letras que o motor espera.

O OCR mantém tabelas e formatação?

Não. O resultado é texto simples com quebras de linha. Tabelas são um ponto fraco conhecido do Tesseract: leia linha por linha, para cada linha ficar junta, e refaça as colunas depois.

Referências

  1. Tesseract documentation — Improving the quality of the output
  2. Tesseract documentation — Neural nets in Tesseract 4.00
  3. Tesseract.js — Pure JavaScript OCR for more than 100 languages
  4. W3C — WCAG 2.2 technique PDF7: performing OCR on a scanned PDF document
  5. W3C — Understanding WCAG 2.2: Images of Text (1.4.5)

Guias relacionados