Passer au contenu principal
L’analyse des images de test montre que les champs quantité totale et montant total apparaissent uniquement ensemble avec le nom Footer.kwTotal et sur la même ligne. Utilisez des éléments de type Character String pour détecter les champs quantité totale et montant total. Pour définir les contraintes de recherche communes à ces éléments, créez un élément Group — grTotal.

Créer l’élément Group grTotal

Pour créer l’élément Group grTotal :
  1. Dans l’élément Footer, créez un élément Group et nommez-le grTotal.
  2. Sélectionnez l’option Optional element, car nous avons décidé d’interrompre la recherche des sous-éléments si le nom est absent.
    Pour plus de détails, consultez l’article d’aide The “Optional” property of a Group element.
  3. Cliquez sur l’onglet Advanced.
  4. Puisque les champs quantité totale et montant total n’apparaissent dans l’image qu’avec le nom Footer.kwTotal, définissez la contrainte de recherche supplémentaire suivante dans le champ Relations avancées avant recherche : si l’élément Footer.kwTotal n’a pas été détecté, ne recherchez pas l’objet dans l’image. Dans le langage FlexiLayout : If Footer.kwTotal.IsNull Then DontFind;

Créer l’élément TotalQuantity

Le champ quantité totale se situe à l’intersection de la ligne Total et de la colonne Quantity. La première contrainte a déjà été spécifiée au niveau de l’élément Group. Pour spécifier la seconde contrainte, utilisez le nom de colonne détecté précédemment comme élément de référence. Pour créer l’élément TotalQuantity :
  1. Dans l’élément grTotal, créez un élément de type Character String et nommez-le TotalQuantity.
  2. Cliquez sur l’onglet Character String.
  3. Dans le champ Character count, spécifiez cet intervalle flou : {-1, 1, 10, INF}. Il s’agit d’une estimation de la longueur de la chaîne de caractères. Considérez que les valeurs possibles peuvent aller de 1 à 10. Toute hypothèse en dehors de cette plage sera pénalisée.
  4. Conservez les valeurs par défaut des autres paramètres de l’élément.
  5. Cliquez sur l’onglet Relations.
  6. Comme le champ quantité totale se trouve toujours au même niveau que le mot-clé Footer.kwTotal, ou légèrement plus bas, définissez les contraintes de recherche suivantes :
    • Au-dessus de l’élément Footer.kwTotal, Offset = -200, Reference boundary = Bottom
    • Au-dessous de l’élément Footer.kwTotal, Offset = -20, Reference boundary = Top
    Avant de définir les valeurs des offsets, vous pouvez analyser les propriétés géométriques (c’est-à-dire la taille et les limites) des objets voisins détectés lors de la pré-reconnaissance. Les valeurs d’offset sont choisies par tâtonnement.
  7. Cliquez sur l’onglet Advanced.
  8. Comme le champ quantité totale est facultatif sur les images, mais que, lorsqu’il apparaît, il apparaît avec la colonne Quantity et sous son nom, définissez la contrainte de recherche supplémentaire suivante dans le champ Relations avancées avant recherche : Recherchez l’objet sur l’image uniquement si l’élément TableHeader.kwQuantity a été détecté ; ne cherchez pas à plus de 50 dots à gauche ou à droite des limites respectives du nom de la colonne. Dans le langage FlexiLayout : If Not (TableHeader.kwQuantity.IsNull) Then { LeftOf: TableHeader.kwQuantity.Right, -50 * dot; RightOf: TableHeader.kwQuantity.Left, -50 * dot; } Else DontFind;
  9. Testez la mise en correspondance du FlexiLayout avec les images de test et assurez-vous que le programme détecte correctement l’élément sur toutes les images concernées.
  10. Pour décrire l’emplacement du bloc TotalQuantity, sélectionnez l’option Source element, puis cliquez sur ”” et sélectionnez l’élément TotalQuantity comme élément source.

Créer l’élément TotalAmount

Le champ montant total se situe à l’intersection de la ligne Total (le pied du tableau) et de la colonne Total. La première contrainte a déjà été définie au niveau de l’élément Group. Pour définir la seconde contrainte, utilisez les noms de colonnes détectés précédemment comme éléments de référence. Pour créer l’élément TotalAmount :
  1. Dans l’élément grTotal, créez un élément de type Character String et nommez-le TotalAmount.
  2. Cliquez sur l’onglet Character String.
  3. Dans le champ Character count, spécifiez cet intervalle flou : [-1, 1, 20, 2147483647]. Il s’agit d’une estimation de la longueur de la chaîne de caractères. Considérez que les valeurs possibles peuvent aller de 1 à 20. Toute hypothèse en dehors de cette plage sera pénalisée.
  4. Conservez les valeurs par défaut des autres paramètres de l’élément.
  5. Cliquez sur l’onglet Relations.
  6. Étant donné que le champ montant total se trouve toujours au même niveau que les mots-clés du nom Footer.kwTotal, définissez les contraintes de recherche suivantes :
    • Au-dessus de l’élément Footer.kwTotal, Offset = -20, Reference boundary = Bottom.
    • En dessous de l’élément Footer.kwTotal, Offset = -20, Reference boundary = Top.
  7. Cliquez sur l’onglet Advanced.
  8. Étant donné que le champ montant total ne peut se trouver qu’immédiatement sous le nom de la colonne Total (éventuellement avec un léger décalage) et uniquement entre les colonnes Unit Price et Sales, définissez la contrainte de recherche supplémentaire suivante dans le champ Relations avancées avant recherche : Si l’élément TableHeader.kwTotal a été détecté, recherchez l’objet à une distance maximale de 70 dots à droite de la limite droite de l’élément TableHeader.kwTotal et de 50 dots à gauche de la limite gauche de l’élément TableHeader.kwTotal. Ou, si les éléments TableHeader.kwUnitPrice et TableHeader.kwSales sont détectés, recherchez l’objet à une distance maximale de 40 dots à droite de la limite gauche de l’élément TableHeader.kwSales et à droite de la limite droite de l’élément TableHeader.kwUnitPrice ; sinon, ne recherchez pas l’objet. En langage FlexiLayout : If Not (TableHeader.kwTotal.IsNull) Then { LeftOf: TableHeader.kwTotal.Right, -70 * dot; RightOf: TableHeader.kwTotal.Left, -50 * dot; } Else If Not (TableHeader.kwUnitPrice.IsNull) and Not (TableHeader.kwSales.IsNull) Then { LeftOf: TableHeader.kwSales.Left, -40 * dot; RightOf: TableHeader.kwUnitPrice, 0 * dot; } Else DontFind;
    Avant de définir les valeurs d’offset, vous pouvez analyser les propriétés géométriques (c’est-à-dire la taille et les limites) des objets voisins détectés lors de la pré-reconnaissance. Les valeurs d’offset sont déterminées par tâtonnements.
  9. Testez la mise en correspondance du FlexiLayout avec les images de test et assurez-vous que le programme détecte correctement l’élément sur toutes les images concernées.
  10. Pour décrire l’emplacement du bloc TotalAmount, sélectionnez l’option Source element, puis cliquez sur Bouton Parcourir et sélectionnez l’élément TotalAmount comme élément source.