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:
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 “matche” 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
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 vous pouvez cliquer sur le bouton “Nouveau” pour créer un nouveau masque d'analyse.
Description de l'interface de création de masques d'analyse (en cours de dev, cette capture d'écran risque de ne pas être “à jour” rapidement mais le principe reste le même).
- Généralités
- NAME : saisie le nom de votre masque de saisie 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 (à venir)
- NUMÉRO DE TVA : en dur le numéro de TVA intracom 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 “L'é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épparer
- 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 doc 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, fev 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 / 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, exemple:
Écrire des regex
Ceci n'est qu'un petit pense bête concernant l'art d'écrire des 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+
:\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édent d'un\
Liste des mots clés réservés
Selon les profils disponibles sur votre serveur la syntaxe est différente:
DocRaw reconnaît la grammaire suivante:
ScanInvoices reconnaît la grammaire suivante:
amount
: montantamount_tax
: montant taxe (historique avant prise en compte de 4 taxes possibles)amount_tax1
: montant taxe1value_tax1
: par exemple 0 pour pouvoir extraire le montant non taxéamount_tax2
: montant taxe2value_tax2
: par exemple 5.5 pour pouvoir extraire le montant de la taxe à 5,5%amount_tax3
: montant taxe3value_tax3
: par exemple 10 pour pouvoir extraire le montant de la taxe à 10%amount_tax4
: montant taxe4value_tax4
: par exemple 20 pour pouvoir extraire le montant de la taxe à 20%amount_untaxed
: montant htcurrency
: monnaiedate
: datedate_due
: date duedate_formats
: format de la datedecimal_separator
: séparateurdescription
: descriptionean
: code eaninvoice_label
: titre ou sujet de la factureinvoice_number
: numéro de la facturelocale
: locale à utiliser pour ce documentstatic_BIC
static_IBAN
static_payment
static_recipient
static_siren
static_supplier_alias
static_supplier_name
static_supplier_numtva
static_vat
sum_amount_tax
supplier_numsiret
supplier_numtva