> ## 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.

# Blocs

> Les blocs FlexiLayout font correspondre les champs de document pour la capture de données : découvrez les types de blocs Text, Barcode, Table et de groupe, leurs propriétés et les expressions de région.

Les blocs FlexiLayout correspondent aux champs des documents dont les données doivent être capturées. Un bloc indique le type de données que le champ peut contenir, ainsi que les coordonnées de la zone de l'image où ce champ est susceptible de se trouver.

La branche des blocs est signalée par <img src="https://mintcdn.com/abbyy/lqYknuOmCa79141v/images/flexi-capture/fls/block_tree.gif?fit=max&auto=format&n=lqYknuOmCa79141v&q=85&s=deeed524eb72bc9b5af0c1fff61eabb1" alt="Icône de bloc d’arborescence" style={{display:"inline-block",verticalAlign:"middle",margin:0}} width="15" height="15" data-path="images/flexi-capture/fls/block_tree.gif" /> dans l'arborescence FlexiLayout.

<div id="flexilayout-block-types">
  ## Types de blocs FlexiLayout
</div>

ABBYY FlexiLayout Studio prend en charge les types de blocs suivants :

| Type de bloc         | Icône                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       | Description                                                                                                                                                              |
| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Text**             | <img src="https://mintcdn.com/abbyy/lqYknuOmCa79141v/images/flexi-capture/fls/block_text.gif?fit=max&auto=format&n=lqYknuOmCa79141v&q=85&s=2f5f93810c1a248df472ba326e53399e" alt="icône de bloc Text" style={{display:"inline-block",verticalAlign:"middle",margin:0}} width="15" height="15" data-path="images/flexi-capture/fls/block_text.gif" />                                                                                                             | Sert à extraire des données textuelles.                                                                                                                                  |
| **Barcode**          | <img src="https://mintcdn.com/abbyy/lqYknuOmCa79141v/images/flexi-capture/fls/block_barcode.gif?fit=max&auto=format&n=lqYknuOmCa79141v&q=85&s=ebe7e02bd4b709748972b2296c85373b" alt="icône de bloc Barcode" style={{display:"inline-block",verticalAlign:"middle",margin:0}} width="15" height="15" data-path="images/flexi-capture/fls/block_barcode.gif" />                                                                                  | Sert à lire les code-barres.                                                                                                                                             |
| **Checkmark**        | <img src="https://mintcdn.com/abbyy/lqYknuOmCa79141v/images/flexi-capture/fls/block_checkmark.gif?fit=max&auto=format&n=lqYknuOmCa79141v&q=85&s=31c276522c85377d8fab2bd8bf20a188" alt="icône de bloc Checkmark" style={{display:"inline-block",verticalAlign:"middle",margin:0}} width="15" height="15" data-path="images/flexi-capture/fls/block_checkmark.gif" />                                                                | Sert à reconnaître les coches.                                                                                                                                           |
| **Picture**          | <img src="https://mintcdn.com/abbyy/lqYknuOmCa79141v/images/flexi-capture/fls/block_picture.gif?fit=max&auto=format&n=lqYknuOmCa79141v&q=85&s=5ef20c6bac449b68023e5bc9430320ee" alt="icône de bloc Picture" style={{display:"inline-block",verticalAlign:"middle",margin:0}} width="15" height="15" data-path="images/flexi-capture/fls/block_picture.gif" />                                                                                  | Sert à traiter les objets qui n’ont pas été identifiés comme du texte lors de la pré-reconnaissance.                                                                     |
| **Table**            | <img src="https://mintcdn.com/abbyy/lqYknuOmCa79141v/images/flexi-capture/fls/Table_Block.gif?fit=max&auto=format&n=lqYknuOmCa79141v&q=85&s=b587cb447531d0883066fce4033ae88e" alt="icône de bloc Table" style={{display:"inline-block",verticalAlign:"middle",margin:0}} width="15" height="15" data-path="images/flexi-capture/fls/Table_Block.gif" />                                                                                                    | Sert à extraire des données de tableaux.                                                                                                                                 |
| **Group**            | <img src="https://mintcdn.com/abbyy/lqYknuOmCa79141v/images/flexi-capture/fls/block_group.gif?fit=max&auto=format&n=lqYknuOmCa79141v&q=85&s=e765a304f828526d23c03274b2dc059c" alt="icône de bloc Group" style={{display:"inline-block",verticalAlign:"middle",margin:0}} width="15" height="15" data-path="images/flexi-capture/fls/block_group.gif" />                                                                                                    | Sert à regrouper logiquement des blocs.                                                                                                                                  |
| **Checkmark Group**  | <img src="https://mintcdn.com/abbyy/lqYknuOmCa79141v/images/flexi-capture/fls/block_checkmark_group.gif?fit=max&auto=format&n=lqYknuOmCa79141v&q=85&s=a1edbbbc4034740745e9706929c4b9d9" alt="icône de bloc Checkmark Group" style={{display:"inline-block",verticalAlign:"middle",margin:0}} width="15" height="15" data-path="images/flexi-capture/fls/block_checkmark_group.gif" />          | Sert à créer des groupes de coches. Seuls des blocs de coche peuvent être ajoutés à ce type de groupe. Vous ne pouvez ni y créer ni y déplacer des blocs d’autres types. |
| **groupe répétitif** | <img src="https://mintcdn.com/abbyy/lqYknuOmCa79141v/images/flexi-capture/fls/block_repeatable_group.gif?fit=max&auto=format&n=lqYknuOmCa79141v&q=85&s=3dd356ce8d79245d7f86431f6053598a" alt="icône de bloc groupe répétitif" style={{display:"inline-block",verticalAlign:"middle",margin:0}} width="15" height="15" data-path="images/flexi-capture/fls/block_repeatable_group.gif" /> | Sert à créer un groupe répétitif de blocs.                                                                                                                               |
| **Non-Recognized**   | <img src="https://mintcdn.com/abbyy/fmgRWFNHKYN2MLSg/images/flexi-capture/fls/Block_Unrecognizable.gif?fit=max&auto=format&n=fmgRWFNHKYN2MLSg&q=85&s=059acd0b3370c31b337a74ca89a51a70" alt="icône de bloc non reconnaissable" style={{display:"inline-block",verticalAlign:"middle",margin:0}} width="15" height="15" data-path="images/flexi-capture/fls/Block_Unrecognizable.gif" />               | Sert à exclure une zone de la reconnaissance.                                                                                                                            |

