> ## 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 4. Étape 5.6 : champ Delivery Address, éléments grAddress, wgAddressAbove et DeliveryAddress

> Extrayez le champ Delivery Address multiligne à l’aide d’un groupe grAddress, d’un White Gap wgAddressAbove pour délimiter la zone de recherche et d’un élément Paragraph DeliveryAddress.

Recherchez le champ **Delivery Address** :

* à droite et en dessous du nom du champ
* à l’aide de l’élément **White Gap** pour limiter la zone de recherche par le bas
* à l’aide d’un élément **Paragraph**

<div id="create-the-graddress-group-element">
  ## Créer l’élément de groupe grAddress
</div>

Pour définir les propriétés communes à tous ces éléments, créez un élément **Group**.

1. Dans l’élément **InvoiceHeader**, créez un élément de type **Group** et nommez-le **grAddress**.
2. Cliquez sur l’onglet **Relations** et spécifiez les contraintes de recherche suivantes pour les éléments du groupe :
   * Au-dessus de l’élément **kwDeliveryAddress**, **Offset** = -400.
   * À gauche de la limite droite de l’élément **kwDeliveryAddress**, **Offset** = -800, **limite de référence** = **Right**.
   * À droite de la limite gauche de l’élément **kwDeliveryAddress**, **Offset** = -50, **limite de référence** = **Left**.
   * En dessous de la limite supérieure de l’élément **kwDeliveryAddress**, **Offset** = -20, **limite de référence** = **Top**.

<Frame>
  <img src="https://mintcdn.com/abbyy/8aWHPAJyzWmTqglX/images/flexi-capture/fls/tutorial4_5_6_1_.PNG?fit=max&auto=format&n=8aWHPAJyzWmTqglX&q=85&s=341cbe7bccc32ddf3e5af49b3bd40f7b" alt="Capture d’écran de l’onglet Relations des propriétés de l’élément Group grAddress dans ABBYY FlexiLayout Studio, montrant les contraintes d’Offset et de limite de référence qui positionnent le groupe par rapport à l’élément kwDeliveryAddress." width="431" height="455" data-path="images/flexi-capture/fls/tutorial4_5_6_1_.PNG" />
</Frame>

<div id="create-the-wgaddressabove-white-gap-element">
  ## Créez l’élément White Gap wgAddressAbove
</div>

Pour limiter par le bas la zone de recherche de l’élément **DeliveryAddress**, spécifiez un **White Gap** horizontal.

1. Dans l’élément `InvoiceHeader.grAddress`, créez un élément de type **White Gap** et nommez-le **wgAddressAbove**.

2. Cliquez sur l’onglet **White Gap**.

3. Sous **Orientation**, sélectionnez **Horizontal**. Définissez **Min height** sur 55.

   <Tip>
     Lors du choix des valeurs de hauteur et de largeur des espaces blancs, tenez compte de la géométrie (c’est-à-dire des limites et des dimensions) des objets d’image adjacents en mode Résultats de pré-reconnaissance.
   </Tip>

4. Comme vous recherchez un espace blanc à l’intérieur d’un paragraphe, sous **Search among objects of type**, sélectionnez uniquement **Text**.

5. Sous **Rubbish**, spécifiez les valeurs suivantes :

   * **Lower threshold limit** – 20.
   * **Upper threshold limit** – 80.
   * **Threshold coefficient (%)** – 10.

   <Frame>
     <img src="https://mintcdn.com/abbyy/8aWHPAJyzWmTqglX/images/flexi-capture/fls/tutorial4_5_6_2_.PNG?fit=max&auto=format&n=8aWHPAJyzWmTqglX&q=85&s=782a2385535990435cb356881b29b9c0" alt="Capture d’écran de l’onglet White Gap des propriétés de l’élément wgAddressAbove dans ABBYY FlexiLayout Studio, montrant l’orientation horizontale, la hauteur minimale et les valeurs de seuil Rubbish pour l’espace blanc." width="431" height="455" data-path="images/flexi-capture/fls/tutorial4_5_6_2_.PNG" />
   </Frame>

   <Note>
     Les valeurs des propriétés **Lower threshold limit**, **Upper threshold limit** et **Threshold coefficient (%)** ne peuvent être déterminées que par tâtonnements. Commencez par les valeurs par défaut. Si elles ne fonctionnent pas, modifiez-les jusqu’à ce que l’espace blanc soit détecté sur toutes les images de test.
   </Note>

6. Ne spécifiez aucune contrainte de recherche supplémentaire et conservez les valeurs par défaut pour les autres options.

7. Cliquez sur l’onglet **Relations**.

