Comment la fonction Exclude supprime des Regions d’une zone de recherche
La fonctionExclude exclut une Region de la zone de recherche d’un élément. La Region à exclure est spécifiée lors de l’appel de la fonction.
La Region exclue peut être l’une des suivantes :
- La Region d’une hypothèse (détectée ou non)
- Un rectangle ou un array de rectangles des éléments trouvés
- Une Region construite à partir des Regions d’objets faisant partie d’une hypothèse trouvée (voir la method
ExcludeSet)

Le projet d’exemple Exclude.fsp
Le projet Exclude.fsp (dossier %public%\ABBYY\FlexiCapture\12.0\Samples\FLS\Tips and Tricks\Exclude) montre comment fonctionne la fonction Exclude.
Le projet comporte quatre pages :
- Page 1 – Le champ d’adresse est écrit sur plusieurs lignes. Le nom Address: se trouve sur la première ligne ; nous ne pouvons donc pas dire que le champ de données recherché se trouve à droite ou en dessous du libellé du champ. Cependant, ce nom doit tout de même être exclu de la reconnaissance.
- Page 2 – Le champ d’adresse n’a pas de nom.
- Pages 3 and 4 – La ligne (Address) se trouve à l’intérieur du champ de données. Cependant, elle doit être exclue de la reconnaissance.
Créer des éléments pour les libellés des champs et le champ d’adresse
Commencez par créer un élément Static Text, nommez-le CompanyHeader et spécifiez sa valeur. Cet élément sert à détecter le libellé du champ. Ensuite, créez un élément Static Text et nommez-le AddressHeader. Cet élément sert à détecter le libellé du champ. Spécifiez les valeurs de texte statique suivantes : Address:|(Address), c’est-à-dire répertoriez toutes les variantes de cette ligne qui doivent être détectées, puis exclues de la reconnaissance dans le champ d’adresse. Décrivez les contraintes de recherche pour ces lignes dans le champ Relations et indiquez qu’elles doivent être recherchées sous (Below) l’élément CompanyHeader.L’élément du nom doit être créé avant l’élément du champ d’adresse, car la fonction
Exclude permet uniquement de faire référence à des éléments situés plus haut dans l’arborescence FlexiLayout que l’élément actif.
Exclure le libellé du champ de la zone de recherche de l’élément Address
Revenez maintenant à la boîte de dialogue Propriétés de l’élément Address et cliquez sur l’onglet Contraintes de recherche. Cliquez sur Ajouter… à côté de la section Exclure les Regions des éléments et choisissez l’élément AddressHeader dans la liste.
Après avoir enregistré les propriétés de l’élément, exécutez de nouveau la procédure de mise en correspondance FlexiLayout. Vous verrez que la Region du bloc correspondant au champ d’adresse prend une forme non rectangulaire, car la Region du libellé du champ en a été découpée.

La section Exclure les Regions des éléments vous permet d’exclure de la zone de recherche de l’élément actif la Region d’une hypothèse trouvée pour un autre élément. Pour exclure une zone géométriquement plus complexe, ou pour détecter d’abord une Region puis l’exclure du processus de reconnaissance, utilisez les fonctions
Exclude, ExcludeRect et ExcludeSet dans le champ relations avancées de pré-recherche.Par définition, la Region d’un bloc se compose de rectangles superposés ; par conséquent, toute ligne horizontale ne peut traverser la Region qu’une seule fois, c’est-à-dire qu’il ne peut pas y avoir de « dents » verticales saillantes.Par conséquent, si la ligne à exclure et les informations requises se trouvent au même niveau, ou à peu près, le libellé du champ ne peut pas être exclu au stade de la création du FlexiLayout. Dans ce cas, le nom peut être exclu après la reconnaissance dans FlexiCapture à l’aide de la règle « Substitute from the list ».


