Skip to main content
Eine Hypothese für ein Element kann entweder gefunden oder nicht gefunden sein. Eine gefundene Hypothese wird in der Regel auf der Basis eines oder mehrerer Bildobjekte oder deren Fragmente formuliert (eine Ausnahme ist das Element White Gap, das möglicherweise überhaupt keine Bildobjekte enthält). Eine gefundene Hypothese für ein einfaches Element ist stets eine zusammenhängende Region. Hypothesen für die Elemente White Gap, Separator und Barcode sind immer einzelne Rechtecke. Wenn eine Hypothese auf der Basis einer Menge erkannter Bildobjekte formuliert wird, z. B. eine Hypothese für ein Paragraph-Element, wird die Region der Hypothese anhand des Arrays der Rechtecke der erkannten Objekte aufgebaut. Die auf diese Weise erstellte Region kann über die Methode Region der Hypothese abgerufen werden. Beim Anzeigen der Region der Hypothese im Bild oder beim Erstellen eines Blocks auf Grundlage der Hypothese folgen die Grenzen der Region nicht exakt den Begrenzungen jedes Rechtecks. Stattdessen werden die Grenzen des Suchbereichs zur besseren Visualisierung geglättet. Eine so erstellte Region kann über die Methode SimplifiedRegion der Hypothese abgerufen werden. Die Methoden Region und SimplifiedRegion können entweder im Abschnitt Search Conditions (bei der Beschreibung des Suchbereichs des Elements) oder bei der Beschreibung der Blockeigenschaften und der Verwendung der bereits gefundenen Elemente verwendet werden. Wurde eine Hypothese nicht gefunden, fällt sie mit dem Fuzzy-Rechteck ihres Suchbereichs zusammen. Beim Anzeigen einer nicht gefundenen Hypothese im Bild zeichnet das Programm das äußere Rechteck des Fuzzy-Rechtecks. Die linken, oberen, rechten und unteren Grenzen einer Hypothese sind Wertebereiche. Für jede gefundene Hypothese schrumpft der Bereich zu einem Punkt, d. h. Left.Start = Left.End, top.Start = top.End usw. Für eine nicht gefundene Hypothese stimmen die Bereiche der Grenzen mit den Bereichen ihres Suchbereichs überein. Der Zugriff auf generierte Hypothesen und deren Eigenschaften im Code der entsprechenden Dialogfelder von Blöcken und Elementen bietet zusätzliche Werkzeuge für die Einrichtung des FlexiLayouts. Auf Elementhypothesen kann über die Namen der Elemente zugegriffen werden. Um im Abschnitt Hypotheses Evaluation auf eine Hypothese für das aktuelle Element zuzugreifen, können Sie nur den Namen der Eigenschaft verwenden. Auf Hypothesen und ihre Eigenschaften wird im Nur-Lese-Modus zugegriffen. Auf Hypothesen für Elemente kann in den Abschnitten Search Conditions und Hypotheses Evaluation sowie im Code-Editor des Felds zugegriffen werden. In Search Conditions können Sie auf die generierten Hypothesen (und deren Eigenschaften) für alle Elemente zugreifen, die im Elemente-Baum oberhalb des aktuellen Elements stehen. In Hypotheses Evaluation können Sie auf die generierten Hypothesen für die Elemente zugreifen, die im Elemente-Baum oberhalb des aktuellen Elements stehen, sowie auf die Hypothese für das aktuelle Element selbst. Im Code-Editor des Felds können Sie auf die Hypothesen (und deren Eigenschaften) für alle Elemente zugreifen. Die folgende Tabelle führt die Eigenschaften von Hypothesen für alle Elementtypen auf.

Beispielcode zum Aufrufen von Hypotheseneigenschaften

Bevor Sie auf die Eigenschaften einer Hypothese für ein einfaches oder Group-Element zugreifen, vergewissern Sie sich, dass es sich bei der betreffenden Hypothese nicht um eine Nullhypothese handelt (rufen Sie ihre Eigenschaft IsNull auf). Der Zugriff auf eine Eigenschaft einer Nullhypothese (die einem nicht erkannten Element entspricht) führt zu einem Fehler. Angenommen, es gibt einen Bezeichner auf Ihrem Document in Form eines Barcodes und Sie möchten, dass Ihr FlexiLayout nur jene Documents matcht, bei denen der Barcode den Wert 1556897142240 hat. Gehen Sie wie folgt vor, um dieses Ergebnis zu erreichen. Schreiben Sie im Abschnitt Hypotheses Evaluation des Elements, das die Eigenschaften und Suchbeschränkungen des Barcodes beschreibt, den folgenden Code:
Klicken Sie auf Apply oder Check Code. Der Compiler meldet keine Syntaxfehler. Es wirkt, als sei der Code in Ordnung. Wenn Sie jedoch versuchen, das FlexiLayout mit einer beliebigen Seite aus Sample 1 zu matchen, wird die folgende Fehlermeldung angezeigt: “Error in element “MainGroup.IdentityNumber”, Advanced relations section: Attempt to access undefined hypothesis MainGroup.IdentityNumber.” Die Ursache des Fehlers ist folgende: Das Programm findet eine Hypothese für das Barcode-Element. Anschließend vergleicht es den Wert des Barcodes mit dem im Code angegebenen Wert. Wenn die Werte unterschiedlich sind, setzt der Code Quality: 0; den Wert der Hypothese auf 0 zurück. Danach wird für dieses Element eine Nullhypothese erzeugt, für die das Programm ebenfalls die Bedingung value != "1556897142240" prüft. Da der Zugriff auf den Wert einer Nullhypothese nicht zulässig ist (sie besitzt diese Eigenschaft nicht), gibt das Programm die Fehlermeldung “…undefined hypothesis…” aus. Daher müssen Sie den Code wie folgt anpassen:
Der obige Code funktioniert nur für ein erforderliches Element. Für ein optionales Element muss der Code wie folgt angepasst werden:
Andernfalls wird nur die Qualität der realen Hypothese auf 0 zurückgesetzt. Dies führt dazu, dass das Programm eine Nullhypothese erzeugt, für die das „if not IsNull“ nicht ausgeführt wird. Daher bleibt die Qualität der finalen (Null-)Hypothese so, wie sie in den Eigenschaften des Elements angegeben ist (0,97, wenn der Standardwert beibehalten wurde), und das Programm setzt das Matching des FlexiLayout fort – selbst ohne das angegebene Element. Wenn Sie dem Code else {Quality: 0;} hinzufügen, wird die Anweisung für alle Hypothesen (einschließlich der Nullhypothese) ausgeführt, und das Matching des FlexiLayout wird gestoppt, da die gesamte Kette von Hypothesen an diesem Element ebenfalls auf 0 zurückgesetzt wird.

Methoden Region Region() und Region SimplifiedRegion() im Vergleich

Mit den Methoden Region Region() und Region SimplifiedRegion() können Sie die Region eines Elements abrufen. Die Methode Region Region() liefert jedoch die exakte Region, während die Methode Region SimplifiedRegion() das anhand der Begrenzungskoordinaten erzeugte Rechteck zurückgibt.