Extraction de line items sur factures avec l'OCR

Emmanuelle Thomas

Emmanuelle Thomas

Une facture est un document essentiel pour toute entreprise en raison des informations qu'elle contient et du flux de travail qu'elle déclenche. C'est pourquoi l'OCR des factures (Reconnaissance optique de caractères) les technologies sont essentielles pour traiter efficacement les factures.

Les factures sont essentielles aux opérations commerciales :

  • Une facture résume les dépenses d'une entreprise. Il doit être correctement suivi pour évaluer les dépenses et les flux de trésorerie des entreprises. C'est le domaine de Comptabilité.
  • Les transactions entre entreprises reposent sur le paiement d'une facture pour les services ou les biens livrés. C'est le domaine de Comptes payables.
  • Les relations commerciales reposent également sur les factures : ce qui est facturé doit correspondre à ce qui a été commandé. C'est le domaine de Approvisionnement.

En matière de traitement des factures, la première étape consiste à accéder aux informations qu'elles contiennent grâce aux technologies d'OCR des factures. Chaque cas d'utilisation utilise différentes informations sur un document de facture :

  • Par exemple, un SaaS de gestion des comptes fournisseurs nécessitera la lecture du montant total champ car il est obligatoire pour effectuer un paiement à un fournisseur.
  • D'autre part, un SaaS d'approvisionnement se concentre sur la mise en correspondance de divers documents au sein du Correspondance à 3 voies processus. UNE Bon de commande (PO) est associé à un Bon de livraison et un Facture pour vous assurer que les marchandises commandées, livrées et facturées sont identiques. Pour ce cas d'utilisation, il est essentiel de disposer de détails sur le contenu de la facture. Cela nécessite une compréhension de chaque élément de la facture.

Pour couvrir ces différents cas d'utilisation, les technologies d'OCR des factures devraient permettre d'extraire des informations clés pour les champs génériques (numéro de facture, montant total, informations sur les fournisseurs, etc.) et également à partir d'informations au niveau du tableau appelées rubriques. Être capable de déchiffrer le contenu d'un tableau sur une facture pour comprendre les attributs de chaque article (tels que le prix, la quantité, la description, etc.) est un défi que nous aborderons dans cet article.

Nous commencerons par quelques définitions concernant l'OCR, les rubriques et les raisons pour lesquelles l'extraction de rubriques d'une facture à l'aide de l'OCR est stratégique pour les entreprises. Ensuite, nous nous concentrerons sur le problème : pourquoi il s'agit d'un problème complexe à résoudre et comment Mindee nous l'avons résolu à l'aide du Deep Learning.

L'un des avantages de Mindee est son extraction d'informations clés. Voici un article pour en savoir plus sur gestion de l'information.

Qu'est-ce que l'OCR des factures

Tout d'abord, clarifions la différence entre l'OCR et l'OCR des factures.

L'OCR fait référence au processus de détection et d'extraction de mots d'une image. Il est générique, c'est-à-dire qu'il ne dépend pas du contexte, il peut s'agir de n'importe quel type d'image ou de document.

Si vous êtes curieux d'en savoir plus sur Technologie OCR, jetez un œil à notre article.

Au contraire, l'OCR des factures fait référence à la détection et à l'extraction d'informations clés dans un document spécifique : une facture. Cela dépend du contexte.

Concentrons-nous maintenant sur l'extraction des informations clés. Qu'est-ce que cela signifie ?

Supposons que vous développiez un logiciel pour l'automatisation des comptes fournisseurs. Les informations clés que vous souhaitez extraire sont probablement les montant total. L'accès automatique à ces données grâce à une API d'OCR des factures permettra à vos utilisateurs de gagner du temps : ils n'auront pas à saisir manuellement le montant de la facture. Cela permet d'éliminer à la fois les frottements et les erreurs manuelles.

Invoice OCR: from Invoice PDF or image to machine-readable data
D'une facture (PDF ou image) à des données lisibles par machine

À Mindee, l'API OCR des factures que nous avons développée prend en charge un liste complète de domaines qui peut prendre en charge un large éventail de cas d'utilisation, de la comptabilité à l'approvisionnement et bien d'autres encore.

