Automatisation de la numérisation des reçus avec l'OCR et le Deep Learning PlatoBlockchain Data Intelligence. Recherche verticale. Aï.

Automatisation de la numérisation des reçus avec OCR et Deep Learning

Automatisation de la numérisation des reçus avec OCR et Deep Learning

Vous souhaitez automatiser l’extraction des données des reçus ? Découvrez les formations pré-formées de Nanonets ROC des reçus or construit le tien OCR de reçu personnalisé. Vous pouvez aussi planifier une démo pour en savoir plus sur nos cas d'utilisation AP !


ROC des reçus ou la numérisation des reçus relève le défi de l’extraction automatique des informations d’un reçu. Dans cet article, j'aborde la théorie derrière la numérisation des reçus et je mets en œuvre un pipeline de bout en bout utilisant OpenCV et Tesseract. Je passe également en revue quelques articles importants qui traitent de la numérisation des reçus à l'aide de l'apprentissage en profondeur.

Qu'est-ce que la numérisation des reçus?

Les reçus contiennent les informations nécessaires au commerce entre les entreprises et une grande partie est sur papier ou dans des formats semi-structurés tels que des PDF et des images de papier / copies papier. Afin de gérer efficacement ces informations, les entreprises extraient et stockent les informations pertinentes contenues dans ces documents. Traditionnellement, cela a été réalisé en extrayant manuellement les informations pertinentes et en les saisissant dans une base de données qui est un processus coûteux en main-d'œuvre.

La numérisation des reçus répond au défi de l'extraction automatique des informations d'un reçu.

Extraire les informations clés des reçus et les convertir en documents structurés peut servir à de nombreuses applications et services, tels que l'archivage efficace, l'indexation rapide et l'analyse de documents. Ils jouent un rôle essentiel dans la rationalisation des processus à forte intensité de documents et de la bureautique dans de nombreux domaines financiers, comptables et fiscaux.

Automatisation de la numérisation des reçus avec OCR et Deep Learning

Besoin d'un robuste OCR de réception or scanner de reçus extraire les données des reçus ? Découvrez les nanonets API OCR des reçus!


Qui trouvera la numérisation des reçus utile?

Voici quelques domaines où la numérisation des reçus peut avoir un impact énorme:

Automatisation des comptes créditeurs et débiteurs

Le calcul manuel des comptes fournisseurs (AP) et des comptes clients (AR) est coûteux, prend du temps et peut prêter à confusion entre les gestionnaires, les clients et les fournisseurs. Avec la numérisation, les entreprises peuvent éliminer ces inconvénients et peuvent avoir plus d'avantages: transparence accrue, analyse des données, fonds de roulement amélioré et suivi plus facile.

Optimisation de la chaîne d'approvisionnement

Les chaînes d'approvisionnement sont l'épine dorsale du bon fonctionnement de nombreuses entreprises. La gestion des tâches, des flux d'informations et des flux de produits est la clé pour assurer un contrôle complet de l'approvisionnement et de la production. Cela est essentiel si les organisations doivent respecter les délais de livraison et contrôler les coûts de production.

Les entreprises qui prospèrent vraiment de nos jours ont quelque chose d'important en commun: une chaîne d'approvisionnement numérisée. 89% des entreprises avec les chaînes d'approvisionnement numériques reçoivent des commandes parfaites de fournisseurs internationaux, garantissant une livraison à temps. L'un des éléments clés de la réalisation de la chaîne d'approvisionnement numérique 4.0 de nouvelle génération est l'automatisation de la capture et de la gestion des données, et une grande partie de ces données se présente sous la forme de reçus et factures. La saisie manuelle des reçus agit comme un goulot d'étranglement dans la chaîne d'approvisionnement et entraîne des retards inutiles. Si ce traitement des reçus est numérisé, cela peut entraîner des gains substantiels en temps et en efficacité.


Vous avez un problème OCR en tête? Envie de numériser factures, PDF ou plaques d'immatriculation? Dirigez-vous vers nanonets et construisez des modèles OCR gratuitement!


