Passer au contenu principal
Une hypothèse pour un élément peut être trouvée ou non. En règle générale, une hypothèse trouvée est formulée à partir d’un ou plusieurs objets d’image ou de leurs fragments (à l’exception de l’élément White Gap, qui peut ne contenir aucun objet d’image). Une hypothèse trouvée pour un élément simple est toujours une Region continue. Les hypothèses des éléments White Gap, Separator et Barcode sont toujours des rectangles uniques. Si une hypothèse est formulée à partir d’un jeu d’objets d’image détectés, par exemple une hypothèse pour un élément Paragraph, la Region de l’hypothèse est construite à partir du tableau de rectangles des objets détectés. La Region créée de cette manière peut être obtenue à l’aide de la méthode Region de l’hypothèse. Lors de l’affichage de la Region de l’hypothèse sur l’image, ou lors de la création d’un bloc à partir de l’hypothèse, les limites de la Region ne suivent pas exactement celles de chaque rectangle. À la place, les limites de la zone de recherche sont lissées pour améliorer la visualisation. Une Region créée de cette manière peut être obtenue à l’aide de la méthode SimplifiedRegion de l’hypothèse. Les méthodes Region et SimplifiedRegion peuvent être utilisées soit dans le champ Advanced pre-search relations de l’onglet Advanced (lors de la définition de la zone de recherche de l’élément), soit dans le champ Region expression lors de la définition des propriétés du bloc et de l’utilisation des éléments déjà trouvés. Si une hypothèse n’a pas été trouvée, elle coïncide avec le rectangle flou de sa zone de recherche. Lors de l’affichage d’une hypothèse non trouvée sur l’image, le programme dessine le rectangle externe du rectangle flou. Les limites Left, top, Right et Bottom de toute hypothèse sont des plages. Pour chaque hypothèse trouvée, la plage se réduit à un point, c’est-à-dire Left.Start = Left.End, top.Start = top.End, etc. Pour une hypothèse non trouvée, les plages des limites coïncident avec celles de sa zone de recherche. L’accès aux hypothèses générées et à leurs propriétés dans le code des boîtes de dialogue correspondantes des blocs et des éléments fournit des outils supplémentaires pour configurer FlexiLayout. Les hypothèses d’élément sont accessibles par le nom des éléments. Pour accéder à une hypothèse de l’élément actuel dans le champ Advanced post-search relations, vous pouvez utiliser uniquement le nom de la propriété. Les hypothèses et leurs propriétés sont accessibles en mode lecture seule. Les hypothèses des éléments sont accessibles dans les champs Advanced pre-search relations et Advanced post-search relations de l’onglet Advanced de la boîte de dialogue Properties de l’élément, ainsi que dans le champ Region expression de la boîte de dialogue Properties du bloc. Dans Advanced pre-search relations, vous pouvez accéder aux hypothèses générées (et à leurs propriétés) pour tous les éléments situés au-dessus de l’élément actuel dans l’arborescence FlexiLayout. Dans Advanced post-search relations, vous pouvez accéder aux hypothèses générées pour les éléments situés au-dessus de l’élément actuel dans l’arborescence FlexiLayout, ainsi qu’à l’hypothèse de l’élément actuel lui-même. Dans Region expression, vous pouvez accéder aux hypothèses (et à leurs propriétés) pour tous les éléments. Le tableau ci-dessous répertorie les propriétés des hypothèses pour tous les types d’éléments.

Logic IsNull()

Indique s’il s’agit d’une hypothèse nulle (si l’élément a été détecté, la propriété IsNull de l’hypothèse est True).

Logic IsFound()

Indique si l’hypothèse n’est pas nulle (si l’élément n’a pas été détecté, la propriété IsNull de l’hypothèse est False). Équivalent à IsNull.

XInterval Left()

La limite gauche de l’hypothèse, plage horizontale en coordonnées globales.

YInterval top()

La limite supérieure de l’hypothèse, plage verticale en coordonnées globales.

XInterval Right()

La limite droite de l’hypothèse, plage horizontale en coordonnées globales.

YInterval Bottom()

La limite inférieure de l’hypothèse, plage verticale en coordonnées globales.

XInterval XCenter()

La coordonnée X du centre des hypothèses, plage horizontale en coordonnées globales.

YInterval YCenter()

La coordonnée Y du centre des hypothèses, plage verticale en coordonnées globales.

DistInterval Width()

La largeur de l’hypothèse en coordonnées globales, plage de distances.

DistInterval Height()

La hauteur de l’hypothèse en coordonnées globales, plage de distances.

FuzzyRect FuzzyRect()

Le rectangle flou de l’hypothèse en coordonnées globales.

Rect Rect()

Le rectangle circonscrivant l’hypothèse en coordonnées globales. Il coïncide avec le rectangle externe du rectangle flou.

Region Region()

La Region de l’hypothèse en coordonnées globales. La méthode n’est pas prise en charge pour les éléments Group.

Region SimplifiedRegion()

La Region de l’hypothèse en coordonnées globales, simplifiée pour une meilleure représentation visuelle. La méthode n’est pas prise en charge pour les éléments Group.

ImageObjectSet Set()

Les objets d’image qui font partie de l’hypothèse.

ImageObjectSet ExcludeSet()

Les objets d’image qui se trouvent dans la région exclue de la zone de recherche par des méthodes de type Exclude.

RectArray Rects()

Le tableau des rectangles inclus dans l’hypothèse. Pour la plupart des éléments, il coïncide avec le tableau des rectangles englobant les objets détectés. Pour les éléments White Gap et Region, aucun objet n’est disponible.

Int HypothesesCount()

Le nombre d’hypothèses pouvant être formulées pour l’élément dans la zone de recherche.

Important ! La fonction ne peut être utilisée que si le nombre maximal et le nombre minimal de pages du document sont définis sur 1, c’est-à-dire que le document détecté ne comporte qu’une seule page. Si vous utilisez cette fonction pour un document multipage, la mise en correspondance d’un FlexiLayout renverra une erreur.

PageInterval Pages()

La plage de pages sur lesquelles l’hypothèse peut être trouvée.

PageArea PageAreaGlobal( Int PageNumber )

Renvoie la partie de l’hypothèse située sur la page spécifiée en coordonnées globales.

PageArea PageAreaLocal( Int PageNumber )

Renvoie la partie de l’hypothèse située sur la page spécifiée dans le système de coordonnées local de la page.

Avant d’accéder aux propriétés d’une hypothèse pour un élément simple ou Group, assurez-vous que l’hypothèse à laquelle vous voulez accéder n’est pas une hypothèse nulle (appelez sa propriété IsNull). L’accès à une propriété d’une hypothèse nulle (qui correspond à un élément non détecté) provoquera une erreur. Prenons un exemple utilisant le projet de l’exemple 1, disponible sur le CD-ROM du programme.Supposons qu’un identifiant figure sur votre document sous la forme d’un Barcode et que vous souhaitiez que votre FlexiLayout mette en correspondance uniquement les documents dont la valeur du Barcode est 1556897142240. Pour obtenir le résultat souhaité, procédez comme suit. Dans la section Advanced post-search relations de l’élément qui décrit les propriétés et les contraintes de recherche du Barcode (élément IdentityNumber dans l’exemple 1), écrivez le code suivant :if value != “1556897142240” then Quality: 0;Cliquez sur Apply ou Check. Le compilateur ne détectera aucune erreur de syntaxe. Tout porte à croire que le code est correct. Cependant, si vous essayez de mettre en correspondance le FlexiLayout avec n’importe quelle page de l’exemple 1, le message d’erreur suivant s’affichera : ” Erreur dans l’élément “MainGroup.IdentityNumber”, section Relations avancées : tentative d’accès à l’hypothèse non définie MainGroup.IdentityNumber.”La cause de l’erreur est la suivante. Le programme trouve une hypothèse pour l’élément Barcode. Il compare ensuite la valeur du Barcode à celle spécifiée dans le code. Si les valeurs sont différentes, le code Quality: 0; réinitialise la valeur de l’hypothèse à 0. Une hypothèse nulle est alors générée pour cet élément, et le programme vérifie également pour elle la condition value != “1556897142240”. Comme l’accès à la valeur d’une hypothèse nulle n’est pas autorisé (elle ne possède pas cette propriété), le programme génère un message d’erreur “…undefined hypothesis…”.Par conséquent, vous devez ajuster le code comme suit :if not IsNull then { if value != “1556897142240” then Quality: 0; }Remarque. Le code ci-dessus ne fonctionnera que pour un élément obligatoire. Pour un élément facultatif, le code doit être ajusté comme suit :if not IsNull then { if value != “1556897142240” then Quality: 0; } else {Quality: 0;}Sinon, seule la qualité de l’hypothèse réelle sera réinitialisée à 0. Cela amènera le programme à générer une hypothèse nulle, pour laquelle l’instruction “if not IsNull” ne sera pas exécutée. Par conséquent, la qualité de l’hypothèse finale (nulle) restera identique à celle spécifiée dans les propriétés de l’élément (0.97 si la valeur par défaut a été conservée) et le programme continuera la mise en correspondance du FlexiLayout, même en l’absence de l’élément en question.Si vous ajoutez else {Quality: 0;} au code, cette ligne sera exécutée pour toutes les hypothèses (y compris l’hypothèse nulle) et la mise en correspondance du FlexiLayout sera arrêtée, car toute la chaîne d’hypothèses sera également réinitialisée à 0 au niveau de cet élément.
Les méthodes Region Region() et Region SimplifiedRegion() vous permettent d’obtenir la Region d’un élément, mais la méthode Region Region() renvoie la Region exacte :tandis que la méthode Region SimplifiedRegion() renvoie le rectangle créé à partir des coordonnées des limites :