Conseils Tesseract OCR - créez votre propre vocabulaire pour améliorer les performances d'OCR

Ceci est mon premier article sur la reconnaissance optique de caractères (OCR) utilisant Tesseract. Tesserast est une bibliothèque open source très populaire pour l'OCR prise en charge par Google, qui donne des résultats de haute précision et prend en charge plus de 100 langues. Dans cet article, je vais vous expliquer comment travailler avec le dictionnaire standard du modèle de langage Tesseract et le personnaliser en fonction de vos besoins. Peu importe, s'il vous plaît, sous le chat.

Modèles de langues et dictionnaires Tesseract


Tesseract utilise des modèles de langue et des dictionnaires pour reconnaître le texte dans une langue spécifique. Le modèle de langage contient les valeurs des paramètres du modèle de réseau neuronal et d'autres données d'apprentissage. Par exemple, le modèle de langue pour la langue anglaise est stocké dans le fichier eng.traineddata. L'utilisateur peut créer sa propre liste de mots pour Tesseract afin que Tesseract puisse apprendre à les reconnaître.

Tesseract vous permet d'étendre le dictionnaire standard pour n'importe quelle langue prise en charge en ajoutant vos propres mots ou de former le modèle de langue en remplaçant complètement les mots du dictionnaire standard par vos propres mots.

Tesseract utilise des fichiers .dawg spéciaux pour différentes catégories de mots dans le dictionnaire. Par exemple, le fichier .word-dawg est utilisé pour les mots principaux du dictionnaire et le fichier freq-dawg est utilisé pour les mots les plus courants. Vous trouverez plus d'informations sur la question ici .

Personnalisation du modèle de langage Tesseract


Ce guide peut être appliqué aux versions de Tesseract 3.0.5 et 4.0.0. La seule différence entre Tesseract 4.0.0 et la version antérieure 3.0.x est que dans la version 4 Tesseract est basé sur le modèle LSTM et que les fichiers de dictionnaire dawg ont l'extension lstm - dawg (dans la version v3.0.5, ils ont l'extension -dawg). Par exemple, le fichier des mots les plus courants porte désormais l'extension lstm-freq-dawg au lieu de freq-dawg, et le fichier unicharset a reçu l'extension lstm-unicharset (auparavant .unicharset).

Tout d'abord, installez la bibliothèque OCR Tesseract. Dans ce tutoriel, j'utilise Ubuntu OS (j'ai utilisé Ubuntu 18.04) et Tesseract v4. Installez simplement Tesseract en utilisant le package apt:

sudo apt update && sudo apt install tesseract-ocr 

En plus de la bibliothèque Tesseract elle-même, cette équipe installera également tous les outils nécessaires à l'enseignement du modèle de langage (outils de formation).

Pour commencer, nous développerons le modèle de langage dans nos propres mots. Par exemple, nous voulons étendre le modèle pour l'anglais. Créez un fichier texte brut appelé fichier de listes de mots et ajoutez les mots que nous voulons ajouter au dictionnaire du modèle, un par ligne.

Ensuite, il ira dans le dossier tessdata. Nous avons besoin des privilèges root pour effectuer des opérations dans ce dossier système.

 sudo su 

Copiez le fichier de listes de mots dans ce dossier. Décompressez le fichier de modèle de langue eng.traineddata dans le dossier traineddat_backup

 combine_tessdata -u eng.traineddata traineddat_backup/eng. 

Cette commande extrait tous les fichiers nécessaires pour compiler le modèle de langage dans le dossier traineddat_backup.

Créez maintenant le fichier eng.lstm-word-dawg à partir de notre fichier de listes de mots à l'aide de l'utilitaire wordlistfile

 wordlist2dawg wordlistfile eng.lstm-word-dawg traineddat_backup/eng.lstm-unicharset 

et compiler un nouveau fichier de modèle de langue eng.traineddata

 combine_tessdata -o eng.traineddata eng.lstm-word-dawg 

Nous obtiendrons le fichier de modèle de langue eng.traineddata à partir de nos propres mots de dictionnaire.

Nous allons maintenant enseigner le modèle du langage eng en remplaçant complètement les mots du dictionnaire standard par nos propres mots. Nous devons d'abord sauvegarder tous les fichiers dawg (.lstm-word-dawg, .lstm-freq-dawg, etc.) situés dans le dossier traineddat_backup, car nous les remplacerons par de nouveaux. Créez simplement le dossier tmp et transférez-y tous les fichiers dawg.

Après cela, copiez notre fichier eng.lstm-word-dawg créé précédemment dans le dossier traineddat_backup. Allons dans ce dossier et compilons un nouveau modèle de langage

 combine_tessdata eng. </source           tessdata        ( cus - custom).   OCR  Tesseract     : <source lang="bash"> tesseract <image> -l <your_model> <output> 

où sortie est le nom du fichier texte pour écrire le résultat OCR ou «stdout» pour sortie sur le terminal.

Fichiers de configuration dans Tesseract OCR


Tesseract utilise des fichiers de configuration (fichiers de texte brut contenant des variables et leurs valeurs-clés, séparés par des espaces) qui permettent à l'utilisateur de contrôler le résultat de l'OCR. Vous pouvez créer votre propre configuration (myconf) et la placer dans le dossier configs à l'intérieur du dossier tessdata et spécifier le nom de la configuration lors de l'utilisation de Tesseract:

 tesseract <image> <options> myconf 

où options: out est le nom du fichier pour afficher le résultat ou 'stdout', - l est le modèle de langage, - psm est la méthode de segmentation de la page .

Tesseract fournit de nombreuses options de contrôle pour personnaliser la sortie et améliorer la précision de l'OCR. Il existe donc des variables qui contrôlent l'utilisation des dictionnaires, par exemple, l'exclusion des mots qui ne sont pas dans word_dawg / user_words (language_model_penalty_non_freq_dict_word et language_model_penalty_non_dict_word). Vous trouverez plus de détails sur les paramètres de contrôle ici .

J'ai utilisé les valeurs suivantes dans ma configuration:

 language_model_penalty_non_freq_dict_word 1 language_model_penalty_non_dict_word 1 

Cela m'a permis de reconnaître certains mots de mon dictionnaire.

C'est tout pour l'instant. Bonne chance avec Tesseract pour la tâche OCR et à bientôt!

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


All Articles