2017-08-21 7 views
6

Ich versuche, Informationen aus einer Reihe von verschiedenen Quittungen mit einer Kombination aus Opencv, Tesseract und Keras zu extrahieren. Das Endergebnis des Projekts ist, dass ich in der Lage sein sollte, ein Foto von einer Quittung mit einem Telefon zu machen und von diesem Bild den Namen des Ladens, Zahlungsart (Karte oder Bargeld), gezahlten Betrag und Wechselgeld zu erhalten.So extrahieren Sie relevante Informationen aus dem Empfang

Bisher habe ich ein paar verschiedene Vorverarbeitungsschritte auf einer Reihe von verschiedenen Proben Quittungen mit OpenCV wie das Entfernen von Hintergrund, Entrauschen und Umwandlung in ein binäres Bild gemacht und bin mit einem Bild wie die folgenden links:

receipt-scanned

Ich verwende dann Tesseract, um ocr auf dem Beleg durchzuführen und die Ergebnisse in eine Textdatei zu schreiben. Ich habe es geschafft, die OCR auf ein akzeptables Niveau zu bringen, also kann ich gerade ein Bild von einer Quittung machen und mein Programm darauf laufen lassen, und ich werde eine Textdatei bekommen, die den gesamten Text auf der Quittung enthält.

Mein Problem ist, dass ich nicht den gesamten Text auf der Quittung will, ich möchte nur bestimmte Informationen wie die oben aufgeführten Parameter. Ich bin mir nicht sicher, wie ich ein Modell trainieren soll, das die Daten extrahiert, die ich brauche.

Bin ich richtig in der Annahme, dass ich Keras verwenden sollte, um verschiedene Abschnitte des Bildes zu segmentieren und zu klassifizieren, und dann den Text in Abschnitte zu schreiben, die mein Modell als relevante Daten klassifiziert hat? Oder gibt es eine bessere Lösung für das, was ich tun muss?

Tut mir leid, wenn das eine dumme Frage ist, dies ist mein erstes Opencv/maschinelles Lernprojekt und ich bin ziemlich weit von meiner Tiefe entfernt. Jede konstruktive Kritik würde sehr geschätzt werden.

+0

Warum möchten Sie ein neurales Netzwerk verwenden, um die Informationen abzurufen? Sie haben bereits den Text - warum können Sie nicht einfach Textfilterung/-verarbeitung durchführen, um die gewünschten Wörter/Begriffe/Werte zu erhalten? – petezurich

+0

Ich denke, ich sollte hier ein neuronales Netz verwenden, weil der Text völlig unterschiedlich sein kann, je nachdem, aus welchem ​​Speicher der Beleg stammt - z. einige Geschäfte sagen vielleicht "Betrag angedient", während ein anderer nur "Bargeld" sagt, um den Betrag zu bezeichnen, der bezahlt worden ist. Da sich dies von Empfang zu Empfang ohne festgelegten Standard ändern kann, hatte ich den Eindruck, dass das Problem nicht mit konventioneller Filterung gelöst werden konnte, da es zu viele mögliche Bedingungen für einen bestimmten Wert gibt, den ich hart codieren kann. –

Antwort

0

ist es eine gute Idee, Bild zu verwenden, wie Sie die Struktur des Dokuments verlieren, wenn Sie einfach nur OCR. Ich denke du bist auf dem richtigen Weg. Ich würde die Rechnung in Kopfzeilen, Gesamtbetrag, Werbebuchungen segmentieren und einen Bildklassifizierer darauf trainiert bekommen. Dann könnten Sie damit relevante Informationen aus dem Text löschen/extrahieren

+0

Verfügen Sie über genügend Daten, um einen Bildklassifizierer zu erstellen? – vumaasha

Verwandte Themen