staging.inyokaproject.org

tesseract-ocr/tesseract-ocr_trainieren

Status: Ungelöst | Ubuntu-Version: Nicht spezifiziert
Antworten |
Dieses Thema ist die Diskussion des Artikels Archiv/tesseract-ocr/tesseract-ocr_trainieren.

Heinrich_Schwietering Team-Icon

Wikiteam
Avatar von Heinrich_Schwietering

Anmeldungsdatum:
12. November 2005

Beiträge: 11335

Hi!

Etwas esoterisch, recht komplex, aber imho ziemlich spannend: tesseract-ocr trainieren.

Bin jetzt soweit durch; bitte um Rückmeldungen!

so long
hank

Philipp_B Team-Icon

Supporter
Avatar von Philipp_B

Anmeldungsdatum:
22. Juli 2005

Beiträge: 8556

wau ziemlich viel text ☺

kann nicht viel dazu sagen. ein paar typos habe ich noch gesehen.

Heinrich_Schwietering Team-Icon

Wikiteam
(Themenstarter)
Avatar von Heinrich_Schwietering

Anmeldungsdatum:
12. November 2005

Beiträge: 11335

Hi!

Philipp B schrieb:

wau ziemlich viel text ☺

Ja, ich weiß... Im Prinzip sind es 3 Artikel in einem, weil die Programme Tessboxes, tesseractTrainer und auch das Xsane-Skript theoretisch eigenen "Artikel" wären. Es gibt die Teile aber eben nur zu dem Zwecke, das Training von tesseract-ocr zu vereinfachen...

kann nicht viel dazu sagen. ein paar typos habe ich noch gesehen.

Ich sach' ja: etwas esoterisch... 😉

so long
hank

Philipp_B Team-Icon

Supporter
Avatar von Philipp_B

Anmeldungsdatum:
22. Juli 2005

Beiträge: 8556

seien wir ganz ehrlich. es werden nur sehr wenige menschen tesseract antrainieren daher meine empfehlung es nicht zuu ausführlich beschreiben. manchmal liegt in der kürze die würze.

Heinrich_Schwietering Team-Icon

Wikiteam
(Themenstarter)
Avatar von Heinrich_Schwietering

Anmeldungsdatum:
12. November 2005

Beiträge: 11335

Philipp B schrieb:

seien wir ganz ehrlich. es werden nur sehr wenige menschen tesseract antrainieren

Da hast sicher recht.

daher meine empfehlung es nicht zuu ausführlich beschreiben. manchmal liegt in der kürze die würze.

aber in der Kürze liegt dann imho leider recht wenig Würze, dann ist es nämlich nicht nachvollziehbar... 😉

so long
hank

Heinrich_Schwietering Team-Icon

Wikiteam
(Themenstarter)
Avatar von Heinrich_Schwietering

Anmeldungsdatum:
12. November 2005

Beiträge: 11335

Hi!

Nachdem ich noch unter dieschs Anleitung den Fehler in tesseractTrainer.py beheben konnte, würde ich den Artikel jetzt gerne verschieben.

OK?

so long
hank

Heinrich_Schwietering Team-Icon

Wikiteam
(Themenstarter)
Avatar von Heinrich_Schwietering

Anmeldungsdatum:
12. November 2005

Beiträge: 11335

Hi!

Na, nach den überwältigenden Rückmeldungen schreite ich dann mal zur Tat...

so long
hank

frustschieber Team-Icon

Ehemalige
Avatar von frustschieber

Anmeldungsdatum:
4. Januar 2007

Beiträge: 4259

Könnte das Getestet des Trainieren-Unterartikels nicht dem des Hauptartikels angepasst werden? Sonst Archiv

Heinrich_Schwietering Team-Icon

Wikiteam
(Themenstarter)
Avatar von Heinrich_Schwietering

Anmeldungsdatum:
12. November 2005

Beiträge: 11335

Hi!

Das Problem ist, dass das für tesseract 2.0x geschrieben ist, das ist aber nicht mehr aktuell und nicht mehr in den Quellen. Das ganze geht auch unter tesseract 3., aber es gibt einige Unterschiede, insbesondere wird das alles zum Schluss dann in eine einzige XXX.trainedata-Datei zusammengefasst. Ich habe das bisher noch nicht probiert; die beschriebenen Programme müsste auch alle erst für tesseract 3 testen, ist aber gerade nicht mein Thema... Insofern wohl erstmal ins Archiv.

so long
hank

Harry_Hirsch

Anmeldungsdatum:
19. August 2011

Beiträge: 80

Hier ist zumindestens schon einmal eine Kurzanleitung (ohne Berücksichtigung von Hinweisen, Schwierigkeiten, Besonderheiten und weiteren Optionen) für die Herstellung der benötigten traineddata-Datei für die tesseract-Version 3.0x:

1. Man benötigt, für die Datei <lang>.traineddata (<lang> ist z.B. deu für Deutsch), mindestens folgende vier Dateien:

  • <lang>.unicharset

  • <lang>.inttemp

  • <lang>.normproto

  • <lang>.pffmtable

die mit Hilfe der folgenden Anweisungen hergestellt wird.

2. Trainingstext mit einem normalen Editor erstellen, mit allen zu erkennenden Buchstaben und Zeichen, wobei jeder Buchstabe bzw. jedes Zeichen mindesten 10 mal, häufigere mehr, seltenere weniger vorkommen sollte. Der Trainingstext muss ASCII- oder UTF8-Format ohne BOM haben. Er muss am Ende jeder Zeile ein Unix-Zeilenwechsel-Zeichen am Ende ("\n") haben. Das letzte Zeichen des Trainingstextes wie auch der anderer Textdateien wie font_properties muss ebenfalls ein Unix-Zeilenwechsel-Zeichen ("\n") sein.

