Création des masques d'analyse

Note : Il n'est pas possible de créer des masques d'extraction de données sur les serveurs mutualisés. En cas d'erreur sur un masque, vous impacteriez tous les utilisateurs. De ce fait, la création de masques n'est possible que sur des instances dédiées ou auto-hébergées.

Cette documentation a pour but de vous permettre de créer des masques d'analyse personnalisés pour l'OCR directement sur votre serveur dédié ou auto-hébergé.

Le webservice propose deux entrées qu'il faut utiliser dans notre cas de figure :

  • La liste des documents analysés "liste OCR"
  • La liste des masques d'analyse "templates"

Menu du webservice : liste OCR et templates

Lorsqu'on se place sur la zone des OCR, vous pourrez voir la liste des documents analysés. Ceux qui sont en échec sont marqués d'une puce orange. Vous pouvez cliquer sur les trois liens proposés dans la liste des commandes :

  • regex editor : ouvre une popup vous permettant d'écrire des expressions régulières et de constater le résultat en temps réel
  • replay : permet de relancer l'analyse de votre document pour voir si un masque d'analyse est maintenant opérationnel
  • pdf : pour télécharger le fichier PDF en question

L'éditeur d'expressions régulières

Éditeur d'expressions régulières

Cette fenêtre est accessible depuis la liste des documents OCR puis clic sur le lien "regex editor".

Elle vous permet d'écrire une expression régulière dans la zone (1) et de voir dans la zone du bas le texte que ça extrait potentiellement.

Un exemple plus précis est visible sur cette capture d'écran :

  1. L'expression régulière suivante est saisie : FACTURE\s+CAISSE\s+N.\s+([A-Z0-9-]*)
  2. La zone du texte du document qui correspond est mise en évidence
  3. Si l'option détails est active, vous pourrez voir la zone en bas de l'écran
  4. Le résultat de l'extraction du texte de votre regex

Exemple d'utilisation de l'éditeur de regex

Lorsque votre regex extrait uniquement le champ que vous voulez (par exemple le numéro de facture), vous pourrez le reporter dans la fiche de création du masque d'analyse.

Reporter la regex dans le masque

Créer un nouveau masque d'analyse

Placez-vous sur la zone "Templates", vous pouvez regarder les templates proposées par les autres participants et cliquer sur le bouton "Nouveau" pour créer un nouveau masque d'analyse.

Liste des templates

Formulaire de création de masque

Description de l'interface de création de masques d'analyse :

Généralités

  • NAME : saisissez le nom de votre masque sous la forme suivante : fr.fournisseur-unmotcle-votrenom, par exemple fr.topoffice-ales-eric
  • FOURNISSEUR : le nom du fournisseur qui sera retourné dans le fichier JSON
  • NUMÉRO DE TVA : en dur, le numéro de TVA intracommunautaire de ce fournisseur

Expressions régulières

Dans ce bloc, vous devrez soit laisser les champs vides, soit les compléter en copiant/collant vos expressions régulières issues de l'outil "éditeur d'expressions régulières" (voir paragraphe précédent) :

  • MONTANT TOTAL : la regex qui permet d'extraire le TTC de la facture
  • Etc. pour chaque champ

Options

  • MOTS CLÉS : ce qui permet de détecter qu'il faut appliquer ce masque d'analyse sur votre document. Si vous mettez plusieurs mots clés, la virgule doit être utilisée pour les séparer
  • MOTS CLÉS EXCLUS : l'inverse du précédent, pour disqualifier ce fichier s'il y a un conflit d'analyse avec un autre
  • FORMAT DE DATE : voir la documentation Python. En bref, voici les principaux mots clés utilisés :
    • %d : jour du mois sur 2 chiffres
    • %m : numéro du mois sur deux chiffres
    • %b : nom du mois abrégé dans la langue locale (exemple : jan, fév, etc.)
    • %B : nom complet du mois dans la langue locale (janvier, février, etc.)
    • %y : année sur deux chiffres
    • %Y : année complète sur quatre chiffres

Tester et valider un masque d'analyse

Quand votre masque d'analyse est terminé, pensez à le sauvegarder puis testez-le via la commande "replay" de la liste des documents OCR.

Si la popup vous affiche toutes les données voulues, c'est que votre masque d'analyse est bon :

Résultat de test d'un masque d'analyse

Écrire des regex

Petit pense-bête concernant l'écriture d'expressions régulières :

  • () : les parenthèses permettent d'indiquer une zone à extraire
  • \w : caractères alphanumériques et _
  • \W : caractères ne composant pas les mots
  • \s+ : un ou plusieurs espaces
  • \d : chiffres décimaux
  • \D : autre chose qu'un chiffre décimal
  • \s : caractères d'espacement
  • \S : autre chose qu'un caractère d'espacement

Les {} permettent de définir des répétitions :

  • \d{2} : 2 chiffres
  • \d{4} : 4 chiffres
  • \d{0,5} : entre aucun et 5 chiffres
  • \/ : le / étant réservé, il faut le dé-spécialiser en le précédant d'un \

Liste des mots clés réservés

Selon les profils disponibles sur votre serveur, la syntaxe est différente.

ScanInvoices reconnaît la grammaire suivante

Clé Description
amount Montant TTC
amount_tax Montant taxe (historique, avant prise en compte de 4 taxes possibles)
amount_tax1 Montant taxe 1
value_tax1 Valeur du taux de taxe 1 (par exemple 0 pour extraire le montant non taxé)
amount_tax2 Montant taxe 2
value_tax2 Valeur du taux de taxe 2 (par exemple 5.5)
amount_tax3 Montant taxe 3
value_tax3 Valeur du taux de taxe 3 (par exemple 10)
amount_tax4 Montant taxe 4
value_tax4 Valeur du taux de taxe 4 (par exemple 20)
amount_untaxed Montant HT
currency Monnaie
date Date de facture
date_due Date d'échéance
date_formats Format de la date
decimal_separator Séparateur décimal
description Description
ean Code EAN
invoice_label Titre ou sujet de la facture
invoice_number Numéro de la facture
locale Locale à utiliser pour ce document
static_BIC BIC (valeur statique)
static_IBAN IBAN (valeur statique)
static_payment Mode de paiement (valeur statique)
static_recipient Destinataire (valeur statique)
static_siren SIREN (valeur statique)
static_supplier_alias Alias du fournisseur (valeur statique)
static_supplier_name Nom du fournisseur (valeur statique)
static_supplier_numtva N° TVA du fournisseur (valeur statique)
static_vat TVA (valeur statique)
sum_amount_tax Somme des montants de taxes
supplier_numsiret N° SIRET du fournisseur
supplier_numtva N° TVA intracommunautaire du fournisseur