Comment effectuer facilement la reconnaissance de l'écriture manuscrite à l'aide du Machine Learning PlatoBlockchain Data Intelligence. Recherche verticale. Aï.

Comment faire facilement la reconnaissance de l'écriture manuscrite à l'aide de l'apprentissage automatique

Comment faire facilement la reconnaissance de l'écriture manuscrite à l'aide de l'apprentissage automatique

Vous voulez faire de l'OCR manuscrite ? Ce blog est un aperçu complet des dernières méthodes de reconnaissance de l'écriture manuscrite utilisant l'apprentissage en profondeur. Nous avons passé en revue les dernières recherches et articles et avons également construit un lecteur d'écriture manuscrite à partir de zéro.


nanonets API OCR a beaucoup d'intéressants cas d'utilisation. Parlez à un expert de l'IA Nanonets pour en savoir plus.


Introduction

La taille du marché de la reconnaissance optique de caractères (OCR) devrait atteindre 13.38 milliards USD d'ici 2025, avec une croissance annuelle de 13.7 %. Cette croissance est portée par la numérisation rapide des processus métier utilisant l'OCR pour réduire leurs coûts de main-d'œuvre et économiser de précieuses heures de travail. Bien que l'OCR ait été considéré comme un problème résolu, il existe un élément clé de celui-ci, la reconnaissance de l'écriture manuscrite (OCR de l'écriture manuscrite) ou la reconnaissance de texte manuscrit (HTR), qui est toujours considérée comme un énoncé de problème difficile. La forte variation des styles d'écriture manuscrite entre les personnes et la mauvaise qualité du texte manuscrit par rapport au texte imprimé posent des obstacles importants à sa conversion en texte lisible par machine. Néanmoins, il s'agit d'un problème crucial à résoudre pour de nombreux secteurs tels que la santé, l'assurance et la banque.

Comment faire facilement la reconnaissance de l'écriture manuscrite à l'aide de l'apprentissage automatique
La source :- https://www.semanticscholar.org/paper/Handwriting-recognition-on-form-document-using-and-Darmatasia-Fanany/

Les progrès récents de l'apprentissage en profondeur, tels que l'avènement des architectures de transformateurs, ont accéléré nos progrès dans la détection de textes manuscrits. La reconnaissance de texte manuscrit est appelée reconnaissance intelligente de caractères (ICR) en raison du fait que les algorithmes nécessaires pour résoudre l'ICR nécessitent beaucoup plus d'intelligence que la résolution d'OCR générique.

Dans cet article, nous découvrirons la tâche de reconnaissance de texte manuscrit, ses subtilités et comment nous pouvons la résoudre en utilisant des techniques d'apprentissage en profondeur.


Vous souhaitez extraire des données de formulaires manuscrits? Dirigez-vous vers nanonets et commencez à créer gratuitement des modèles OCR d'écriture manuscrite !


Défis de la reconnaissance de l'écriture manuscrite

  1. Énorme variabilité et ambiguïté des accidents vasculaires cérébraux d'une personne à l'autre
  2. Le style d'écriture d'une personne varie également de temps en temps et est incohérent
  3. Mauvaise qualité du document / de l'image source en raison d'une dégradation au fil du temps
  4. Le texte dans les documents imprimés se trouve en ligne droite alors que les humains n'ont pas besoin d'écrire une ligne de texte en ligne droite sur du papier blanc
  5. L'écriture cursive rend la séparation et la reconnaissance des caractères difficiles
  6. Le texte écrit à la main peut avoir une rotation variable vers la droite, contrairement au texte imprimé où tout le texte est droit
  7. La collecte d'un bon ensemble de données étiqueté pour apprendre n'est pas bon marché par rapport aux données synthétiques

Les cas d'utilisation

Santé et pharmacie

La numérisation des ordonnances des patients est un problème majeur dans l'industrie des soins de santé / pharmaceutique. Par exemple, Roche gère quotidiennement des millions de pétaoctets de fichiers PDF médicaux. Un autre domaine dans lequel la détection de texte manuscrit a un impact majeur est l'inscription des patients et la numérisation des formulaires. En ajoutant la reconnaissance de l'écriture manuscrite à leur boîte à outils de services, les hôpitaux / produits pharmaceutiques peuvent améliorer considérablement l'expérience utilisateur

Assurance

Une grande industrie de l'assurance reçoit plus de 20 millions de documents par jour et un retard dans le traitement de la réclamation peut avoir un impact terrible sur l'entreprise. Le document de réclamation peut contenir différents styles d'écriture manuscrite et l'automatisation manuelle pure du traitement des réclamations va complètement ralentir le processus.

Comment faire facilement la reconnaissance de l'écriture manuscrite à l'aide de l'apprentissage automatique
Source: - https://www.researchgate.net/figure/mages-of-handwritten-bank-cheques-from-different-countries-a-Brazilian-1-b-American_fig2_226705617

Services bancaires

Les gens font des chèques régulièrement et les chèques jouent toujours un rôle majeur dans la plupart des transactions non monétaires. Dans de nombreux pays en développement, la procédure actuelle de traitement des chèques exige qu'un employé de banque lise et saisisse manuellement les informations présentes sur un chèque et vérifie également les entrées telles que la signature et la date. Étant donné qu'un grand nombre de chèques doivent être traités chaque jour dans une banque, un système de reconnaissance de texte manuscrit peut réduire les coûts et les heures de travail humain.

Bibliothèques en ligne

D'énormes quantités de connaissances historiques sont numérisées en téléchargeant les images numérisées pour accéder au monde entier. Mais cet effort n'est pas très utile tant que le texte des images ne peut pas être identifié et peut être indexé, interrogé et parcouru. La reconnaissance de l'écriture manuscrite joue un rôle clé pour faire revivre les documents médiévaux et du XXe siècle, les cartes postales, les recherches, etc.

Méthodologie

Les méthodes de reconnaissance de l'écriture manuscrite peuvent être globalement classées dans les deux types ci-dessous

Comment faire facilement la reconnaissance de l'écriture manuscrite à l'aide de l'apprentissage automatique
  1. Méthodes en ligne : - Les méthodes en ligne impliquent un stylo / stylet numérique et ont accès aux informations de trait, à l'emplacement du stylo pendant que le texte est écrit comme indiqué dans la figure de droite ci-dessus. Comme ils ont tendance à avoir beaucoup d'informations sur le flux de texte en cours d'écriture, ils peuvent être classés avec une précision assez élevée et la démarcation entre les différents caractères du texte devient beaucoup plus claire.
  2. Méthodes hors ligne : - Les méthodes hors ligne impliquent la reconnaissance du texte une fois qu'il est écrit et n'auront donc pas d'informations sur les traits/directions impliqués lors de l'écriture avec un ajout possible de bruit de fond provenant de la source, c'est-à-dire du papier.

Dans le monde réel, il n'est pas toujours possible/évolutif de transporter un stylo numérique avec des capteurs pour capturer les informations sur les traits et, par conséquent, la tâche de reconnaissance de texte hors ligne est un problème beaucoup plus pertinent. Ainsi, nous allons maintenant discuter de diverses techniques pour résoudre le problème de la reconnaissance de texte hors ligne.

Techniques

Les premières approches de résolution de la reconnaissance de l'écriture manuscrite impliquaient des méthodes d'apprentissage automatique telles que les modèles de Markov cachés (HMM), SVM, etc. d'un caractère individuel. Ces caractéristiques générées sont maintenant transmises à un classificateur, par exemple HMM, pour obtenir les résultats. Les performances des modèles d'apprentissage automatique sont assez limitées en raison de la phase d'extraction manuelle des caractéristiques et de leur capacité d'apprentissage limitée. L'étape d'extraction des fonctionnalités varie pour chaque langue et n'est donc pas évolutive. Avec l'avènement de l'apprentissage en profondeur, d'énormes améliorations ont été apportées à la précision de la reconnaissance de l'écriture manuscrite. Discutons de quelques-unes des principales recherches dans le domaine de l'apprentissage en profondeur pour la reconnaissance de l'écriture manuscrite

Réseaux de neurones récurrents multidimensionnels

Comme nous le savons, RNN/LSTM peut traiter des données séquentielles pour identifier des modèles temporels et générer des résultats. Mais ils sont limités au traitement des données 1D et ne seront donc pas directement applicables aux données d'image. Pour résoudre ce problème, les auteurs de cet article ont proposé une structure RNN/LSTM multidimensionnelle comme on peut le voir dans la figure ci-dessous

Comment faire facilement la reconnaissance de l'écriture manuscrite à l'aide de l'apprentissage automatique

Voici la différence entre un RNN général et un RNN multidimensionnel. Dans un RNN général, la couche cachée dit que i reçoit l'état d'une couche cachée précédente au temps i-1. Dans un RNN multidimensionnel, disons par exemple un RNN à 2 dimensions, la couche cachée (i, j) reçoit les états de plusieurs couches cachées précédentes, c'est-à-dire (i-1, j) et (i, j-1) et capture ainsi le contexte des deux hauteur et largeur dans une image qui est essentielle pour obtenir une compréhension claire de la région locale par un réseau. Ceci est encore étendu pour obtenir des informations non seulement des couches précédentes, mais également des couches futures, de la même manière qu'un BI-LSTM reçoit des informations de t-1 et t + 1. De même, une couche cachée MDRNN 2D peut maintenant recevoir des informations (i-1, j), (i, j-1), (i + 1, j), (i, j + 1) capturant ainsi le contexte dans toutes les directions

Comment faire facilement la reconnaissance de l'écriture manuscrite à l'aide de l'apprentissage automatique

La structure entière du réseau est illustrée ci-dessus. MDLSTM est utilisé qui n'est rien d'autre que le remplacement du bloc RNN par un bloc LSTM de la discussion ci-dessus de MDRNN. L'entrée est divisée en blocs de taille 3 × 4 qui sont maintenant introduits dans les couches MDSTM. Le réseau a une structure hiérarchique de couches MDLSTM suivies de couches de rétroaction (ANN) en tandem. Ensuite, la sortie finale est convertie en un vecteur 1D et est donnée à la fonction CTC pour générer une sortie

Classification temporelle connexionniste (CTC) est un algorithme utilisé pour traiter des tâches telles que la reconnaissance vocale, la reconnaissance de l'écriture manuscrite, etc. où seules les données d'entrée et la transcription de sortie sont disponibles mais aucun détail d'alignement n'est fourni, c'est-à-dire comment une région particulière dans l'audio pour la parole ou une région particulière dans les images pour l'écriture manuscrite est aligné sur un caractère spécifique. Des heuristiques simples telles que donner à chaque caractère la même zone ne fonctionneront pas car la quantité d'espace occupée par chaque caractère varie dans l'écriture manuscrite d'une personne à l'autre et d'une fois à l'autre.

Pour notre cas d'utilisation de la reconnaissance de l'écriture manuscrite, considérez les régions d'image d'entrée pour une phrase particulière comme entrée X=[x1,x2,…,x ** T] tandis que la sortie attendue comme Y=[y1,y2,…,y ** U] . Étant donné X, nous sommes censés trouver Y précis. L'algorithme CTC fonctionne en prenant l'entrée X et en donnant une distribution sur tous les Y possibles à l'aide desquels nous pouvons faire une prédiction pour la sortie finale.

CTC utilise un caractère de base, par exemple - pour différencier les caractères en double et les caractères répétés dans une région d'entrée. Par exemple, un caractère particulier peut s'étendre sur plusieurs régions d'entrée et ainsi CTC produirait le même caractère consécutivement. Exemple : - James d'entrée et la sortie de CTC est jjaammmees. La sortie finale est dérivée en effondrant les sorties répétées et nous obtenons donc james. Mais maintenant, pour présenter des caractères en double, dites "l" dans bonjour, nous devons avoir une séparation en place et donc toutes les sorties sont séparées par un trait d'union (-). Maintenant, la sortie pour hello pourrait être h-ee-ll-lll-oo qui, si elle est réduite, deviendra hello et non helo. Plus d'informations sur le fonctionnement de CTC peuvent être vues ici CCT.

Lors du décodage de la sortie de CTC sur la base de la simple heuristique de probabilité la plus élevée pour chaque position, nous pourrions obtenir des résultats qui pourraient ne pas avoir de sens dans le monde réel. Pour résoudre ce problème, nous pourrions utiliser un décodeur différent pour améliorer les résultats. Discutons des différents types de décodages

  1. Décodage du meilleur chemin : - C'est le décodage générique dont nous avons parlé jusqu'à présent. À chaque position, nous prenons la sortie du modèle et trouvons le résultat avec la probabilité la plus élevée.
  2. Décodage de recherche de faisceau : - Au lieu de prendre une seule sortie du réseau à chaque fois, la recherche de faisceau suggère de conserver plusieurs chemins de sortie avec toutes les probabilités les plus élevées et d'étendre la chaîne avec de nouvelles sorties et des chemins de chute ayant des probabilités moindres pour maintenir la taille du faisceau constante. Les résultats obtenus grâce à cette approche sont plus précis que l'utilisation de l'approche gourmande
  3. Recherche de faisceaux avec le modèle de langage :- La recherche par faisceau fournit des résultats plus précis que la recherche par grille, mais cela ne résoudra pas le problème d'avoir des résultats significatifs. Pour résoudre ce problème, nous pouvons utiliser un modèle de langage avec une recherche de faisceau en utilisant à la fois les probabilités du modèle et le modèle de langage pour générer les résultats finaux.

Plus de détails sur la génération de résultats de décodage précis peuvent être consultés dans ce article

Encodeur-décodeur et réseaux d'attention

Les modèles Seq2Seq dotés de réseaux d'encodeur-décodeur ont récemment été populaires pour résoudre les tâches de reconnaissance vocale, de traduction automatique, etc. et ont donc été étendus pour résoudre le cas d'utilisation de la reconnaissance de l'écriture manuscrite en déployant un mécanisme d'attention supplémentaire. Discutons de quelques recherches fondamentales dans ce domaine

Scannez, assistez et lisez

Dans ce travail fondateur Scan, Attend and Read (SAR), les auteurs proposent l'utilisation d'un modèle basé sur l'attention pour la reconnaissance de l'écriture manuscrite de bout en bout. La principale contribution de la recherche est la transcription automatique du texte sans segmentation en lignes comme étape de prétraitement et peut ainsi numériser une page entière et donner des résultats.

Comment faire facilement la reconnaissance de l'écriture manuscrite à l'aide de l'apprentissage automatique

SAR utilise une architecture basée sur MDLSTM similaire à celle dont nous avons discuté ci-dessus avec un petit changement au niveau de la couche finale. Après la dernière couche linéaire, c'est-à-dire le bloc Sum final de la figure ci-dessus, les cartes d'entités sont réduites dans la dimension verticale et une fonction softmax finale est appliquée pour obtenir les sorties.

Comment faire facilement la reconnaissance de l'écriture manuscrite à l'aide de l'apprentissage automatique

L'architecture SAR consiste en une architecture MDLSTM qui agit comme un extracteur de fonctionnalités. Le module de fermeture final avec une sortie softmax et une perte CTC est remplacé par un module d'attention et un décodeur LSTM. Le modèle d'attention utilisé est une combinaison hybride d'attention basée sur le contenu et d'attention basée sur l'emplacement, qui est expliquée plus en détail dans l'article suivant. Les modules de décodeur LSTM prennent l'état précédent, la carte d'attention précédente et les caractéristiques du codeur pour générer le caractère de sortie final et le vecteur d'état pour la prédiction suivante.

Convolution, participation et sort

Cet article propose un modèle séquentiel basé sur l'attention pour la reconnaissance de mots manuscrits. L'architecture proposée comporte trois parties principales: un encodeur, composé d'un CNN et d'un GRU bidirectionnel, un mécanisme d'attention dédié à se concentrer sur les caractéristiques pertinentes et un décodeur formé par un GRU unidirectionnel, capable d'épeler le mot correspondant, caractère par caractère.

Comment faire facilement la reconnaissance de l'écriture manuscrite à l'aide de l'apprentissage automatique

L'encodeur utilise un CNN pour extraire les caractéristiques visuelles. Une architecture VGG-19-BN pré-entraînée est utilisée comme extracteur de caractéristiques. L'image d'entrée est convertie en carte de caractéristiques X qui est ensuite remodelée en X' en divisant tous les canaux par colonne et en les combinant pour obtenir les informations séquentielles. X' est en outre converti en H en utilisant un GRU bidirectionnel. GRU est un réseau neuronal similaire à LSTM par nature et peut capturer des informations temporelles.

En outre, un modèle d'attention est utilisé lors de la prédiction de la sortie du décodeur. Le document discute de deux types différents de mécanismes d'attention explorés.

  1. Attention basée sur le contenu : - L'idée derrière cela est de trouver la similitude entre l'état caché actuel du décodeur et la carte des caractéristiques de l'encodeur. Nous pouvons trouver les vecteurs de caractéristiques les plus corrélés dans la carte des caractéristiques de l'encodeur, qui peut être utilisé pour prédire le caractère actuel au pas de temps actuel. Plus de détails sur le fonctionnement du mécanisme d'attention peuvent être vus d'ici Attention
  2. Attention basée sur l'emplacement :- Le principal inconvénient des mécanismes de localisation basés sur le contenu est qu'il existe une hypothèse implicite selon laquelle les informations de localisation sont intégrées dans la sortie de l'encodeur. Sinon, il n'y a aucun moyen de différencier les sorties de caractères qui sont répétées à partir du décodeur. Par exemple, considérons un mot Charmander, le caractère a y est répété deux fois et sans informations de localisation, le décodeur ne pourra pas les prédire comme des caractères séparés. Pour atténuer cela, le caractère actuel et son alignement sont prédits en utilisant à la fois la sortie de l'encodeur et l'alignement précédent. Plus de détails sur le fonctionnement de la participation basée sur la localisation peuvent être vus ici.

Le décodeur est un GRU multicouche unidirectionnel. A chaque pas de temps t il reçoit l'entrée du pas de temps précédent et le vecteur de contexte du module d'attention. Le décodage multinomial et le lissage d'étiquettes sont explorés lors de la formation pour améliorer la capacité de généralisation.

Modèles de transformateurs

Bien que les réseaux d'encodeur-décodeur aient été assez bons pour obtenir des résultats pour la reconnaissance de l'écriture manuscrite, ils ont un goulot d'étranglement dans la formation en raison des couches LSTM impliquées et ne peuvent donc pas être parallélisés. Récemment, les transformateurs ont eu beaucoup de succès et ont remplacé LSTM dans la résolution de diverses tâches liées au langage. Voyons maintenant comment les modèles basés sur les transformateurs peuvent être appliqués pour la reconnaissance de l'écriture manuscrite.

Faites attention à ce que vous lisez

Dans ce travail, les auteurs ont proposé l'utilisation d'une architecture basée sur un transformateur utilisant des couches d'auto-attention à plusieurs têtes aux étapes visuelles et textuelles et peuvent ainsi apprendre à la fois la reconnaissance de caractères ainsi que les dépendances linguistiques des séquences de caractères à décoder. Étant donné que la connaissance du langage est intégrée au modèle lui-même, aucune étape de post-traitement supplémentaire n'est nécessaire à l'aide d'un modèle de langage et a donc la capacité de prédire les sorties qui ne font pas partie du vocabulaire. Pour réaliser cet encodage de texte se produit au niveau des caractères et non au niveau des mots. Comme l'architecture du transformateur permet d'entraîner le modèle en parallèle pour chaque région ou caractère, le processus d'apprentissage est beaucoup plus simple.

Comment faire facilement la reconnaissance de l'écriture manuscrite à l'aide de l'apprentissage automatique

L'architecture réseau se compose des composants suivants

  1. Encodeur visuel : - Pour extraire les fonctionnalités pertinentes et appliquer une auto-attention visuelle à plusieurs têtes sur différents emplacements de personnage
  2. Transcripteur de texte : - Il fait la tâche de prendre la saisie de texte, de l'encoder, d'appliquer l'auto-attention du langage à plusieurs têtes et d'appliquer une attention mutuelle sur les caractéristiques visuelles et textuelles.
Encodeur visuel

La dorsale Resnet50 est utilisée pour ajouter des fonctionnalités, comme le montre la figure ci-dessus. La sortie de la carte des caractéristiques tridimensionnelles de Resnet3 Fc est transmise au module de codage temporel qui se remodèle en 50d en conservant la même largeur et donc la forme de (fxh, w). Celui-ci est introduit dans une couche entièrement connectée pour réduire la forme à (f, w) et la sortie résultante est Fc'. De plus, un codage positionnel TE est ajouté à Fc' pour conserver les informations de position comme mentionné dans l'article Transformer de Vaswani. Plus d'informations sur la conception de l'architecture du transformateur peuvent être vues ici. La sortie est passée à travers une couche entièrement connectée pour obtenir la carte des caractéristiques finale avec la forme (f, w). La sortie finale est transmise à un module d'attention à plusieurs têtes avec 8 têtes pour obtenir une carte visuelle riche en fonctionnalités

Transcripteur de texte

Le texte d'entrée est passé par un encodeur qui génère des incorporations au niveau des caractères. Ces incorporations sont combinées avec un emplacement temporel similaire à la manière dans Visual Encoder à l'aide d'un module Temporal Encoder. Ce résultat est ensuite transmis à un module d'auto-attention du langage multi-têtes qui est similaire au module d'attention dans l'encodeur visuel. Les caractéristiques de texte générées le long des caractéristiques visuelles de l'encodeur visuel sont transmises à un module d'attention mutuelle dont la tâche est d'aligner et de combiner les caractéristiques apprises des images et des entrées de texte. La sortie est passée par une fonction softmax pour obtenir le résultat final.

Lors de l'évaluation sur des données de test, les transcriptions ne sont pas disponibles. Ainsi, seul le jeton de début <S> est passé en entrée et le premier caractère prédit est renvoyé au système, qui sort le deuxième caractère prédit. Ce processus d'inférence est répété en boucle jusqu'à ce que le symbole de fin de séquence <E> soit produit ou lorsque la longueur de sortie maximale N est atteinte.

Génération de texte d'écriture manuscrite

La génération de texte manuscrit consiste à générer un texte manuscrit d'apparence réelle et peut donc être utilisé pour augmenter les ensembles de données existants. Comme nous le savons, l'apprentissage en profondeur nécessite beaucoup de données pour s'entraîner, tandis que l'obtention d'un énorme corpus d'images d'écriture manuscrite étiquetées pour différentes langues est une tâche fastidieuse. Pour résoudre ce problème, nous pouvons utiliser les réseaux antagonistes génératifs pour générer des données d'entraînement. Discutons ici d'une telle architecture

ScrabbleGAN

ScrabbleGAN suit une approche semi-supervisée pour synthétiser des images de texte manuscrites polyvalentes en termes de style et de lexique. Il a la capacité de générer des images de longueur variable. Le générateur peut également manipuler le style de texte résultant, ce qui nous permet de décider si le texte doit être cursif ou de dire à quel point le trait de stylo doit être épais / fin.

Comment faire facilement la reconnaissance de l'écriture manuscrite à l'aide de l'apprentissage automatique

L'architecture se compose d'un générateur entièrement convolutif basé sur BigGAN. Pour chaque caractère de l'entrée, un filtre correspondant est choisi et toutes les valeurs sont concaténées ensemble qui est ensuite multipliée par un vecteur de bruit z qui contrôle le style de texte généré. Comme on peut le voir ci-dessus, les régions générées pour chaque caractère individuel se chevauchent, aidant ainsi à générer un texte récursif connecté et permettant la flexibilité de différentes tailles de caractères. Par exemple, m occupe une grande partie de l'espace tandis que e et t occupent une zone limitée. Afin de conserver le même style pour tout le mot ou la phrase, le vecteur de style z est maintenu constant pour tous les caractères.

Un discriminateur convolutif basé sur l'architecture BigGAN est utilisé pour classer si le style généré des images semble faux ou réel. Le discriminateur ne repose pas sur des annotations au niveau des caractères et n'est donc pas basé sur un GAN conditionnel de classe. L'avantage de ceci étant qu'il n'y a pas besoin de données étiquetées et donc les données d'un corpus invisible qui ne fait pas partie des données d'apprentissage peuvent être utilisées pour l'apprentissage du discriminateur. Avec le discriminateur, un outil de reconnaissance de texte R est formé pour classer si le texte généré a un sens dans le monde réel ou s'il est du charabia. Le reconnaisseur est basé sur les architectures CRNN avec la tête récurrente supprimée pour rendre le reconnaisseur un peu plus faible et ne pas reconnaître le texte même s'il n'est pas clair. Le texte généré dans la sortie de R est comparé au texte d'entrée donné au générateur et une pénalité correspondante est ajoutée à la fonction de perte.

Les sorties générées par ScrabbleGAN sont présentées ci-dessous

Comment faire facilement la reconnaissance de l'écriture manuscrite à l'aide de l'apprentissage automatique

Ensembles de données: -

  1. IAM : - L'ensemble de données IAM contient environ 100 657 images de mots de la langue anglaise avec des mots écrits par XNUMX auteurs différents. L'ensemble de formation, de test et de validation contient des mots écrits par des auteurs mutuellement exclusifs Lien: - http://www.fki.inf.unibe.ch/databases/iam-handwriting-database
  2. CVL : - L'ensemble de données CVL se compose de sept documents manuscrits rédigés par environ 310 participants, ce qui donne environ 83 cultures de mots, divisés en ensembles de train et de test Lien: - https://cvl.tuwien.ac.at/research/cvl-databases/an-off-line-database-for-writer-retrieval-writer-identification-and-word-spotting/
  3. RIMES : - Contient des mots de la langue française d'environ 60k images et écrits par 1300 auteurs correspondant à environ 5 mails rédigés par chaque personne. http://www.a2ialab.com/doku.php?id=rimes_database:start

Métriques: -

Taux d'erreur de caractère : - Elle est calculée comme la distance de Levenshtein qui est la somme des substitutions de caractères (Sc), des insertions (Ic) et des suppressions (Dc) nécessaires pour transformer une chaîne en une autre, divisée par le nombre total de caractères dans le vérité au sol (Nc)

Comment faire facilement la reconnaissance de l'écriture manuscrite à l'aide de l'apprentissage automatique

Taux d'erreur sur les mots : - Il est calculé comme la somme des substitutions de mots (Sw), des insertions (Iw) et des suppressions (Dw) qui sont nécessaires pour transformer une chaîne en l'autre, divisée par le nombre total de mots dans la vérité fondamentale (Nw)

Comment faire facilement la reconnaissance de l'écriture manuscrite à l'aide de l'apprentissage automatique

Former votre propre modèle de reconnaissance de l'écriture manuscrite

Voyons maintenant comment nous pouvons former notre propre modèle de reconnaissance de texte manuscrit. Nous formerons sur l'ensemble de données IAM, mais vous pouvez également entraîner le modèle sur votre propre ensemble de données. Discutons des étapes impliquées dans la mise en place de cela

Données

Pour télécharger le registre de l'ensemble de données IAM à partir de ici. Une fois enregistré, téléchargez words.tgz depuis ici. Celui-ci contient un ensemble de données d'images de mots manuscrits. Téléchargez également le fichier d'annotation words.txt depuis ici.

Si vous souhaitez utiliser votre propre ensemble de données, vous devez suivre la structuration des données de l'ensemble de données IAM.

Comment faire facilement la reconnaissance de l'écriture manuscrite à l'aide de l'apprentissage automatique

Ce qui précède montre à quoi ressemble la structure du dossier du jeu de données AIM. Ici a01, a02 etc. représentent les dossiers parents ayant chacun des sous-dossiers de données. Chaque sous-dossier contient un ensemble d'images ayant le nom du dossier ajouté comme préfixe à son nom de fichier.

De plus, nous avons besoin d'un fichier d'annotation pour mentionner les chemins vers les fichiers images et les transcriptions correspondantes. Considérez par exemple l'image ci-dessus avec le texte de nomination, ci-dessous serait la représentation dans le fichier d'annotation words.txt

a01-000u-01-00 ok 156 Nomination VBG

  1. a01-000u-01-00 -> mot id pour une ligne sous la forme a01-000u
  2. ok / err -> Indicateur de qualité de sortie de segmentation
  3. 156 -> niveau de gris pour binariser la ligne contenant ce mot
  4. 395 -> boîte englobante autour de ce mot au format x, y, w, h
  5. VBG -> la balise grammaticale de ce mot. Ici c'est le Verbe Gerund
  6. nomination -> la transcription de ce mot

Architecture :-

Nous allons former une architecture basée sur le CRNN avec perte de CTC. Un CNN est utilisé pour extraire les caractéristiques visuelles qui sont passées à un RNN et une perte CTC est appliquée à la fin avec un décodeur gourmand pour obtenir la sortie.

Comment faire facilement la reconnaissance de l'écriture manuscrite à l'aide de l'apprentissage automatique

Formation

Nous utiliserons le code CRNN de ici pour former notre modèle. Suivez les étapes ci-dessous pour préparer les données

python checkDirs.py

Exécutez la commande ci-dessus et vous devriez voir une sortie comme ci-dessous

[OK] mots /
[OK] mots / a01 / a01-000u /
[OK] mots.txt
[OK] test.png
[OK] words/a01/a01-000u/a01-000u-00-00.png

Vous êtes maintenant prêt à commencer la formation.

Allez dans le répertoire racine et exécutez

python main.py --train

Résultats

Après un entraînement pendant environ 50 époques, le taux d'erreur de caractère (CER) est de 10.72% tandis que le taux d'erreur de mot (WER) est de 26.45% et donc la précision de mot est de 73.55%. Certaines des prévisions peuvent être vues dans la figure ci-dessous.

Comment faire facilement la reconnaissance de l'écriture manuscrite à l'aide de l'apprentissage automatique

Le modèle est capable de prédire les personnages avec précision dans une large mesure, mais il souffre dans quelques cas tels que terriblement est prédit comme anely, les histoires sont prédites comme des staries. Ces problèmes peuvent être résolus en utilisant un modèle de langage comme étape de post-traitement avec le décodeur qui peut générer des mots significatifs et rectifier des erreurs simples.

Résumé

Bien qu'il y ait eu des développements technologiques significatifs qui aident à une meilleure reconnaissance du texte manuscrit, HTR est loin d'être un problème résolu par rapport à l'OCR et n'est donc pas encore largement utilisé dans l'industrie. Néanmoins, avec le rythme de l'évolution de la technologie et avec l'introduction de modèles tels que les transformateurs, nous pouvons nous attendre à ce que les modèles HTR deviennent bientôt monnaie courante.

Pour en savoir plus sur ce sujet, vous pouvez commencer à partir de ici

Lectures complémentaires

Horodatage:

Plus de AI et apprentissage automatique