8. Puisque l’espace blanc ne peut se trouver qu’au-dessous des mots-clés de **kwDeliveryAddress**, spécifiez les contraintes de recherche suivantes :
   * Sous l’élément **kwDeliveryAddress**, **Offset** = 20
     **Offset** est nécessaire pour éviter que le programme trouve des espaces blancs dans d’autres zones de l’image, par exemple entre le nom du champ et le texte. Cliquez sur l’onglet **Advanced**.

9. Comme le champ **Delivery Address** n’est pas présent sur toutes les images, mais que lorsqu’il apparaît, il est toujours accompagné de son nom, spécifiez la condition supplémentaire suivante dans le champ **Advanced pre-search relations** : recherchez l’objet d’image uniquement si l’élément **kwDeliveryAddress** est détecté. Dans le [langage FlexiLayout](/fr/flexi-capture/fls/code/general-code), cette condition peut s’écrire comme suit :

   ```text theme={null}
   If InvoiceHeader.kwDeliveryAddress.IsNull Then DontFind;
   ```

10. Associez le FlexiLayout pour vérifier si l’élément **wgAddressAbove** est détecté sur toutes les images.

11. Puisque le programme trouve parfois plusieurs espaces blancs dans la zone de recherche spécifiée et ne sélectionne pas toujours le bon, imposez des contraintes de recherche supplémentaires. Si vous examinez les images, vous remarquerez que l’espace blanc recherché est celui qui se situe le plus haut dans la zone de recherche donnée. Par conséquent, dans le champ **Advanced pre-search relations**, spécifiez la condition supplémentaire suivante : recherchez l’objet d’image le plus proche de la limite supérieure de la première page. Dans le [langage FlexiLayout](/fr/flexi-capture/fls/code/general-code), cette condition peut s’écrire comme suit :

    ```text theme={null}
    NearestY: Page(1).RectGlobal.Top;
    ```

12. Excluez temporairement l’élément **InvoiceFooter** et associez le FlexiLayout.

<div id="create-the-deliveryaddress-paragraph-element">
  ## Créez l’élément Paragraph DeliveryAddress
</div>

1. Dans l’élément `InvoiceHeader.grAddress`, créez un élément de type **Paragraph** et nommez-le **DeliveryAddress**.
2. Cliquez sur l’onglet **Relations**.
3. Comme **DeliveryAddress** ne peut se trouver qu’au-dessus du White Gap **wgAddressAbove**, spécifiez la contrainte de recherche suivante :
   * **au-dessus** de l’élément **wgAddressAbove**, **Offset** = 0.
4. Comme la zone de recherche de l’élément **DeliveryAddress** a déjà été définie au niveau du groupe `InvoiceHeader.grAddress`, il n’est pas nécessaire de la redéfinir ici.
5. Cliquez sur l’onglet **Advanced**.
6. Comme le nom du champ **DeliveryAddress** se trouve également dans la zone de recherche, excluez-le afin de n’obtenir que la valeur de **DeliveryAddress**. En outre, la zone de recherche contient aussi des Separator et du bruit, qu’il est préférable d’exclure également. Pour cette raison, vous ne pouvez pas simplement exclure la région de l’élément **kwDeliveryAddress**. Il est plus approprié de prendre la région de l’élément **kwDeliveryAddress**, de l’agrandir pour qu’elle englobe tout le bruit, puis d’exclure le rectangle obtenu. Pour ce faire, spécifiez les contraintes de recherche suivantes dans le champ **relations avancées de pré-recherche** :

   ```text theme={null}
   If InvoiceHeader.kwDeliveryAddress.IsNull Then DontFind;
   Else
   // Dessine un rectangle autour du nom du champ (avec un certain décalage pour les limites)
   { Let Left = InvoiceHeader.kwDeliveryAddress.Rect.Left - 100dt;
   Let Top = InvoiceHeader.kwDeliveryAddress.Rect.Top - 100dt;
   Let Right = InvoiceHeader.kwDeliveryAddress.Rect.Right + 20dt;
   Let Bottom = InvoiceHeader.kwDeliveryAddress.Rect.Bottom;
   // Exclut le rectangle obtenu de la zone de recherche du champ
   ExcludeRect (Left, Top, Right, Bottom);
   }
   ```
7. Excluez temporairement l’élément **InvoiceFooter** et faites correspondre le FlexiLayout.
8. Définissez l’emplacement du bloc **DeliveryAddress** comme la région rectangulaire de l’élément **DeliveryAddress** détecté, simplifiée pour un affichage plus clair et étendue de 5 points verticalement et horizontalement. Pour ce faire, sélectionnez l’option **Expression** et saisissez l’expression suivante :

   ```text theme={null}
   Rect outputRect;
   OutputRegion = InvoiceHeader.grAddress.DeliveryAddress.SimplifiedRegion;
   IsNull = InvoiceHeader.grAddress.DeliveryAddress.IsNull;
   OutputRegion.Inflate (5dt, 5dt);
   ```
