2010-03-09 8 views
16

Ich habe nach Ressourcen für die Nummernerkennung in Bildern im Internet gesucht. Ich habe viele Links gefunden, die viele Ressourcen zu diesem Thema bieten. Aber leider ist es verwirrender als zu helfen, ich weiß nicht, wo ich anfangen soll.Zahlen in Bildern erkennen

Ich habe ein Bild mit 5 Nummern drin, ungestört (kein Captcha oder so ähnlich). Die Zahlen sind schwarz auf weißem Grund, geschrieben in einer Standardschrift.

Mein erster Schritt war, die Zahlen zu trennen. Der Algorithmus, den ich momentan verwende, ist ziemlich einfach, er prüft nur, ob eine Spalte ganz weiß ist und somit ein Leerzeichen. Dann schneidet es jedes Zeichen, so dass es keine weiße Umrandung gibt. Das funktioniert ganz gut.

Aber jetzt bin ich mit der tatsächlichen Erkennung der Nummer fest. Ich weiß nicht, wie man am besten den richtigen erraten kann. Ich denke nicht, dass der direkte Vergleich mit der Schriftart eine gute Idee ist, denn wenn sich die Zahlen nur ein wenig unterscheiden, wird es nicht mehr funktionieren.

Kann mir jemand einen Hinweis geben, wie das gemacht wird?

Es spielt keine Rolle, aber ich werde dies in C# oder Java implementieren. Ich habe einige Bibliotheken gefunden, die das machen würden, aber ich würde es gerne selbst implementieren, um etwas zu lernen.

Antwort

14

Warum nicht mit einer Open-Source-OCR-Engine wie Tesseract arbeiten?

http://code.google.com/p/tesseract-ocr/

C# Wrapper für Tesseract

http://www.pixel-technology.com/freeware/tessnet2/

Java Wrapper für Tesseract

http://sourceforge.net/projects/tessocrinjava/

Während migh Sie Denken Sie nicht daran, eine Bibliothek von Drittanbietern so zu verwenden, dass Sie sie selbst implementieren. Es gibt eine enorme Menge an Arbeit, die in die Integration des Drittanbieter-Tools fließt. Bedenken Sie auch, dass etwas, das einfach erscheint (die Zahl 5 gegenüber der Zahl 6 zu erkennen), oft sehr komplex ist; wir sprechen tausende und tausende Codezeilen. Sehen Sie sich den Quellcode von tesseract an und es gibt Ihnen einen guten Grund, die Bibliothek eines Drittanbieters zu nutzen.

Hier ist eine andere, so dass Sie beteiligt einige Ideen über hte Algorithmen in Frage geb: https://stackoverflow.com/questions/850717/what-are-some-popular-ocr-algorithms

+0

Danke für den Tipp. Eigentlich bin ich nicht so gut in C/C++ und es gibt eine Menge Code. Ich hoffe immer noch, ich muss nicht versuchen, ein ganzes OCR-Softwareprojekt zu verstehen, nur um die Nummernerkennung zu lernen. – svens

+0

Dies wird die Notwendigkeit für Sie, C++ zu verwenden, entfernen ... der C# -Wrapper ist ziemlich geradlinig. Wenn Sie kein Experte für maschinelles Lernen und Bildoptimierung werden wollen, möchten Sie nicht wirklich versuchen, Ihre eigene OCR-Lösung zu erstellen. –

+0

+1 Tesseract ist genial. Sie können jede gewünschte Sprache verwenden, solange Sie sie in der Befehlszeile aufrufen. – rook