- Dans l’élément Footer, créez un élément Group et nommez-le grTotal.
- Sélectionnez l’option Optional element, car nous avons décidé d’interrompre la recherche des sous-éléments si le nom est absent. Remarque. Pour plus de détails, consultez l’article d’aide Tips and tricks\The “Optional” property of a Group element.
- Cliquez sur l’onglet Advanced.
- 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;
- Dans l’élément grTotal, créez un élément de type Character String et nommez-le TotalQuantity.
- Cliquez sur l’onglet Character String.
- Dans le champ Character count, spécifiez l’intervalle flou suivant : {-1, 1, 10, INF}. Il s’agit d’une estimation de la longueur de la chaîne de caractères. Nous supposons que les valeurs possibles vont de 1 à 10. Toutes les hypothèses en dehors de cette plage seront pénalisées.
- Conservez les valeurs par défaut des autres paramètres de l’élément.
- Cliquez sur l’onglet Relations.
- Puisque le champ quantité totale se trouve toujours sur la même ligne que les mots-clés du nom 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
- En dessous de l’élément Footer.kwTotal, Offset = -20, Reference boundary = Top Remarque. Avant de définir les valeurs de décalage, vous pouvez analyser les propriétés géométriques (c.-à-d. la taille et les limites) des objets voisins détectés lors de la pré-reconnaissance. Les valeurs de décalage sont déterminées par tâtonnements.
- Cliquez sur l’onglet Advanced.
- Puisque le champ quantité totale est facultatif dans 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 dans l’image uniquement si l’élément TableHeader.kwQuantity a été détecté ; ne cherchez pas au-delà de 50 dots à gauche ou à droite des limites correspondantes 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;
- Essayez d’exécuter la mise en correspondance du FlexiLayout avec les images de test et vérifiez que le programme détecte correctement l’élément sur toutes les images concernées.
- 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.
- Dans l’élément grTotal, créez un élément de type Character String et nommez-le TotalAmount.
- Cliquez sur l’onglet Character String.
- 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. Nous supposons que les valeurs possibles peuvent aller de 1 à 20. Toutes les hypothèses en dehors de cette plage seront pénalisées.
- Laissez les valeurs par défaut pour les autres paramètres de l’élément.
- Cliquez sur l’onglet Relations.
- Comme le champ montant total se trouve toujours au même niveau que le mot-clé nommé Footer.kwTotal, définissez les contraintes de recherche suivantes :
- Au-dessus de l’élément Footer.kwTotal, Offset = -20, Reference boundary = Bottom.
- Au-dessous de l’élément Footer.kwTotal, Offset = -20, Reference boundary = Top.
- Cliquez sur l’onglet Advanced.
- Comme le champ montant total ne peut se trouver qu’immédiatement au-dessous (éventuellement avec un léger décalage) du nom de la colonne Total 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 à une distance maximale 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.*Dans le 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; Remarque. Avant de définir les valeurs des décalages, 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 de décalage sont déterminées par tâtonnements.
- Essayez d’effectuer 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.
- Pour décrire l’emplacement du bloc TotalAmount, sélectionnez l’option Source element, puis cliquez sur
et sélectionnez l’élément TotalAmount comme élément source.
