Wie man eine benutzerdefinierte Schriftart mit Tesseract 5 in C# trainiert
Das Standard-Tesseract-Englischmodell liest viele reale Eingaben falsch: handschriftliche Aufnahmeformulare im Krankenhaus, die Digitalisierung alter Bücher, eine individuelle dekorative Schrift eines Spieleentwicklers oder branchenspezifische Symbole, die eine generische OCR-Engine noch nie gesehen hat. Die Lösung besteht darin, Tesseract selbst auf die exakte Schriftart zu trainieren, wodurch ein einziges .traineddata-Artefakt entsteht, das Sie überall dort einsetzen können, wo IronOCR läuft.
Dieser Leitfaden führt Sie durch das gesamte Training für benutzerdefinierte Schriftarten in Tesseract 5 in C#: Installieren Sie die WSL2-Ubuntu-Toolchain, rendern Sie die Trainingsdateien .box und .tif von Ihrem .ttf oder .otf, erstellen Sie das .traineddata-Modell mit tesstrain auf Basis eines eng.traineddata-Modells und laden Sie das Ergebnis anschließend in IronOCR. Sobald das Training abgeschlossen ist, ist die Datei auf Windows, macOS, Linux und Docker portabel.
Schnellstart: Verwenden Sie Ihre trainierte Schriftdatei in C#
Konfigurieren Sie IronOCR, indem Sie UseCustomTesseractLanguageFile auf Ihre trainierte .traineddata-Datei verweisen, und rufen Sie dann Read für jedes Bild auf, wie Sie es mit einem Standard-Sprachpaket tun würden.
-
Installieren Sie IronOCR mit NuGet Package Manager
PM > Install-Package IronOcr -
Kopieren Sie diesen Codeausschnitt und führen Sie ihn aus.
using IronOcr; var ocr = new IronTesseract(); ocr.UseCustomTesseractLanguageFile("path/to/YourCustomFont.traineddata"); string text = ocr.Read(new OcrInput("image-with-special-font.png")).Text; -
Bereitstellen zum Testen in Ihrer Live-Umgebung
Beginnen Sie noch heute, IronOCR in Ihrem Projekt zu verwenden, mit einer kostenlosen Testversion
Minimaler Arbeitsablauf (5 Schritte)
- Laden Sie IronOCR über NuGet herunter, um mit benutzerdefinierten Schriftarten zu lesen
- Installieren Sie Tesseract 5 auf WSL2 Ubuntu und klonen Sie die
tesstrain-Trainings-Repositories. - Erstellen Sie Trainingsdateien für Ihre Zielschriftart mit
split_training_text.py - Erstellen Sie Ihre benutzerdefinierte
.traineddata-Datei mithilfe vontesstrainund einem Basissprachenmodell - Laden Sie die trainierte Datei in IronOCR mit
UseCustomTesseractLanguageFileund rufen SieReadauf.
Wie richte ich die Trainingsumgebung ein?
Wie installiere ich IronOCR?
Installieren Sie IronOCR über NuGet:
Install-Package IronOcr
Das DLL-Paket ist eine manuelle Alternative, falls Sie NuGet nicht verwenden können. Für die zugrunde liegende Engine sehen Sie sich den Tesseract 5-Funktionsleitfaden und die benutzerdefinierte Sprachreferenz an.
Wie installiere und richte ich WSL2 und Ubuntu ein?
Verweisen Sie auf das Tutorial über Einrichten von WSL2 und Ubuntu.
WSL2 reicht aus: Sobald das Training abgeschlossen ist, wird die resultierende .traineddata-Datei mit Ihrer IronOCR-App unter Windows, macOS, Linux oder Docker ausgeliefert. Für Einzelheiten zum Deployment siehe den Linux-Deployment-Leitfaden.
Wie installiere ich Tesseract 5 auf Ubuntu?
Verwenden Sie diese Befehle, um Tesseract 5 zu installieren:
sudo apt install tesseract-ocr
sudo apt install libtesseract-dev
sudo apt install tesseract-ocr
sudo apt install libtesseract-dev
Das tesseract-ocr-Paket ist die Engine, die die Erkennung ausführt; libtesseract-dev stellt die Header bereit, die tesstrain zum Erstellen eines Modells benötigt. Sobald Ihre trainierte Datei verwendet wird, deckt der Tesseract-Konfigurationsleitfaden die Abstimmung zur Laufzeit ab.
Wie bereite ich die Schrift für das Training vor?
Welche Schriftart soll ich herunterladen?
Dieses Tutorial verwendet die Schriftart AMGDT im Format .ttf oder .otf.

