C# Schulung für benutzerdefinierte Schriftarten für Tesseract 5 (für Windows-Benutzer)

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

von Kannapat Udompant

Verwenden Sie das benutzerdefinierte Schriftartentraining für Tesseract 5, um die Genauigkeit und die Erkennungsfähigkeiten der OCR-Engine zu verbessern, wenn Sie mit bestimmten Schriftarten oder Schriftschnitten arbeiten, die standardmäßig nicht gut unterstützt werden.

Dabei werden Tesseract Trainingsdaten wie Schriftmuster und entsprechender Text zur Verfügung gestellt, damit es die spezifischen Eigenschaften und Muster der benutzerdefinierten Schriftarten erlernen kann.

Legen Sie los mit IronOCR

Beginnen Sie noch heute mit der Verwendung von IronOCR in Ihrem Projekt mit einer kostenlosen Testversion.

Erster Schritt:
green arrow pointer



Schritt 1: Laden Sie die neueste Version von IronOCR herunter

Installation über DLL

Herunterladen der IronOcr DLL direkt auf Ihr Gerät.

Installation über NuGet

Alternativ können Sie die Installation auch über NuGet .

Install-Package IronOcr

Schritt 2: Installieren und Einrichten von WSL2 und Ubuntu

Hier ist die Anleitung zum Einrichten von WSL2 und Ubuntu

** Derzeit kann das Training für benutzerdefinierte Schriften nur unter Linux durchgeführt werden

Schritt 3: Tesseract 5 auf Ubuntu installieren

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

Schritt 4: Laden Sie die Schriftart herunter, die Sie trainieren möchten

Wir verwenden für dieses Tutorial die Schriftart AMGDT. Die Schriftdatei kann sowohl .ttf als auch .otf sein

Example Of Downloaded Font File related to Schritt 4: Laden Sie die Schriftart herunter, die Sie trainieren möchten

Schritt 5: Mounten Sie das Laufwerk Ihres Arbeitsbereichs für das Training der benutzerdefinierten Schriftart

Der folgende Befehl zeigt, wie man das Laufwerk D: als Arbeitsbereich einbindet.

cd /
cd /mnt/d

Schritt 6: Kopieren Sie die Schriftdatei in den Ubuntu-Schriftordner

Hier ist das Verzeichnis des Ubuntu-Schriftartenordners; Ubuntu/usr/share/fonts und Ubuntu/usr/local/share/fonts.

** Um auf die Datei unter Ubuntu zuzugreifen, geben Sie im Dateiexplorer-Verzeichnis \\wsl$ ein

Ubutu Folder Directory related to Schritt 6: Kopieren Sie die Schriftdatei in den Ubuntu-Schriftordner

Fehlersuche: Zugriff auf Zielordner verweigert

Destination Folder Access Denied related to Fehlersuche: Zugriff auf Zielordner verweigert

Dieses Problem kann durch Kopieren der Datei über die Befehlszeile gelöst werden

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

Schritt 7: Klonen Sie tesseract_tutorial von Github

das tesseract_tutorial Repository kann über die folgende URL geklont werden; https://github.com/astutejoe/tesseract_tutorial.git indem Sie den folgenden Befehl verwenden;

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

Schritt 8: Klonen Sie tesstrain und tesseract von Github

Wechseln Sie in das Verzeichnis "tesseract_tutorial" und klonen Sie mit git die Verzeichnisse https://github.com/tesseract-ocr/tesstrain und https://github.com/tesseract-ocr/tesseract

  • tesstrain enthält die Datei "Makefile", die zur Erstellung der Datei "traineddata" verwendet wird(ziel dieses Tutoriums)
  • tesseract enthält den Ordner "tessdata", der die ursprüngliche .traindata-Datei enthält, die als Referenz für das Training der benutzerdefinierten Schriftarten dient

Schritt 9: Erstellen des Ordners "data" zum Speichern der Ausgaben

Die "Daten" sollten in tesseract_tutorial/tesstrain erstellt werden.

Schritt 10: Split_training_text.py ausführen

Kehren Sie zum Verzeichnis tesseract_tutorial zurück und kompilieren Sie den folgenden Befehl;

python split_training_text.py

Nach der Ausführung von plit_training_text.py werden die Dateien .box und .tif im Ordner "data" erstellt.

Fehlersuche: Fontconfig-Warnung: "/tmp/fonts.conf, Zeile 4: leerer Font-Verzeichnisname ignoriert

Fontconfig Warning related to Fehlersuche: Fontconfig-Warnung: "/tmp/fonts.conf, Zeile 4: leerer Font-Verzeichnisna...

Dieses Problem wird dadurch verursacht, dass das Schriftartenverzeichnis im Ubuntu-Ordner nicht gefunden werden kann und kann durch Einfügen dieser Codezeilen in tesseract_tutorial/fonts.conf gelöst werden

Fontconfig Dir Png related to Fehlersuche: Fontconfig-Warnung: "/tmp/fonts.conf, Zeile 4: leerer Font-Verzeichnisna...

