Skip to main content
Lors de la création d’un FlexiLayout, vous ne pouvez pas toujours définir les zones de recherche uniquement en fonction de la position relative, par exemple au-dessus, en dessous, à gauche ou à droite d’un autre objet. C’est particulièrement vrai lorsque la zone de recherche contient des objets indésirables, par exemple des objets qui ont pu être introduits lors de la numérisation. Ces objets ne doivent pas être inclus dans le bloc de reconnaissance ; ils doivent donc être exclus lors de la création de l’élément correspondant. Le champ d’adresse dans les figures suivantes en est un bon exemple. Notez la position relative des libellés du champ Address: et (Address) (qui doivent être exclus de la reconnaissance) et de l’adresse elle-même (qui doit être reconnue).

Comment la fonction Exclude supprime des Regions d’une zone de recherche

La fonction Exclude 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)
Schéma de deux exemples de champs d’adresse montrant les noms de champ Company, Address et (Address) à côté du texte de l’adresse qui doit être reconnu.

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.
Sur toutes les pages, le champ d’adresse se trouve sous le champ contenant le nom de l’entreprise.

Créer des éléments pour les noms 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 actuel.
Lancez la procédure de mise en correspondance FlexiLayout (Associer FlexiLayout) pour vous assurer que le libellé de l’adresse est trouvé sur toutes les pages où il apparaît. Comme le champ d’adresse de cet exemple comporte plusieurs lignes, créez un élément Paragraph pour le rechercher. Nommez-le Address et, comme dans l’exemple précédent, indiquez qu’il doit être recherché sous (Below) l’élément CompanyHeader. Une fois la procédure de mise en correspondance FlexiLayout exécutée, vous verrez que, sur les pages 1, 3 et 4, la ligne contenant le libellé a également été incluse dans le champ d’adresse.
Capture d’écran des résultats de la mise en correspondance FlexiLayout dans ABBYY FlexiLayout Studio pour le projet Exclude.fsp, montrant que le libellé du champ d’adresse est incorrectement inclus dans le champ Address détecté sur les pages 1, 3 et 4.

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.
Capture d’écran des résultats de la mise en correspondance de FlexiLayout dans ABBYY FlexiLayout Studio après exclusion de la Region AddressHeader, montrant le bloc d’adresse prenant une forme non rectangulaire parce que le nom du champ en a été découpé.
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 ».