Wenn Sie eine Schriftart zum Trainieren auswählen:
- Wählen Sie Schriftarten, die das Standard-Englischmodell bereits falsch liest. Das Training einer Schriftart, die bereits erkannt wird, verschwendet Zeit.
- Vergewissern Sie sich, dass die Lizenz der Schriftart die Weitergabe erlaubt, falls Ihr
.traineddatamit einer Anwendung ausgeliefert wird. - Dekorative, handgeschriebene und branchenspezifische Schriftarten (medizinisch, rechtlich, kartografisch) gewinnen durch das Training die meiste Genauigkeit.
- Passen Sie die Trainingsproben an das an, was in der Produktion tatsächlich gesehen wird, einschließlich Auflösung und Beleuchtung.
Wie binde ich das Laufwerk ein?
Binden Sie Laufwerk D: als Ihren Arbeitsbereich ein:
cd /
cd /mnt/d
cd /
cd /mnt/d
WSL2 bindet jedes Windows-Laufwerk unter /mnt/
Wie kopiere ich die Schriftdatei in den Ubuntu-Schriftenordner?
Tesseract rendert Beispieltext in Ihrer Schriftart, um Trainingsbilder zu erstellen, daher muss die Schrift auf der Linux-Seite installiert sein, nicht nur auf Windows. Kopieren Sie die Schriftdatei in beide Ubuntu-Schriftverzeichnisse: /usr/share/fonts und /usr/local/share/fonts. Am einfachsten ist es, \wsl$ in die Adressleiste des Datei-Explorers einzugeben, um das Ubuntu-Dateisystem von Windows aus zu durchsuchen, und dann das .ttf hinüberzuziehen.

So sollte das Kopieren der Schriftart aussehen, sobald sie im Ubuntu-Schriftverzeichnis angekommen ist:
Was, wenn ich Zugriff auf das Zielverzeichniss verweigert bekomme?
Wenn der Datei-Explorer das Kopieren ablehnt, führen Sie es stattdessen von einer Root-Shell aus aus:
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
Wie klone ich die Trainings-Repositories von GitHub?
Die Trainingspipeline hängt von drei Repositories ab. Klonen Sie zunächst den Tutorial-Wrapper, dann die beiden ursprünglichen Tesseract-Repos darin und erstellen Sie dann den Ausgabeordner:
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
- Tesseract_tutorial bündelt die Python-Skripte und Konfigurationsdateien, die jeden Trainingsschritt steuern (Textgenerierung, Bild-Rendering, Erstellung von Trainingspaaren).
- tesstrain enthält das Makefile, das den eigentlichen Trainingslauf steuert.
- Tesseract enthält den Ordner "tessdata" mit Standard-
.traineddata-Dateien, die als Ausgangsmodell für das benutzerdefinierte Training dienen. - tesstrain/data ist der Ort, an dem generierte
.box-Dateien (Zeichen-Bounding-Boxen),.tif-Bilder und LSTM-Zwischen-Checkpoints gespeichert werden.
So sollte die Klonsequenz im Terminal aussehen:
Für die Arbeit mit mehreren Sprachpaketen zusammen mit einem benutzerdefinierten, siehe unseren internationalen Sprachleitfaden.
Wie erstelle ich Trainingsdateien?
Wie starte ich das split_training_text.py-Skript?
Aus dem Tesseract_tutorial-Ordner heraus führen Sie:
python split_training_text.py
python split_training_text.py
Das Skript generiert pro Trainingsbeispiel ein .box / .tif-Paar und schreibt diese in den Datenordner.
So sollte der Skriptlauf aussehen, während er die Trainingspaare generiert:
Wie behebe ich die Fontconfig-Warnung?

Wenn Sie die Warnung sehen Fontconfig warning: "/tmp/fonts.conf, line 4: empty font directory name ignored", kann fontconfig die Schriftverzeichnisse nicht auflösen. Behebe das Problem, indem du tesseract_tutorial/fonts.conf bearbeitest:
<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>
Kopieren Sie es nach /etc/fonts:
cp fonts.conf /etc/fonts
cp fonts.conf /etc/fonts
Richten Sie dann split_training_text.py auf denselben Pfad:
fontconf_dir = '/etc/fonts'
fontconf_dir = '/etc/fonts'
Wie viele Trainingsdateien sollte ich erstellen?
Standardmäßig generiert das Skript 100 Trainingspaare. Ändern Sie die Zählung oben in split_training_text.py:

Größenanleitung:
- 100-500 Proben reichen aus, um die Ende-zu-Ende-Funktionalität der Pipeline zu bestätigen.
- 1000-5000 Proben sind der Arbeitsbereich für Produktionsgenauigkeit.
- Der Trainingsinhalt muss jedes Zeichen abdecken, das Ihre Schrift erkennen muss, idealerweise mehrmals.
- Mehr Proben bedeuten längere Trainingszeit; wählen Sie die kleinste Menge, die Ihr Genauigkeitsziel erreicht.
Wo lade ich die eng.traineddata-Datei herunter?
Laden Sie eng.traineddata aus dem Repository "tessdata_best" herunter und legen Sie es in "Tesseract_tutorial/tesseract/tessdata" ab.
Das Basismodell gibt dem Trainer einen linguistischen Kontext (welche Zeichenfolgen plausible Wörter bilden), dadurch ist die Genauigkeit viel besser als bei einem Training von Grund auf. Wählen Sie ein Basismodell in derselben Sprache wie Ihr Trainingsinhalt. Wenn Sie auf Probleme stoßen, sehen Sie im Leitfaden zur Fehlersuche bei benutzerdefinierten OCR-Sprachpaketen nach.
Wie erstelle ich meine benutzerdefinierte Schriftart-Trainingsdatendatei?
Aus dem tesstrain-Ordner heraus führen Sie:
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
- MODEL_NAME ist der Name Ihrer benutzerdefinierten Schrift (wird für den Ausgabedateinamen verwendet).
- START_MODEL ist die Basis-
.traineddata, die Sie oben heruntergeladen haben. - MAX_ITERATIONS begrenzt den Trainingslauf; höhere Werte reduzieren in der Regel die Fehlerquote.
Was ist, wenn ich die Meldung "Failed to Read Data" in Makefile erhalte?
Um "Failed to read data"-Fehler zu beheben, patchen Sie das 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
Der Patch zeigt das Makefile auf das tatsächliche Ausgabeverzeichnis, damit es die Wörterbuchdateien finden kann.
Wie behebe ich die Fehlermeldung "Failed to Load Script Unicharset"?
Laden Sie Latin.unicharset aus langdata_lstm herunter und legen Sie es im Ordner tesstrain/data/langdata ab.
Die Datei .unicharset definiert, welche Zeichen der Trainer ausgeben darf. Verwenden Sie die Datei, die alle Zeichen Ihrer Schriftart abdeckt, zum Beispiel Cyrillic.unicharset für kyrillische Schriftarten oder Devanagari.unicharset für Devanagari.
So sollte ein erfolgreicher Trainingslauf aussehen, wenn tesstrain die Datei .traineddata erzeugt:
Wie überprüfe ich die Genauigkeit meiner trainierten Datendatei?
Mit 1000 .box- und .tif-Dateien sowie 3000 Trainingsiterationen erreicht die Ausgabe AMGDT.traineddata eine Trainingsfehlerrate (BCER) von etwa 5,77 %.

