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"

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

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

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.


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 exemplefr.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 :

É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 |