2010-06-10 11 views
7

Ich arbeite an einer Anwendung, die das Vergleichen von Zahlen aus einer gescannten Bilddatei mit dem Datenbankeintrag erfordert, und das Aktualisieren der Datenbank mit dem Übereinstimmungsergebnis.Lesen von Zeichen aus Bild

Sag ich habe image-employee1.jpg. Dieses Bild hat zwei zwei handgeschriebene Einträge - die Angestelltennummer und den Betrag, der an den Angestellten zu zahlen ist. Ich muss die Angestelltennummer aus dem Bild lesen und die Datenbank nach der betreffenden Nummer abfragen, den Angestellten mit dem zu zahlenden Betrag aktualisieren, wie aus dem Bild erhalten wurde. Sowohl die Angestelltennummer als auch der zu zahlende Betrag sind in zwei Kästchen an einer bestimmten Stelle auf dem Bild angegeben.

Gibt es eine Möglichkeit, dies zu automatisieren. Grundsätzlich möchte ich eine Lösung in .net mit C#. Ich weiß, dass dies mit künstlichen neuronalen Netzen geschehen kann.

Alle Ideen würden sehr geschätzt werden.

Antwort

1

Es ist Leadtools SDK für OCR/ICR hat. Dies ist sehr praktisch beim Erkennen der handgeschriebenen Zeichen. Ich mache damit eine Machbarkeitsstudie, und bis jetzt denke ich, dass es klappen wird. Leadtools haben Komponenten versehen, die in der Anwendung verwendet werden kann, unterstützt C, C++, C#, VB.Net usw.

Sie können den folgenden Link für diesen Besuch: http://www.leadtools.com/downloads/default.htm?category=

1

Mustererkennung ist ein grundlegendes Beispiel, wenn neuronale Netze untersucht werden. Ich weiß nicht, ob irgendeine Bibliothek/Framework mit AI in C# arbeiten soll. Wenn Sie eine finden, müssen Sie zuerst das Netzwerk trainieren (überwachtes Lernen) und dafür müssen Sie eine große Anzahl von Bildern vorbereiten. mehr Beispiele -> Ergebnis genauer. Auf der anderen Seite können Sie OpenCV (C/C++, Python und Java) verwenden, das eine auf Computer Vision spezialisierte Bibliothek ist und ein Modul zur Implementierung von AI-Methoden besitzt.

Einen schönen Tag noch! Oscar.

1

Ich denke, das ist sehr schwer zu automatisieren. Das Problem liegt nur daran, dass Sie eine sehr gute OCR-Software benötigen. Und selbst wenn du das hast, was ist, wenn es etwas falsch liest, wegen der grellen Handschrift von jemandem? Wenn die ID falsch ist, wird der bezahlte Betrag an den falschen Mitarbeiter gebucht und wenn der Betrag falsch ist, bekommt er das falsche Gehalt!

Beides sind Dinge, die Sie nicht wirklich passieren werden. Nur um Ihnen zu zeigen, wie schwer ein guter OCR zu finden ist, werfen Sie einen Blick darauf, wie ein captcha funktioniert. Das Prinzip ist nichts anderes als ein Bild eines schwer lesbaren Textes.

Also meine Meinung wäre, dass Sie diesen Prozess nicht wirklich automatisieren können. Zumindest kann man ein Programm schreiben, einen Menschen zu unterstützen, indem sie die Werte manuell eingeben (nehmen auch einen Blick auf Amazon Mechanical Turk):

  • zeigen auf der rechten Seite das Bild mit den handgeschriebenen Werte, oder wenn sie immer auf der gleichen Position oder besonders markiert (mit einer Box um sie herum, etc.), versuchen Sie, diese Orte automatisch zu finden und sie dem Benutzer zu zeigen.
  • Auf der linken Seite bieten zwei Textfelder, wo der Benutzer die Werte eingeben kann.

Um dies zu einem schnellen und reibungslosen Ablauf zu erhalten, müssen Sie sorgfältig nehmen, wie der Benutzer leicht die Werte von nur über die Tastatur eingeben kann:

  • Wenn ein neues Bild zeigt, gesetzt der Fokus auf die ID Textbox
  • wenn die Benutzer-ID ist immer eine bestimmte Länge, zum nächsten Feld wechseln, wenn alle Zahlen
    • eingegeben werden (wenn Sie dies zu ermöglichen, sollte ein Rückschritt im leeren nächsten Feld des Fokus zurück zum vorherigen)
  • Ansonsten eine Änderung an der nächsten Textfeld erlauben durch Tab Schlagen oder return
  • Normalerweise werden diese Textboxen übereinander (nicht nebeneinander) angeordnet sind, so sollte man zwischen sie unterstützen Umschalten unter Verwendung der nach oben nach unten Pfeiltasten.
  • Nach Abschluss der Eingabe in der letzten Textbox wird automatisch das nächste Bild angezeigt.
    • Auch in diesem Fall von einem frischen neuen Eintrag (nichts bereits eingegeben) erlauben, indem Sie die Rück oder linke Pfeiltaste)

Durch Verwendung eines solchen auf den alten Eintrag einen einfachen Schalter zurück Prozess eine einzelne Person kann viele Einträge in Ihre Datenbank eingeben und die Kosten sind viel billiger als falsche Einträge in Ihrer Datenbank danach zu finden.

Nur ein letzter Vorschlag:
Da dies ein langweiliger Prozess für einen Menschen ist, der leicht zu Fehlern führen kann, lassen Sie vielleicht zwei Personen diese Werte eingeben und nur wenn beide denselben Wert eingeben als diesen Wert als genehmigt. Dies sollte zu einer korrekten Rate oberhalb von 99% führen. Wenn Sie absolut 100% brauchen, denken Sie daran, dass 4-5 Personen einen Eintrag prüfen dürfen und nur wenn alle die gleichen Werte eingeben, nehmen Sie es als genehmigt an. Um auch einen Vergleich darüber zu erhalten, wie gut Ihre OCR-Software wäre, lassen Sie sie einfach über Ihre Bilder laufen und vergleichen Sie diese Ergebnisse mit den eingegebenen Werten, um eine Idee zu bekommen, wenn Sie sich wirklich nur auf Ihre OCR verlassen können.

+0

+1 Hinweis darauf, dass OCR nicht so zuverlässig. Ich würde noch ein +1 für Idee von mechanischen Türken;) – zerm

1

OCR-Engines sind nicht darauf trainiert, handgeschriebenen Text zu lesen, sodass Sie möglicherweise Probleme mit MODI haben. Sie möchten versuchen, eine ICR-Engine zu finden. Trotzdem sind die besten von diesen bei guten Eingaben nur zu 80% genau. Sie könnten besser werden, weil Sie wissen, dass Ihr Text immer Zahlen ist.

Diese SO Frage/Antwort sagt, dass OCRopus ICR

FOSS Intelligent Character Recognition (ICR)