Skip to main content
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.

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 Barcode et que vous souhaitiez que votre FlexiLayout ne fasse correspondre que les documents pour lesquels la valeur du Barcode est 1556897142240. Procédez comme suit pour obtenir ce résultat. Dans la section Hypotheses Evaluation de l’élément qui décrit les propriétés et les contraintes de recherche du Barcode, écrivez le code suivant :
Cliquez sur Apply ou Check Code. Le compilateur ne détectera aucune erreur de syntaxe. Le code semble correct. Toutefois, si vous essayez la mise en correspondance du FlexiLayout avec 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 Barcode. Il compare ensuite la valeur du Barcode à 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 :
Le code ci-dessus ne fonctionne que pour un élément obligatoire. Pour un élément facultatif, ajustez le code comme suit :
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 la mise en correspondance du 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.

Comparaison des méthodes Region Region() et Region SimplifiedRegion()

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