> ## 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 9.2 : champ montant total, élément TotalAmount

> Configurez l’élément Character String TotalAmount dans l’exemple 4 de FlexiLayout Studio en limitant sa zone de recherche à l’aide de relations avancées de pré-recherche et de post-search relations.

Recherchez le champ **TotalAmount** à droite et en dessous de son nom.

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

<Steps>
  <Step title="Créez l’élément Character String">
    Dans l’élément **SumGroup**, créez un élément [Character String](/fr/flexi-capture/fls/template/character-chain) nommé **TotalAmount**.
  </Step>

  <Step title="Définissez l’alphabet">
    Cliquez sur l’onglet **Character String** et définissez l’alphabet :

    `',-.0123456789OSZosz`
  </Step>

  <Step title="Définissez le pourcentage de caractères non alphabétiques">
    Définissez **Pourcentage de caractères hors alphabet** sur 30 %.
  </Step>

  <Step title="Définir le nombre de caractères">
    Dans le champ **Nombre de caractères**, spécifiez l’intervalle flou `{-1, 1, 20, INF}`, qui évalue la longueur de la chaîne. Supposez que toutes les valeurs possibles se situent entre 1 et 20 caractères. Toute hypothèse en dehors de cet intervalle est pénalisée.
  </Step>

  <Step title="Conservez les autres valeurs par défaut">
    N’ajoutez aucune contrainte supplémentaire et conservez les paramètres par défaut.
  </Step>

  <Step title="Exclure la région kwTotal">
    Cliquez sur l’onglet **Contraintes de recherche**, puis excluez de la zone de recherche la région correspondant à l’hypothèse de l’élément **kwTotal**.
  </Step>

  <Step title="Ajoutez des relations avant recherche">
    Cliquez sur l’onglet **Advanced**. Dans **relations avancées de pré-recherche**, spécifiez des conditions de recherche supplémentaires. Si le nom **kwTotal** est détecté, définissez la zone de recherche comme un tableau de rectangles : l’un à droite du libellé du champ et l’autre en dessous, avec un certain décalage. Sinon, ne recherchez pas l’objet image. Dans le [langage FlexiLayout](/fr/flexi-capture/fls/code/general-code) :

    ```text theme={null}
    If not kwTotal.IsNull Then
    // Si le libellé du champ kwTotal a été détecté
    {
    WholeWordMode: true;
    MaxGapInLine: 30dt;
    RectArray DataRegion;
    Let r1= Rect (kwTotal.Rect.Right, kwTotal.Rect.Top -20dt, kwTotal.Rect.Right + 1800dt, kwTotal.Rect.Bottom + 50dt);
    // Limite la zone de recherche à un rectangle situé à droite du libellé du champ.
    Let r2 = Rect (kwTotal.Rect.Left - 100dt, kwTotal.Rect.Bottom, kwTotal.Rect.Right + 100dt, kwTotal.Rect.Bottom + 200dt);
    // Limite la zone de recherche à un rectangle situé sous le libellé du champ.
    DataRegion = RectArray (r1);
    DataRegion.Add (r2);
    RestrictSearchArea (DataRegion);
    }
    else Dontfind();
    // Sinon, ne pas rechercher l'objet.
    ```
  </Step>

  <Step title="Ajouter des post-search relations">
    La zone de recherche de la valeur du champ est limitée à deux rectangles : l’un à droite du libellé du champ et l’autre en dessous. Lorsque la valeur du champ se trouve à droite du libellé, du texte est généralement présent sous celui-ci. Comme ce texte redondant se trouve dans la zone de recherche du champ **TotalAmount**, FlexiLayout Studio crée une hypothèse correspondante.

    Pour réduire la qualité de cette hypothèse, spécifiez une vérification supplémentaire dans **Advanced post-search relations**. Plus la valeur du champ est située bas sous le libellé du champ, plus la pénalité est importante. Dans le [langage FlexiLayout](/fr/flexi-capture/fls/code/general-code) :

    ```text theme={null}
    If not IsNull then
    {FuzzyQuality: 400dt - width, {-50000,0,0, 50000}*dt;
    //Les hypothèses des éléments dont la région mesure 400 points de large auront la qualité maximale
    if width < 50dt then Quality: 0;
    // Les éléments de moins de 50 points ne sont pas pris en compte
    if Top > kwTotal.Rect.Top then
    { FuzzyQuality: Top - kwTotal.Rect.Top, {0,0,0, 20000}*dt;
    }
    }
    //Grâce à cette vérification, plus l'écart est important, plus la pénalité est élevée.
    ```

    <Info>
      Pour décrire l’emplacement des objets et les distances qui les séparent, FlexiLayout Studio utilise un système de coordonnées bidimensionnel. Le point (0, 0) se trouve dans le coin supérieur gauche de l’image. L’axe horizontal va de gauche à droite et l’axe vertical de haut en bas.
    </Info>
  </Step>

  <Step title="Associer le FlexiLayout">
    Associez le FlexiLayout aux images afin de vérifier que FlexiLayout Studio détecte correctement l’élément dans toutes les images où il apparaît.
  </Step>

  <Step title="Définissez la région du bloc">
    Définissez l’emplacement du bloc **TotalAmount** sur la région rectangulaire de l’élément **TotalAmount**, étendue de 5 dots verticalement et horizontalement. Sélectionnez **Expression** et spécifiez l’expression suivante :

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