> ## Documentation Index
> Fetch the complete documentation index at: https://docs.abbyy.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Exemple 3. Étape 25 : détection des champs TotalQuantity et TotalAmount à l’aide des éléments TotalQuantity et TotalAmount

> Récupérez les valeurs de quantité totale et de montant total à l’aide des éléments Character String TotalQuantity et TotalAmount dans un groupe grTotal facultatif.

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](/fr/flexi-capture/fls/template/character-chain) 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](/fr/flexi-capture/fls/template/elements-compound) — grTotal.

<div id="create-the-grtotal-group-element">
  ## Créer l’élément Group grTotal
</div>

Pour créer l’élément [Group](/fr/flexi-capture/fls/template/elements-compound) grTotal :

1. Dans l’élément Footer, créez un élément [Group](/fr/flexi-capture/fls/template/elements-compound) 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.

   <Note>
     Pour plus de détails, consultez l’article d’aide [The Optional property of a Group element](/fr/flexi-capture/fls/tips-tricks/date11).
   </Note>

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](/fr/flexi-capture/fls/template/advanced-constraints) 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](/fr/flexi-capture/fls/code/general-code) :
   `If Footer.kwTotal.IsNull Then DontFind;`

<div id="create-the-totalquantity-element">
  ## Créer l’élément TotalQuantity
</div>

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](/fr/flexi-capture/fls/template/elements-compound). 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](/fr/flexi-capture/fls/template/character-chain) 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

   <Tip>
     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.
   </Tip>

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](/fr/flexi-capture/fls/template/advanced-constraints) 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](/fr/flexi-capture/fls/code/general-code) :
   `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.

<div id="create-the-totalamount-element">
  ## Créer l’élément TotalAmount
</div>

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](/fr/flexi-capture/fls/template/elements-compound). 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](/fr/flexi-capture/fls/template/character-chain) 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](/fr/flexi-capture/fls/template/advanced-constraints) 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](/fr/flexi-capture/fls/code/general-code) :
   `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;`

   <Tip>
     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.
   </Tip>

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 <img src="https://mintcdn.com/abbyy/fmgRWFNHKYN2MLSg/images/flexi-capture/fls/Browse_Button.gif?s=3673db30dda4a3293aec716853588b55" alt="Bouton Parcourir" style={{display:"inline-block",verticalAlign:"middle",margin:0}} width="21" height="20" data-path="images/flexi-capture/fls/Browse_Button.gif" /> et sélectionnez l’élément **TotalAmount** comme élément source.