L’agrandissement des régions des blocs de texte peut améliorer la qualité de la reconnaissance. Pour agrandir une région, double-cliquez sur l’élément **Blocks** pour ouvrir sa boîte de dialogue **Properties**, puis spécifiez les valeurs verticales et horizontales de la propriété **Blocks result region inflate**.

Les blocs pour lesquels aucune zone d’image n’est définie dans au moins une variante de mise en page comportent un carré vide dans le coin supérieur droit de l’icône : <img src="https://mintcdn.com/abbyy/lqYknuOmCa79141v/images/flexi-capture/fls/block_undef.gif?fit=max&auto=format&n=lqYknuOmCa79141v&q=85&s=f7294febb9ed17bdeb883bf35bc71976" alt="icône de bloc non défini" style={{display:"inline-block",verticalAlign:"middle",margin:0}} width="16" height="15" data-path="images/flexi-capture/fls/block_undef.gif" />.

Si un seul FlexiLayout est sélectionné (via l’élément **Select Layout** du menu contextuel de l’élément, via le même élément dans la section **FlexiLayout**, ou via l’élément **Select Alternative Layout** du menu contextuel du FlexiLayout), le programme vérifie la zone d’image uniquement dans ce FlexiLayout.

<Note>
  Les données des blocs sont extraites dans une application de capture de données telle qu’ABBYY FlexiCapture.
</Note>

<div id="block-properties">
  ## Propriétés du bloc
</div>

Un bloc possède les propriétés suivantes :

| Propriété                        | Description                                                                                                                                                                                                                                                                                               |
| -------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Nom**                          | Nom du bloc. Il peut contenir des lettres (caractères romains, caractères romains avec diacritiques, caractères cyrilliques), des chiffres et des caractères de soulignement. Il doit commencer par une lettre ou un caractère de soulignement et ne doit pas contenir d'espaces ni de symboles spéciaux. |
| **Type**                         | Type du bloc, sélectionné lors de sa création. Il doit correspondre au type du ou des objets situés dans la zone délimitée par le bloc.                                                                                                                                                                   |
| **Commentaire**                  | Commentaire facultatif fourni par l'utilisateur.                                                                                                                                                                                                                                                          |
| **Avoir des instances répétées** | Indique que le bloc se compose de plusieurs instances. Sélectionnez cette propriété si, par exemple, toutes les instances d'un élément de [groupe répétitif](/fr/flexi-capture/fls/template/repeatable-group) sont utilisées comme région du bloc.                                                        |
| **Ordre de tri des instances**   | Définit l'ordre dans lequel les instances du groupe sont réunies en un bloc. Disponible uniquement lorsque **Avoir des instances répétées** est sélectionné.                                                                                                                                              |

