Comment former une police personnalisée pour Tesseract 5 en C#

Comment entraîner une police personnalisée avec Tesseract 5 en C

This article was translated from English: Does it need improvement?
Translated
View the article in English

Le modèle anglais par défaut de Tesseract mal interprète de nombreuses entrées du monde réel : formulaires manuscrits d'admission à l'hôpital, numérisations de livres anciens, une police décorative sur mesure d'un studio de jeux, ou des symboles spécifiques à l'industrie qu'un moteur OCR générique n'a jamais vus. La solution consiste à entraîner vous-même Tesseract sur la police exacte, ce qui produit un seul artefact .traineddata que vous pouvez déployer partout où IronOCR s'exécute.

Ce guide présente de A à Z l'entraînement des polices personnalisées de Tesseract 5 en C# : installez la chaîne d'outils WSL2 Ubuntu, générez les fichiers d'entraînement .box et .tif à partir de votre .ttf ou .otf, la création du modèle .traineddata avec tesstrain par rapport à une base eng.traineddata, puis le chargement du résultat dans IronOCR. Une fois formé, le fichier est portable entre Windows, macOS, Linux et Docker.

Démarrage rapide : Utilisez votre fichier de police formé en C#

Configurez IronOCR en pointant UseCustomTesseractLanguageFile vers votre fichier .traineddata entraîné, puis appelez Read sur n'importe quelle image comme vous le feriez avec un pack de langues standard.

  1. Installez IronOCR avec le Gestionnaire de Packages NuGet

    PM > Install-Package IronOcr
  2. Copiez et exécutez cet extrait de code.

    using IronOcr;
    
    var ocr = new IronTesseract();
    ocr.UseCustomTesseractLanguageFile("path/to/YourCustomFont.traineddata");
    string text = ocr.Read(new OcrInput("image-with-special-font.png")).Text;
  3. Déployez pour tester sur votre environnement de production.

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

    arrow pointer

Comment configurer l'environnement de formation?

Comment installer IronOCR?

Installez IronOCR via NuGet :

Install-Package IronOcr

Le package DLL est une alternative manuelle si vous ne pouvez pas utiliser NuGet. Pour le moteur sous-jacent, voir le guide des fonctionnalités de Tesseract 5 et la référence de langue personnalisée.

Comment installer et configurer WSL2 et Ubuntu?

Consultez le tutoriel sur la configuration de WSL2 et d'Ubuntu .

Veuillez noterLa formation de polices personnalisées nécessite Linux.

WSL2 suffit : une fois l'entraînement terminé, le fichier .traineddata obtenu est fourni avec votre application IronOCR sur Windows, macOS, Linux ou Docker. Pour les détails de déploiement, consultez le guide de déploiement sur Linux.

Comment installer Tesseract 5 sur Ubuntu?

Utilisez ces commandes pour installer Tesseract 5 :

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

Le package tesseract-ocr est le moteur qui exécute la reconnaissance ; libtesseract-dev expose les en-têtes dont tesstrain a besoin pour construire un modèle. Une fois votre fichier formé en usage, le guide de configuration de Tesseract couvre le réglage à l'exécution.

Comment préparer la police pour l'entraînement?

Quelle police devrais-je télécharger?

Ce tutoriel utilise la police AMGDT, au format .ttf ou .otf.

L'Explorateur de fichiers Windows affichant le fichier de police AMGDT Regular.ttf téléchargé, surligné dans un cadre rouge à des fins de formation

Lors du choix d'une police à entraîner :

  • Choisissez des polices que le modèle anglais par défaut déchiffre déjà mal. Former une police qui est déjà reconnue est une perte de temps.
  • Vérifiez que la licence de la police autorise la redistribution si votre .traineddata est fourni avec une application.
  • Les polices décoratives, manuscrites, et spécifiques à l'industrie (médical, juridique, cartographique) gagnent le plus en précision grâce à la formation.
  • Faites correspondre les échantillons d'entraînement à ce que la production verra réellement, y compris la résolution et l'éclairage.

Comment monter le lecteur de disque?

Montez le lecteur D: comme votre espace de travail :

cd /
cd /mnt/d
cd /
cd /mnt/d
SHELL