En regardant la mise en page de la facture ci-dessous, vous remarquerez qu'en dehors des champs génériques Numéro de facture, Nom du fournisseur, Montant total, [...], il y a un élément spécifique et central : le tableau.

Invoice OCR: table extraction example
Exemple de tableau dans une facture

L'extraction de tableaux ou d'éléments de ligne est essentielle dans de nombreux cas d'utilisation. Voyons pourquoi. Mais avant cela, vous pouvez vérifier comment créer un PDF surdimensionné!

Qu'est-ce qu'un poste sur une facture ?

Un poste fait référence à une ligne d'une facture qui décrit des biens ou des services qui ont été achetés. Il identifie les biens ou services à l'aide d'informations telles que la description, la quantité ou le prix.

Extracting line items with Invoice OCR API
Définition des rubriques sur une facture

Prenons un exemple.

Vous avez commandé 5 ordinateurs auprès de votre revendeur d'appareils électroniques grand public préféré. Un bon de commande a été émis indiquant que vous avez commandé 5 ordinateurs à 1 500$ chacun. Le revendeur est en rupture de stock et n'a pas pu livrer la totalité de la commande. Au lieu de cela, vous avez reçu 3 ordinateurs dans un premier lot de livraison. Le bon de livraison contient ces informations.

Procurement three-way matching: Purchase order, Delivery note and Invoice matching using OCR
Mise en correspondance tripartite en matière d'achats

Lors de la réception de la facture, vous devez vous assurer que vous avez été facturé pour 3 ordinateurs, et non pour 5. C'est en cela que consiste le processus d'appariement en trois étapes en matière d'approvisionnement : faire correspondre les articles d'une facture avec les articles qui ont été commandés et livrés, à des fins de vérification, de rapprochement et de validation.

En tant qu'utilisateur, je ne souhaite pas saisir manuellement chaque article d'une facture afin qu'il puisse être mis en correspondance avec le contenu du bon de commande ou du bon de livraison. Ce processus est trop fastidieux, prend trop de temps et est sujet aux erreurs. Si le logiciel d'approvisionnement que j'utilise peut scanner la facture et lire les informations pour chaque article que j'ai juste besoin de valider, alors je suis un utilisateur satisfait 🙂.

Prenons un autre exemple, dans le domaine de la comptabilité cette fois. Le processus de comptabilité consiste à inscrire les dépenses dans le livre correspondant en fonction de leur nature. Pour ce faire, le comptable qui reçoit une facture doit scanner chaque ligne de la facture et attribuer chaque article au livre concerné. L'extraction automatique du contenu des lignes d'une facture simplifie le travail du comptable au sein de son logiciel de comptabilité.

Si vous examinez une grande variété de factures, vous remarquerez qu'en ce qui concerne les rubriques ou les tableaux, il existe un ensemble de champs communs qui sont standard pour la plupart des modèles de factures.

Pour choisir les champs à extraire, notre approche consiste à comprendre quelles informations sont pertinentes pour chaque cas d'utilisation.

Par exemple, pour le cas d'utilisation des achats, l'objectif est de faire correspondre un article d'une facture à une commande pré-approuvée. Nous devons donc répondre aux questions suivantes :

Comment identifier un objet ?

  • Le code ou la description du produit fournit des informations sur l'article lui-même.

L'article facturé correspond-il à ce qui a été commandé ?

  • La quantité, le prix unitaire et/ou le prix total, le taux d'actualisation/le montant de la remise vous aideront à faire le calcul et à identifier les écarts.

Pour la comptabilité, les informations fiscales sont importantes pour le recouvrement des impôts. Nous avons donc dû extraire des informations pour pouvoir répondre à la question suivante :

Quelle est la taxe appliquée à l'article ?

  • Taux d'imposition et/ou montant de taxe