La propriété **Ordre de tri des instances** possède les valeurs suivantes :

| Ordre de tri                  | Comportement                                                                                                                              |
| ----------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- |
| **De haut en bas**            | Réunit les instances en un bloc selon leur position dans l'image, de haut en bas.                                                         |
| **De gauche à droite**        | Réunit les instances en un bloc selon leur position dans l'image, de gauche à droite.                                                     |
| **De droite à gauche**        | Réunit les instances en un bloc selon leur position dans l'image, de droite à gauche.                                                     |
| **Dans l'ordre de détection** | Réunit les instances en un bloc dans l'ordre de génération des hypothèses. Les hypothèses sont générées par ordre décroissant de qualité. |

Avec **Dans l'ordre de détection**, si vous spécifiez des conditions supplémentaires pour les instances, les hypothèses sont générées dans l'ordre défini par l'utilisateur. Si vous avez besoin d'un ordre différent de l'ordre standard utilisé par le programme, vous pouvez le spécifier au moyen de conditions supplémentaires.

Les propriétés suivantes spécifient la zone de l'image à partir de laquelle les données doivent être extraites.

<div id="for-layout">
  ### Pour la mise en page
</div>

Sélectionne la variante de mise en page dans laquelle la zone de recherche est spécifiée.

<div id="source-element">
  ### Élément source
</div>

Spécifie une zone de l’image identique à la région de l’élément utilisé pour trouver le bloc sur l’image. Lorsque le FlexiLayout est appliqué à l’image, le programme recherche le ou les objets décrits par l’élément. Les données sont extraites de ces objets.

Pour un groupe répétitif, vous pouvez sélectionner soit l’une des instances, soit toutes les instances (`AllInstances`). Pour plus d’informations, voir [Utiliser des instances d’un groupe répétitif comme éléments de référence, exclus ou source](/fr/flexi-capture/fls/template/select-repeatable-group).

<div id="expression">
  ### Expression
</div>

Définit une zone sur l’image qui ne coïncide avec aucune région d’élément.

Par exemple, vous pouvez fusionner en un seul bloc les régions de certains éléments ainsi que l’espace entre elles, agrandir la région d’un élément d’une certaine valeur ou spécifier les coordonnées du bloc sans vous appuyer sur des éléments. Dans ce cas, la région du bloc peut être décrite dans le [langage FlexiLayout](/fr/flexi-capture/fls/code/general-code).

<Note>
  La région d’un bloc est continue. Cela signifie que si vous créez une région à partir de rectangles disjoints, les espaces entre eux sont remplis par de fins rectangles supplémentaires afin de rendre la région continue.
</Note>

Cependant, un bloc peut se composer de plusieurs régions si toutes les instances d’un groupe répétitif sont utilisées comme élément de référence. La région d’un bloc de groupe est calculée à partir des régions des blocs enfants, tout comme la région des hypothèses. La région résultante est légèrement agrandie pour un meilleur affichage.

<div id="parameters-of-group-and-repeating-group-blocks">
  ### Paramètres des blocs de type groupe et groupe répétitif
</div>

Un groupe de coches et un groupe de blocs ordinaire n’ont pas d’autres paramètres que **Name** et **Comment**.

Les paramètres d’un groupe répétitif de blocs sont les mêmes que ceux des blocs non groupés. L’option **Avoir des instances répétées** est toujours activée pour ces blocs.

Les blocs enfants peuvent avoir ou non l’option **Avoir des instances répétées**, mais une variable `OutputInstances` est toujours créée pour eux. Si un bloc à l’intérieur d’un groupe répétitif de blocs possède l’option **Avoir des instances répétées**, cela signifie qu’il peut se répéter au sein de chaque instance du bloc parent.

