O que o OCR realmente faz, e o que ele não consegue
O OCR reconhece formas e devolve caracteres. Ele não lê. Não existe compreensão das palavras por trás, então um “1” confundido com um “l” volta parecendo tão certo quanto cada caractere correto em volta. É por isso que estas páginas mostram a confiança do próprio leitor ao lado do texto, em vez de entregar um resultado com cara de limpo e deixar você caçar os erros. Em texto impresso nítido, fotografado de frente e em foco, a taxa de erro é de alguns caracteres a cada mil. Com reflexo, sombra ou uma fonte incomum, pode ser muito pior, e nada no resultado vai parecer diferente.
Há dois leitores por trás destas páginas. Um encontra o texto onde quer que esteja na página sem saber em que escrita ele está, e lê uns cinquenta idiomas com um único dicionário. O outro, treinado separadamente para cada idioma, fica atrás dele e cobre mais de 120. Deixar o idioma no automático permite que o primeiro leitor tente, o que importa porque indicar o idioma errado é o jeito clássico de não receber nada — um cardápio em polonês identificado como cirílico e lido como russo devolve uma página vazia, com toda a confiança. Indicar um idioma você mesmo prende o trabalho ao leitor daquele idioma, que é o que você quer quando sabe exatamente o que tem.
O que importa é a resolução, não o tamanho do arquivo. O leitor quer uma certa altura de letra, e tudo é redimensionado para chegar nela: as páginas de um PDF digitalizado são renderizadas a 300 DPI para leitura, e uma imagem é medida pela própria tinta, não pelas dimensões, e depois ampliada ou reduzida conforme o caso. Texto de tela é o caso em que as pessoas erram — em tamanho normal, uma letra tem uns dez pixels de altura, cerca de um terço do que o leitor quer, então uma captura de tela é ampliada antes de ser lida. Abaixo de uns oito pixels por letra não sobra detalhe para ampliar, e nenhum processamento inventa isso. No sentido oposto, uma fotografia de 48 megapixels de um cardápio não é mais precisa que uma pequena e nítida; a partir de certo ponto, mais pixels custam tempo e não trazem nada.
Inclinação e iluminação irregular estragam mais do que parece que deveriam. Uma página fotografada fica um ou dois graus torta e iluminada de um lado, então Imagem para texto e Escanear documento medem esse ângulo na página inteira e o removem, depois estimam o brilho do papel atrás da tinta em partes e o levam a um branco uniforme. Isso não é cosmético. Linhas de grade retas são o que permite encontrar uma tabela como grade, e um contraste uniforme é o que impede a sombra da sua mão de ser lida como tinta. Uma captura de tela não recebe nenhum dos dois tratamentos, de propósito: ela já está reta e com iluminação uniforme, e tratá-la como se fosse uma fotografia só acrescenta erro.
Tabelas e layouts com várias colunas são o caso realmente difícil, e vale a pena conhecer os números. Lido como texto corrido da página inteira, um formulário com linhas de grade juntou o texto das células com a coluna seguinte e perdeu um terço dos rótulos — de quinze a vinte por cento dos caracteres errados. Encontrar primeiro as linhas de grade e ler cada célula separadamente baixou isso para cerca de cinco por cento. Por isso uma tabela com linhas visíveis é encontrada como grade e volta como linhas separadas por tabulação, que colam direto em uma planilha, e colunas de texto são lidas na ordem de leitura, não em linha reta pela página. Uma tabela montada só com espaçamento não tem linhas para encontrar, e sobrevive à colagem por sorte, não por projeto.
Um PDF pesquisável e um texto extraído são coisas diferentes. OCR em PDF e Escanear documento deixam a imagem exatamente como estava e colocam as palavras reconhecidas de forma invisível por cima: a página fica idêntica, o Ctrl+F passa a encontrar coisas, e você pode selecionar e copiar. Nada é pintado na página — o que também significa que uma leitura errada fica escondida dentro de um documento com aparência perfeita. Imagem para texto e OCR de captura de tela fazem o contrário: você recebe os caracteres e nada mais, sem fontes, sem cores, sem negrito e sem a imagem. Uma ressalva sobre a camada de texto, porque é fácil passar despercebida — ela só pode conter caracteres que uma fonte incluída consiga escrever, então palavras em chinês, japonês e coreano são contadas para você, mas não escritas, até que uma fonte para elas seja incluída.
Onde o navegador é mesmo a ferramenta errada
A imagem nunca sair do seu dispositivo é todo o argumento para lê-la aqui, e isso custa precisão em documentos difíceis. Essa troca é real, e vale dizer com clareza em vez de esconder.
Letra cursiva não é reconhecida — nem aqui, nem por qualquer ferramenta de OCR geral. Estes são leitores de texto impresso: reconhecem formas de letras, e a letra cursiva não tem formas de letras separadas para reconhecer. Letras de forma escritas à mão muitas vezes voltam bem o bastante para corrigir em vez de redigitar — letras maiúsculas, um formulário preenchido à mão, um bilhete escrito com cuidado —, e é por isso que o Reconhecimento de escrita à mão existe e coloca o índice de confiança ao lado do texto. Ler cursiva direito exige um leitor treinado especificamente em escrita à mão, e os bons rodam em um servidor, não em uma aba.
O OCR na nuvem vai superar este em documentos difíceis. Google, Amazon e Microsoft rodam reconhecedores treinados com muito mais dados do que cabe em uma aba do navegador, e em uma foto ruim, uma página densa com várias colunas, uma fonte incomum ou um formulário preenchido eles vão ser visivelmente mais precisos. Um programa de desktop pago como o ABBYY FineReader também. Se a precisão em um documento difícil importa mais do que o documento ficar na sua máquina, use um deles — essa é a comparação honesta, e é com base nela que você deve decidir.
Trabalho em lote é coisa de linha de comando. Estas ferramentas leem um documento quando uma pessoa clica. Duas mil digitalizações de forma programada são um trabalho para uma ferramenta de OCR de desktop como o OCRmyPDF, que adiciona uma camada de texto a uma pasta inteira de PDFs com um único comando — gratuito, e o mesmo tipo de leitura sem nenhum clique.
Algumas coisas simplesmente não são feitas. A perspectiva não é corrigida: uma página fotografada de lado mantém o formato de trapézio e só a rotação é corrigida, então fotografar bem de cima vale o segundo a mais. Uma dobra forte, ou a curva perto da lombada de um livro, continua curva. E não há câmera aqui — os leitores de código decodificam uma imagem que você já tem, não uma transmissão ao vivo.
Um custo prático de rodar localmente: o leitor e o pacote de idioma são baixados deste site na primeira vez que você usa um idioma, o que dá alguns megabytes e deixa a primeira vez mais lenta que as seguintes. Nada vem da CDN de mais ninguém, e nada volta.
Como escolher entre ferramentas de nome parecido
Imagem para texto ou OCR de captura de tela. O mesmo leitor, com preparação diferente, e a diferença não é cosmética. Uma fotografia é endireitada e tem a iluminação nivelada; uma captura de tela é ampliada e de resto deixada como está, porque não tem inclinação nem iluminação irregular, e tratá-la como se tivesse só piora. OCR de captura de tela também aceita colar — Ctrl+V, ou Cmd+V no Mac, direto da área de transferência, sem salvar nada no disco antes.
Imagem para texto ou Escanear documento. Imagem para texto entrega as palavras e descarta a imagem. Escanear documento mantém a imagem, endireita, branqueia o papel atrás da tinta e entrega um PDF com cara de digitalizado — opcionalmente com o texto colocado de forma invisível por trás. Se você quer colar o texto em algum lugar, a primeira. Se quer mandar o documento para alguém, a segunda.
Escanear documento ou OCR em PDF. Escanear documento começa com fotografias e gera um PDF. OCR em PDF começa com um PDF que já existe e adiciona uma camada de texto a ele. Nenhuma das duas muda a aparência das páginas. Fotografou um contrato? Você quer a primeira. Recebeu uma digitalização por e-mail? Quer a segunda.
Reconhecimento de escrita à mão ou Imagem para texto. O mesmo leitor, com o localizador de tabelas desligado e o índice de confiança com o destaque que merece, porque com escrita à mão esse número é a parte útil do resultado. Se a letra for cursiva, nenhuma das páginas vai lê-la, e a página de escrita à mão diz isso em vez de devolver um absurdo plausível.
Leitor de QR Code ou Leitor de código de barras. Códigos quadrados contra códigos listrados, e vale saber qual você tem na mão. A página de QR lê QR, Micro QR, Data Matrix, Aztec e PDF417 — o que cobre cartões de embarque e carteiras de motorista, cujos códigos são de formato quadrado mesmo quando parecem uma mancha de pontos. A página de código de barras lê os formatos listrados de varejo e logística — EAN, UPC, Code 128, Code 39, ITF — e confere o dígito verificador, o último dígito calculado a partir dos outros, que é a diferença entre um número em que você pode confiar e um que só parece certo. Nenhum dos dois é OCR: um código é um símbolo com geometria conhecida, então decodificá-lo é aritmética, não um palpite sobre formas de letras. Eles também falham de jeitos diferentes. Códigos quadrados têm correção de erros e sobrevivem a um arranhão ou a um logotipo impresso no meio; os listrados não têm nenhuma, então um reflexo sobre as barras significa leitura nenhuma, não um número errado.