Après avoir répondu à ces questions clés et grâce à une compréhension approfondie des cas d'utilisation sous-jacents, nous avons décidé de prendre en charge les champs suivants dans la réponse à l'API Invoice OCR :

  • Code produit
  • Descriptif
  • Quantité
  • Prix unitaire
  • Unité de mesure
  • Montant total
  • Taux d'imposition
  • Montant de la taxe
  • Taux d'escompte
  • Montant de la remise

Comprendre le problème de l'extraction des rubriques commence par l'analyse d'une quantité importante de documents.

Jetons un coup d'œil à quelques exemples :

  • Il existe, d'une part, des mises en page simples : le tableau est structuré, il y a des lignes et des en-têtes pour toutes les colonnes.
simple table to extract with invoice OCR
Configuration de table simple à extraire

Malheureusement, il existe également une grande variété de configurations dans lesquelles le tableau est plus difficile à lire, même à l'œil nu.

Complex table extraction using OCR technologies
Exemple de tableaux plus complexes à extraire
  • Dans l'exemple 1, la description tient sur 2 lignes, mais il y a une démarcation entre les deux qui fait une séparation.
  • Parfois, les colonnes sont fusionnées sur certaines lignes. Le manque de cohérence dans un tableau est difficile à lire, comme indiqué dans l'exemple 2.
  • Un tableau sans en-tête, comme dans l'exemple 3, nécessitera des efforts supplémentaires pour comprendre le contenu de chaque rubrique.
  • Par exemple 4, on peut se demander ce qu'est une ligne, quel est le contenu pertinent à extraire.
  • En ce qui concerne le traitement des factures, les documents sont parfois numérisés, comme dans l'exemple 5. La déformation de l'image peut rendre plus difficile la lecture d'une ligne qui, du point de vue géométrique, ne ressemble plus à une ligne droite.

Comme nous l'avons vu dans les exemples ci-dessus, il est difficile d'extraire les informations d'une table en raison de la diversité des configurations de tables. Pour résoudre ce problème complexe, nous avons mis en œuvre des approches complémentaires. Il repose sur une combinaison de vision par ordinateur, d'heuristique géométrique et de règles spécifiques à l'entreprise. L'illustration ci-dessous représente les différentes étapes du traitement d'une facture et de l'extraction des champs pertinents d'une rubrique.

Pipeline de data science pour extraire les rubriques des factures

Nous allons approfondir chaque partie de ce pipeline, mais voyons d'abord quelle est la définition d'un tableau.

Invoice OCR table extraction: table definition

Extraction d'un tableau : définition d'un tableau

Un tableau contient :

  • en-têtes : c'est le titre de la colonne, il définit son contenu (⚠ certains tableaux n'ont pas d'en-têtes)
  • cellules
  • colonnes
  • lignes

Chaque élément du tableau est essentiel à chaque étape de notre pipeline :

  • Étape 1: le modèle de segmentation du deep learning détectera les cases qui peuvent être soit cellules ou en-têtes. Ils sont appelés candidats.
  • Étape 2: les modèles OCR extraient tous les mots du document et leurs coordonnées (cadres de délimitation).
  • Étape 3: Un algorithme de reconstruction de table utilisant la programmation dynamique aidera à reconstruire lignes et colonnes.
  • Étape 4: Les post-traitements des règles de gestion aideront à sélectionner les résultats pertinents.

Étape 1 : Modèle de segmentation Deep Learning pour la détection des tableaux dans les factures

Notre modèle de segmentation a été entraîné avec plusieurs classes pour chaque catégorie que nous avons définie comme résultats potentiels (code du produit, description, prix unitaire, etc.). Il apprend à détecter les cellules pour chaque catégorie ainsi que pour les en-têtes de colonne.

Deep learning segmentation output for Invoice OCR
Exemple de sortie de segmentation

Nous avons analysé les résultats de nos modèles de segmentation et avons identifié différents types d'erreurs récurrentes que nous devions corriger afin d'améliorer les performances de bout en bout.

Table detection using Deep Learning: segmentation errors
Analyse des erreurs de segmentation

