Formation de polices personnalisées C# pour Tesseract 5 (pour les utilisateurs de Windows)

Kannaopat Udonpant
Kannapat Udonpant
mars 5, 2023
Mise à jour décembre 10, 2024
Partager:
This article was translated from English: Does it need improvement?
Translated
View the article in English

Utilisez l'apprentissage personnalisé des polices pour Tesseract 5 afin d'améliorer la précision et les capacités de reconnaissance du moteur OCR lorsque vous travaillez avec des polices ou des styles de polices spécifiques qui ne sont pas toujours bien pris en charge par défaut.

Le processus consiste à fournir à Tesseract des données de formation, telles que des échantillons de polices et le texte correspondant, afin qu'il puisse apprendre les caractéristiques et les modèles spécifiques des polices personnalisées.

Commencez avec IronOCR

Commencez à utiliser IronOCR dans votre projet dès aujourd'hui avec un essai gratuit.

Première étape :
green arrow pointer



Étape 1 : Télécharger la dernière version d'IronOCR

Installation via DLL

Téléchargez directement le DLL IronOCR sur votre machine.

Installation via NuGet

Alternativement, vous pouvez installer via NuGet.

Install-Package IronOcr

Étape 2 : Installez et configurez WSL2 et Ubuntu

Ici se trouve le tutoriel pour configurer WSL2 et Ubuntu. Actuellement, l'entraînement de polices personnalisées ne peut être effectué que sous Linux

Étape 3 : Installer Tesseract 5 sur Ubuntu

sudo apt install tesseract-ocr
sudo apt install libtesseract-dev

Étape 4 : Téléchargez la police que vous souhaitez entraîner

Nous utilisons la police AMGDT pour ce tutoriel. Le fichier de police peut être à la fois .ttf ou .otf Example Of Downloaded Font File related to Étape 4 : Téléchargez la police que vous souhaitez entraîner

Étape 5 : Montez le disque dur de votre espace de travail pour la formation des polices personnalisées

La commande suivante montre comment monter le lecteur D: comme espace de travail.

cd /
cd /mnt/d

Étape 6 : Copier le fichier de police dans le dossier de polices Ubuntu

Voici le répertoire du dossier des polices de caractères d'Ubuntu ; Ubuntu/usr/share/fonts et Ubuntu/usr/local/share/fonts.

** Pour accéder au fichier sur Ubuntu, tapez \\\wsl$ dans le répertoire de l'explorateur de fichiers

Ubutu Folder Directory related to Étape 6 : Copier le fichier de police dans le dossier de polices Ubuntu

Dépannage : Accès au dossier de destination refusé

Destination Folder Access Denied related to Dépannage : Accès au dossier de destination refusé

Ce problème peut être résolu en copiant le fichier à l'aide de la ligne de commande

cd /
su root
cd c/Users/Admin/Downloads/’AMGDT Regular’
cp ‘AMGDT Regular.ttf’ /usr/share/fonts
cp ‘AMGDT Regular.ttf’ /usr/local/share/fonts
su username

Étape 7 : Cloner tesseract_tutorial depuis Github

Le dépôt tesseract_tutorial peut être cloné depuis l'URL suivante ; https://github.com/astutejoe/tesseract_tutorial.git en utilisant la commande suivante ;

git clone https://github.com/astutejoe/tesseract_tutorial.git

Étape 8 : Clonez tesstrain et tesseract depuis Github

Accédez au répertoire du dossier tesseract_tutorial, puis exécutez git clone https://github.com/tesseract-ocr/tesstrain et https://github.com/tesseract-ocr/tesseract

  • tesstrain contient un fichier "Makefile" qui est utilisé pour créer un fichier .traineddata (objectif de ce tutoriel)
  • tesseract contient le dossier "tessdata", qui est un conteneur de fichiers .traindata d'origine utilisés comme référence pour l'entraînement de polices personnalisées

Étape 9 : Créez un dossier "data" pour stocker les sorties

Les "données" doivent être créées dans tesseract_tutorial/tesstrain.

Étape 10 : Exécuter split_training_text.py

Retournez dans le répertoire du dossier tesseract_tutorial puis compilez la commande suivante ;

python split_training_text.py

Après avoir exécuté split_training_text.py, cela créera des fichiers .box et .tif dans le dossier "data".

Dépannage : Avertissement Fontconfig : "/tmp/fonts.conf, ligne 4 : nom de répertoire de police vide ignoré

Fontconfig Warning related to Dépannage : Avertissement Fontconfig : "/tmp/fonts.conf, ligne 4 : nom de répertoir...

