2009-08-26 5 views
3

Ich verwende Tesseract OCR (über pytesser) und PIL (Python Image Library) für den automatisierten Test einer Anwendung.Wie können Sie einer OCR-Software die beste Erfolgschance geben?

Ich überprüfe, ob der angezeigte Text in Ordnung ist, indem ich einen Screenshot mache und den Text dank tesseract erhalte.

Ich hatte am Anfang einige Probleme und es scheint besser zu funktionieren, da ich die Größe des Screenshots dank der bikubischen Interpolation von PIL erhöht habe.

Leider habe ich immer noch einige Fehler wie die Verwechslung zwischen '0' und 'O'. Ich kann mir vorstellen, dass ich in Zukunft ähnliche Probleme haben werde.

Ich würde gerne wissen, ob es einige Techniken gibt, um ein Bild vorzubereiten, um die OCR zu helfen. Jede Idee ist willkommen.

Vielen Dank im Voraus

+0

Wenn diese Frage noch relevant ist: Enthält diese Tesseract sein? Es gibt OCR-Engines (z. B. ABBYY), die sich hervorragend für Eingabebilder mit niedriger Qualität eignen und die Bildvorverarbeitung automatisch für Sie übernehmen. Es gibt eine REST-API für OCR, die die ABBYY-Engine unter http://www.wisetrend.com/wisetrend_ocr_cloud.shtml verwendet - es gibt eine kostenlose Testversion, damit Sie ein paar Bilder für sich selbst ausprobieren können. –

Antwort

1

Shameless Plug Hinweis: my company Pakete Tesseract für die Verwendung in .NET

Tesseract eine OK-OCR-Engine ist. Es kann viel verfehlen und wird leicht durch Nicht-Text verwirrt. Das Beste, was Sie dafür tun können, ist sicherzustellen, dass es nur Text erhält. Die nächste beste Sache ist es, etwas vernünftig binarisiert (adaptive oder dynamische Schwelle, um dorthin zu gelangen) oder Graustufen und lassen Sie es versuchen, Binarisierung zu tun.

+0

Dem stimme ich zu. Es wurde von einer Dialogfeldkante verwechselt und in ein 'I' umgewandelt. Wenn es Text nur Bilder bekommt, macht es gute Arbeit. Binarisierung ist auch eine gute Idee. Vielen Dank. – luc

0

Für zwischen 0 und O zu unterscheiden, eine einfache Lösung ist es, eine Schriftart zu wählen, die zwischen den beiden unterscheidet (zB: 0 einen Strich oder Punkt in seiner Mitte hat). Wäre das in Ihrer Bewerbung akzeptabel? Eine andere Lösung besteht darin, nach der Zeichen-für-Zeichen-Analyse des Textes einen wörterbuchbasierten Schritt anzuwenden, der den erkannten Text in eine Form von Rechtschreibprüfung oder Validierer einspeist, um zwischen schwierigen Zeichen zu unterscheiden.

Zum Beispiel ist ein rundes Symbol, gefolgt von anderen Zahlen am wahrscheinlichsten eine Null, während das gleiche Symbol, gefolgt von Buchstaben, am ehesten ein Großbuchstabe o ist. Es ist ein triviales Beispiel, aber es zeigt, wie Kontext notwendig ist, um ein zuverlässigeres OCR-System zu machen.

+0

Leider habe ich keine Kontrolle über Die Schriftart. Kannst du bitte etwas mehr erklären, was du mit dem Wörterbuch-basierten Schritt meinst? – luc

0

Auch unter den besten Bedingungen schleichen sich OCR-Varianten ein. Ihre beste Option wird es sein, Ihre Tests so zu gestalten, dass sie Ihnen bewusst sind.

1
  1. Zug Tesserakts Ihre Schrift
  2. Make Bild Extra sauber und mit genügend freien Speicherplatz zu erkennen, um Zeichen
  3. Profit :)

Hier sind einige reale Welt Beispiele.

  • erstes Bild Originalbild (croped Leistungsmesser Zahlen)
  • Zweites Bild leicht Bild in GIMP gereinigt wird, um 50% der OCR-Genauigkeit in Tesserakts
  • Drittes Bild vollständig Bild gereinigt - 100% OCR ohne Training anerkannt!

enter image description here enter image description here enter image description here