2010-06-10 7 views
7

Je travaille sur une application qui nécessite de faire correspondre des nombres d'un fichier d'image numérisé à une entrée de base de données et de mettre à jour la base de données avec le résultat de correspondance.Lecture d'un caractère à partir de l'image

Dites que j'ai image- employee1.jpg. Cette image comportera deux entrées manuscrites: le numéro de l'employé et le montant à payer à l'employé. Je dois lire le numéro d'employé de l'image et interroger la base de données pour ce numéro, mettre à jour l'employé avec le montant à payer comme obtenu à partir de l'image. Le numéro d'employé et le montant à payer sont inscrits dans deux cases à un endroit précis de l'image.

Est-il possible d'automatiser cela? Fondamentalement, je veux une solution en .net en utilisant C#. Je sais que cela peut être fait en utilisant des réseaux de neurones artificiels.

Toutes les idées seraient grandement appréciées.

Répondre

1

Il est SDK LeadTools pour OCR/ICR. C'est très pratique pour reconnaître les caractères manuscrits. Je fais une étude de faisabilité avec cela, et jusqu'à présent, je pense que cela fonctionnera. LEADTOOLS ont fourni des composants qui peuvent être utilisés dans votre application, il prend en charge C, C++, C#, VB.Net etc.

Vous pouvez visiter le lien suivant pour cela: http://www.leadtools.com/downloads/default.htm?category=

1

La reconnaissance de modèle est un exemple de base lorsque les réseaux de neurones sont étudiés. Je ne sais pas si une bibliothèque/cadre de travail avec AI en C#. Si vous en trouvez un, vous devez d'abord former le réseau (apprentissage supervisé) et pour cela vous devez préparer un grand ensemble d'images; plus d'exemples -> résultat plus précis. D'autre part, vous pouvez utiliser OpenCV (C/C++, Python et Java) qui est une bibliothèque spécialisée dans la vision par ordinateur et dispose d'un module pour implémenter des méthodes AI.

Passez une bonne journée! Oscar.

1

Je pense que cela est très difficile à automatiser. Le problème est simplement parce que vous avez besoin d'un très bon logiciel OCR. Et même si tu as eu ça, que se passe-t-il si ça lit quelque chose de mal, cause de l'écriture frouzy de quelqu'un? Si la pièce d'identité est erronée, le salaire est réservé au mauvais employé et si le montant est erroné, il a reçu le mauvais salaire!

Les deux sont des choses que vous n'arriverez pas vraiment. Juste pour vous montrer à quel point il est difficile de trouver un OCR, jetez un oeil sur la façon dont fonctionne un captcha. Le principe n'est rien de plus qu'une image d'un texte difficile à lire.

Donc, mon opinion serait, que vous ne pouvez pas vraiment automatiser ce processus. Au moins, vous pouvez écrire un programme pour aider un être humain en entrant les valeurs (aussi jeter un oeil à Amazon Mechanical Turk) manuellement:

  • Montrer à droite l'image avec les valeurs écrites à la main, ou si elles sont toujours sur le même position ou spécialement marqué (avec une boîte autour d'eux, etc.), essayez de trouver ces endroits automatiquement et montrez-les à l'utilisateur.
  • Sur la gauche offrent deux zones de texte, où l'utilisateur peut entrer les valeurs.

Pour obtenir ce à un processus rapide et fluide, vous devez prendre soin de la façon dont l'utilisateur peut saisir facilement les valeurs en utilisant simplement le clavier:

  • la présentation d'une nouvelle image, réglez le focus sur la zone de texte identifiant
  • Si l'ID utilisateur est toujours une longueur spécifique, passer à la case suivante si tous les numéros sont entrés
    • (Si vous permettez à cela, un backspace dans le vide case devrait se concentrer en arrière au précédent)
  • permettent Sinon un changement à la prochaine zone de texte en appuyant sur l'onglet ou retour
  • Normalement, ces zones de texte sont disposés au-dessus les uns des autres (pas côte à côte), donc vous devez soutenir la commutation entre eux en utilisant le haut vers le bas Touches directionnelles.
  • Après avoir terminé l'entrée dans la dernière zone de texte, affichez automatiquement l'image suivante.
    • également dans ce cas d'une nouvelle nouvelle entrée (rien déjà entré) permettent un changement facile de retour à l'ancienne entrée en utilisant la touche Retour arrière ou flèche gauche)

En utilisant un tel traiter une seule personne peut entrer de nombreuses entrées dans votre base de données et les coûts sont beaucoup moins chers que de trouver de mauvaises entrées dans votre base de données par la suite. Juste une dernière suggestion:
Parce qu'il s'agit d'un processus ennuyeux pour un être humain qui peut facilement conduire à des erreurs, peut-être laisser deux personnes entrer ces valeurs et seulement si les deux entrées sont identiques à prendre cette valeur comme approuvé. Cela devrait conduire à un taux correct quelque part au-dessus de 99%. Si vous avez absolument besoin de 100%, pensez à laisser 4-5 personnes vérifier une entrée et seulement si toutes les valeurs sont identiques. Pour obtenir également une comparaison sur la qualité de votre logiciel ocr, laissez-le également parcourir vos images et comparez ces résultats aux valeurs saisies par l'utilisateur pour avoir une idée, quand vous pouvez vraiment compter uniquement sur votre ocr.

+0

+1 en soulignant que l'OCR est pas si fiable. Je voudrais un autre +1 pour l'idée de turk mécanique;) – zerm

1

Les moteurs OCR ne sont pas formés pour lire du texte écrit à la main, vous risquez donc d'avoir des problèmes avec MODI. Vous voulez essayer de trouver un moteur ICR. Même ainsi, les meilleurs d'entre eux ne sont précis qu'à 80% sur les bons intrants. Vous pourriez aller mieux parce que vous savez que votre texte est toujours des nombres.

Cette question SO/réponse dit que ocropus a ICR

FOSS Intelligent Character Recognition (ICR)