Comme illustré dans l'image ci-dessus, les erreurs peuvent être de 4 types différents :

  1. Candidats absents: le modèle de segmentation n'a pas détecté certaines cellules du tableau.
  2. Colonnes fractionnées: les colonnes individuelles sont détectées comme des colonnes multiples.
  3. Candidats superposés: par exemple 2 description les cellules de 2 lignées différentes sont détectées comme une seule longue description cellule.
  4. Erreurs de classification par catégorie: certaines cases sont détectées dans la mauvaise catégorie. Exemple : a description la boîte est détectée comme prix unitaire boîte.

Le fait de pouvoir reconstruire le tableau, c'est-à-dire d'attribuer des cellules à une grille de colonnes et de lignes, aiderait à résoudre tous ces problèmes. L'approche adoptée pour la reconstruction des tables sera décrite plus en détail à l'étape 3. Une autre entrée est requise pour l'algorithme de reconstruction : avoir accès au contenu du document, aux mots et à leurs coordonnées.

N'oubliez pas d'utiliser notre outil de référence gratuit pour la précision!

Étape 2 : Reconnaissance de texte

L'algorithme de reconnaissance de texte sera utilisé :

  • pour alimenter l'algorithme de reconstruction de la table. L'utilisation du contenu et des coordonnées des cases candidates aidera à définir les limites des lignes et des colonnes.
  • pour lire les mots et alimenter la sortie finale de la réponse de l'API, comme décrit dans l'exemple ci-dessous.
Invoice OCR text recognition
Reconnaissance de texte pour les rubriques de facturation

Pour améliorer les performances de bout en bout, nous utilisons une combinaison de modèles d'OCR génériques et spécialisés. Par exemple, nous avons formé un OCR spécialisé pour les montants, un pour les dates, etc.

Notre API d'OCR des factures fonctionne actuellement sur les documents dactylographiés, mais nous prévoyons de prendre en charge les documents manuscrits à l'aide d'une OCR manuscrite dédiée. Nous avons déjà mis cette technologie à disposition sur notre API OCR de reçus pour soutenir les champs écrits à la main tels que les pourboires et les montants écrits.

Étape 3 : Reconstruction de la table

La prochaine étape du pipeline est la reconstruction de la table qui utilisera les résultats du modèle de segmentation et des modèles de reconnaissance de texte.

La reconstruction d'un tableau consiste à créer une grille de cellules avec des colonnes et des lignes. L'algorithme définit les limites de chaque colonne et de chaque ligne. La reconstruction d'un tableau à partir de ses lignes et de ses colonnes est un problème récursif. Afin de limiter la complexité, nous avons décidé d'utiliser programmation dynamique, un algorithme de programmation informatique standard dédié à réduire la complexité de la récursivité.

Reconstruction de tables à l'aide de l'apprentissage en profondeur et de l'OCR pour créer une grille

Pour chaque ligne, nous examinons les candidats de segmentation et les candidats d'OCR et nous utilisons des règles pour déterminer les limites des colonnes et des lignes.

Il existe quelques règles de base :

  • 1 colonne = 1 classe, et une seule. Il ne peut y avoir de description cellule dans une colonne classée comme prix unitaire.
  • Une cellule ne peut appartenir qu'à une seule colonne.
  • UNE description peut se trouver sur plusieurs lignes au sein d'une cellule.
  • Un prix (prix unitaire ou montant total) ne peut figurer que sur une seule ligne au sein d'une cellule.
  • [...]

L'utilisation de cette grille permettra de résoudre les 4 problèmes identifiés après la segmentation. Allons y jeter un coup d'œil.

Trouver les candidats manquants

Parfois, le modèle de segmentation n'a détecté aucun candidat dans une ligne. Cela laisse une case vide dans notre tableau.

Finding missing candidates in table reconstruction for Invices using deep learning
Comment la reconstruction des tables permet de retrouver les candidats manquants

Le mappage de la sortie du modèle OCR dans la grille permet de déterminer s'il existe un contenu réellement pertinent dans une cellule laissée vide par le modèle de segmentation. Si tel est le cas, le vide peut être comblé et la ligne reconstruite correctement.

Fusion de colonnes fractionnées

