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).
É 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 contagemtesseract
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.
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.
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.
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.
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”.
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 tesseract
e 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.
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.
Como você pode ver abaixo, questões permanecem, mas o "Q" e o "A" foram perdidos no início de cada linha.
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.
Como você pode ver no nosso resultado abaixo, os personagens foram lidos, mas o formato do diagrama foi perdido.
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.