OCR numérique de haute précision à partir d’une capture d’écran mobile

Fritz Anderson

OCR numérique de haute précision à partir d’une capture d’écran mobile


Question

Existe-t-il une solution OCR qui fonctionnerait nativement sur un iPhone récent avec une meilleure précision que Tesseract? Il suffit d’en reconnaître suffisamment pour récupérer des montants en dollars.

Objectif

Pour gratter une table de montants en dollars à partir d’une image d’écran prise sur un appareil mobile. Nous avons examiné toutes les solutions fréquemment recommandées, mais elles ne satisfont pas à nos contraintes.

Je commence ici au cas où il y aurait une solution standard; sinon, je vais essayer Stack Overflow.

De nombreux objectifs et priorités viennent de notre client. Il est juste de se demander s’ils sont sages, mais je dois vivre avec eux.

C’est le résumé TL; DR. Vous trouverez ci-dessous les détails qui n’intéressent pas tout le monde.


Priorités

  1. La solution doit fonctionner sur un modèle assez récent de l’iPhone d’Apple (disons iPhone 6s minimum).
  2. La précision des caractères interprétés est primordiale.
  3. Il y a environ 30 numéros à récupérer. Ils sont disposés dans un tableau de trois colonnes. 4. Le format des nombres peut inclure des symboles monétaires, des délimiteurs de regroupement et des séparateurs décimaux. (« $ », « , » et « . » aux États-Unis). Ou toute combinaison raisonnable de ceux-ci.
  4. Attendez-vous à ce que le bitmap pour chaque chiffre soit ~ 25w x ~ 35h (Helvetica 10 pt à une résolution 2x ou 3x). La police serait proportionnelle, les séparateurs seront donc beaucoup plus étroits.
  5. L’application a besoin d’un moyen de récupérer l’emplacement de chaque numéro dans le tableau.
  6. Le temps d’exécution doit être inférieur à 10 secondes, idéalement inférieur à 5. L’utilisation sera probablement assez rare pour que la consommation d’énergie ne soit pas prise en compte.

Contraintes

Il s’agit d’une application de preuve de concept. J’ai un temps et un travail très limités. Je suis fortement découragé de recourir à des services avec des coûts initiaux continus ou importants, même si ceux-ci peuvent avoir un sens pour le produit final.

Ce que j’ai essayé / considéré

Tesseract

Tesseract est précis à environ 85% dans cette application.

J’ai essayé le préprocesseur d’image natif et le mien j’ai expérimenté: Monochrome, luminosité et contraste variés, flou / netteté divers; l’image traitée me semble plausiblement distincte, sans espaces vides remplis.

Je peux obtenir une précision supérieure à 90% en corrigeant la sortie afin que cela ait du sens; Je connais la plus grande ampleur, par exemple, donc un nombre trop grand avec un 8 en tête commence probablement par un $.

Le client n’est pas satisfait.

Tesseract en petits morceaux

Le cadre Vision dans iOS 11 peut identifier l’emplacement des mots et des caractères dans une image, mais il ne les interprète pas. Le chargement des sous-images dans Tesseract donne des résultats bien pires. Je suppose que Tesseract dépend du contexte pour résoudre les ambiguïtés.

Raclage à la source

Il n’y a pas de format natif textuel tel que HTML ou PDF texte. Je suis coincé avec le pixmap.

Services à distance

Un service distant est moins attrayant que le traitement natif, même si les expériences «d’essai gratuit» donnent de bien meilleurs résultats:

  • Le client ne veut pas être déboursé pour la phase de validation de principe du produit.
  • Nous ne pouvons pas compter sur la gestion par le client de ses démos pour respecter la date d’essai gratuit ou les limites de quantité.
  • Par principe, nous aimerions que l’application ne dépende pas de la disponibilité ou de la rotation du réseau.
  • Par principe, nous aimerions éviter que les données des utilisateurs ne soient diffusées sur Internet et probablement conservées pour une inspection par un tiers.

ABBYY semble être une bonne option, à l’exception de ces restrictions.

Apprentissage automatique

Le problème est assez bien contenu:

  • Style de type prévisible.
  • Pas de distorsion géométrique.
  • Des images nettes pour travailler.
  • 15 symboles à classer (0-9., $ {Espace} {autre})

Un modèle d’apprentissage automatique promet d’être très précis, très rapide et facile à former.

Le calendrier et le budget qui nous ont été accordés ne couvrent pas mon apprentissage de la formation d’un modèle. Cependant, nous avons accès à un bassin d’étudiants en informatique, dont l’un pourrait être en mesure de suivre la formation rapidement et à peu de frais.

À ce stade, nous sommes au-delà de la portée des recommandations de logiciels et dans Stack Overflow ou les talents locaux. J’inclus cette option pour être complet.

Andrea Lazzarotto

Dropbox en a fait un pour un usage interne: blogs.dropbox.com/tech/2017/04/… BTW la situation, comme décrit, ressemble au client veut un travail difficile de très haute qualité pour pas cher. Cela ne se termine généralement pas bien. Bonne chance.

Réponses


 Steve Barnes

Je pense que l’option d’apprentissage automatique utilisant OpenCV , (bien que vous puissiez trouver l’exemple d’une méthode alternative ici utile), est le meilleur pari et la bibliothèque OpenCV comprend des algorithmes d’apprentissage automatique et a de bons exemples comme point de départ tels que https: //www.learnopencv.com/handwritten-digits-classification-an-opencv-c-python-tutorial/ qui s’attaque à un problème beaucoup plus délicat.

OpenCV présente les caractéristiques suivantes:

  • Gratuit, gratuit et open source
  • Licence BSD
  • Écrit en C ++ mais liaisons pour Java et Python
  • Prend en charge Windows, Linux, Mac OS, iOS et Android
  • Vous pouvez capturer vos données d’entraînement et former votre modèle ML avec un système de bureau, puis l’exporter vers une solution mobile si vous le souhaitez.

 

#à, #de, capture, d’écran?, d’une, haute, mobile, numérique, OCR, partir, précision

 

wiki

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *