top of page
Rechercher
  • Photo du rédacteurDataGenius

Reconnaissance de caractères et OCR : Quelle solution choisir ?

Dernière mise à jour : 4 nov. 2020



Article original en anglais : Medium


Cet article vous est proposé dans le cadre de notre offre AI-Compare. Nous référençons sur notre plateforme AI-Compare un grand nombre de solutions d'intelligence artificielle (IA) et vous permettons de les tester directement sur notre plateforme ou notre API.


Pour tester en particulier notre comparateur de moteurs d'OCR : https://ai-compare.com/vision_apis/ocr


Si vous êtes un fournisseur de solutions d'IA (reconnaissance d'objets, traduction automatique, extraction de mots-clés, speech to text, etc.) que vous souhaitez l'intégrer à AI-Compare ou que vous souhaitez simplement en savoir plus sur notre solution, contactez-nous à l'adresse suivante : contact@ai-compare.com

 

L’essor de l’intelligence artificielle ces dernières années a été poussé par un phénomène de digitalisation omniprésent dans tous les environnements professionnels. Cette transformation digitale a été entamée par la plupart des entreprises, petites et grandes, et un des principaux axes de transformation est la numérisation des données. C’est dans ce but qu’un service de vision par ordinateur a été développé : Optical Character Recognition (Reconnaissance optique de caractères), communément appelé OCR.


L’origine de l’OCR remonte aux années 50, c’est David Shepard qui fonde Intelligent Machines Research Corporation (IMR), premier fournisseur de systèmes d'OCR au monde exploités par des sociétés privées, destinés à la conversion de messages imprimés en langage machine pour le traitement informatique.


Aujourd’hui, il n’est plus nécessaire d’avoir recours à un système destiné à une police de caractères donnée. Les services d’OCR sont intelligents, l’OCR représente même une des

branches majeures de la vision par ordinateur, et plus globalement de l’intelligence artificielle. Grâce à l’OCR, il est possible d’obtenir un fichier texte à partir de nombreux supports numériques :


  • Fichier PDF

  • Image PNG, JPG contenant des écritures

  • Documents manuscrits


L’utilisation de l’OCR pour des documents manuscrits, des images ou des documents PDF peut concerner les entreprises de tous domaines et de toutes activités. Certaines entreprises peuvent avoir un besoin plus crucial de l’OCR pour de la reconnaissance de caractères sur des écritures, associé à du Natural Language Processing (NLP) : de l’analyse textuelle. On pourra citer par exemple le domaine bancaire utilisant l’OCR pour l’approbation des chèques (détails, signature, nom, montant, etc.) ou la vérification des cartes bleues (numéro de carte, nom, date d’expiration, etc.). De nombreux autres secteurs d’activité ont un fort recours à l’OCR comme la santé (numérisation de dossiers patients), la police (reconnaissance des plaques d’immatriculation) ou encore les douanes (extraction d’informations de passeports), etc.


Fonctionnement de l’OCR :


La technologie de reconnaissance optique de caractère se décompose en 3 étapes :


  • Etape de pré-traitement de l’image qui consiste à traiter l’image afin que celle-ci puisse être exploitée et optimale pour reconnaître les caractères présents. On pourra citer comme manipulations de pré-traitement : réalignement, déparasitage, binarisation, suppression des lignes, zonage, détection de mots, reconnaissance du script, segmentation, normalisation, etc.


  • Étape d’extraction des propriétés statistiques de l’image. C’est l’étape clé permettant de localiser et identifier les caractères présents sur l’image, ainsi que leurs structures


  • Étape de post-traitement qui consiste à reformer l’image telle qu’elle était avant l’analyse, en y mettant en évidence les “bounding boxes” (rectangles délimitant le texte dans l’image) des suites de caractères identifiés :





Fournisseurs d’OCR :


Lors de notre étude sur l’OCR, nous nous sommes projetés dans le rôle d'une entreprise qui souhaite utiliser l’OCR pour répondre à des problématiques de reconnaissance de caractère sur un support PDF et sur un support image (JPG). Nous souhaitons obtenir un haut niveau de performance à moindre coût.


Nous nous sommes ainsi poser la question : "Quel est le fournisseur disposant de la solution d’OCR la plus adaptée à nos cas d’usage ?” Nous avons donc choisi 4 fournisseurs de solutions d’OCR :



Nous avons ainsi confronté trois mastodontes du marché de l’Intelligence Artificielle (IA) et un plus petit fournisseur spécialisé dans l’OCR.


Différentes API :


OCR Space :


Il est possible d’utiliser OCR Space gratuitement en ligne, pour “OCRiser” une image. Les formats suivants sont pris en charge : .jpg, .png, .webp, .pdf. Une très grande variété de langues d’OCR est proposée également. OCR Space offre la possibilité d’importer l’image depuis son ordinateur en local ou depuis une URL internet.


D’autres options sont également disponibles comme :

  • L’auto rotation de l’image si nécessaire

  • Scan de facture / reconnaissance de tableau : dans le cas d’un document de type : reçu de paiement, tableau, etc.


Il est possible d’utiliser le moteur "OCR Engine" classique, ou d’utiliser un moteur différent, plus lent mais plus efficace pour un texte complexe, des caractères spéciaux etc. Le résultat est composé du texte extrait ainsi que l’overlay (calque) avec les bounding boxes de texte identifiés et le contenu correspondant. Il est également possible d’obtenir un fichier .pdf contenant le résultat et le “text layer” (projection du texte sur l’image).






Concernant l’API, l’implémentation est très rapide et simple. On peut choisir d’afficher ou non dans le résultat les coordonnées des bounding boxs de chaque mot. Ces formats sont tolérés : PDF, GIF, PNG, JPG, TIF, BMP. Toutes les autres options présentes dans l’application OCR Space en ligne sont également paramétrables dans l’API.



Google Cloud Vision :


Chez Google, l’application d’OCR est confondue dans le produit Google Cloud Vision. Ainsi lorsque l’on essaye le service de reconnaissance d’image, on obtient la détection d’objets, de label et de texte. Concernant la détection de texte, aucun paramètre n’est modifiable, on peut simplement lire la réponse :



Concernant l’API, l’implémentation est légèrement plus complexe. Cela est principalement dû aux nombreux packages qu’il faut installer. Il faut également créer un projet Vision sur la console de Google Cloud, puis suivre tout le processus permettant de créer une clé d’authentification Google, celle-ci permettant l’utilisation de l’API Google Vision. Le résultat se compose du texte, ainsi que des coordonnées des bounding boxs correspondant à chaque mot.



Amazon AWS Textract :


L’interface console permet simplement d’importer une image, et d’obtenir en retour l’image avec les bounding boxes du texte reconnu. Ainsi que les mots correspondants indiqués à droite (sur l’exemple, les résultats sont totalement faux). Aucun paramètre n’est modifiable par l’utilisateur, néanmoins celui-ci peut choisir la détection d’un formulaire ou d’une table, afin d’obtenir une meilleure clarté et précision.



L’utilisation de l’API Amazon Textract est fastidieuse. Il faut d’abord compléter plusieurs étapes avant de pouvoir implémenter correctement l’API. Il faudra tout d’abord créer un utilisateur IAM et lui attribuer les droits FullAccess pour AmazonS3 (stockage) et pour Amazon Textract. Il faut ensuite installer le SDK AWS que l’on souhaite utiliser (dans notre cas Python), créer une clé d’accès pour l’utilisateur IAM précédemment créé et enfin télécharger le fichier .csv qui contient la clé d’accès ainsi que la clé secrète. Après avoir complété ces étapes, il est possible d’implémenter l’API comme tel :



Le résultat se présente sous la forme d’un fichier json avec pour chaque mot la bounding box associée.


Microsoft Azure OCR API :


Microsoft Azure Cognitive Services ne propose pas de plateforme permettant d’essayer la solution d’OCR en ligne. Ils proposent cependant une API permettant d’utiliser le service d’OCR. Celle-ci implique de créer un projet dans Cognitive Services afin de récupérer une clé API. Ensuite l’implémentation est relativement rapide :





Grâce à ce code Python, il est possible d’afficher en résultat chaque mot et sa bounding box, ainsi que l’image traitée :



Cas d'usages :


Pour faciliter et accélérer grandement cette phase, nous avons utilisé la solution AI-Compare pour utiliser les APIs des différents fournisseurs. AI-Compare permet d’accéder aux solutions d’OCR (entre autres) de différents fournisseurs avec le même code, la même API et en sortie une réponse .json de même format.


Il suffit ainsi de développer uniquement un code permettant d’appeler l’API AI Compare pour les 100 images, puis de récupérer le texte en résultat, et ceux pour les 4 fournisseurs disponibles : Google Cloud Platform, Amazon Web Services, Microsoft Azure et OCR Space. Il est même possible d'exécuter les 4 APIs en un seul appel de l’API AI Compare. Cela évite d’avoir à implémenter une méthode différente permettant de générer les appels pour les 100 images, et éviter d’implémenter pour chaque fournisseur une méthode d’extraction des résultats (qui se voudra dépendante de la forme de chaque réponse). Voici l'API AI-Compare OCR (lien) et une vidéo sur son fonctionnement (en anglais) :



Use case 1 : Images


La base de données pour un premier cas d'usage de test regroupe une centaine d’images de texte prises dans des contextes variés.



Les images proviennent de sources très différentes et sont dans un format .jpg et en petite taille (les images dans les datasets de test sont très souvent en petite taille afin de limiter la taille du dataset). Une centaine d’images ont été sélectionnées de manière aléatoire dans ce dataset. Le script en Python permet de vérifier si la réponse de chaque API correspond au label (texte) attribué à chaque image.



Cette base de données a permis de faire un constat important : la performance de Microsoft et dans une moindre mesure celle de OCR Space, est faussé par le fait que l’API Microsoft n’a pas pris en charge la plupart des images du fait de leur petite taille. L’API d’OCR Space a pris en charge les images, mais surtout certaines aucun texte n’a été détecté.


Cependant, ce problème ne concerne pas les APIs OCR de Google Cloud Platform (GCP) et Amazon Web Services (AWS) qui prennent parfaitement en charge ce format d’image.


A noter que les résultats représentent le pourcentage d’images dont le résultat est exact, une prédiction proche du texte réel sans être exact sera considérée comme une mauvaise prédiction.


On a ainsi pour ce dataset d’images diverses le classement suivant : Google > AWS > OCR Space > Microsoft.


Cas d'usage 2 : Analyse de chèque


L’objectif est d’utiliser une base de données de 100 chèques, afin de tester les performances de 4 fournisseurs sur ce cas d’usage plus proche de la réalité. Nous avons fixé 4 éléments de texte à reconnaître : le nom, le prénom, le montant du chèque et le nom de la banque.




Les résultats représentent le pourcentage de “Nom”, “Prénom”, “Montant” et “Banque” parfaitement prédits et reconnus. Une différence d’orthographe ici qualifie la prédiction comme un échec. Les résultats des différents fournisseurs peuvent nous donner de nombreux indicateurs sur les forces et les faiblesses de chaque API, sans pour autant considérer ceci comme une conclusion universelle : chaque cas d’usage peut présenter des résultats différents. Il est donc impératif de réaliser ces tests sur chaque jeu de données spécifiques.


Néanmoins, on s’aperçoit que Google Cloud affiche largement les meilleurs résultats pour la détection du nom et du prénom sur le chèque et donc : le texte manuscrit. Cependant, c’est la solution d’Amazon qui affiche les meilleurs performances de reconnaissance du montant : chiffres manuscrits.


Enfin, on observe que Google Cloud et OCR Space ont les meilleurs taux de reconnaissance du nom de la banque. Ainsi, on pourra en déduire que potentiellement OCR Space est plus adapté à du texte numérique que manuscrit.


Globalement, sur ce cas d’usage, on peut définir le classement comme tel :

Google > AWS > OCR Space > Microsoft


Pricing :


Concernant les coûts d’appel des APIs, ils sont définis suivant des seuils avec des prix dégressifs :



Les prix sont exprimés en dollars, et pour une image (et donc pour les pdf : 1 page).

On constate que dans la majorité des usages, les prix sont très similaires pour tous les fournisseurs, avec un pallier à 5M de calls au delà duquel les prix chutent de plus de 60%.


A noter que les prix affichés sur ce tableau sont susceptibles d’avoir évolué selon les fournisseurs à compter du jour de rédaction de cet article.


Conclusion :


Cette étude a montré une tendance selon laquelle l’API d’OCR de Google affiche de meilleures performances. Cependant, nous avons pu observer que pour prédire les montants écrits sur les chèques, Google ne présentait pas les meilleurs résultats (AWS).

Pour chaque cas d'usage, il est souhaitable et optimal de benchmarker les différentes solutions d’OCR afin de choisir la solution la plus adaptée. Comme constaté, de nombreux paramètres impactent les performances des différentes solutions : qualité d’image, format d’image, manuscrit / numérique, nature des caractères (lettres, chiffres, langue). Il est donc impossible de choisir le fournisseur d’API le plus adapté avant d’avoir testé. C’est à cet instant qu’AI-Compare a été très utile. Il a permis, simplement en disposant d’un compte (et d’une clé API) AI-Compare, de tester l’API d’OCR de quatre fournisseurs sur nos données spécifiques.


De plus, AI-Compare permet ensuite d’utiliser la solution sélectionnée depuis l’API AI-Compare : il suffit de disposer d’un compte et d’une clé API AI-Compare pour pouvoir accéder à un très large choix d’APIs d’IA provenant de fournisseurs variés (y compris les APIs d’OCR). Cela permet d’éviter une trop forte dépendance à un seul fournisseur voire d’exploiter les résultats provenant de plusieurs fournisseurs à la fois.


 


AI-Compare est une solution SaaS fournissant une API connectée aux grands (AWS, Google Cloud, Microsoft, etc.) et aux petits fournisseurs d'intelligence artificielle. Notre solution permet aux utilisateurs de comparer les performances de ces fournisseurs en fonction de leurs données et de les utiliser directement via notre API, offrant ainsi une grande flexibilité et facilitant le changement de fournisseur et l'optimisation des performances : lien d'inscription


Nous proposons également des prestations de conseil en Intelligence Artificielle pour aider nos clients à choisir les meilleures solutions en fonction de leurs besoins et de leurs données : contactez-nous


Suivez l'évolution de AI-Compare : LinkedIn | Twitter | Facebook !




6 121 vues0 commentaire
bottom of page