WSL2 monte chaque lecteur Windows sous /mnt/, donc vous pouvez modifier les fichiers sur Windows et exécuter les commandes d'entraînement contre eux dans la même session.

Comment copier le fichier de police dans le dossier de police d'Ubuntu?

Tesseract rend le texte échantillon dans votre police pour construire des images d'entraînement, donc la police doit être installée du côté Linux, pas seulement sur Windows. Copiez le fichier de police dans les deux répertoires de polices d'Ubuntu : /usr/share/fonts et /usr/local/share/fonts. La méthode la plus simple consiste à taper \wsl$ dans la barre d'adresse de l'Explorateur de fichiers pour parcourir le système de fichiers Ubuntu depuis Windows, puis à faire glisser le .ttf.

Windows File Explorer showing \\wsl$ network path for accessing Ubuntu filesystem from Windows

Voici à quoi devrait ressembler la copie de la police une fois qu'elle arrive dans le répertoire de polices d'Ubuntu :

AMGDT font file being copied into the Ubuntu fonts folder and recognized by the system

Que faire si je reçois un accès refusé au dossier de destination?

Si File Explorer rejette la copie, exécutez-la à partir d'une shell root à la place :

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
exit
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
exit
SHELL

Comment cloner les dépôts de formation depuis GitHub?

Le pipeline de formation dépend de trois dépôts. Clonez d'abord le wrapper de tutoriel, puis les deux dépôts Tesseract en amont à l'intérieur, puis créez le dossier de sortie :

git clone https://github.com/astutejoe/tesseract_tutorial.git
cd tesseract_tutorial
git clone https://github.com/tesseract-ocr/tesstrain
git clone https://github.com/tesseract-ocr/tesseract
mkdir tesstrain/data
git clone https://github.com/astutejoe/tesseract_tutorial.git
cd tesseract_tutorial
git clone https://github.com/tesseract-ocr/tesstrain
git clone https://github.com/tesseract-ocr/tesseract
mkdir tesstrain/data
SHELL
  • Tesseract_tutorial regroupe les scripts Python et les fichiers de config qui dirigent chaque étape d'entraînement (génération de texte, rendu d'image, création de paires d'entraînement).
  • tesstrain contient le Makefile qui dirige l'exécution réelle de l'entraînement.
  • Tesseract contient le dossier tessdata avec des fichiers .traineddata de base utilisés comme modèle de départ pour l'entraînement personnalisé.
  • tesstrain/data est l'emplacement où sont stockés les fichiers .box générés (boîtes de délimitation des caractères), les images .tif et les points de contrôle LSTM intermédiaires.

Voici à quoi devrait ressembler la séquence de clonage dans le terminal :

Terminal running the four git clone commands and creating the tesstrain data folder

Pour travailler avec plusieurs packs de langues aux côtés d'un pack personnalisé, consultez notre guide des langues internationales.

Comment générer des fichiers d'entraînement?

Comment exécuter le script split_training_text.py?

Depuis le dossier Tesseract_tutorial, exécutez :

python split_training_text.py
python split_training_text.py
SHELL

Le script génère une paire .box / .tif par échantillon d'entraînement et les écrit dans le dossier de données.

Voici à quoi devrait ressembler l'exécution du script lorsqu'il génère les paires d'entraînement :

Terminal running split_training_text.py and generating .box and .tif files in the data folder

Comment corriger l'avertissement Fontconfig?

Terminal affichant des avertissements fontconfig concernant l'absence de la police Apex et des erreurs de répertoire de polices vide

Si vous voyez l'avertissement Fontconfig warning: "/tmp/fonts.conf, line 4: empty font directory name ignored", fontconfig ne peut pas résoudre les répertoires de polices. Corrigez-le en modifiant tesseract_tutorial/fonts.conf :

<dir>/usr/share/fonts</dir>
<dir>/usr/local/share/fonts</dir>
<dir prefix="xdg">fonts</dir>

<dir>~/.fonts</dir>
<dir>/usr/share/fonts</dir>
<dir>/usr/local/share/fonts</dir>
<dir prefix="xdg">fonts</dir>

<dir>~/.fonts</dir>
XML

