2017-08-21 2 views
6

J'essaie d'extraire des informations d'une gamme de recettes différentes en utilisant une combinaison d'Opencv, Tesseract et Keras. Le résultat final du projet est que je devrais être capable de prendre une photo d'un reçu en utilisant un téléphone et à partir de cette image obtenir le nom du magasin, type de paiement (carte ou en espèces), montant payé et changement apporté.Comment extraire des informations pertinentes de la réception

Jusqu'à présent, je l'ai fait quelques différentes étapes de pré-traitement sur une série de différentes recettes échantillon à l'aide OpenCV telles que la suppression arrière-plan, débruitage et la conversion à une image binaire et je suis parti avec une image telle que:

J'utilise ensuite Tesseract pour effectuer ocr sur le reçu et écrire les résultats dans un fichier texte. J'ai réussi à faire fonctionner le ocr à un niveau acceptable, donc je peux actuellement prendre une photo d'un reçu et exécuter mon programme dessus et j'obtiendrai un fichier texte contenant tout le texte sur le reçu.

Mon problème est que je ne veux pas tout le texte sur le reçu, je veux juste certaines informations telles que les paramètres que j'ai énumérés ci-dessus. Je ne suis pas sûr de savoir comment faire pour former un modèle qui extraira les données dont j'ai besoin. Ai-je raison de penser que je devrais utiliser Keras pour segmenter et classer différentes sections de l'image, puis écrire pour classer le texte dans des sections que mon modèle a classées comme contenant des données pertinentes? Ou y a-t-il une meilleure solution pour ce que je dois faire? Désolé si c'est une question stupide, c'est mon premier projet d'apprentissage Opencv/machine et je suis assez loin de ma profondeur. Toute critique constructive serait très appréciée.

+0

Pourquoi voulez-vous utiliser un réseau de neurones pour récupérer l'information? Vous avez déjà le texte - pourquoi ne pouvez-vous simplement faire du filtrage/traitement de texte pour obtenir les mots/termes/valeurs désirés? – petezurich

+0

Je pense que je devrais utiliser un réseau neuronal ici parce que le texte peut être complètement différent en fonction de quel magasin le reçu est - par exemple. certains magasins pourraient dire «montant offert» tandis qu'un autre dira simplement «argent comptant» pour indiquer le montant qui a été payé. Comme cela peut changer de la réception à la réception sans standard établi, j'avais l'impression que le problème ne pouvait pas être résolu en utilisant le filtrage conventionnel, car il y a trop de termes possibles pour une valeur particulière pour le coder en dur. –

Répondre

0

est une bonne idée d'utiliser l'image, car vous perdrez la structure du document si vous juste vous OCR simple. Je pense que vous êtes sur la bonne voie. Je segmentais la facture en en-têtes, le montant total, les éléments de campagne et obtenais un classificateur d'images. Ensuite, vous pouvez l'utiliser pour nettoyer/extraire les informations pertinentes dont vous avez besoin du texte

+0

Avez-vous suffisamment de données pour créer un classificateur d'images? – vumaasha