Este é o meu primeiro post sobre reconhecimento óptico de caracteres (OCR) usando o Tesseract. O Tesserast é uma biblioteca de código aberto muito popular para OCR suportada pelo Google, que fornece resultados de alta precisão e suporta mais de 100 idiomas. Neste post, mostrarei como trabalhar com o dicionário padrão para o modelo de idioma Tesseract e personalizá-lo para atender às suas necessidades. Quem se importa, por favor, debaixo do gato.
Modelos e dicionários de idiomas do Tesseract
O Tesseract usa modelos e dicionários de idiomas para reconhecer o texto em um idioma específico. O modelo de linguagem contém os valores dos parâmetros do modelo de rede neural e outros dados de aprendizado. Por exemplo, o modelo de idioma para o inglês é armazenado no arquivo eng.traineddata. O usuário pode criar sua própria lista de palavras para o Tesseract, para que o Tesseract possa aprender a reconhecê-las.
O Tesseract permite expandir o dicionário padrão para qualquer idioma suportado, adicionando suas próprias palavras ou treinando o modelo de idioma, substituindo completamente as palavras do dicionário padrão por suas próprias palavras.
O Tesseract usa arquivos .dawg especiais para várias categorias de palavras no dicionário. Por exemplo, o arquivo .word-dawg é usado para as principais palavras do dicionário e o arquivo freq-dawg é usado para as palavras mais comuns. Mais informações sobre o assunto podem ser encontradas
aqui .
Customização do Modelo de Linguagem Tesseract
Este guia pode ser aplicado às versões do Tesseract 3.0.5 e 4.0.0. A única diferença entre o Tesseract 4.0.0 e a versão 3.0.x anterior é que, na versão 4, o Tesseract é baseado no modelo LSTM e os arquivos de dicionário dawg possuem a extensão lstm - dawg (na versão v3.0.5, a extensão -dawg). Por exemplo, o arquivo das palavras mais comuns agora tem a extensão lstm-freq-dawg em vez de freq-dawg, e o arquivo unicharset recebeu a extensão lstm-unicharset (anteriormente .unicharset).
Primeiro, instale a biblioteca OCR do Tesseract. Neste tutorial, eu uso o Ubuntu OS (usei o Ubuntu 18.04) e o Tesseract v4. Basta instalar o Tesseract usando o pacote apt:
sudo apt update && sudo apt install tesseract-ocr
Além da própria biblioteca Tesseract, essa equipe também instalará todas as ferramentas necessárias para o ensino do modelo de idioma (ferramentas de treinamento).
Para começar, expandimos o modelo de linguagem com nossas próprias palavras. Por exemplo, queremos expandir o modelo para o inglês. Crie um arquivo de texto sem formatação chamado wordlistfile e adicione as palavras que queremos adicionar ao dicionário de modelos, uma por linha.
Em seguida, ele irá para a pasta tessdata. Precisamos de privilégios de root para executar operações nesta pasta do sistema.
sudo su
Copie o arquivo de lista de palavras para esta pasta. Descompacte o arquivo de modelo de idioma eng.traineddata na pasta trainerdat_backup
combine_tessdata -u eng.traineddata traineddat_backup/eng.
Este comando extrai todos os arquivos necessários para compilar o modelo de idioma na pasta trainerdat_backup.
Agora crie o arquivo eng.lstm-word-dawg em nosso wordlistfile usando o utilitário wordlistfile
wordlist2dawg wordlistfile eng.lstm-word-dawg traineddat_backup/eng.lstm-unicharset
e compile um novo arquivo de modelo de idioma eng.traineddata
combine_tessdata -o eng.traineddata eng.lstm-word-dawg
Obteremos o arquivo de modelo de idioma eng.traineddata a partir de nossas próprias palavras do dicionário.
Agora, ensinaremos o modelo de linguagem eng, substituindo completamente as palavras do dicionário padrão pelas nossas próprias palavras. Primeiro, precisamos fazer backup de todos os arquivos dawg (.lstm-word-dawg, .lstm-freq-dawg etc.) localizados na pasta trainerdat_backup, pois os substituiremos por novos. Basta criar a pasta tmp e transferir todos os arquivos dawg para ela.
Depois disso, copie o arquivo eng.lstm-word-dawg criado anteriormente para a pasta trainerdat_backup. Vamos para esta pasta e compilar um novo modelo de linguagem
combine_tessdata eng. </source tessdata ( cus - custom). OCR Tesseract : <source lang="bash"> tesseract <image> -l <your_model> <output>
em que output é o nome do arquivo de texto para gravar o resultado do OCR ou 'stdout' para a saída no terminal.
Arquivos de configuração no Tesseract OCR
O Tesseract usa arquivos de configuração (arquivos de texto sem formatação que contêm variáveis e seus valores de valor-chave, separados por espaços) que permitem ao usuário controlar o resultado do OCR. Você pode criar sua própria configuração (myconf) e colocá-la na pasta configs dentro da pasta tessdata e especificar o nome da configuração ao usar o Tesseract:
tesseract <image> <options> myconf
onde options: out é o nome do arquivo para exibir o resultado ou 'stdout', - l é o modelo de idioma, - psm é o
método de segmentação de página .
O Tesseract fornece muitas opções de controle para personalizar a saída e melhorar a precisão do OCR. Portanto, aqui existem variáveis que controlam o uso de dicionários, por exemplo, a exclusão de palavras que não estão em word_dawg / user_words (language_model_penalty_non_freq_dict_word e language_model_penalty_non_dict_word). Mais detalhes sobre os parâmetros de controle podem ser encontrados
aqui .
Eu usei os seguintes valores na minha configuração:
language_model_penalty_non_freq_dict_word 1 language_model_penalty_non_dict_word 1
Isso me permitiu reconhecer algumas palavras do meu dicionário.
Por enquanto é tudo. Boa sorte com o uso do Tesseract para a tarefa de OCR e até breve!