Mittwoch, 5. Juni 2013

Teil 9, Selbstversuch Ebook - Befreiung am Beispiel "Bunte Bilder aus dem Sachsenlande", Verbesserung Tesseracts Erkennungsrate

Im letzten Blogpost "OCR Qualität bestimmen" habe ich grob beschrieben, wie man beurteilen kann, wie gut die Erkennungsqualität der verschiedenen OCR-Engines ist.
Als Maß hatte ich dort die Worterkennungsrate verwendet, da diese im Vergleich zur Zeichenerkennungsrate genauer ist. Gerade bei Verfahren, die intern Wörterbücher verwenden, kann die Zeichenerkennungsrate hoch sein, der Text bleibt dennoch unleserlich.

Um die Erkennungsqualität von Tesseract 3.02 zu verbessern habe ich mir die Beschreibung der Konfigurationsoptionen unter http://www.sk-spell.sk.cx/tesseract-ocr-parameters-in-302-version angeschaut.

Folgende Werte hatte ich bisher in der Datei deu-frak.config stehen:

enable_new_segsearch 1
textord_space_size_is_variable 1
load_bigram_dawg 1

Die Worterkennungsrate betrug damit 86% (die Diskrepanz zum Wert 60% aus Blogpost rührt daher, daß die Wörter der benutzten Seite da noch nicht im fürs Training verwendeten Wörterbuch steckten. Dies zeigt, wie wichtig die Pflege eines korrekten Wörterbuches für die Erkennungsrate von Tesseract ist).

Im ersten Schritt habe ich nur einzelne der ff. Parameter (* zeigt Default an) verändert:

Parameter01
enable_new_search92%(*) 86%
language_model_ngram(*) 86%36%
textord_old_baselines89%(*) 86%

Die Werte textord_space_size_is_variable, load_bigram_dawg, edges_use_new_outline_complexity, permute_script_word, ngram_permuter_activated, use_new_state_cost führten zu keiner Änderung der Erkennungsrate von 86%.

Warum die Erkennungsrate bei  language_model_ngram so stark einbricht, verstehe ich noch nicht.

Im zweiten Schritt habe ich die beiden Parameter, die eine Verbesserung zeigten, kombiniert. Voila!, die Worterkennungsrate steigt auf 93%!

Wer noch Hinweise für sinnvolle Kombinationsmöglichkeiten anderer Parameter hat, immer her damit! :)