C# Benutzerdefinierte Schriftartschulung für Tesseract 5 (für Windows-Benutzer)

Kannaopat Udonpant
Kannapat Udonpant
5. März 2023
Aktualisiert 10. Dezember 2024
Teilen Sie:
This article was translated from English: Does it need improvement?
Translated
View the article in English

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

Laden Sie die IronOcr DLL direkt auf Ihren Rechner herunter.

Installation über NuGet

Alternativ können Sie über NuGet installieren.

Install-Package IronOcr

Schritt 2: Installieren und Einrichten von WSL2 und Ubuntu

Hier ist das Tutorial zur Einrichtung von WSL2 und Ubuntu. Derzeit kann das Training von benutzerdefinierten 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 Schriftartdatei 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 das Laufwerk D: als Arbeitsbereich eingebunden wird.

cd /
cd /mnt/d

Schritt 6: Kopieren Sie die Schriftartdatei in den Ubuntu-Schriftartenordner

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 \\\wsl$ im Dateiexplorer-Verzeichnis ein.

Ubutu Folder Directory related to Schritt 6: Kopieren Sie die Schriftartdatei in den Ubuntu-Schriftartenordner

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 Repository tesseract_tutorial kann von der folgenden URL geklont werden; https://github.com/astutejoe/tesseract_tutorial.git mit folgendem Befehl verwenden;

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

Schritt 8: Klonen Sie tesstrain und tesseract von GitHub

Gehen Sie zum Verzeichnis tesseract_tutorial und führen Sie dann git clone https://github.com/tesseract-ocr/tesstrain und https://github.com/tesseract-ocr/tesseract aus

  • tesstrain enthält die Datei "Makefile", die zur Erstellung der .traineddata-Datei verwendet wird (Ziel dieses Tutorials).
  • tesseract enthält den Ordner "tessdata", der eine Sammlung originaler .traindata-Dateien ist, die als Referenz für das Training von benutzerdefinierten Schriftarten verwendet werden.

Schritt 9: Erstellen Sie den Ordner "data" zur Speicherung der Ausgaben

Die "data" sollte in tesseract_tutorial/tesstrain erstellt werden.

Schritt 10: Split_training_text.py ausführen

Wechseln Sie zurück zum tesseract_tutorial-Verzeichnis und kompilieren Sie dann den folgenden Befehl;

python split_training_text.py

Nach dem Ausführen von split_training_text.py werden im Ordner "data" .box und .tif-Dateien erstellt.

Fehlerbehebung: Fontconfig-Warnung: "/tmp/fonts.conf, Zeile 4: leerer Schriftverzeichnispfad ignoriert

Fontconfig Warning related to Fehlerbehebung: Fontconfig-Warnung: "/tmp/fonts.conf, Zeile 4: leerer Schriftverzeich...

Dieses Problem wird dadurch verursacht, dass das Schriftverzeichnis im Ubuntu-Ordner nicht gefunden werden kann, und kann behoben werden, indem diese Codezeilen in tesseract_tutorial/fonts.conf eingefügt werden.

Fontconfig Dir Png related to Fehlerbehebung: Fontconfig-Warnung: "/tmp/fonts.conf, Zeile 4: leerer Schriftverzeich...

und

<dir>/usr/share/schriftarten</dir>
<dir>/usr/local/share/schriftarten</dir>
<dir prefix="xdg">schriftarten</dir>
<!-- the following element will be removed in the future -->
<dir>~/.schriftarten</dir>

Dann kopieren Sie es nach /etc/fonts

cp fonts.conf /etc/fonts

Fügen Sie schließlich diese Codezeilen in split_training_text.py hinzu.

Fontconfig Sol related to Fehlerbehebung: Fontconfig-Warnung: "/tmp/fonts.conf, Zeile 4: leerer Schriftverzeichnisp...

und


fontconf_dir = '/etc/fonts`

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

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

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

Schritt 11: Herunterladen von eng.traineddata

eng.traineddata kann unter der folgenden URL gefunden werden: https://github.com/tesseract-ocr/tessdata_best. Laden Sie es in tesseract_tutorial/tesseract/tessdata herunter, da diese eng.traineddata in tessdata_best besser ist als die ursprüngliche im tessdata-Ordner.

Schritt 12: Erstellen Sie Ihre eigene Schriftart .traineddata

Gehen Sie zum Verzeichnis tesstrain und geben Sie diese Befehlszeile in WSL2 ein


TESSDATA_PREFIX=../tesseract/tessdata make training MODEL_NAME=AMGDT START_MODEL=eng TESSDATA=../tesseract/tessdata MAX_ITERATIONS=100
  • Make-Training = Code im tesstrain/Makefile ausführen
  • MODEL_NAME = der Name Ihrer benutzerdefinierten Schriftart
  • START_MODEL = der Name der ursprünglichen .traineddata
  • MAX_ITERATIONS = Anzahl der Iterationen (höhere Zahl bedeutet genauere .traineddata)

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

„Fehler beim Lesen von Daten von:“ kann durch Bearbeiten der Codezeilen in der Makefile gelöst werden.

Vorher:

Makefile Sol Before related to „Fehler beim Lesen von Daten von:“ kann durch Bearbeiten der Codezeilen in der Makefi...

Danach:

Makefile Sol After related to „Fehler beim Lesen von Daten von:“ kann durch Bearbeiten der Codezeilen in der Makefil...

und

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

Das Problem "Failed to load script unicharset from:data/langdata/Latin.unicharset" kann gelöst werden, indem Latin.unicharset in den Ordner tesstrain/data/langdata eingefügt wird.

Schritt 13: Die Genauigkeit der erstellten .traineddata

Mit 1000 .box- und .tif-Dateien und 3000 Trainingsiterationen hat das Ausgabedatei .traineddta (AMGDT.traineddata) eine minimale Trainingsfehlerrate (BCER) von etwa 5,77.

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

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

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