Copiez-le dans /etc/fonts :

cp fonts.conf /etc/fonts
cp fonts.conf /etc/fonts
SHELL

Puis pointez split_training_text.py vers le même chemin :

fontconf_dir = '/etc/fonts'
fontconf_dir = '/etc/fonts'
PYTHON

Combien de fichiers d'entraînement dois-je générer?

Par défaut, le script génère 100 paires d'entraînement. Modifier le nombre en haut de split_training_text.py :

Code Python définissant count=100 et découpant le tableau de lignes pour limiter la taille des données d'entraînement

Conseils de dimensionnement :

  • 100-500 échantillons suffisent pour confirmer que le pipeline fonctionne de bout en bout.
  • 1000-5000 échantillons constituent la fourchette de travail pour la précision de production.
  • Le texte d'entraînement doit couvrir chaque caractère que votre police doit reconnaître, idéalement plusieurs fois chacun.
  • Plus d'échantillons signifie plus de temps d'entraînement ; choisissez le nombre le plus petit qui atteint votre objectif de précision.

Où puis-je télécharger le fichier eng.traineddata?

Téléchargez eng.traineddata depuis le référentiel tessdata_best et placez-le dans Tesseract_tutorial/tesseract/tessdata.

Le modèle de base donne au formateur un contexte linguistique (quelles séquences de caractères forment des mots plausibles), donc la précision est bien meilleure que d'entraîner à partir de zéro. Choisissez un modèle de base dans la même langue que votre texte d'entraînement. Si vous rencontrez des problèmes, consultez le guide de dépannage des packs de langue OCR personnalisés.

Comment construire mon fichier de données entraîné de police personnalisée?

Depuis le dossier tesstrain, exécutez :

TESSDATA_PREFIX=../tesseract/tessdata make training MODEL_NAME=AMGDT START_MODEL=eng TESSDATA=../tesseract/tessdata MAX_ITERATIONS=100
TESSDATA_PREFIX=../tesseract/tessdata make training MODEL_NAME=AMGDT START_MODEL=eng TESSDATA=../tesseract/tessdata MAX_ITERATIONS=100
SHELL
  • MODEL_NAME est le nom de votre police personnalisée (utilisé pour le nom de fichier de sortie).
  • START_MODEL est le fichier de base .traineddata que vous avez téléchargé ci-dessus.
  • MAX_ITERATIONS limite l'exécution de l'entraînement ; des valeurs plus élevées réduisent généralement le taux d'erreur.

Que faire si j'obtiens "Failed to Read Data" dans le fichier Makefile ?

Pour résoudre les erreurs "Échec de la lecture des données", corrigez le 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 correctif pointe le Makefile vers le répertoire de sortie réel afin qu'il puisse localiser les fichiers de dictionnaire.

Comment corriger le message "Failed to Load Script Unicharset" ?

Téléchargez Latin.unicharset depuis langdata_lstm et placez-le dans le dossier tesstrain/data/langdata.

Le fichier .unicharset définit les caractères que le générateur est autorisé à produire. Utilisez le fichier qui couvre tous les caractères de votre police, par exemple Cyrillic.unicharset pour les polices cyrilliques ou Devanagari.unicharset pour le devanagari.

Voici à quoi devrait ressembler une session d'entraînement réussie lorsque tesstrain génère le fichier .traineddata :

tesstrain build pipeline running through training iterations and emitting the AMGDT.traineddata file

Comment vérifier la précision de mon fichier de données entraîné?

Avec 1 000 fichiers .box et .tif et 3 000 itérations d'entraînement, la sortie AMGDT.traineddata atteint un taux d'erreur d'entraînement (BCER) d'environ 5,77 %.

Journal d'entraînement Tesseract montrant une amélioration du BCER de 6,388 % à 5,771 % au cours des itérations 2194 à 2298

Pour tester le modèle entraîné avec IronOCR, pointez UseCustomTesseractLanguageFile vers le fichier et lisez une image d'exemple :

using IronOcr;

// Load the trained model; AutoOsd handles orientation
var ocr = new IronTesseract();
ocr.UseCustomTesseractLanguageFile("path/to/AMGDT.traineddata");
ocr.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.AutoOsd;

