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:
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.
Wie sich herausstellt, hat tesseract
Wiki einen Artikel, der diese Frage auf die beste Weise beantwortet kann mir vorstellen:
Illustrierte Anleitung zu "Verbesserung der Qualität von [OCR] Ausgabe ".
Frage "Bildverarbeitung zur Verbesserung der OCR-Genauigkeit" könnte ebenfalls von Interesse sein.
(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
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.
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.
Tags und Links python ocr image-processing