Pourquoi est-ce un problème difficile?

La numérisation des reçus est difficile car les reçus présentent de nombreuses variations et sont parfois de mauvaise qualité. La numérisation des reçus introduit également plusieurs artefacts dans notre copie numérique. Ces artefacts posent de nombreux problèmes de lisibilité.

Automatisation de la numérisation des reçus avec OCR et Deep Learning

Voici une liste des quelques éléments qui rendent difficile le crack

  • Texte manuscrit
  • Petites polices
  • Images bruyantes
  • Images fanées
  • Mouvement et secousse de la caméra
  • Filigranes
  • Les rides
  • Texte décoloré

Un pipeline traditionnel de numérisation des reçus

Un pipeline typique pour ce type d'approche de bout en bout implique:

  • Prétraitement
  • Reconnaissance optique de caractères
  • Extraction de l'information
  • Dump de données
Automatisation de la numérisation des reçus avec OCR et Deep Learning

Plongeons plus profondément dans chaque partie du pipeline. La première étape du processus est le prétraitement.

Prétraitement

La plupart des reçus numérisés sont bruyants et comportent des artefacts. Par conséquent, pour que l'OCR et les systèmes d'extraction d'informations fonctionnent correctement, il est nécessaire de prétraiter les reçus. Les méthodes de prétraitement courantes incluent: la mise à l'échelle des gris, le seuil (binarisation) et la suppression du bruit.

La mise à l'échelle des gris consiste simplement à convertir une image RVB en une image en niveaux de gris.

L'élimination du bruit implique généralement la suppression du bruit de sel et de poivre ou du bruit gaussien.

La plupart des moteurs OCR fonctionnent bien sur les images en noir et blanc. Ceci peut être réalisé par seuillage, qui est l'attribution de valeurs de pixels par rapport à la valeur de seuil fournie. Chaque valeur de pixel est comparée à la valeur de seuil. Si la valeur du pixel est inférieure au seuil, elle est définie sur 0, sinon, elle est définie sur une valeur maximale (généralement 255).

OpenCV fournit diverses options de seuillage - Seuil simple, Seuil adaptatif

Automatisation de la numérisation des reçus avec OCR et Deep Learning

Reconnaissance optique de caractères

La prochaine étape du pipeline est OCR. Il est utilisé pour lire du texte à partir d'images telles qu'un document numérisé ou une image. Cette technologie est utilisée pour convertir pratiquement tous les types d'images contenant du texte écrit (dactylographié, manuscrit ou imprimé) en données texte lisibles par machine. La reconnaissance optique de caractères implique 2 étapes - détection de texte et reconnaissance de texte.

Automatisation de la numérisation des reçus avec OCR et Deep Learning

Il existe un certain nombre d'approches de l'OCR. L’approche conventionnelle de vision par ordinateur consiste à

  • Utilisation de filtres pour séparer les caractères de l'arrière-plan
  • Appliquer la détection de contour pour reconnaître les caractères filtrés
  • Utilisez la classification des mages pour identifier les personnages

L'application de filtres et d'une classification d'images est assez simple (pensez à la classification MNIST à l'aide de SVN), mais la correspondance des contours est un problème très difficile et nécessite beaucoup d'efforts manuels et n'est pas généralisable.

Viennent ensuite les approches Deep Learning. Le Deep Learning se généralise très bien. L'une des approches les plus populaires pour la détection de texte est EAST. EAST (Détecteur de texte de scène efficace et précis) est une approche simple mais puissante pour la détection de texte. Le réseau EAST est en fait une version du bien connu U-Net, qui permet de détecter des fonctionnalités de différentes tailles.

Automatisation de la numérisation des reçus avec OCR et Deep Learning

CRNN ainsi que RTC-OCR (Spatial Transformer Networks) sont d'autres papiers populaires qui effectuent l'OCR.

Extraction de l'information

L'approche la plus courante du problème de l'extraction d'informations est basée sur des règles, où les règles sont écrites après OCR pour extraire les informations requises. Il s'agit d'une approche puissante et précise, mais elle vous oblige à écrire de nouvelles règles ou modèles pour un nouveau type de document.

Plusieurs règles facture des systèmes d'analyse existent dans la littérature.

  • Intellix par DocuWare nécessite un modèle annoté avec des champs pertinents.
  • SmartFix utilise des règles de configuration spécialement conçues pour chaque modèle

Les méthodes basées sur des règles s'appuient fortement sur les règles de modèle prédéfinies pour extraire des informations de dispositions de factures spécifiques

Une approche qui est devenue très courante au cours des dernières années consiste à utiliser un cadre de détection d'objet standard comme YOLO, Faster R-CNN pour reconnaître les champs. Ainsi, au lieu de la détection de texte pur, la reconnaissance de champ et la détection de texte sont effectuées simultanément. Cela rend le pipeline plus petit (Détection de texte → Reconnaissance → Extraction vers détection → Reconnaissance). Il n'est pas nécessaire d'écrire des règles puisque les détecteurs d'objets apprennent à reconnaître ces champs.

Dump de données

Une fois vos informations extraites, le vidage des données peut être effectué comme l'exige notre cas d'utilisation. Souvent, un format JSON pour stocker les informations des champs est pratique. Ces fichiers JSON peuvent être facilement convertis en fichiers XML, feuilles Excel, fichiers CSV ou fichiers en texte clair selon qui veut travailler avec les données et comment.

Numérisation des reçus à l'aide Tesseract

Maintenant que nous avons une idée du pipeline, implémentons-le sur un exemple de reçu. C'est le reçu avec lequel nous travaillerons. Notre objectif à la fin est d'extraire le nom du restaurant, les articles achetés avec leur quantité et leur coût, la date d'achat et le total.

Automatisation de la numérisation des reçus avec OCR et Deep Learning

Prétraitement

Étant donné que notre reçu est déjà en niveaux de gris et qu'il n'y a pas beaucoup de bruit, je vais seulement effectuer un seuillage en appliquant un seuil de 210. Vous pouvez modifier la valeur pour obtenir la bonne sortie. Trop peu et vous manquerez beaucoup. Trop près de 255 rendra tout noir.

Nous devons d'abord installer OpenCV.

pip install opencv-python

Voici le code de seuillage.

import cv2
import numpy as np
from matplotlib import pyplot as plt # Read the image
img = cv2.imread('receipt.jpg',0)
# Simple thresholding
ret,thresh1 = cv2.threshold(img,210,255,cv2.THRESH_BINARY)
cv2.imshow(thresh1,’gray’)

Voici à quoi ressemble la sortie.

Automatisation de la numérisation des reçus avec OCR et Deep Learning

Détection de texte

Pour la détection de texte, j'utiliserai une bibliothèque open-source appelée Tesseract. Il s'agit de la bibliothèque OCR définitive et développée par Google depuis 2006. La dernière version de Tesseract (v4) prend en charge l'OCR basé sur l'apprentissage en profondeur qui est nettement plus précis. Le moteur OCR sous-jacent utilise lui-même un réseau de mémoire à long terme (LSTM).

Installons d'abord la dernière version de Tesseract.

Pour Ubuntu

sudo apt install tesseract-ocr

Pour MacOS

brew install tesseract --HEAD

Pour Windows, vous pouvez télécharger les binaires à partir de ce page

Vérifiez votre version de tesseract.

tesseract -v

Production -

tesseract 4.0.0-beta.3
leptonica-1.76.0
libjpeg 9c : libpng 1.6.34 : libtiff 4.0.9 : zlib 1.2.11
Found AVX512BW
Found AVX512F
Found AVX2
Found AVX
Found SSE

Installez vos liaisons Tesseract + Python

Maintenant que le binaire Tesseract est installé, nous devons maintenant installer les liaisons Tesseract + Python pour que nos scripts Python puissent communiquer avec Tesseract. Nous devons également installer le pack de langue allemande car le reçu est en allemand.

pip install pytesseract
sudo apt-get install tesseract-ocr-deu

Maintenant que nous avons installé Tesseract, commençons à détecter les zones de texte.Tesseract a une fonctionnalité intégrée pour détecter les zones de texte.

import pytesseract
from pytesseract import Output
import cv2 img = cv2.imread('receipt.jpg')
d = pytesseract.image_to_data(img, output_type=Output.DICT)
n_boxes = len(d['level'])
for i in range(n_boxes): (x, y, w, h) = (d['left'][i], d['top'][i], d['width'][i], d['height'][i]) img = cv2.rectangle(img, (x, y), (x + w, y + h), (0, 0, 255), 2) cv2.imshow(img,'img')

Voici la sortie du code de détection de texte.

Automatisation de la numérisation des reçus avec OCR et Deep Learning

Reconnaissance de texte

Nous allons Tesseract pour effectuer l'OCR. Tesseract 4 utilise une approche d'apprentissage en profondeur qui fonctionne nettement mieux que la plupart des autres implémentations open source.

Voici le code de reconnaissance de texte. Bien qu'il s'agisse d'une doublure très simple, il y a beaucoup de choses sous le capot.

extracted_text = pytesseract.image_to_string(img, lang = 'deu')

Voici la sortie brute.

'BerghotelnGrosse Scheideggn3818 GrindelwaldnFamilie R.MüllernnRech.Nr. 4572 30.07.2007/13:29: 17nBar Tisch 7/01n2xLatte Macchiato &ä 4.50 CHF 9,00n1xGloki a 5.00 CH 5.00n1xSchweinschnitzel ä 22.00 CHF 22.00nIxChässpätz 1 a 18.50 CHF 18.50nnTotal: CHF 54.50nnIncl. 7.6% MwSt 54.50 CHF: 3.85nnEntspricht in Euro 36.33 EURnEs bediente Sie: UrsulannMwSt Nr. : 430 234nTel.: 033 853 67 16nFax.: 033 853 67 19nE-mail: grossescheidegs@b luewin. ch'

Voici la sortie formatée

Berghotel
Grosse Scheidegg
3818 Grindelwald
Familie R.Müller Rech.Nr. 4572 30.07.2007/13:29: 17
Bar Tisch 7/01
2xLatte Macchiato &ä 4.50 CHF 9,00
1xGloki a 5.00 CH 5.00
1xSchweinschnitzel ä 22.00 CHF 22.00
IxChässpätz 1 a 18.50 CHF 18.50 Total: CHF 54.50 Incl. 7.6% MwSt 54.50 CHF: 3.85 Entspricht in Euro 36.33 EUR
Es bediente Sie: Ursula MwSt Nr. : 430 234
Tel.: 033 853 67 16
Fax.: 033 853 67 19
E-mail: grossescheidegs@b luewin. ch

Besoin de numériser des documents, des reçus ou factures mais trop paresseux pour coder? Dirigez-vous vers nanonets et construisez des modèles OCR gratuitement!


Extraction de l'information

Comme je l'ai mentionné précédemment, la façon la plus courante d'extraire des informations est par une approche basée sur des règles.

Tous les reçus de cet hôtel suivront une structure fixe et les informations apparaîtront sur différentes lignes. Cela se reflète dans la sortie OCR où les retours à la ligne sont représentés par «n». En les utilisant, écrivons un ensemble de règles pour extraire des informations. Cet ensemble de règles peut être appliqué à tout reçu de cet hôtel car il suivra le même format.

Automatisation de la numérisation des reçus avec OCR et Deep Learning

Je vais extraire le nom du restaurant, la date de la transaction, les articles achetés, leur quantité, le coût total par article et le montant total à l'aide de simples commandes python et d'expressions régulières.

Ceci est un dictionnaire où je vais stocker les informations extraites.

receipt _ocr = {}

La première étape consiste à extraire le nom du restaurant. L'emplacement du nom du restaurant sera constant dans tous les reçus et cela se trouve dans les 2 premières lignes. Utilisons ceci pour créer une règle.

splits = extracted_text.splitlines()
restaurant_name = splits[0] + '' + splits[1]

Ensuite, nous extrayons la date de la transaction. La date regex est assez simple.


import re
# regex for date. The pattern in the receipt is in 30.07.2007 in DD:MM:YYYY date_pattern = r'(0[1-9]|[12][0-9]|3[01])[.](0[1-9]|1[012])[.](19|20)dd'
date = re.search(date_pattern, extracted_text).group()
receipt_ocr['date'] = date
print(date)

Production -

‘30.10.2007’

Ensuite, nous extrayons toutes les informations relatives aux articles et au coût.

Les articles contiennent un CHF qui est le franc suisse. Détectons toutes les occurrences de CHF. On peut désormais détecter les lignes en reconnaissant les caractères compris entre 2 n et contenant un CHF. Je détecte le total ici également.

# get lines with chf
lines_with_chf = []
for line in splits: if re.search(r'CHF',line): lines_with_chf.append(line) print(lines_with_chf)

Production -

2xLatte Macchiato &ä 4.50 CHF 9,00
1xSchweinschnitzel ä 22.00 CHF 22.00
IxChässpätz 1 a 18.50 CHF 18.50
Total: CHF 54.50
Incl. 7.6% MwSt 54.50 CHF: 3.85

Si vous remarquez, Tesseract a raté un élément car il a détecté CH au lieu de CHF. Je couvrirai les défis des systèmes OCR traditionnels dans la section suivante.

# get items, total, ignore Incl
items = []
for line in lines_with_chf: print(line) if re.search(r'Incl',line): continue if re.search(r'Total', line): total = line else: items.append(line) # Get Name, quantity and cost all_items = {}
for item in items: details = item.split() quantity_name = details[0] quantity = quantity_name.split('x')[0] name = quantity_name.split('x')[1] cost = details[-1] all_items[name] = {'quantity':quantity, 'cost':cost} total = total.split('CHF')[-1] # Store the results in the dict
receipt_ocr['items'] = all_items
receipt_ocr[‘total’] = total import json receipt_json = json.dumps(receipt_ocr)
print(receipt_json)

Impression de notre sortie JSON -

{'date': '30.07.2007', 'items': {'Chässpätz': {'cost': '18.50', 'quantity': 'I'}, 'Latte': {'cost': '9,00', 'quantity': '2'}, 'Schweinschnitzel': {'cost': '22.00', 'quantity': '1'}}, 'total': ' 54.50'}

Toutes les informations clés ont été extraites et transférées dans ticket_json.

Problèmes avec l'approche conventionnelle

Bien que nous ayons extrait les informations, le pipeline ci-dessus manque quelques éléments et est sous-optimal. Pour chaque nouveau reçu, nous devons écrire un nouvel ensemble de règles et n'est donc pas évolutif.

Il pourrait y avoir beaucoup de variations dans les mises en page, la police et la taille des polices, les documents manuscrits, etc. Les différences de disposition affecteront les approches basées sur des règles et celles-ci doivent être prises en compte, ce qui devient très fastidieux. Les différences de police et de taille de police rendent difficile la reconnaissance et l'extraction d'informations.

Pourquoi un pipeline de Deep Learning de bout en bout est-il meilleur?

L'un des plus gros problèmes de l'approche standard est le manque de généralisation. Les approches basées sur des règles ne peuvent pas généraliser et de nouvelles règles doivent être écrites pour tout nouveau modèle. De même, tout changement ou variation dans un modèle existant doit également être pris en compte.

Une approche Deep Learning pourra apprendre ces règles et pourra facilement se généraliser sur différentes mises en page, à condition que nous les ayons dans notre jeu de données de formation.

Apprentissage profond et extraction d'informations

Ici, je passe en revue quelques articles qui utilisent des approches de Deep Learning de bout en bout.

LA MIGNONNE

CUTIE: Apprendre à comprendre des documents avec l'extracteur d'informations textuelles universel convolutionnel

Ce document propose une méthode d'extraction d'informations clés basée sur l'apprentissage avec un besoin limité de ressources humaines. Il combine les informations du sens sémantique et de la distribution spatiale des textes dans les documents. Leur modèle proposé, Convolutional Universal Text Information Extractor (CUTIE), applique des réseaux de neurones convolutionnels sur des textes maillés où les textes sont intégrés en tant que caractéristiques à connotation sémantique.

Automatisation de la numérisation des reçus avec OCR et Deep Learning

Le modèle proposé, s'attaque au problème d'extraction des informations clés en

  • Créer d'abord des textes quadrillés avec la proposition méthode de mappage positionnel de la grille. Pour générer les données de grille pour le réseau neuronal convolutif, l'image du document numérisé est traitée par un moteur OCR pour acquérir les textes et leurs positions absolues / relatives. Les textes sont mappés de l'image du document numérisé d'origine à la grille cible, de sorte que la grille mappée préserve la relation spatiale d'origine entre les textes encore plus appropriée pour être utilisée comme entrée pour le réseau neuronal convolutif.
  • Ensuite, le modèle CUTIE est appliqué sur les textes maillés. Les riches informations sémantiques sont encodées à partir des textes maillés au tout début du réseau neuronal convolutif avec une couche d'intégration de mots.

Le CUTIE permet d'examiner simultanément les informations sémantiques et spatiales des textes dans l'image du document numérisé et peut atteindre un nouveau résultat de pointe pour l'extraction des informations clés.

Modèle CUTIE

Ils ont 2 modèles CUTIE-A et CUTIE-B. le CUTIE-A proposé est un réseau de neurones convolutifs de grande capacité qui fusionne des fonctionnalités multi-résolution sans perdre les fonctionnalités haute résolution. CUTIE-B est un réseau convolutionnel avec une convolution atreuse pour élargir le champ de vision et un module de regroupement de pyramides spatiales atreuses (ASPP) pour capturer des contextes multi-échelles. CUTIE-A et CUITE-B conduisent un processus de codage de sens sémantique avec une couche d'intégration de mots au tout début.

La tâche de CUTIE ressemble à la tâche de segmentation sémantique. La grille mappée contient des points de données dispersés (jetons de texte) contrairement aux images réparties avec des pixels. Les textes clés mappés en position de la grille sont proches ou éloignés les uns des autres en raison de différents types de mise en page des documents. Par conséquent, l'intégration d'une capacité de traitement de contexte à plusieurs échelles profite au réseau.

Ensemble de données

La méthode proposée est évaluée sur le défi de lecture robuste ICDAR 2019 sur l'ensemble de données SROIE et est également sur un ensemble de données auto-construit avec 3 types d'images de documents numérisés.

La Ensemble de données ICDAR 2019 SROIE est utilisé et contient 1000 images de reçus numérisées entières. Chaque image de reçu contient environ quatre champs de texte clés, tels que le nom des marchandises, le prix unitaire, la date et le coût total. Le texte annoté dans l'ensemble de données se compose principalement de chiffres et de caractères anglais.

L'ensemble de données auto-construit contient 4 484 documents de reçus espagnols numérisés annotés, y compris les reçus de taxi, les reçus de repas (ME) et les reçus d'hôtel, avec 9 classes d'informations clés différentes.

Résultats

La performance globale est évaluée en utilisant une précision moyenne (AP - et mesurée en termes de précision par classe dans les 9 classes,.) Et une précision moyenne douce (softAP) où la prédiction d'une classe d'informations clé est déterminée comme correcte si des vérités terrain positives sont correctement prédits même si certains faux positifs sont inclus dans la prédiction finale. L'analyse conjointe d'AP et de softAP permet de mieux comprendre les performances du modèle.

Vous pouvez voir les résultats dans le tableau ci-dessous.

Automatisation de la numérisation des reçus avec OCR et Deep Learning

GCN pour VRD

Convolution graphique pour l'extraction d'informations multimodales à partir de documents visuellement riches

Cet article présente un modèle basé sur la convolution graphique pour combiner les informations textuelles et visuelles présentées dans les documents visuellement riches (VRD). Les incorporations de graphiques sont formées pour résumer le contexte d'un segment de texte dans le document, puis combinées avec des incorporations de texte pour l'extraction d'entités.

Dans cet article, ils appellent un document un VRD et je m'en tiendrai à cela.

Chaque document est modélisé sous forme de graphique de segments de texte, où chaque segment de texte est composé de la position du segment et du texte qu'il contient. Le graphique est composé de nœuds qui représentent des segments de texte et d'arêtes qui représentent des dépendances visuelles, telles que les formes relatives et la distance, entre deux nœuds.

Automatisation de la numérisation des reçus avec OCR et Deep Learning

Les incorporations de graphiques produites par convolution de graphiques résument le contexte d'un segment de texte dans le document, qui sont ensuite combinées avec des incorporations de texte pour l'extraction d'entités à l'aide d'un modèle BiLSTM-CRF standard.

Modèle

Le modèle code d'abord chaque segment de texte dans le document en intégration graphique, en utilisant plusieurs couches de convolution graphique. L'incorporation représente les informations dans le segment de texte étant donné son contexte visuel et textuel. Le contexte visuel est la disposition du document et les positions relatives du segment individuel par rapport aux autres segments. Le contexte textuel est l'ensemble des informations textuelles dans le document dans son ensemble; Le modèle apprend à attribuer des poids plus élevés aux textes des segments voisins. Ensuite, le papier combine les incorporations de graphiques avec des incorporations de texte et applique un modèle BiLSTM-CRF standard pour l'extraction d'entités.

Automatisation de la numérisation des reçus avec OCR et Deep Learning

Ensemble de données

Deux jeux de données du monde réel sont utilisés. Il s'agit des factures fiscales à valeur ajoutée (VATI) et des reçus d'achat internationaux (IPR). VATI se compose de 3000 photos téléchargées par l'utilisateur et possède 16 entités exactes. Les exemples d'entités sont les noms de l'acheteur / vendeur, la date et le montant de la taxe. Les factures sont en chinois et son modèle est fixe car il s'agit d'une facture standard nationale.

IPR est un ensemble de données de 1500 documents de réception numérisés en anglais qui a 4 entités à préciser (numéro de facture, nom du fournisseur, nom du payeur et montant total). Il existe 146 modèles de reçus.

Résultats

Le score F1 est utilisé pour évaluer les performances du modèle dans toutes les expériences. Le tableau ci-dessous présente les résultats de trois ensembles de données.

Automatisation de la numérisation des reçus avec OCR et Deep Learning

La référence I applique BiLSTM-CRF à chaque segment de texte, où chaque segment de texte est une phrase individuelle.

Baseline II applique le modèle de balisage aux segments de texte concaténés.

Plus rapide-RCNN + AED

Approche d'apprentissage en profondeur pour la reconnaissance des reçus

Cet article présente une approche d'apprentissage en profondeur pour reconnaître les reçus numérisés. Le système de reconnaissance comprend deux modules principaux: la détection de texte basée sur Connectionist Text Proposition Network et la reconnaissance de texte basée sur Attention-based Encoder-Decoder. Le système a atteint 71.9% du score F1 pour la tâche de détection et de reconnaissance.

Détection de texte

La structure CTPN est similaire à Faster R-CNN, avec l'ajout de la couche LSTM. Le modèle de réseau se compose principalement de trois parties: extraction d'entités par VGG16, LSTM bidirectionnel et régression de boîte englobante

Automatisation de la numérisation des reçus avec OCR et Deep Learning

Reconnaissance de texte

Le DAE est utilisé pour reconnaître les lignes de texte. Le DAE a deux modules principaux: DenseNet pour extraire des fonctionnalités d'une image texte et un LSTM combiné avec un modèle d'attention pour prédire le texte de sortie.

Automatisation de la numérisation des reçus avec OCR et Deep Learning

Ensemble de données

L'ensemble de données de SROIE 2019 est utilisé. Ils ont divisé les données de formation en formation, validation et tests et sélectionné au hasard 80% des reçus pour la formation, 10% des reçus pour la validation et le reste pour les tests. Résultat: 500 reçus pour la formation, 63 reçus pour la validation et 63 pour les tests.

Résultats

Pour la détection de texte, le papier utilise l'intersection-sur-union sensible à l'étanchéité (TIoU). Pour la reconnaissance de texte, le papier utilise F1, la précision et le rappel.

Automatisation de la numérisation des reçus avec OCR et Deep Learning

Le tableau I montre le résultat du CTPN avec trois conditions: CTPN sur les images originales; prétraitement + CTPN, prétraitement + CTPN + vérification OCR. Le tableau 2 montre les résultats du réseau AED.

Automatisation de la numérisation des reçus avec OCR et Deep Learning

Il existe bien sûr un moyen plus simple et plus intuitif de procéder.


Besoin d'un robuste OCR de réception extraire les données des reçus ? Découvrez les nanonets API OCR des reçus!


OCR avec Nanonets

Mise à jour n°1 : Nous venons de publier notre OCR de réception modèle pré-entraîné. Rendez-vous sur https://app.nanonets.com et commencez à tester !

Automatisation de la numérisation des reçus avec OCR et Deep Learning

La API OCR Nanonets vous permet de créer facilement des modèles OCR. Vous n'avez pas à vous soucier du prétraitement de vos images ni à vous soucier de la correspondance des modèles ou de créer des moteurs basés sur des règles pour augmenter la précision de votre modèle OCR.

Vous pouvez télécharger vos données, les annoter, configurer le modèle pour qu'il s'entraîne et attendre d'obtenir des prédictions via une interface utilisateur basée sur un navigateur sans écrire une seule ligne de code, sans vous soucier des GPU ou trouver les bonnes architectures pour vos modèles d'apprentissage en profondeur. Vous pouvez également acquérir les réponses JSON de chaque prédiction pour l'intégrer à vos propres systèmes et créer des applications basées sur l'apprentissage automatique basées sur des algorithmes de pointe et une infrastructure solide.

Utilisation de l'interface graphique: https://app.nanonets.com/

Vous pouvez également utiliser l'API Nanonets-OCR en suivant les étapes ci-dessous:

Étape 1: cloner le référentiel, installer les dépendances

git clone https://github.com/NanoNets/nanonets-ocr-sample-python.git
cd nanonets-ocr-sample-python
sudo pip install requests tqdm

Étape 2: Obtenez votre clé API gratuite
Obtenez votre clé API gratuite sur http://app.nanonets.com/#/keys

Automatisation de la numérisation des reçus avec OCR et Deep Learning

Étape 3: définir la clé API comme variable d'environnement

export NANONETS_API_KEY=YOUR_API_KEY_GOES_HERE

Étape 4: créer un nouveau modèle

python ./code/create-model.py

Remarque: Cela génère un MODEL_ID dont vous avez besoin pour l'étape suivante

Étape 5: ajouter l'ID de modèle en tant que variable d'environnement

export NANONETS_MODEL_ID=YOUR_MODEL_ID

Remarque: vous obtiendrez YOUR_MODEL_ID de l'étape précédente

Étape 6: télécharger les données de formation
Les données de formation se trouvent dans images (fichiers image) et annotations (annotations pour les fichiers image)

python ./code/upload-training.py

Étape 7: modèle de train
Une fois les images téléchargées, commencez à former le modèle

python ./code/train-model.py

Étape 8: obtenir l'état du modèle
Le modèle prend environ 2 heures pour s'entraîner. Vous recevrez un e-mail une fois le modèle formé. En attendant, vous vérifiez l'état du modèle

python ./code/model-state.py

Étape 9: Faire une prédiction
Une fois le modèle formé. Vous pouvez faire des prédictions en utilisant le modèle

python ./code/prediction.py ./images/151.jpg

Lectures complémentaires

Mettre à jour:
‌ Ajout de plus de matériel de lecture sur les dernières avancées en matière d'automatisation de la numérisation des reçus à l'aide de l'OCR et du Deep Learning.

Horodatage:

Plus de AI et apprentissage automatique