Pular para o conteúdo
PDFLove

como funciona o ocr

Como o OCR transforma uma digitalização em texto

OCR não é uma operação. É um encadeamento de cinco, e quase todo resultado decepcionante pode ser rastreado até qual estágio deu errado.

01

Estágio um: limpar a imagem

O reconhecimento trabalha sobre formas, então tudo o que distorce formas precisa sair primeiro. A página é desinclinada — uma digitalização raramente sai reta, e uma rotação de dois graus basta para borrar a busca de linhas que vem em seguida. Depois ela é binarizada: cada pixel vira preto ou branco, com o limiar escolhido de forma adaptativa para que uma página mais clara numa borda que na outra não perca metade do texto.

Depois a remoção de manchas tira os pontinhos isolados de ruído, que de outro modo seriam reconhecidos como pontos finais e vírgulas.

Esse estágio é a razão de a qualidade da digitalização dominar a precisão do OCR muito mais que o reconhecedor. Uma sombra atravessando a página derrota a limiarização, e uma página curva de um livro encadernado não pode ser desinclinada porque a distorção não é uma rotação.

02

Estágio dois: descobrir o leiaute

O motor encontra componentes conexos — trechos contíguos de pixels pretos — e os agrupa. Componentes próximos sobre uma linha de base compartilhada viram uma palavra; palavras numa fileira viram uma linha; linhas empilhadas com espaçamento consistente viram um bloco de texto. Grandes medianizes brancas dividem a página em colunas.

É aqui também que imagens, filetes e tabelas são identificados e postos de lado, para que não se peça ao reconhecedor que leia uma fotografia como se fosse tipografia.

A análise de leiaute decide a ordem de leitura, e a ordem de leitura é o que a maioria das pessoas nota quando falha. Um boletim com uma citação destacada no meio de uma coluna, ou uma nota fiscal em que os totais ficam numa caixa flutuante, é onde um motor afinado para uma página de prosa começa a produzir texto numa ordem que ninguém escreveu.

03

Estágio três: reconhecer os caracteres

O OCR mais antigo comparava a forma de cada caractere com uma biblioteca de moldes, característica por característica: contar os buracos, achar as junções dos traços, medir a proporção. Era rápido, frágil e precisava de um conjunto de moldes separado para cada família tipográfica.

Os motores modernos rodam uma rede neural sobre a linha inteira — tipicamente uma LSTM, que lê uma sequência de fatias verticais estreitas da esquerda para a direita e emite uma sequência de caracteres. Isso importa porque elimina a necessidade de segmentar os caracteres antes de reconhecê-los. Decidir onde uma letra termina e a seguinte começa é difícil por si só: `rn` e `m` são quase idênticos em baixa resolução, e letras que se tocam numa fonte apertada não têm folga onde cortar. Um modelo de sequência contorna o problema simplesmente nunca fazendo esse corte.

Cada caractere sai com uma pontuação de confiança, que é o que uma boa ferramenta de OCR expõe e o que o estágio seguinte usa.

04

Estágio quatro: usar a língua para corrigir o que a visão errou

O reconhecedor vê formas e nada mais, então vai devolver com toda a confiança `l\/lanager`, `0ffice` ou `rnoderno`. Um dicionário e um modelo de sequência de caracteres pegam isso: o motor sabe que em português `rn` no começo de uma palavra é raríssimo enquanto `m` é comum, e sabe que `Gerente` é uma palavra e `l\/lanager` não é.

É por isso que definir a língua certa importa tanto, e por que é o ajuste isolado mais eficaz disponível. Um motor definido para inglês lendo uma página em português tem um dicionário que briga com cada acento. É também por isso que nomes próprios, códigos de peça, números de série e endereços são as coisas menos precisas de qualquer página — são exatamente as cadeias com que o modelo de língua não pode ajudar, e às vezes ele ativamente as corrige para algo errado.

05

Estágio cinco: escrever de volta, invisivelmente

Aqui está a parte que faz um PDF pesquisável funcionar, e é um truque genuinamente elegante.

O PDF tem um operador de modo de renderização de texto, `Tr`. O modo 0 preenche os glifos normalmente. O modo 3 não desenha nada — o texto é colocado na página, ocupa sua posição e fica completamente invisível.

Então a saída do OCR é escrita na página como texto de verdade no modo 3, posicionada de forma que cada palavra reconhecida fique exatamente sobre os pixels de onde veio, com a imagem digitalizada original ainda desenhada por baixo. A página fica precisamente como estava antes. Mas a busca encontra as palavras, a seleção as destaca nos lugares certos, copiar devolve caracteres de verdade, e um leitor de tela pode ler o documento em voz alta.

É por isso que uma digitalização pesquisável é pouquíssimo maior que a digitalização de origem: a camada de texto acrescentada são alguns kilobytes contra megabytes de imagem. E é por isso que selecionar texto numa digitalização com OCR às vezes destaca um retângulo ligeiramente errado — a palavra invisível é posicionada a partir da estimativa do reconhecedor de onde os pixels estavam.

A imagem fica
Você mantém a aparência exata da digitalização original. Nada é redesenhado.
O texto é real
Busca, cópia, seleção e leitores de tela funcionam todos sobre ele.
Os erros ficam escondidos
Uma palavra mal reconhecida é invisível, então a página nunca parece errada — ela só deixa de ser encontrada pela busca.
O tamanho quase não muda
Kilobytes de texto contra megabytes de imagem.

Perguntas

Perguntas relacionadas

Por que o texto do OCR parece correto na página mas a busca falha?

Porque o que você está vendo é a imagem digitalizada original, e o que a busca consulta é a camada de texto invisível escrita por baixo. Quando o reconhecedor lê uma palavra errado, a página continua mostrando os pixels corretos enquanto o texto pesquisável diz outra coisa.

Que precisão devo esperar?

Uma digitalização limpa a 300 DPI de texto impresso comum passa de 98% por caractere. Uma foto de celular com iluminação uniforme fica um pouco abaixo disso. Um fax ou uma fotocópia de terceira geração cai bruscamente, e a escrita à mão é outro problema, que o OCR padrão não resolve.

O OCR muda a aparência do meu documento?

Não. A imagem original fica exatamente como estava e o texto reconhecido é acrescentado invisivelmente atrás dela. Se uma ferramenta devolve uma página com aparência diferente, ela redesenhou em vez de sobrepor camadas.

Por que o OCR é tão mais lento que outras operações de PDF?

Porque é a única que faz análise de imagem. Juntar ou dividir reorganiza objetos e quase não toca em pixels. O OCR roda cinco estágios de processamento sobre cada pixel de cada página, e uma rede neural sobre cada linha.