und

<dir>/usr/share/fonts</dir>
<dir>/usr/local/share/fonts</dir>
<dir prefix="xdg">schriftarten</dir>
<!-- das folgende Element wird in Zukunft entfernt -->
<dir>~/.fonts</dir>

Dann kopieren Sie sie nach /etc/fonts

cp fonts.conf /etc/fonts

Fügen Sie schließlich die folgenden Codezeilen zu split_training_text.py hinzu

Fontconfig Sol related to Fehlersuche: Fontconfig-Warnung: "/tmp/fonts.conf, Zeile 4: leerer Font-Verzeichnisname i...

und


fontconf_dir = '/etc/fonts`

Hinweis: Anzahl der Schulungsdateien (.box und .tif)

Derzeit beträgt die Anzahl der Trainingsdateien 100. Diese Anzahl von Trainingsdateien kann durch Bearbeiten oder Löschen dieser Codezeilen in split_training_text.py eingestellt werden.

Number Of Trainfile related to Hinweis: Anzahl der Schulungsdateien (.box und .tif)

Schritt 11: Herunterladen von eng.traineddata

die Datei eng.traineddata kann unter der folgenden Adresse abgerufen werden:https://github.com/tesseract-ocr/tessdata_best. Laden Sie sie in den Ordner tesseract_tutorial/tesseract/tessdata herunter, da diese eng.traineddata in tessdata_best besser ist als die Originaldaten im Ordner tessdata.

Schritt 12: Erstellen Sie Ihre eigene Schriftart .traineddata

Gehen Sie in das Verzeichnis tesstrain und geben Sie folgende Befehlszeile in die WSL2 ein


TESSDATA_PREFIX=../tesseract/tessdata make training MODEL_NAME=AMGDT START_MODEL=eng TESSDATA=../tesseract/tessdata MAX_ITERATIONS=100
  • Training durchführen = Code in tesstrain/Makefile ausführen
  • MODEL_NAME = der Name der benutzerdefinierten Schriftart
  • START_MODEL = der Name der ursprünglichen .traineddata
  • MAX_ITERATIONS = Anzahl der Iterationen(eine größere Zahl bedeutet eine höhere Genauigkeit der "trainierten Daten"

    Makefile Issues related to Schritt 12: Erstellen Sie Ihre eigene Schriftart .traineddata

"Failed to read data from: " kann durch Bearbeiten von Codezeilen im Makefile gelöst werden

Vorher:

Makefile Sol Before related to "Failed to read data from: " kann durch Bearbeiten von Codezeilen im Makefile g...

Danach:

Makefile Sol After related to "Failed to read data from: " kann durch Bearbeiten von Codezeilen im Makefile ge...

und


make - Makefile

WORTLISTE_DATEI := $(OUTPUT_DIR2)/$(MODELL_NAME).lstm-word-dawg

ZAHLEN_DATEI := $(OUTPUT_DIR2)/$(MODELL_NAME).lstm-nummer-dawg

PUNC_FILE := $(OUTPUT_DIR2)/$(MODELL_NAME).lstm-punc-dawg

die Meldung "Failed to load script unicharset from:data/langdata/Latin.unicharset" kann durch Einfügen von Latin.unicharset in den Ordner tesstrain/data/langdata behoben werden

Schritt 13: Die Genauigkeit der erstellten .traineddata

Mit 1000 "box"- und "tif"-Dateien und 3000 Iterationen des Trainings wird die Ausgabe "traineddta" erzeugt(AMGDT.traineddata) hat eine minimale Fehlerquote beim Training(BCER) rund 5,77

Traineddata Accuracy related to Schritt 13: Die Genauigkeit der erstellten .traineddata

Für weitere Lektüre und weitere Hinweise: ref: https://www.youtube.com/watch?v=KE4xEzFGSU8ustom

Kannapat related to Schritt 13: Die Genauigkeit der erstellten .traineddata

Kannapat Udonpant

Software-Ingenieur

Bevor er Software-Ingenieur wurde, promovierte Kannapat an der Universität Hokkaido in Japan im Bereich Umweltressourcen. Während seines Studiums wurde Kannapat auch Mitglied des Vehicle Robotics Laboratory, das Teil der Abteilung für Bioproduktionstechnik ist. Im Jahr 2022 wechselte er mit seinen C#-Kenntnissen zum Engineering-Team von Iron Software, wo er sich auf IronPDF konzentriert. Kannapat schätzt an seiner Arbeit, dass er direkt von dem Entwickler lernt, der den Großteil des in IronPDF verwendeten Codes schreibt. Neben dem kollegialen Lernen genießt Kannapat auch den sozialen Aspekt der Arbeit bei Iron Software. Wenn er nicht gerade Code oder Dokumentationen schreibt, kann man Kannapat normalerweise beim Spielen auf seiner PS5 oder beim Wiedersehen mit The Last of Us antreffen.