Dicas de OCR do Tesseract - crie seu próprio vocabulário para melhorar o desempenho do OCR

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!

Source: https://habr.com/ru/post/pt466571/


All Articles