Wie man benutzerdefinierte Schriftartschulungen für Tesseract 5 in C# durchführt

Wie man eine benutzerdefinierte Schriftart mit Tesseract 5 in C# trainiert

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

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.

  1. Installieren Sie IronOCR mit NuGet Package Manager

    PM > Install-Package IronOcr
  2. 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;
  3. Bereitstellen zum Testen in Ihrer Live-Umgebung

    Beginnen Sie noch heute, IronOCR in Ihrem Projekt zu verwenden, mit einer kostenlosen Testversion

    arrow pointer

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.

Hinweis:Benutzerdefiniertes Schriftarten-Training erfordert Linux.

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
SHELL

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.

Windows-Dateiexplorer zeigt heruntergeladene AMGDT Regular.ttf Schriftartdatei an, die im roten Kasten für das Training hervorgehoben ist

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 .traineddata mit 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
SHELL

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.

Windows-Datei-Explorer mit dem Netzwerkpfad \\wsl$ für den Zugriff auf das Ubuntu-Dateisystem von Windows aus

So sollte das Kopieren der Schriftart aussehen, sobald sie im Ubuntu-Schriftverzeichnis angekommen ist:

AMGDT-Schriftdatei wird in den Ubuntu-Schriftartenordner kopiert und vom System erkannt

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
SHELL

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
SHELL
  • 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-.traineddata Dateien, die als Ausgangsmodell für das benutzerdefinierte Training verwendet werden.
  • tesstrain/data ist der Ort, an dem generierte .box Dateien (Zeichenbegrenzungsrahmen), .tif Bilder und Zwischen-LSTM-Checkpoints landen.

So sollte die Klonsequenz im Terminal aussehen:

Terminal, das die vier git-clone-Befehle ausführt und den tesstrain-Datenordner erstellt

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
SHELL

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:

Terminal, das split_training_text.py ausführt und .box- und .tif-Dateien im Datenordner erzeugt

Wie behebe ich die Fontconfig-Warnung?

Terminal zeigt fontconfig-Warnungen über fehlende Apex-Schriftart und leere Schriftart-Verzeichnisfehler

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>
XML

Kopieren Sie es nach /etc/fonts:

cp fonts.co/nf /etc/fonts
cp fonts.co/nf /etc/fonts
SHELL

Zeigen Sie dann split_training_text.py auf denselben Pfad:

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

Wie viele Trainingsdateien sollte ich erstellen?

Standardmäßig generiert das Skript 100 Trainingspaare. Ändern Sie die Anzahl oben in split_training_text.py:

Python-Code setzen count=100 und Zeilen-Array schneiden, um die Größe der Trainingsdaten zu begrenzen

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
SHELL
  • 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:

tesstrain-Build-Pipeline, die Trainingsiterationen durchläuft und die Datei AMGDT.traineddata erzeugt

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%.

Tesseract-Trainingsprotokoll zeigt BCER-Verbesserung von 6,388% auf 5,771% über die Iterationen 2194–2298

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
$vbLabelText   $csharpLabel

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 .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 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.

Kannaopat Udonpant
Software Ingenieur
Bevor er Software-Ingenieur wurde, absolvierte Kannapat ein PhD in Umweltressourcen an der Hokkaido University in Japan. Während seines Studiums wurde Kannapat auch Mitglied des Vehicle Robotics Laboratory, das Teil der Fakultät für Bioproduktionstechnik ist. Im Jahr 2022 nutzte er seine C#-Kenntnisse, um dem Engineering-Team von Iron Software ...
Weiterlesen
Rezensiert von
Jeff Fritz
Jeffrey T. Fritz
Principal Program Manager - .NET Community Team
Jeff ist außerdem Principal Program Manager für das .NET- und Visual Studio-Team. Er ist der ausführende Produzent der .NET Conf Virtual Conference Series und moderiert ‚Fritz and Friends‘, einen Livestream für Entwickler, der zweimal wöchentlich ausgestrahlt wird. Dort spricht er über Technik und schreibt gemeinsam mit den Zuschauern Code. Jeff schreibt Workshops, Präsentationen und plant Inhalte für die größten Microsoft-Entwicklerveranstaltungen, einschließlich Microsoft Build, Microsoft Ignite, .NET Conf und dem Microsoft MVP Summit.
Bereit anzufangen?
Nuget Downloads 6,136,090 | Version: 2026.7 gerade veröffentlicht
Still Scrolling Icon

Scrollst du immer noch?

Sie brauchen schnell einen Beweis? PM > Install-Package IronOcr
Führen Sie ein Beispiel aus und beobachten Sie, wie Ihr Bild zu durchsuchbarem Text wird.