<div id="specify-a-block-region-using-instances-of-a-repeating-group">
  ### Spécifier une région de bloc à l’aide d’instances d’un groupe répétitif
</div>

Si un bloc est défini à l’aide de plusieurs instances, la région de bloc se compose de plusieurs régions distinctes. Si vous utilisez une instance particulière d’un groupe répétitif (par exemple, `LastFound`), la région de bloc est définie comme pour n’importe quel autre élément.

Vous pouvez toutefois utiliser toutes les instances détectées (`AllInstances`). Pour utiliser plusieurs instances, sélectionnez l’option **Avoir des instances répétées**.

Vous pouvez également écrire du code pour le bloc à l’aide de la variable prédéfinie `OutputInstances`. Par exemple :

```text theme={null}
OutputInstances = SearchElements.PageHeader.AllInstances.UnionRect;
```

ABBYY FlexiCapture traite les blocs pour lesquels l’option **Avoir des instances répétées** est activée comme suit :

* Pour les blocs non tabulaires, les instances spécifiées sont celles du champ correspondant.
* Pour un bloc de tableau, les instances spécifiées sont traitées comme une seule instance du champ. Autrement dit, ABBYY FlexiCapture traite un tel bloc comme un champ de type **Table** avec une région discontinue.

<div id="rules-for-creating-references-to-elements-for-repeating-groups-of-blocks">
  ### Règles de création de références à des éléments pour les groupes répétitifs de blocs
</div>

Un groupe répétitif de blocs fait référence à un [élément répétitif](/fr/flexi-capture/fls/template/repeatable-group). Pour créer des instances d’un groupe répétitif de blocs, plusieurs instances d’éléments sont nécessaires. Par conséquent, l’un des ID doit être `AllInstances`.

Comme les éléments imbriqués sous l’élément avec `AllInstances` ne peuvent pas avoir d’autres ID, cette condition signifie également que l’élément répétitif le plus bas a `AllInstances`.

Les blocs enfants d’un groupe répétitif de blocs font référence aux éléments enfants du groupe répétitif d’éléments auquel le bloc parent fait référence. La référence doit avoir le même ID pour les instances.

Par exemple, si un bloc de groupe répétitif a la référence `SearchElements..RepGr1.Instance(1).RepGr2.AllInstances`, ses blocs enfants peuvent faire référence à l’élément `RepGr1..RepGr2.Element` uniquement de la manière suivante :

```text theme={null}
SearchElements.RepGr1.Instance(1).RepGr2.AllInstances.Element
```

S’il n’y a pas d’attribut `HasRepeatingInstances`, vous pouvez uniquement faire référence aux sous-éléments du Group de base qui ne contiennent pas de répétitions, et réciproquement.

S’il y a un attribut `HasRepeatingInstances`, vous pouvez faire référence aux éléments qui contiennent des répétitions dans le Group de base (et vous pouvez uniquement faire référence à toutes les instances à la fois).

```text With a HasRepeatingInstances attribute theme={null}
SearchElements.RepGr1.Instance(1).RepGr2.AllInstances.RepGr3.AllInstances.Element
SearchElements.RepGr1.Instance(1).RepGr2.AllInstances.RepGr3.AllInstances.RepGr4.AllInstances.Element
```

```text Without a HasRepeatingInstances attribute theme={null}
SearchElements.RepGr1.Instance(1).RepGr2.AllInstances.Gr3.SubElement(où Gr3 est un groupe simple)
SearchElements.RepGr1.Instance(1).RepGr2.AllInstances.SubElement
```

<Note>
  Si des références sont créées via **élément source**, la vérification est effectuée au moment de la création du FlexiLayout. Si des références sont créées à l’aide du code Advanced, une erreur est détectée lors de la mise en correspondance du FlexiLayout.
</Note>

<div id="describe-a-block-region-with-the-flexilayout-language">
  ### Décrire la région d’un bloc avec le langage FlexiLayout
</div>

Pour spécifier la région d’un bloc, utilisez le champ **Expression**.

La variable prédéfinie utilisée dépend du type de bloc et du fait que l’option **Avoir des instances répétées** soit sélectionnée pour ce bloc :

| Variable          | Type                                                |
| ----------------- | --------------------------------------------------- |
| `OutputRegion`    | `Region`                                            |
| `OutputTable`     | `TableHypothesis`                                   |
| `OutputInstances` | `HypothesisInstances` ou `TableHypothesisInstances` |

