Passer au contenu principal
Une hypothèse pour un élément peut être soit trouvée, soit non trouvée. En règle générale, une hypothèse trouvée est formulée à partir d’un ou de 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 région continue. Les hypothèses pour les éléments White Gap, Separator et Barcode sont toujours des rectangles uniques. Si une hypothèse est formulée à partir d’un ensemble d’objets d’image détectés, par exemple pour un élément Paragraph, la région de l’hypothèse est construite à partir du tableau de rectangles des objets détectés. La région ainsi créée peut être obtenue via la méthode Region de l’hypothèse. Lors de l’affichage de la région de l’hypothèse sur l’image, ou lors de la création d’un bloc sur la base de l’hypothèse, les limites de la région ne suivent pas exactement celles de chaque rectangle. À la place, les limites de la zone de recherche sont lissées pour une meilleure visualisation. Une région 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 la section Search Conditions (pour décrire la zone de recherche de l’élément), soit pour décrire les propriétés du bloc en s’appuyant sur les é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 dégénère en un point, c.-à-d. 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 le FlexiLayout. Les hypothèses d’élément sont accessibles par les noms des éléments. Pour accéder à une hypothèse de l’élément actuel dans la section Hypotheses Evaluation, 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 pour les éléments peuvent être consultées dans les sections Search Conditions et Hypotheses Evaluation ainsi que dans la section Code Editor du champ. Dans Search Conditions, 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 Elements. Dans Hypotheses Evaluation, 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 Elements et à l’hypothèse de l’élément actuel lui-même. Dans le Code Editor du champ, vous pouvez accéder aux hypothèses (et à leurs propriétés) pour tous les éléments. Le tableau ci-dessous dresse la liste des propriétés des hypothèses pour tous les types d’élément.
PropriétéDescription
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 que 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 de l’hypothèse, plage horizontale en coordonnées globales.
YInterval YCenter()La coordonnée Y du centre de l’hypothèse, 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()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 région de l’hypothèse en coordonnées globales. Méthode non prise en charge pour les éléments Group.
Region SimplifiedRegion()La région de l’hypothèse en coordonnées globales, simplifiée pour une meilleure représentation visuelle. Méthode non 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 situés 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. La fonction ne peut être utilisée que si les nombres maximal et minimal de pages du document sont définis sur 1, c’est‑à‑dire si le document détecté ne comporte qu’une seule page. Si vous utilisez cette fonction pour un document multipage, l’appariement d’un FlexiLayout renverra une erreur.
PageInterval Pages()L’intervalle de pages où l’hypothèse doit être recherchée.
PageArea PageAreaGlobal( Int PageNumber )Renvoie la partie de l’hypothèse située sur la page donnée en coordonnées globales.
PageArea PageAreaLocal( Int PageNumber )Renvoie la partie de l’hypothèse située sur la page donnée en coordonnées locales de la page.

Exemple de code pour appeler les propriétés d’une hypothèse

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 visée n’est pas 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. Supposons qu’il y ait un identifiant sur votre document sous la forme d’un code-barres et que vous souhaitiez que votre FlexiLayout ne fasse correspondre que les documents pour lesquels la valeur du code-barres est 1556897142240. Procédez comme suit pour obtenir le résultat souhaité. Dans la section Hypotheses Evaluation de l’élément qui décrit les propriétés et les contraintes de recherche du code-barres, écrivez le code suivant :
if value != "1556897142240" then Quality: 0;
Cliquez sur Apply ou Check Code. Le compilateur ne détectera aucune erreur de syntaxe. Le code semble correct. Toutefois, si vous essayez d’associer le FlexiLayout à une Page de l’échantillon 1, le message d’erreur suivant s’affichera : « Error in element “MainGroup.IdentityNumber”, Advanced relations section: Attempt to access undefined hypothesis MainGroup.IdentityNumber. » La cause de l’erreur est la suivante. Le programme trouve une hypothèse pour l’élément code-barres. Il compare ensuite la valeur du code-barres à celle indiquée dans le code. Si les valeurs diffèrent, l’instruction 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, pour laquelle le programme vérifie également 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 affiche 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;
}
Le code ci-dessus ne fonctionne que pour un élément obligatoire. Pour un élément facultatif, ajustez le code 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 le « if not IsNull » ne sera pas exécuté. 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 à faire correspondre le FlexiLayout, même sans l’élément en question. Si vous ajoutez else {Quality: 0;} au code, l’instruction 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 la chaîne complète d’hypothèses sera également réinitialisée à 0 à cet élément.

Méthodes Region Region() et Region SimplifiedRegion() comparées

Les méthodes Region Region() et Region SimplifiedRegion() permettent d’obtenir la région d’un élément. La méthode Region Region() renvoie la région exacte, tandis que la méthode Region SimplifiedRegion() renvoie le Rectangle construit à partir des coordonnées de la limite.