Um das trainierte Modell mit IronOCR zu testen, richten Sie UseCustomTesseractLanguageFile auf die Datei und lesen Sie ein Beispielbild ein:
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
Die Eigenschaft Confidence ist die dokumentbezogene Bewertung; wenn sie niedrig bleibt, auch auf sauberen Eingaben, sind die häufigsten Ursachen zu wenige Trainingsproben oder ein Basismodell, das nicht zum Skript passt. Sobald Ihr .traineddata verifiziert ist, finden Sie in unserem Leitfaden für benutzerdefinierte Sprachen den allgemeinen Arbeitsablauf zum Laden einer beliebigen benutzerdefinierten Sprachdatei.
Was sind die wichtigsten Erkenntnisse beim Training benutzerdefinierter Schriftarten?
Das Trainieren einer benutzerdefinierten Schriftart ist eine einmalige Einrichtung: Generieren Sie .box / .tif-Paare aus Ihrer Zielschriftart, erstellen Sie ein .traineddata-Modell mit tesstrain und laden Sie es dann über UseCustomTesseractLanguageFile. Von da an liest IronOCR Bilder mit dem neuen Modell genauso wie mit Standard-Englisch.
Die wichtigsten Vorteile der Verwendung von IronOCR mit einem benutzerdefinierten Tesseract-Modell:
- Verwendet Standard-Tesseract-Artefakte: Jede
.traineddata-Datei, die Sie mit tesstrain erstellen können, funktioniert in IronOCR ohne Konvertierung. - Plattformübergreifende Ausgabe: Das Training erfordert Linux (oder WSL2), aber die trainierte Datei wird mit Ihrer Anwendung auf Windows, macOS, Linux und Docker geliefert.
- Nahtlos mit dem Rest der API: Kombinieren Sie benutzerdefinierte Schriftarten mit mehreren Sekundärsprachen, Bildqualitätskorrektur und DPI-Abstimmung ohne Änderung des Erkennungspfads.
- Anpassbare Genauigkeit: Die Fehlerquote ist eine Funktion von Trainingsproben mal Iterationen. Beide Regler sind sichtbar (die Anzahl der Beispiele im Skript Plus
MAX_ITERATIONS), sodass Sie den Kompromiss zwischen Trainingszeit und BCER einstellen können, ohne Tesseract zu verlassen.
Für größere Pipelines ziehen Sie Fortschrittsüberwachung und asynchrone Verarbeitung in Betracht, wenn Sie Ihr trainiertes Modell über viele Dokumente hinweg anwenden.
Häufig gestellte Fragen
Wie verwende ich eine benutzerdefinierte trainierte Schriftartdatei in C#?
Sie können Ihre selbst erstellte Tesseract-Schriftdatei in IronOCR mit nur wenigen Zeilen Code verwenden. Erstellen Sie einfach eine IronTesseract-Instanz, rufen Sie UseCustomTesseractLanguageFile() mit dem Pfad zu Ihrer .traineddata-Datei auf und verwenden Sie dann die Read()-Methode, um OCR für Bilder mit Ihrer speziellen Schriftart durchzuführen.
Was sind die Anforderungen für die Schulung benutzerdefinierter Schriftarten für OCR?
Für das Training benutzerdefinierter Schriften ist eine Linux-Umgebung (für Windows-Anwender wird WSL2 mit Ubuntu empfohlen), Tesseract 5 mit den Entwicklungsbibliotheken und die zu trainierende Schriftdatei (entweder im Format .ttf oder .otf) erforderlich. Die unter Linux erstellten .traineddata-Dateien funktionieren nahtlos mit IronOCR auf allen Plattformen.
Warum sollte ich benutzerdefinierte Schriftarten trainieren, anstatt die Standard-OCR zu verwenden?
Das Training von benutzerdefinierten Schriftarten verbessert die OCR-Genauigkeit für bestimmte Schriftarten, insbesondere für dekorative oder spezielle Schriftarten, die sich erheblich von den Standardmodellen von Tesseract unterscheiden. IronOCR kann dann diese trainierten Schriftdateien verwenden, um Text in Bildern, die diese einzigartigen Schriftarten enthalten, genau zu erkennen, der sonst mit Standard-OCR-Modellen schwer zu lesen wäre.
Kann ich benutzerdefinierte, trainierte Schriftarten für verschiedene Plattformen verwenden?
Ja, der Schulungsprozess erfordert zwar Linux, aber die resultierenden .traineddata-Dateien funktionieren mit IronOcr nahtlos auf allen Plattformen. Das bedeutet, dass Sie einmal auf Linux trainieren und die trainierte Datendatei auf Windows-, macOS- oder Linux-Implementierungen verwenden können.
Welche Installationsmethode wird für die ersten Schritte empfohlen?
Für eine schnelle Einrichtung können Sie die IronOCR DLL direkt herunterladen oder über den NuGet Package Manager installieren. NuGet wird empfohlen, da es Abhängigkeiten automatisch verwaltet und Aktualisierungen erleichtert. IronOCR bietet umfassende Unterstützung für Tesseract 5-Funktionen und benutzerdefinierte Sprachimplementierungen.
Unterstützt IronOCR mehrere Sprachen?
IronOCR unterstützt mehrere Sprachen und ist damit ein vielseitiges Werkzeug für globale Anwendungen, die Texterkennung in verschiedenen Sprachen erfordern.
Kann IronOCR in bestehende Anwendungen integriert werden?
IronOCR ist darauf ausgelegt, leicht in bestehende Anwendungen mithilfe von C# integriert zu werden, sodass Entwickler OCR-Funktionalität mit minimalem Aufwand zu ihrer Software hinzufügen können.
Was sind die Vorteile der Nutzung von IronOCR für das Dokumentenmanagement?
Die Verwendung von IronOCR für das Dokumentenmanagement rationalisiert den Arbeitsablauf, indem gescannte Dokumente in durchsuchbare und bearbeitbare Texte umgewandelt werden, wodurch der Bedarf an manueller Dateneingabe reduziert und die Zugänglichkeit von Dokumenten verbessert wird.
Wie kann IronOCR die Datenqualität verbessern?
IronOCR verbessert die Datenqualität durch seine fortschrittlichen Erkennungsalgorithmen und Bildkorrekturfunktionen, die sicherstellen, dass der Textextraktionsprozess sowohl zuverlässig als auch genau ist.
Gibt es eine kostenlose Testversion von IronOCR?
Ja, Iron Software bietet eine kostenlose Testversion von IronOCR an, die es den Benutzern ermöglicht, die Funktionen und Fähigkeiten zu testen, bevor sie eine Kaufentscheidung treffen.

