> ## 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 libellé du champ
* à l’aide de l’élément [White Gap](/fr/flexi-capture/fls/template/white-gap) pour limiter la zone de recherche par le bas
* à l’aide d’un élément [Paragraph](/fr/flexi-capture/fls/template/text-chain)

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

<Steps>
  <Step title="Créer l’élément Group">
    Dans l’élément **InvoiceHeader**, créez un élément [Group](/fr/flexi-capture/fls/template/elements-compound) et nommez-le **grAddress**.
  </Step>

  <Step title="Définir les contraintes de recherche">
    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>
  </Step>
</Steps>

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

Un [White Gap](/fr/flexi-capture/fls/template/white-gap) horizontal délimite par le bas la zone de recherche de l’élément **DeliveryAddress**.

<Steps>
  <Step title="Créer l’élément White Gap">
    Dans l’élément `InvoiceHeader.grAddress`, créez un élément [White Gap](/fr/flexi-capture/fls/template/white-gap) et nommez-le **wgAddressAbove**.
  </Step>

  <Step title="Définir l’orientation et la hauteur">
    Cliquez sur l’onglet **White Gap**. Sous **Orientation**, sélectionnez **Horizontal**, puis définissez **Hauteur min.** sur 55.

    <Tip>
      Lorsque vous définissez les valeurs de hauteur et de largeur des espaces blancs, tenez compte de la géométrie (limites et dimensions) des objets d’image adjacents en mode Résultats de pré-reconnaissance.
    </Tip>
  </Step>

  <Step title="Restreindre le type d’objet">
    Comme vous recherchez un espace blanc dans un paragraphe, sous **Rechercher parmi les objets de type**, sélectionnez uniquement **Text**.
  </Step>

  <Step title="Définir les seuils Rubbish">
    Sous **Rubbish**, spécifiez les valeurs suivantes :

    * **Limite inférieure du seuil** – 20.
    * **Limite supérieure du seuil** – 80.
    * **Coefficient de seuil (%)** – 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 **Limite inférieure du seuil**, **Limite supérieure du seuil** et **Coefficient de seuil (%)** ne peuvent être déterminées que par tâtonnements. Commencez par les valeurs par défaut. Si elles ne conviennent pas, modifiez-les jusqu’à ce que l’espace blanc soit détecté sur toutes les images de test.
    </Note>
  </Step>

  <Step title="Conserver les autres valeurs par défaut">
    Ne spécifiez aucune contrainte de recherche supplémentaire et conservez les valeurs par défaut des autres options.
  </Step>

  <Step title="Ajouter une relation de position">
    Cliquez sur l’onglet **Relations**. Comme l’espace blanc ne peut se trouver que sous les mots-clés associés au nom **kwDeliveryAddress**, spécifiez la contrainte de recherche suivante :

    * Sous l’élément **kwDeliveryAddress**, **Offset** = 20.

    L’**Offset** empêche FlexiLayout Studio de détecter des espaces blancs dans d’autres zones de l’image, par exemple entre le libellé du champ et le texte.
  </Step>

  <Step title="Ajouter la contrainte de pré-recherche">
    Cliquez sur l’onglet **Advanced**. Le champ **Delivery Address** n’est pas présent sur toutes les images, mais lorsqu’il apparaît, il est toujours accompagné de son nom. Dans le champ **relations avancées de pré-recherche**, spécifiez cette condition supplémentaire : 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) :

    ```text theme={null}
    If InvoiceHeader.kwDeliveryAddress.IsNull Then DontFind;
    ```
  </Step>

  <Step title="Associer le FlexiLayout">
    Associez le FlexiLayout pour vérifier si l’élément **wgAddressAbove** est détecté sur toutes les images.
  </Step>

  <Step title="Limiter à l’espace blanc le plus haut">
    FlexiLayout Studio trouve parfois plusieurs espaces blancs dans la zone de recherche et ne sélectionne pas toujours le bon. Appliquez donc des contraintes de recherche supplémentaires. L’espace blanc recherché est celui situé le plus haut dans la zone de recherche. Dans le champ **relations avancées de pré-recherche**, spécifiez cette condition supplémentaire : 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) :

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

  <Step title="Vérifier la correspondance">
    Excluez temporairement l’élément **InvoiceFooter** et associez le FlexiLayout.
  </Step>
</Steps>

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

<Steps>
  <Step title="Créer l’élément Paragraph">
    Dans l’élément `InvoiceHeader.grAddress`, créez un élément [Paragraph](/fr/flexi-capture/fls/template/text-chain) et nommez-le **DeliveryAddress**.
  </Step>

  <Step title="Ajouter une relation de position">
    Cliquez sur l’onglet **Relations**. 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.

    La zone de recherche de l’élément **DeliveryAddress** est déjà définie au niveau du groupe `InvoiceHeader.grAddress`, il n’est donc pas nécessaire de la redéfinir.
  </Step>

  <Step title="Exclure le nom du champ de la zone de recherche">
    Cliquez sur l’onglet **Advanced**. Le nom du champ **DeliveryAddress** se trouve également dans la zone de recherche, excluez-le donc afin de n’obtenir que la valeur du champ. La zone de recherche contient aussi des Separator et du bruit, qu’il est préférable d’exclure. Plutôt que d’exclure uniquement la région de l’élément **kwDeliveryAddress**, prenez cette région, agrandissez-la pour qu’elle englobe tout le bruit, puis excluez le rectangle obtenu. Spécifiez ces contraintes de recherche 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);
    }
    ```
  </Step>

  <Step title="Associer le FlexiLayout">
    Excluez temporairement l’élément **InvoiceFooter** et associez le FlexiLayout.
  </Step>

  <Step title="Définir la région du bloc">
    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. Sélectionnez l’option **Expression** et saisissez cette expression :

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