Bildreinigung vor der OCR-Anwendung

8

Ich habe in den letzten paar Stunden mit PyTesser experimentiert und es ist ein wirklich nettes Werkzeug. Ein paar Dinge, die ich an der Genauigkeit von PyTesser bemerkt habe:

  1. Datei mit Icons, Bildern und Text - 5-10% genau
  2. Datei mit nur Text (Bilder und Symbole gelöscht) - 50-60% genau
  3. Datei mit Stretching (Und das ist der beste Teil) - Stretching-Datei in 2) oben auf der x- oder y-Achse erhöht die Genauigkeit um 10-20%

Offenbar kümmert sich Pytesser nicht um die Schriftdimensionen oder Bilddehnungen. Obwohl es viel Theorie gibt, die über Bildverarbeitung und OCR zu lesen ist, gibt es irgendwelche Standardverfahren für die Bildbereinigung (abgesehen vom Löschen von Symbolen und Bildern), die vor der Anwendung von PyTesser oder anderen Bibliotheken unabhängig von der Sprache durchgeführt werden müssen?

...........

Wow, dieser Beitrag ist jetzt ziemlich alt. In den letzten Tagen habe ich wieder mit der Suche nach OCR begonnen. Dieses Mal schmiss ich PyTesser und benutzte stattdessen die Tesseract Engine mit ImageMagik. Auf den Punkt gebracht, das habe ich gefunden:

%Vor%

Damit ist die Tesseract Engine zweifelsohne die beste Open-Source-OCR-Engine auf dem Markt. Eine vorherige Bildreinigung war hier nicht erforderlich. Der Vorbehalt ist, dass es bei Dateien mit vielen eingebetteten Bildern nicht funktioniert und ich konnte keinen Weg finden, Tesseract zu trainieren, sie zu ignorieren. Auch das Textlayout und die Formatierung im Bild machen einen großen Unterschied. Es funktioniert hervorragend mit Bildern mit nur Text. Hoffe, das hat geholfen.

    
zenCoder 28.10.2013, 16:08
quelle

3 Antworten

3

Ich bin mir nicht sicher, ob Ihre Absicht kommerzieller Art ist oder nicht, aber das funktioniert Wunder, wenn Sie OCR auf einer Menge ähnlicher Bilder ausführen.

Ссылка

ORIGINAL

Nach der Vorverarbeitung mit gegebenen Argumenten.

    
Milne 23.01.2014 17:56
quelle
3

Wie sich herausstellt, hat tesseract Wiki einen Artikel, der diese Frage auf die beste Weise beantwortet kann mir vorstellen:

(erste Antwort, nur für die Aufzeichnung)

Ich habe PyTesser nicht verwendet, aber ich habe einige Experimente mit tesseract (Version: 3.02.02 ) gemacht.

Wenn Sie tesseract auf ein farbiges Bild anwenden, wendet es zuerst die globale Otsu-Methode an, um es zu digitalisieren und dann tatsächlich Die Zeichenerkennung wird auf einem binären (Schwarzweiß-) Bild ausgeführt.

Bild von: Ссылка

Wie man sehen kann, kann "globales Otsu" nicht immer ein wünschenswertes Ergebnis liefern.

Um besser zu verstehen, was tesseract "sieht", müssen Sie Otsus Methode auf Ihr Bild anwenden und dann das resultierende Bild betrachten.

Fazit: Die einfachste Methode zur Verbesserung des Erkennungsverhältnisses besteht darin, Bilder selbst zu digitalisieren (wahrscheinlich haben Sie durch Versuch und Irrtum einen guten Schwellenwert gefunden) und diese binärisierten Bilder dann an tesseract weitergeben .

Jemand war so nett, api docs für tesseract zu veröffentlichen, also ist es möglich vorherige Aussagen über die Verarbeitung der Pipeline zu überprüfen: ProcessPage - & gt; GetThresholdedImage - & gt; ThresholdToPix - & gt; OtsuThresholdRectToPix

    
iljau 23.01.2014 18:36
quelle
2

Ich weiß, es ist keine perfekte Antwort. Aber ich möchte mit Ihnen ein Video teilen, das ich von PyCon 2013 gesehen habe. Es ist ein bisschen frei von Implementierungsdetails, aber vielleicht ist es nur eine Anleitung / Inspiration für Sie, wie Sie Ihr Problem lösen / verbessern können.

Link zum Video

Link zur Präsentation

Und wenn Sie sich dazu entscheiden, ImageMagick zu verwenden, um Ihre Quellbilder ein wenig vorzuverarbeiten. Hier ist eine Frage, die Sie auf nette Python-Bindungen dafür hinweist.

Nebenbei bemerkt. Ziemlich wichtig bei Tesseract. Sie müssen es trainieren, sonst wird es nicht annähernd so gut / genau wie es sein kann.

    
Zoran Pavlovic 20.01.2014 20:47
quelle

Tags und Links