Como fazer OCR na linha de comando do Linux usando Tesseract

Conteúdo

Uma janela de terminal em um laptop Linux.

Você pode extrair texto de imagens na linha de comando do Linux usando o mecanismo de OCR Tesseract. É rápido, preciso e funciona em aproximadamente 100 línguas. Veja como usá-lo.

Acreditação de caráter óptico

Reconhecimento óptico de caracteres (OCR) é a capacidade de olhar e encontrar palavras em uma imagem e depois extraí-las como texto editável. Esta tarefa simples para humanos é muito difícil para os computadores realizarem.. Os primeiros esforços foram desajeitados, para dizer o mínimo. Os computadores costumavam ficar confusos se a fonte ou o tamanho não eram do agrado do software de OCR.

Apesar disto, pioneiros neste campo ainda eram muito estimados. Se você perdeu uma cópia eletrônica de um documento, mas eu ainda tinha uma versão impressa, OCR pode recriar uma versão eletrônica e editável. Mesmo se os resultados não fossem 100 por cento preciso, esta foi uma grande economia de tempo.

Com um pequeno pedido manual, iria recuperar o seu documento. As pessoas perdoaram os erros cometidos porque entenderam a complexidade da tarefa enfrentada por um pacote de OCR. Ao mesmo tempo, era melhor do que reescrever todo o documento.

As coisas melhoraram significativamente desde então. O aplicativo Tesseract OCR, escrita por Hewlett Packard, começou na década de 1980 como uma aplicação comercial. Era de código aberto em 2005 e agora tem o apoio de Google. Possui recursos multilíngues, é considerado um dos sistemas de OCR mais precisos disponíveis e você pode usá-lo gratuitamente.

Instalando Tesseract OCR

Para instalar o Tesseract OCR no Ubuntu, use este comando:

sudo apt-get install tesseract-ocr

No Fedora, o comando é:

sudo dnf install tesseract

Em manjaro, deve escrever:

sudo pacman -Syu tesseract

Usando Tesseract OCR

Vamos apresentar uma série de desafios para o Tesseract OCR. Nossa primeira imagem contendo texto é um trecho do considerando 63 a partir de Regulamentações gerais de proteção de dados. Vamos ver se OCR pode ler isso (e fique acordado).

extrato de recital 63 GDPR

É uma imagem enganosa porque cada frase começa com um número sobrescrito fraco, que é típico em documentos legislativos.

Precisamos dar o tesseract classificar certas informações, que inclui:

  • O nome do arquivo de imagem que queremos processar.
  • O nome do arquivo de texto que você criará para conter o texto extraído. Não temos que fornecer a extensão do arquivo (sempre será .txt). Se já existe um arquivo com o mesmo nome, será sobrescrito.
  • Podemos usar o --dpi opção de contagem tesseract naquela pontos por polegada (dpi) a resolução da imagem é. Se não fornecermos um valor de dpi, tesseract vai tentar resolver isso.

Nosso arquivo de imagem é chamado de "recital-63.png" e sua resolução é 150 dpi. Vamos criar um arquivo de texto chamado “recital.txt”.

Nosso comando se parece com este:

tesseract recital-63.png considerando --dpi 150

As pontuações são muito boas. O único problema são os sobrescritos: eles estavam muito fracos para ler corretamente. Uma imagem de boa qualidade é vital para bons resultados.

Texto retirado do considerando 63.

tesseract interpretou os números sobrescritos como aspas (“) e símbolos de grau (°), mas o texto real foi lindamente extraído (o lado direito da imagem teve que ser cortado para caber aqui).

O caractere final é um byte com o valor hexadecimal de 0x0C, o que é um retorno de carruagem.

Abaixo está outra imagem com texto em tamanhos diferentes, negrito e itálico.

Imagem com diferentes tamanhos de texto em negrito e itálico.

o nome deste arquivo é “bold-itálico.png”. Queremos criar um arquivo de texto chamado “ousado.txt”, então nosso comando é:

tesseract bold-italic.png bold --dpi 150

Isso não foi problema e o texto foi extraído lindamente.

Usando diferentes idiomas

Soporta Tesseract OCR ao redor de 100 línguas. Para usar uma linguagem, você deve instalá-lo primeiro. Quando você encontrar o idioma que deseja usar na lista, olhe a sua abreviatura. Vamos instalar o suporte para galês. Sua abreviação é “Cym”, que é a abreviação de “Rio Cymru”, o que significa galês.