Pour plus d’informations sur les variables prédéfinies pouvant être utilisées dans le champ **Expression**, consultez [Variables prédéfinies](/fr/flexi-capture/fls/language/predefined-variables).

| Tâche                                                                                                                                       | Exemple de code                                                                                                                                |
| ------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |
| Obtenir et dilater la région d’un élément de 3 mm en largeur et de 5 mm en longueur                                                         | `OutputRegion = SomeElement.Rect;   OutputRegion.Inflate( 3*mm, 5*mm );`                                                                       |
| Fusionner les rectangles de région de deux éléments et obtenir le rectangle qui circonscrit les rectangles fusionnés                        | `Rect outputRect;   outputRect = Element1.Rect Or Element2.Rect;   OutputRegion = outputRect;`                                                 |
| Fusionner en une seule région les rectangles qui circonscrivent les régions de deux éléments                                                | `RectArray outputRects;   outputRects = RectArray( Element1.Rect );   outputRects.Add: Element2.Rect;   OutputRegion = Region( outputRects );` |
| Fusionner en une seule région les régions des objets correspondant à deux éléments différents                                               | `RectArray outputRects;   outputRects = Element1.Rects;   outputRects.Add( Element2.Rects );   OutputRegion = outputRects.Region;`             |
| Fusionner les régions des objets appartenant à la région de `Element1` et supprimer celles des objets appartenant à la région de `Element2` | `OutputRegion = FormRegion( Element1.Rects, Element2.Rects );`                                                                                 |
| Utiliser un élément **Table** pour spécifier un bloc **Table**                                                                              | `OutputTable = SearchElements.TableElement;`                                                                                                   |
| Utiliser les instances d’hypothèses d’un élément donné pour spécifier un bloc **Table**                                                     | `OutputInstances = SearchElements.RepeatingGroup.AllInstances.TemplateElement;`                                                                |

<div id="use-the-isnull-variable">
  ## Utiliser la variable IsNull
</div>

Vous pouvez également utiliser une variable prédéfinie, `IsNull`, pour décrire la région d’un bloc. Cette variable indique si la région du bloc a été trouvée lors de la mise en correspondance du FlexiLayout. La valeur `false` signifie que la région a été trouvée. La valeur `true` signifie qu’elle n’a pas été trouvée.

La variable `IsNull` est initialisée avec la valeur `false` ; la région du bloc est donc considérée comme trouvée. Cependant, il peut parfois être nécessaire de vérifier certaines conditions avant de parvenir à une conclusion.

Pour indiquer au programme de considérer la région du bloc comme trouvée si la largeur de la région de l’élément source dépasse 50 dots, saisissez le code suivant dans le champ **Expression de région** :

```text theme={null}
if Element1.Width < 50dt then IsNull = true;
```

Pour indiquer au programme de considérer la région du bloc comme trouvée uniquement si `Element1` a été trouvé, saisissez le code suivant dans le champ **Expression de région** :

```text theme={null}
IsNull = Element1.IsNull
```

Supposons que vous deviez utiliser `Element1` et `Element2` pour rechercher un bloc. Si au moins un des éléments n’a pas été trouvé, le bloc est considéré comme non trouvé :

```text theme={null}
Rect outputRect;
Let FieldLeft = Element1.Rect.Left;
Let FieldRight = Element2.Rect.Right;
Let FieldTop = Element1.Rect.Top;
Let FieldBottom = Element2.Rect.Bottom;
outputRect = Rect( FieldLeft, FieldTop, FieldRight, FieldBottom);
if ((Element1.IsNull == True) or (Element2.IsNull == True) ) then {IsNull = true;}
OutputRegion = outputRect;
```

<Note>
  Ce code ne fonctionnera correctement que si la zone de recherche de `Element1` se situe au-dessus et à gauche de la zone de recherche de `Element2`.

  Dans l’exemple précédent, la vérification de cette condition n’est pas incluse par souci de simplicité. Dans le code réel, cette vérification est nécessaire et les valeurs des variables `FieldLeft`, `FieldRight`, `FieldTop` et `FieldBottom` doivent être ajustées. Sinon, l’appel de la fonction `Rect` renverra une erreur.
</Note>