// Preprocess so the model sees clean glyphs
using var input = new OcrInput();
input.LoadImage("test-image-with-amgdt-font.png");
input.EnhanceResolution(300);
input.DeNoise();

// Confidence reflects training quality
var result = ocr.Read(input);
Console.WriteLine($"Text: {result.Text}");
Console.WriteLine($"Confidence: {result.Confidence}%");
using IronOcr;

// Load the trained model; AutoOsd handles orientation
var ocr = new IronTesseract();
ocr.UseCustomTesseractLanguageFile("path/to/AMGDT.traineddata");
ocr.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.AutoOsd;

// Preprocess so the model sees clean glyphs
using var input = new OcrInput();
input.LoadImage("test-image-with-amgdt-font.png");
input.EnhanceResolution(300);
input.DeNoise();

// Confidence reflects training quality
var result = ocr.Read(input);
Console.WriteLine($"Text: {result.Text}");
Console.WriteLine($"Confidence: {result.Confidence}%");
Imports IronOcr

' Load the trained model; AutoOsd handles orientation
Dim ocr As New IronTesseract()
ocr.UseCustomTesseractLanguageFile("path/to/AMGDT.traineddata")
ocr.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.AutoOsd

' Preprocess so the model sees clean glyphs
Using input As New OcrInput()
    input.LoadImage("test-image-with-amgdt-font.png")
    input.EnhanceResolution(300)
    input.DeNoise()

    ' Confidence reflects training quality
    Dim result = ocr.Read(input)
    Console.WriteLine($"Text: {result.Text}")
    Console.WriteLine($"Confidence: {result.Confidence}%")
End Using
$vbLabelText   $csharpLabel

La propriété Confidence correspond au score par document ; s'il reste bas même sur des entrées propres, les causes les plus courantes sont un nombre trop faible d'échantillons d'entraînement ou un modèle de base qui ne correspond pas au script. Une fois votre .traineddata vérifié, consultez notre guide des langues personnalisées pour connaître le processus général de chargement d'un fichier de langue personnalisé.

Quels sont les points clés à retenir pour l'entraînement de polices personnalisées ?

L'entraînement d'une police personnalisée est une configuration ponctuelle : générez des paires .box / .tif à partir de votre police cible, construisez un modèle .traineddata avec tesstrain, puis chargez-le via UseCustomTesseractLanguageFile. À partir de là, IronOCR lit les images avec le nouveau modèle exactement de la même manière qu'il lit l'anglais de base.

