Training Tesseract 3, um Zahlen aus realen Bildern von Gaszählern zu erkennen

9

Ich versuche Tesseract zu trainieren, um Zahlen aus realen Bildern von Gaszählern zu erkennen.

Die Bilder, die ich für das Training verwende, werden mit einer Kamera gemacht. Aus diesem Grund gibt es viele Probleme: schlechte Bilderauflösung, verschwommene Bilder, schlechte Beleuchtung oder geringer Kontrast als Folge von Überbelichtung, Reflexionen, Schatten usw. .

Für das Training habe ich ein großes Bild mit einer Reihe von Ziffern erstellt, die von den Bildern des Gaszählers aufgenommen wurden, und ich habe die Dateibox manuell bearbeitet, um die .tr-Dateien zu erstellen. Das Ergebnis ist, dass nur die Ziffern der klareren und schärferen Bilder erkannt werden, während die Ziffern unscharfer Bilder nicht durch Tesseract erfasst werden.

    
Alessandro 18.07.2011, 13:21
quelle

4 Antworten

2

Soweit ich das feststellen kann muss man bei OpenCV Box erkennen, in der sich Nummern befinden, aber OpenCV ist kein Gott für OCR. Nachdem Sie das Feld gefunden haben, schneiden Sie einfach das Teil, führen Sie die Bildverarbeitung durch und übergeben Sie es dann an tessearact für OCR.

Ich brauche Hilfe mit OpenCV, weil ich nicht weiß, wie man in OpenCV programmiert.

Hier sind einige Beispiele aus der realen Welt.

  • Das erste Bild ist das Originalbild (Anzahl der Power-Meter)
  • Zweites Bild ist leicht aufgeräumt Bild in GIMP, etwa 50% OCR-Genauigkeit in Tesseract
  • Drittes Bild ist komplett gereinigt Bild - 100% OCR ohne Training erkannt!

    
valentt 05.11.2013 11:52
quelle
1

Ich würde zuerst diesen einfachen ImageMagick-Befehl versuchen:

%Vor%

(Spielen Sie ein wenig mit dem Parameter 50% - versuchen Sie es mit kleineren und höheren Werten ...)

Thresholding lässt grundsätzlich nur 2 Werte, Null oder Maximum, für jeden Farbkanal übrig. Werte unter dem Schwellenwert werden auf 0 gesetzt, Werte darüber auf 255 (oder 65535 bei 16-Bit-Tiefe).

Je nach Ihrem original.jpg haben Sie möglicherweise ein OCR-fähiges, funktionierendes Bild mit sehr hohem Kontrast.

    
Kurt Pfeifle 19.08.2012 18:30
quelle
1

Ich empfehle Ihnen:

  • Verwenden Sie ein Werkzeug, um die Boxen zu bearbeiten, wie zum Beispiel jTessBoxEditor , es ist so hilfreich und lässt Sie eine Zeit gewinnen. Sie können es leicht von hier installieren
  • es ist eine gute Idee, die Buchstaben der tatsächlichen Situation zu trainieren (laut, verschwommen). Ihr Trainingssatz ist noch begrenzt, Sie können weitere Trainingsbeispiele hinzufügen.
  • Ich empfehle Ihnen, die Tesseract-API selbst zu verwenden, um das Bild zu verbessern (Denoise, Normalize, Sharpen ...). Zum Beispiel: Boxa * tesseract::TessBaseAPI::GetConnectedComponents(Pixa** pixa) (es ermöglicht Ihnen, zu den Begrenzungsrahmen jedes Zeichens zu gelangen)

    Pix * pimg = tess_api- & gt; GetThresholdedImage ();

Hier finden Sie einige Beispiele

    
Y.AL 10.01.2014 17:12
quelle
1

Tesseract ist ein ziemlich anständiges OCR-Paket, aber Bilder werden nicht ordnungsgemäß vorverarbeitet. Meine Erfahrung ist, dass Sie ein gutes OCR-Ergebnis erhalten können, wenn Sie nur eine Vorverarbeitung durchführen, bevor Sie es an tesseract weitergeben.

Es gibt ein paar wichtige Hinweise, die die Erkennung deutlich verbessern:

  1. Entfernen Sie Hintergrundgeräusche. Im Grunde genommen bedeutet dies die Verwendung einer mittleren adaptiven Schwellenwertbildung. Ich würde auch sicherstellen, dass die Charaktere schwarz sind und der Hintergrund weiß ist.
  2. Verwenden Sie die richtige Auflösung. Wenn Sie schlechte Ergebnisse erhalten, skalieren Sie das Bild nach oben oder unten, bis Sie gute Ergebnisse erzielen. Sie wollen auf ca zielen. Schriftgröße 14 bei 300 dpi; in meiner Software, die Rechnungen verarbeitet, die am besten funktionieren.
  3. Bilder nicht als JPEG speichern; Verwenden Sie BMP oder PNG oder etwas anderes, das das Bild nicht verrauscht.
  4. Wenn Sie nur eine oder zwei Schriftarten verwenden, versuchen Sie, tesseract mit diesen Schriftarten zu trainieren.

Wenn Sie wie Punkt 4 wissen, welche Schriftart verwendet wird, gibt es einige bessere Lösungen als die Verwendung von Tesseract wie die Übereinstimmung dieser Zeichensätze direkt mit den Bildern ... Der grundlegende Algorithmus besteht darin, die Ziffern zu finden und ihnen zu entsprechen alle möglichen Zeichen (die nur 10 sind) ... immer noch ist die Implementierung schwierig.

    
atlaste 18.07.2014 09:31
quelle

Tags und Links