Si le modèle de segmentation divise une colonne en 2 sur une ligne et pas sur l'autre (comme dans l'exemple ci-dessous), il faut vérifier s'il y a bien 1 ou 2 colonnes pour cette zone du document. Pour prendre cette décision, la grille est utilisée pour évaluer ce qu'est une colonne.

how table reconstruction helps create relevant outputs
Corriger les colonnes fusionnées à partir de la segmentation

Séparer les lignes lorsque les candidats se chevauchent

Disons que le modèle de segmentation a fusionné 2 lignes de description ensemble. Il n'y aurait qu'un seul candidat pour ces 2 lignes. Maintenant, si nous examinons la sortie OCR générique, nous pouvons constater qu'il y a 2 candidats, 1 pour chaque ligne de description. En mappant les candidats à la segmentation avec la grille, nous pouvons diviser le candidat à la segmentation unique en 2 candidats. Les 2 description les lignes peuvent ensuite être reconstruites correctement.

Comment la reconstruction des tables permet de reconstruire efficacement les éléments de la gamme

Corriger les erreurs de classification des catégories

Une colonne ne peut appartenir qu'à une seule classe. En fait, dans un description colonne, il ne peut y avoir que description champs. Il ne peut y avoir prix unitaire. Comment savoir quelle est la catégorie pertinente lorsque plusieurs catégories sont affichées dans une seule colonne ? Tout d'abord, nous comptons le nombre d'occurrences pour chaque catégorie dans la colonne. Celui qui est le plus affiché est probablement le plus pertinent. Nous vérifions en utilisant le type d'élément grâce à l'OCR et aux résultats de l'analyse : si le type de cellule est montant et la catégorie identifiée est prix unitaire puis le choix est validé.

Corriger les erreurs de classification dans les colonnes d'un tableau

Étape 4 : Post-traitement

La dernière étape du pipeline est ce que nous appelons le post-traitement. Il s'agit d'un niveau supplémentaire de règles commerciales visant à garantir la pertinence des candidats. Il s'agit du dernier kilomètre de vérifications avant d'attribuer un candidat à un champ de la réponse de l'API.

Les règles supplémentaires sont basées sur des logiques commerciales et sur une compréhension approfondie de ce qu'est une facture.

Quelques exemples :

  • Est-ce que le calcul de prix * quantitéremise correspond à montant total lire pour chaque rubrique ?

prix unitaire * quantité - remise = montant total

  • Si nous additionnons montant total pour toutes les lignes, est-ce que cela correspond à la facture dans son ensemble montant total qui est déjà extrait dans notre OCR d'API de facturation ?

somme (montant total) = montant total de la facture

  • Certaines lignes sont exclues lorsqu'elles ne correspondent pas au modèle minimum, qui consiste à avoir au moins une description de l'article (code produit ou description) et une information sur les prix (prix unitaire ou montant total).
  • [...]

Réponse de l'API OCR des factures pour les champs des rubriques

Lorsque toutes ces étapes sont exécutées en très peu de temps, la sortie est prête à être utilisée. Notre API d'OCR des factures donne accès aux 10 champs pour chaque rubrique identifiée dans le tableau.

Sortie de l'API OCR de Mindee Invoice pour les articles de ligne

Conclusion

L'extraction des rubriques dans Invoices est un problème complexe à résoudre. Chez Mindee, nous avons combiné la vision par ordinateur, l'heuristique géométrique, la reconnaissance de texte et un ensemble de validations de règles métier pour nous assurer que les performances d'extraction sont optimisées.

Il s'agit d'une fonctionnalité clé de l'API Invoice OCR car elle permet de nombreux cas d'utilisation dans les domaines de la comptabilité, des achats, des comptes fournisseurs et bien d'autres encore. Essayez-le tout seul !

À propos

Qu'il s'agisse de simples photos, de fichiers PDF complexes ou de fichiers manuscrits, l'API de Mindee transforme les données de vos documents en JSON structuré de manière hautement fiable. Aucune formation sur les modèles n'est requise. Tous les alphabets et toutes les langues sont pris en charge.

,
,

Key Takeway

Key Takeway