
Tips and tricks
Restreindre la zone de recherche à l’aide de RestrictSearchArea
Utilisez RestrictSearchArea dans FlexiLayout Studio pour définir une zone de recherche sous forme de rectangle, de tableau de rectangles ou de région, et éviter de dupliquer les contraintes d’élément.
La fonction RestrictSearchArea vous permet de spécifier la zone de recherche sous la forme d’un rectangle, d’un tableau de rectangles ou d’une région.
Sur différentes pages du document, le champ recherché se trouve souvent à des positions différentes par rapport à son nom. Par exemple, sur certaines pages, le champ peut se trouver à droite du nom, tandis que sur d’autres, il peut se trouver en dessous. Dans ce cas, il est conseillé de spécifier la zone de recherche sous la forme d’un tableau de rectangles. Voir Using Nearest and FuzzyQuality to look for elements pour en savoir plus sur l’utilisation de la fonction RestrictSearchArea dans ce type de situation.
Il peut également être judicieux d’utiliser la fonction RestrictSearchArea au lieu de dupliquer des contraintes de recherche identiques pour plusieurs éléments.
Utilisez cette fonction pour décrire la zone de recherche du champ de date ou de tout autre champ lorsque, pour une raison quelconque (par exemple une faible qualité d’image ou des particularités de mise en page), l’utilisation d’un élément d’un seul type ne suffit pas.
Voyons comment la fonction RestrictSearchArea peut être utilisée pour rechercher un champ de date. Il est généralement recommandé de rechercher des champs de date à l’aide d’au moins deux types d’éléments : Date et Character String. Mais si la qualité de l’image est très faible, ces deux éléments peuvent ne pas suffire. Voir Detecting dates in the case of low quality pre-recognition pour plus de détails sur la manière d’organiser une recherche de champs de date.
Voyons cette fonction en action en exécutant le projet d’exemple SearchOfDate.fsp (dossier %public%\ABBYY\FlexiCapture\12.0\Samples\FLS\Tips and Tricks\RestrictSearchArea). Ce projet est en fait une copie du projet du même nom situé dans le dossier de projet Date\FCS. Les contraintes de recherche de tous ses éléments (DateField, DateAsString et DateAsObjectCollection) étaient identiques et se présentaient comme sur la figure ci-dessous.

Mais dans le projet actuel, au lieu de dupliquer les contraintes de recherche dans l’onglet Relations pour les éléments DateAsString et DateAsObjectCollection, nous utilisons la fonction RestrictSearchArea en écrivant le code suivant dans le champ Relations avancées avant recherche de l’onglet Advanced :
if (DateField.IsNull == FALSE) then Dontfind();
else RestrictSearchArea (DateField.Rect);
Ce code signifie que la recherche du champ de date sous forme de string ou d’Object Collection ne sera tentée que si le programme ne parvient pas à le détecter au moyen de l’élément Date. Les deux éléments seront alors recherchés précisément dans la zone où l’élément DateField n’a pas été détecté. Cela s’explique par le fait que la méthode DateField.Rect renvoie le rectangle englobant l’hypothèse de l’élément DateField. Puisque l’hypothèse n’a pas été trouvée, le rectangle englobant coïncidera avec la zone de recherche. Par conséquent, nous spécifions pour les éléments DateAsString et DateAsObjectCollection une zone de recherche qui coïncide avec le rectangle englobant la zone de recherche de l’élément DateField non détecté.

Recherche d’éléments Static Text sur une seule ligne
Précédent
Recherche de champs sur une seule ligne de format connu ou inconnu dans des documents de qualité OCR variable
Suivant