O pacote de instalação é chamado "tesseract-ocr-" com a abreviatura do idioma marcada no final. Para instalar o arquivo do idioma galês no Ubuntu, usaremos:

sudo apt-get install tesseract-ocr-cym

A imagem com o texto está abaixo. É a primeira estrofe do hino nacional do País de Gales.

imagem contendo o texto da primeira estrofe do hino nacional do País de Gales.

Vamos ver se o Tesseract OCR está à altura do desafio. Nós vamos usar o -l (idioma) opção de sair tesseract saber a língua em que queremos trabalhar:

tesseract old-country-my-fathers.png anthem -l cym --dpi 150

tesseract se encaixa perfeitamente, como mostrado no texto extraído abaixo. Amanheçer, Tesseract OCR.

Texto galês extraído.

Se o seu documento contém dois ou mais idiomas (como um dicionário de galês para inglês, como um exemplo), você pode usar um sinal de mais (+) contar tesseract para adicionar outro idioma, Então:

tesseract imagem.png textfile -l eng+cym+fra

Usando Tesseract OCR com arquivos PDF

a tesseract O comando foi desenvolvido para funcionar com arquivos de imagem, mas não consegue ler arquivos PDF. Apesar disto, se você precisar extrair texto de um PDF, você pode usar outro utilitário primeiro para gerar um conjunto de imagens. Uma única imagem representará uma única página do PDF.

a pdftppm utilidade que você precisa já deve estar instalado no seu computador Linux. O PDF que usaremos em nosso exemplo é uma cópia da postagem seminal de Alan Turing sobre inteligência artificial, “Máquinas e inteligência de computador”.

PDF da capa de

Nós usamos o -png opção para especificar que queremos criar arquivos PNG. O nome do arquivo do nosso PDF é “turing.pdf”. Chamaremos nossos arquivos de imagem “Turing-01.png”, “Turing-02.png”, e assim por diante:

pdftoppm -png turing.pdf turing

Para correr tesseract em cada arquivo de imagem usando um único comando, precisamos usar um em laço. Para cada um dos nossos “Turing-nn.png ”, arquivos que executamos tesseracte criar um arquivo de texto chamado “texto-” mais “Turing-nn”Como parte do nome do arquivo de imagem:

para mim em turing-??.png; fazer tesseract "$eu" "texto- $ i" -l eng; feito;

Para combinar todos os arquivos de texto em um, podemos usar cat:

cat text-turing * > complete.txt

Então, como foi? Muito bem, como você pode ver abaixo. Apesar disto, a primeira página parece bastante desafiadora. Tem diferentes estilos e tamanhos de texto e decoração. Além disso, há um “marca d’água” vertical na borda direita da página.

Apesar disto, a saída está próxima do original. Aparentemente, formato foi perdido, mas o texto está correto.

Primeira página do texto extraído do PDF de Turing.

A marca d'água vertical foi transcrita como uma linha sem sentido na parte inferior da página. O texto era muito pequeno para ser lido por tesseract com precisão, mas seria muito fácil encontrar e removê-lo. O pior resultado teria sido caracteres perdidos no final de cada linha.

curiosamente, letras individuais no início da lista de perguntas e respostas na página dois foram ignoradas. A seção do PDF é mostrada abaixo.

Uma lista de perguntas e respostas do PDF do documento de Turing.

Como você pode ver abaixo, questões permanecem, mas o "Q" e o "A" foram perdidos no início de cada linha.

Texto retirado da página de perguntas e respostas do PDF de Turing.

Os diagramas também não serão transcritos corretamente. Vamos ver o que acontece quando tentamos extrair o mostrado abaixo do PDF de Turing.

Um diagrama de

Como você pode ver no nosso resultado abaixo, os personagens foram lidos, mas o formato do diagrama foi perdido.

Texto extraído de um diagrama no PDF de Turing.

De novo, tesseract lutou com o pequeno tamanho dos subscritos, e eles foram renderizados incorretamente.

Apesar disto, para ser justos, foi um bom resultado. Não foi possível extrair um texto simples, mas depois, este exemplo foi escolhido deliberadamente porque apresentou um desafio.

Uma boa solução quando você precisa

OCR não é algo que você precisa usar diariamente. Apesar disto, quando surge a necessidade, bom saber que você tem um dos melhores motores de OCR à sua disposição.

Assine a nossa newsletter

Nós não enviaremos SPAM para você. Nós odiamos isso tanto quanto você.