Principaux avantages de l'utilisation d'IronOCR avec un modèle Tesseract personnalisé :

  • Réutilise les artefacts Tesseract standard : tout fichier .traineddata que vous pouvez créer avec tesstrain fonctionne dans IronOCR sans conversion.
  • Sortie multiplateforme : l'entraînement nécessite Linux (ou WSL2), mais le fichier entraîné est livré avec votre application sur Windows, macOS, Linux et Docker.
  • Insertion directe avec le reste de l'API : combinez des polices personnalisées avec plusieurs langues secondaires, correction de la qualité de l'image, et réglage du DPI sans changer le chemin de reconnaissance.
  • Précision réglable : le taux d'erreur est une fonction des échantillons d'entraînement multipliée par les itérations. Les deux paramètres sont accessibles (le nombre d'échantillons du script plus MAX_ITERATIONS) afin que vous puissiez ajuster le compromis entre le temps de formation et le BCER sans quitter Tesseract.

Pour les pipelines plus importants, envisagez le suivi de progression et le traitement asynchrone lorsque vous appliquez votre modèle entraîné à de nombreux documents.

Questions Fréquemment Posées

Comment utiliser un fichier de police formé sur mesure dans C# ?

Vous pouvez utiliser votre fichier de polices Tesseract formé sur mesure dans IronOcr avec seulement quelques lignes de code. Il vous suffit de créer une instance IronTesseract, d'appeler UseCustomTesseractLanguageFile() avec le chemin d'accès à votre fichier .traineddata, puis d'utiliser la méthode Read() pour effectuer l'OCR sur les images contenant votre police spéciale.

Quelles sont les exigences en matière de formation de polices personnalisées pour l'OCR ?

L'entraînement personnalisé des polices nécessite un environnement Linux (WSL2 avec Ubuntu est recommandé pour les utilisateurs de Windows), Tesseract 5 installé avec les bibliothèques de développement et le fichier de police que vous souhaitez entraîner (au format .ttf ou .otf). Les fichiers .traineddata créés sous Linux fonctionnent parfaitement avec IronOCR sur toutes les plateformes.

Pourquoi devrais-je former des polices personnalisées au lieu d'utiliser l'OCR standard ?

L'entraînement des polices personnalisées améliore la précision de l'OCR pour des polices spécifiques, en particulier les polices décoratives ou spéciales qui diffèrent considérablement des modèles Tesseract standard. IronOcr peut alors utiliser ces fichiers de polices entraînées pour reconnaître avec précision le texte dans les images contenant ces polices uniques qui seraient autrement difficiles à lire avec les modèles OCR standard.

Puis-je utiliser des polices formées sur mesure sur différentes plateformes ?

Oui, bien que le processus de formation nécessite Linux, les fichiers .traineddata résultants fonctionnent de manière transparente sur toutes les plateformes avec IronOcr. Cela signifie que vous pouvez former une fois sur Linux et utiliser le fichier de données formées sur des déploiements Windows, macOS ou Linux.

Quelle méthode d'installation est recommandée pour commencer ?

Pour une installation rapide, vous pouvez télécharger directement la DLL IronOCR ou l'installer via le Package Manager NuGet. NuGet est recommandé car il gère automatiquement les dépendances et facilite les mises à jour. IronOCR offre une prise en charge complète des fonctionnalités de Tesseract 5 et des implémentations de langages personnalisés.

IronOCR prend-elle en charge plusieurs langues ?

IronOCR prend en charge plusieurs langues, ce qui en fait un outil polyvalent pour des applications globales nécessitant la reconnaissance de texte dans différentes langues.

IronOCR peut-il être intégré dans des applications existantes ?

IronOCR est conçu pour être facilement intégré dans les applications existantes en utilisant C#, permettant aux développeurs d'ajouter des fonctionnalités OCR à leur logiciel avec un minimum d'effort.

Quels sont les avantages d'utiliser IronOCR pour la gestion des documents ?

Utiliser IronOCR pour la gestion des documents rationalise le flux de travail en convertissant les documents numérisés en texte modifiable et consultable, réduisant le besoin de saisie manuelle des données et améliorant l'accessibilité des documents.

Comment IronOCR peut-il améliorer la précision des données ?

IronOCR améliore la précision des données grâce à ses algorithmes de reconnaissance avancés et ses fonctionnalités de correction d'image, garantissant que le processus d'extraction de texte est à la fois fiable et précis.

Y a-t-il un essai gratuit disponible pour IronOCR ?

Oui, Iron Software propose un essai gratuit d'IronOCR, permettant aux utilisateurs de tester ses fonctionnalités et capacités avant de prendre une décision d'achat.

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. Pendant qu'il poursuivait son diplôme, Kannapat est également devenu membre du laboratoire de robotique de véhicules, qui fait partie du département de bioproduction. En 2022, il a utilisé ses compé...
Lire la suite
Revu par
Jeff Fritz
Jeffrey T. Fritz
Responsable principal du programme - Équipe de la communauté .NET
Jeff est également responsable principal du programme pour les équipes .NET et Visual Studio. Il est le producteur exécutif de la série de conférences virtuelles .NET Conf et anime 'Fritz and Friends', une diffusion en direct pour développeurs qui est diffusée deux fois par semaine où il parle de technologie et écrit du code avec les téléspectateurs. Jeff écrit des ateliers, des présentations et prévoit du contenu pour les plus grands événements de développement Microsoft, y compris Microsoft Build, Microsoft Ignite, .NET Conf et le sommet Microsoft MVP
Prêt à commencer?
Nuget Téléchargements 5,888,303 | Version : 2026.5 just released
Still Scrolling Icon

Vous faites encore défiler ?

Vous voulez une preuve rapidement ? PM > Install-Package IronOcr
lancez un échantillon regardez votre image se transformer en texte consultable.