3. Durch die 12-malige Anwendung des Befehls text2image werden je 12 Tiff-Bilder und je 12 Box-Dateien aus diesem Trainingstext erzeugt mit 12 unterschiedlichen Schriftartausprägungen (drei Schriftarten wie Courier (nicht-proportionale Schrift), Serif-Schrift und serifenlose-Schrift mit Ausführungen in jeweils normal, kursiv, fett und fett-kursiv) - dies ist meiner Meinung nach die Mindestanzahl an Schriftart-Varianten für eine optimale Erkennung von gedrucktem Text:

1
text2image --text=traintext-deu.txt --outputbase=deu.Liberation-Serif-reg --font='Liberation Serif' --fonts_dir=/usr/share/fonts

4. Erzeugung einer *.tr-Datei aus jedem Tif-/Box-Paar mit Hilfe des "tesseract"-Befehls ⇒ 12 tr-Dateien

1
tesseract deu.Liberation-Sans-reg.tif deu.Liberation-Sans-reg.box  box.train

5. Erzeugung einer unicharset-Datei aus allen *.box-Dateien

1
unicharset_extractor deu.Liberation-Sans-reg.box deu.Liberation-Sans-kursiv.box ...

6. Erstellung einer font_properties-Datei mit soviel Zeilen wie es *.tr-Dateien gibt nach diesem Format:

<Schriftartbezeichnung ohne Leerzeichen> <kursiv> <fett> <fixed> <mit Serifen> <fraktur>

Eine Zeile sieht dann z.B. so aus:

timesitalic 1 0 0 1 0

7. Erstellung einer <lang>.unicharset-Datei sowie der inttemp-(die Form-Prototypen) und pffmtable-Datei (Anzahl der zu erwartenden Eigenschaften der Zeichen) mit dem mftraining-Befehl:

1
mftraining -F font_properties -U unicharset -O deu.unicharset lang.Liberation-Sans-reg.tr lang.Liberation-Sans-kursiv.tr ...

8. Erstellung der normproto-Datei aus allen *.tr-Dateien:

1
cntraining lang.Liberation-Sans-reg.tr lang.Liberation-Sans-kursiv.tr ...

9. Zusammenfassen aller erzeugten Dateien zur Trainingsdatei (<deu>.traineddata): Alle erzeugten Dateien brauchen zunächst einmal das gleiche Sprachenkürzel am Anfang (z.B. deu):

  • inttemp → deu.inttemp

  • pffmtable → deu.pffmtable

  • normproto → deu.normproto

Dann ausführen des combine_tessdata-Befehls ("combine_tessdata <lang>." - wichtig ist der Punkt am Ende!):

1
combine_tessdata deu.

10. Kopieren der <lang>.traineddata-Datei ins tessdata-Verzeichnis:

1
sudo cp deu.traineddata /usr/share/tesseract-ocr/tessdata/

Harry_Hirsch

Anmeldungsdatum:
19. August 2011

Beiträge: 80

Nachtrag:

Die Informationen stammen aus folgender Datei:

TrainingTesseract3
How to use the tools provided to train Tesseract3 for a new language.
Updated Oct 7, 2014

http://code.google.com/p/tesseract-ocr/wiki/TrainingTesseract3

aasche

Anmeldungsdatum:
30. Januar 2006

Beiträge: 14259

Harry Hirsch schrieb:

Hier ist zumindestens schon einmal eine Kurzanleitung (ohne Berücksichtigung von Hinweisen, Schwierigkeiten, Besonderheiten und weiteren Optionen) für die Herstellung der benötigten traineddata-Datei für die tesseract-Version 3.0x:

Gibt es Bestrebungen, diese Kurzanleitung irgendwann in einen neuen Artikel zu ueberfuehren? Leider muss ich gestehen, dass ich schon beim archivierte Artikel wie der Ochs vorm Berge stehe - lupenreiner Voodoo 😐

Harry_Hirsch

Anmeldungsdatum:
19. August 2011

Beiträge: 80

Gibt es Bestrebungen, diese Kurzanleitung irgendwann in einen neuen Artikel zu ueberfuehren?

Jahaaa! Am Wochenende werde ich mich dem Thema wieder verstärkt widmen, derzeit bin ich beruflicherseits etwas im Stress. Nichtsdestotrotz wird es noch einige Netto-Tage in Anspruch nehmen bis aus dem derzeitigen Archiv-Artikel ein guter öffentlicher Artikel wird. Oder gibt es vielleicht eine Firma, die ein Interesse an einem guten tesseract-trainieren-Artikel hätte? Dann würde es wahrscheinlich schneller gehen. 😈

Leider muss ich gestehen, dass ich schon beim archivierte Artikel wie der Ochs vorm Berge stehe - lupenreiner Voodoo

Na hör mal! Wenn Du bei meiner fantastischen Kurzanleitung schon Verständnisprobleme hast, wie soll das dann für den Normaluser erst beim langen vollständigen Artikel werden? 😉

Zuletzt musste ich Probleme schon beim Erstellen der box-/tiff-Datei-Paare feststellen, weil das Programm tesseract Probleme mit der Erkennung eines einwandfrei lesbaren Buchstaben ("V") in einer Schriftart hat und zudem das Programm text2image Buchstaben teilweise zu dicht aneinandersetzt (quasi Ligaturen) so dass sie nicht korrekt als einzelne Buchstaben erkannt werden können. Als nächstes muss ich mal abklopfen ob die manuelle Methode fehlerfrei funktioniert bzw. ob die Erstellung der Bild-Textvorlagen mit Hilfe von Gimp zu besseren Ergebnissen führt. Aber wie gesagt erst am Wochenende.

Antworten |