- Sur certains documents, le champ Date de la facture se trouve à droite du nom du champ et, sur d’autres, en dessous. Nous limiterons donc la zone de recherche à des rectangles situés à droite du nom et en dessous de celui-ci.
- Nous utiliserons un élément Date pour rechercher la date. De plus, nous définirons la condition suivante : si le nom du champ n’est pas détecté, ne recherchez pas les données du champ.
- Il arrive assez souvent que les dates soient reconnues de manière peu fiable. Cela peut être dû à des défauts de numérisation, à des formats de date invalides, etc. Nous ajouterons donc un élément supplémentaire Character String au cas où l’élément Date ne trouverait aucune date.
- Dans l’élément InvoiceHeader, créez un élément de type Group et nommez-le grDate.
-
Cliquez sur l’onglet Advanced et définissez des contraintes de recherche supplémentaires : limitez la zone de recherche à un tableau de rectangles composé d’un rectangle à droite du nom du champ et d’un rectangle sous le nom du champ, avec un certain décalage. En langage FlexiLayout, cette contrainte peut s’écrire comme suit :
- Dans l’élément
InvoiceHeader.grDate, créez un élément de type Date et nommez-le InvoiceDate. - Cliquez sur l’onglet Date.
- Spécifiez tous les formats de date possibles pour l’élément InvoiceDate :

- Sur certaines images, la zone de recherche du champ Date de la facture inclura les éléments kwInvoiceNumber et InvoiceNumber déjà détectés. Pour éviter que le programme ne considère les valeurs de ces éléments comme des hypothèses pour le champ Date de la facture, excluez ces éléments de la zone de recherche :
- Cliquez sur le bouton Add… à côté du champ Exclude regions of elements.
- Sélectionnez kwInvoiceNumber dans la liste des éléments.
- Cliquez sur OK. La chaîne
SearchElements.InvoiceHeader.kwInvoiceNumberapparaîtra dans le champ Exclude regions of elements.
SearchElements.InvoiceHeader.InvoiceNumber.
- Cliquez sur l’onglet Advanced.
-
Le champ Date de la facture n’est pas un élément obligatoire. Toutefois, si un document contient une date (dans le champ Date de la facture), le nom de champ correspondant est toujours présent dans le document (décrit plus haut par l’élément kwInvoiceDate). Vous pouvez donc définir une condition de recherche supplémentaire dans relations avancées de pré-recherche : recherchez l’objet image uniquement si kwInvoiceDate a été détecté. En langage FlexiLayout, cette condition peut s’écrire comme suit :
- Excluez temporairement l’élément InvoiceFooter et exécutez l’association du FlexiLayout.
-
Dans l’élément
InvoiceHeader.grDate, créez un élément de type Character String et nommez-le InvoiceDateAsString. - Cliquez sur l’onglet Character String.
- Spécifiez l’alphabet : ,-./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz
- Définissez le pourcentage de caractères non alphabétiques sur 30 %.
-
Dans le champ Character count, spécifiez l’intervalle flou
{-1, 8, 14, INF}pour la longueur de la chaîne de caractères, en supposant que les valeurs possibles se situent dans la plage de 8 à 14 caractères. Toute hypothèse en dehors de cet intervalle sera pénalisée. - Définissez Max space length sur 20. Cela limite la longueur maximale de l’espace dans la chaîne de texte à 20 dots.
- Pour les autres propriétés de l’élément, conservez les paramètres par défaut.
- Cliquez sur l’onglet Advanced.
-
Étant donné que l’élément InvoiceDateAsString ne doit être recherché que si l’élément InvoiceDate n’est pas détecté dans l’image, spécifiez la condition suivante dans le champ relations avancées de pré-recherche : recherchez l’objet image uniquement si l’élément InvoiceDate n’est pas détecté. Dans le langage FlexiLayout, cette condition peut être écrite comme suit :
-
Spécifiez une condition supplémentaire pour InvoiceDate, similaire à la précédente : recherchez l’objet image uniquement si l’élément kwInvoiceDate a été détecté. Recherchez l’objet image le plus proche de l’élément kwInvoiceDate. Dans le langage FlexiLayout, cette condition peut être écrite comme suit :
-
Spécifiez l’emplacement du bloc InvoiceDate comme la région rectangulaire de l’élément InvoiceDate ou InvoiceDateAsString détecté, augmentée de 5 dots verticalement et horizontalement. Pour ce faire, sélectionnez l’option Expression et saisissez l’expression suivante :
