Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
projet_docwizon:creation_des_masques_d_analyses [2022/12/01 16:43] – supprimée - modification externe (Unknown date) 127.0.0.1projet_docwizon:creation_des_masques_d_analyses [2024/06/13 07:42] (Version actuelle) supadmin
Ligne 1: Ligne 1:
 +<note>Il n'est pas possible de créer des masques d'extractions de données sur les serveurs mutualisés pour une raison simple: en cas d'erreur sur un masque vous impacterez tous les utilisateurs ... de ce fait la création de masques n'est possible que sur des instances auto hébergées.</note>
 +
 +Cette documentation a pour but de vous permettre de créer des masques d'analyse personnalisés pour l'OCR directement sur votre serveur 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"
 +
 +{{projet_docwizon:pasted:20211216-013522.png?400}}
 +
 +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
 +
 +{{projet_docwizon:pasted:20211216-013535.png?400}}
 +
 +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
 +
 +{{projet_docwizon:pasted:20211216-013616.png?400}}
 +
 +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
 +
 +{{projet_docwizon:pasted:20211216-013606.png?400}}
 +
 +
 +## 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.
 +
 +{{projet_docwizon:pasted:20211216-013722.png?400}}
 +
 +{{projet_docwizon:pasted:20211216-013729.png?400}}
 +
 +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](https://docs.python.org/fr/3/library/datetime.html#strftime-and-strptime-format-codes) , 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:
 +
 +{{projet_docwizon:pasted:20211216-013754.png?400}}
 +
 +## É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` : montant
 +* `amount_tax` : montant taxe (historique avant prise en compte de 4 taxes possibles)
 +* `amount_tax1`: montant taxe1
 +* `value_tax1`: par exemple 0 pour pouvoir extraire le montant non taxé
 +* `amount_tax2`: montant taxe2
 +* `value_tax2`: par exemple 5.5 pour pouvoir extraire le montant de la taxe à 5,5%
 +* `amount_tax3`: montant taxe3
 +* `value_tax3`: par exemple 10 pour pouvoir extraire le montant de la taxe à 10%
 +* `amount_tax4`: montant taxe4
 +* `value_tax4`: par exemple 20 pour pouvoir extraire le montant de la taxe à 20%
 +* `amount_untaxed`: montant ht
 +* `currency`: monnaie
 +* `date`: date
 +* `date_due`: date due
 +* `date_formats`: format de la date
 +* `decimal_separator`: séparateur
 +* `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`
 +* `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`
 +
 +### ScanBank reconnaît la grammaire suivante:
 +