Il peut parfois être nécessaire de créer un FlexiLayout pour rechercher des champs que l’on trouve généralement dans des documents traditionnels à mise en page fixe. Par exemple, vous pouvez avoir besoin de décrire un champ dans lequel des lettres doivent être saisies dans de petites cases. Un exemple typique serait celui d’une entreprise qui collecte des documents auprès de ses bureaux régionaux. Même si les documents sont censés avoir le même aspect, il peut exister de légères différences de mise en page d’un bureau régional à l’autre, ce qui signifie qu’ils ne peuvent pas être traités à l’aide d’une seule Document Definition « rigide ». Dans ce cas, un seul FlexiLayout peut être préférable à plusieurs Document Definitions « rigides » légèrement différentes.
Si les champs de données recherchés sur le document sont de type « lettres encadrées » ou « lettres encadrées séparées », une recherche des limites de ces champs à l’aide de séparateurs peut être très compliquée, et la description des éléments peut devenir lourde, en particulier si les noms de ces champs ne sont pas disponibles ou sont reconnus de façon incertaine. De plus, il est très important que le bloc contienne non seulement ces champs, mais aussi le cadre complet. Si les lignes de séparation sont fines, elles peuvent parfois être mal imprimées ou perdues lors de la numérisation. Dans ce cas, il est recommandé de rechercher les limites à l’aide d’éléments White Gap. Les limites de ce type de champ sont décrites dans le langage FlexiLayout spécial, dans le champ Expression de la boîte de dialogue Properties du bloc. Vous pouvez décrire la limite supérieure du champ comme le bas du White Gap supérieur, la limite inférieure comme le haut du White Gap inférieur, la limite droite du champ comme la limite gauche du White Gap droit, et la limite gauche du champ comme la limite droite du White Gap gauche.
Un projet FlexiLayout Studio contenant des images de test et un FlexiLayout validé se trouve dans %public%\ABBYY\FlexiCapture\12.0\Samples\FLS\Tips and Tricks.
Exemple
Supposons que les 4 espaces (LeftGapName, RightGapName, TopGapName, BottomGapName) nécessaires pour décrire formellement l’emplacement du champ de données dans l’image aient été trouvés.
Le code du champ Expression se présentera alors comme suit :
Rect outputRect;
Let FieldLeft = LeftGapName.Rect.Right;
Let FieldRight = RightGapName.Rect.Left;
Let FieldTop = TopGapName.Rect.Bottom;
Let FieldBottom = BottomGapName.Rect.Top;
outputRect = Rect(FieldLeft, FieldTop, FieldRight, FieldBottom);
OutputRegion = outputRect;
Au lieu de “LeftGapName”, “RightGapName”, “TopGapName” et “BottomGapName”, vous devez indiquer les noms des éléments White Gap correspondants. Si nécessaire, vous pouvez augmenter la largeur et la hauteur du champ à l’aide de l’option Inflate.
Si les champs de données recherchés sur le document sont des champs multilignes avec un marquage de type « lettres encadrées » ou « lettres encadrées séparées », et que les lignes ne sont pas séparées les unes des autres par des espaces, vous devez alors rechercher les limites supérieure, inférieure, droite et gauche à l’aide d’éléments White Gap. La recherche des lignes individuelles doit ensuite être spécifiée par un algorithme spécial dans le champ Expression. Dans l’exemple donné, la hauteur de chaque ligne individuelle peut être calculée en divisant la hauteur du champ entier par 2.
