Skip to main content
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 Icône de bloc d’arborescence dans l’arborescence FlexiLayout.

Types de blocs FlexiLayout

ABBYY FlexiLayout Studio prend en charge les types de blocs suivants : 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 : icône de bloc non défini. 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.
Les données des blocs sont extraites dans une application de capture de données telle qu’ABBYY FlexiCapture.

Propriétés du bloc

Un bloc possède les propriétés suivantes : La propriété Ordre de tri des instances possède les valeurs suivantes : 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.

Pour la mise en page

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

Élément source

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.

Expression

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

Paramètres des blocs de type groupe et groupe répétitif

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.

Spécifier une région de bloc à l’aide d’instances d’un groupe répétitif

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

Règles de création de références à des éléments pour les groupes répétitifs de blocs

Un groupe répétitif de blocs fait référence à un élément répétitif. 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 :
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).
With a HasRepeatingInstances attribute
Without a HasRepeatingInstances attribute
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.

Décrire la région d’un bloc avec le langage FlexiLayout

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 : Pour plus d’informations sur les variables prédéfinies pouvant être utilisées dans le champ Expression, consultez Variables prédéfinies.

Utiliser la variable IsNull

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 :
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 :
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é :
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.