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 der genauen Schriftart zu trainieren und ein einzelnes .traineddata Artefakt zu erzeugen, das Sie überall einsetzen können, wo IronOCR läuft.
Dieses Handbuch führt durch das Tesseract 5 Custom Font Training von Anfang bis Ende in C#: Installation der WSL2 Ubuntu-Toolchain, Erstellung von .box und .tif Trainingsdateien aus Ihrem .ttf oder .otf, Aufbau des .traineddata Modells mit tesstrain gegen ein Basis-eng.traineddata, und dann Laden des Ergebnisses 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 zeigen, und dann Read auf jedes Bild anwenden, wie Sie es mit einem Standard-Sprachpaket tun würden.
-
Installieren Sie IronOCR mit NuGet Package Manager
-
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 auf Windows, macOS, Linux oder Docker bereitgestellt. 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 der Motor, der die Erkennung ausführt; libtesseract-dev stellt die Header bereit, die tesstrain benötigt, um ein Modell zu erstellen. 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 AMGDT Schriftart, entweder im .ttf oder .otf Format.

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.
- Bestätigen Sie, dass die Lizenz der Schriftart die Weiterverbreitung erlaubt, wenn 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/<Buchstabe> ein, sodass Sie Dateien unter Windows bearbeiten und Trainingsbefehle gegen sie im selben Sitzungsabschnitt ausführen können.
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. Der einfachste Weg ist, \wsl$ in die Adressleiste des Dateiexplorers einzugeben, um das Ubuntu-Dateisystem von Windows aus zu durchsuchen, und dann das .ttf herü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 Tessdata-Ordner mit Standard-
.traineddataDateien, die als Ausgangsmodell für das benutzerdefinierte Training verwendet werden. - tesstrain/data ist der Ort, an dem generierte
.boxDateien (Zeichenbegrenzungsrahmen),.tifBilder und Zwischen-LSTM-Checkpoints landen.
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 erzeugt pro Trainingsprobe ein .box / .tif Paar und schreibt es 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.co/nf, line 4: empty font directory name ignored", kann fontconfig die Schriftverzeichnisse nicht auflösen. Beheben Sie es durch Bearbeiten von tesseract_tutorial/fonts.co/nf:
<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.co/nf /etc/fonts
cp fonts.co/nf /etc/fonts
Zeigen 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 Anzahl 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 von der tessdata_best Repository herunter und platzieren Sie es in Tesseract_tutorial/tesseract/tessdata.
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 das Basis-
.traineddata, das 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 von langdata_lstm herunter und platzieren Sie es im Verzeichnis tesstrain/data/langdata.
Die .unicharset Datei definiert, welche Zeichen vom Trainer ausgegeben werden dürfen. Verwenden Sie die Datei, die jedes Zeichen Ihrer Schriftart abdeckt, zum Beispiel Cyrillic.unicharset für kyrillische Schriften oder Devanagari.unicharset für Devanagari.
So sollte ein erfolgreicher Trainingsdurchlauf aussehen, während tesstrain die .traineddata Datei produziert:
Wie überprüfe ich die Genauigkeit meiner trainierten Datendatei?
Mit 1.000 .box und .tif Dateien und 3.000 Trainingsiterationen erreicht die Ausgabe AMGDT.traineddata eine Trainingsfehlerquote (BCER) von etwa 5,77%.

Um das trainierte Modell mit IronOCR zu testen, zeigen Sie UseCustomTesseractLanguageFile auf die Datei und lesen Sie ein Beispielbild:
:path=/static-assets/ocr/content-code-examples/how-to/ocr-custom-font-training-13.cs
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 Confidence Eigenschaft ist die Punktzahl pro Dokument; 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, sehen Sie sich unseren Leitfaden für benutzerdefinierte Sprachen an, um den allgemeinen Workflow zum Laden einer beliebigen benutzerdefinierten Sprachdatei zu verstehen.
Was sind die wichtigsten Erkenntnisse beim Training benutzerdefinierter Schriftarten?
Das Training 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 erneut: Jede
.traineddataDatei, 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 Schalter sind (die Stichprobenanzahl des Skripts plus
MAX_ITERATIONS) freigelegt, sodass Sie den Kompromiss zwischen Trainingszeit und BCER innerhalb von Tesseract feinabstimmen können.
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.