Ce problème est causé par le fait que le répertoire des polices dans le dossier Ubuntu ne peut pas être trouvé et peut être résolu en insérant ces lignes de code dans tesseract_tutorial/fonts.conf

Fontconfig Dir Png related to Dépannage : Avertissement Fontconfig : "/tmp/fonts.conf, ligne 4 : nom de répertoir...

et ``

/usr/share/polices de caractères /usr/local/share/polices de caractères polices de caractères ~/.polices de caractères
Ensuite, copiez-le dans `/etc/fonts`

```bash
cp fonts.conf /etc/fonts

Enfin, ajoutez ces lignes de code à split_training_text.py

Fontconfig Sol related to Dépannage : Avertissement Fontconfig : "/tmp/fonts.conf, ligne 4 : nom de répertoire de...

et ``

fontconf_dir = '/etc/fonts` ``

Remarque : Nombre de fichiers de formation (.box et .tif)

Actuellement, le nombre de fichiers d'entraînement est de 100. Ce nombre de fichiers d'entraînement peut être modifié en éditant ou en supprimant ces lignes de code dans split_training_text.py.

Number Of Trainfile related to Remarque : Nombre de fichiers de formation (.box et .tif)

Étape 11 : Télécharger eng.traineddata

eng.traineddata peut être trouvé à partir de l'URL suivante : https://github.com/tesseract-ocr/tessdata_best. Téléchargez-le dans tesseract_tutorial/tesseract/tessdata car ce eng.traineddata dans tessdata_best est meilleur que l'original dans le dossier tessdata.

Étape 12 : Créer votre police personnalisée .traineddata

Accédez au répertoire du dossier tesstrain et utilisez cette ligne de commande dans le WSL2 ``

TESSDATA_PREFIX=../tesseract/tessdata make training MODEL_NAME=AMGDT START_MODEL=eng TESSDATA=../tesseract/tessdata MAX_ITERATIONS=100 ``

  • Effectuer la formation = exécuter le code dans tesstrain/Makefile
  • MODEL_NAME = le nom de votre police personnalisée
  • START_MODEL = le nom du fichier .traineddata original
  • MAX_ITERATIONS = nombre d'itérations (un nombre plus élevé signifie des .traineddata plus précises)

    image

Le problème "Échec de la lecture des données depuis : " peut être résolu en modifiant des lignes de code dans le Makefile

Avant :

Makefile Sol Before related to Le problème "Échec de la lecture des données depuis : " peut être résolu e...

Après :

Makefile Sol After related to Le problème "Échec de la lecture des données depuis : " peut être résolu en...

et

make - Makefile
WORDLIST_FILE := $(OUTPUT_DIR2)/$(MODEL_NAME).lstm-word-dawg
NUMBERS_FILE := $(OUTPUT_DIR2)/$(MODEL_NAME).lstm-number-dawg
PUNC_FILE := $(OUTPUT_DIR2)/$(MODEL_NAME).lstm-punc-dawg

Le message d'erreur "Failed to load script unicharset from:data/langdata/Latin.unicharset" peut être résolu en insérant Latin.unicharset dans le dossier tesstrain/data/langdata

Étape 13 : La précision du .traineddata créé

Avec 1000 fichiers .box et .tif et 3000 itérations d'entraînement, le fichier de sortie .traineddata (AMGDT.traineddata) présente un taux d'erreur d'entraînement minimal (BCER) d'environ 5,77.

Traineddata Accuracy related to Étape 13 : La précision du .traineddata créé

Pour plus de lecture et de référence supplémentaire : ref : https://www.youtube.com/watch?v=KE4xEzFGSU8ustom

Kannaopat Udonpant
Ingénieur logiciel
Avant de devenir ingénieur logiciel, Kannapat a obtenu un doctorat en ressources environnementales à l'université d'Hokkaido au Japon. Tout en poursuivant ses études, Kannapat est également devenu membre du Vehicle Robotics Laboratory, qui fait partie du Department of Bioproduction Engineering (département d'ingénierie de la bioproduction). En 2022, il a mis à profit ses compétences en C# pour rejoindre l'équipe d'ingénieurs d'Iron Software, où il se concentre sur IronPDF. Kannapat apprécie son travail car il apprend directement auprès du développeur qui écrit la majeure partie du code utilisé dans IronPDF. Outre l'apprentissage par les pairs, Kannapat apprécie l'aspect social du travail chez Iron Software. Lorsqu'il n'écrit pas de code ou de documentation, Kannapat peut généralement être trouvé en train de jouer sur sa PS5 ou de revoir The Last of Us.