Skip to main content
Eine Hypothese für ein Element kann entweder gefunden oder nicht gefunden werden. Eine gefundene Hypothese wird typischerweise auf Grundlage eines oder mehrerer Bildobjekte oder ihrer Fragmente gebildet (eine Ausnahme ist das Element White Gap, das überhaupt keine Bildobjekte enthalten kann).

Hypothesenregionen und -grenzen

Eine gefundene Hypothese für ein einfaches Element ist immer eine zusammenhängende Region. Hypothesen für die Elemente White Gap, Separator und Barcode sind immer einzelne Rechtecke. Wenn eine Hypothese auf Grundlage einer Menge erkannter Bildobjekte gebildet wird, z. B. eine Hypothese für ein Paragraph-Element, wird die Region der Hypothese auf Grundlage des Arrays von Rechtecken der erkannten Objekte erstellt. Die auf diese Weise erstellte Region kann mit der Methode Region der Hypothese abgerufen werden. Wenn die Region der Hypothese im Bild angezeigt wird oder wenn auf Grundlage der Hypothese ein Block erstellt wird, folgen die Grenzen der Region nicht exakt den Grenzen der einzelnen Rechtecke. Stattdessen werden die Grenzen des Suchbereichs zur besseren Visualisierung geglättet. Eine auf diese Weise erstellte Region kann mit der Methode SimplifiedRegion der Hypothese abgerufen werden. Die Methoden Region und SimplifiedRegion können entweder im Feld Erweiterte Vor-Suchbeziehungen auf der Registerkarte Erweitert (beim Beschreiben des Suchbereichs des Elements) oder im Feld Regionsausdruck beim Beschreiben der Eigenschaften des Blocks und bei Verwendung der bereits gefundenen Elemente verwendet werden. Wenn eine Hypothese nicht gefunden wurde, entspricht sie dem Fuzzy-Rectangle ihres Suchbereichs. Wenn eine nicht gefundene Hypothese im Bild angezeigt wird, zeichnet FlexiLayout Studio das äußere Rechteck des Fuzzy-Rectangles. Die Grenzen Left, top, Right und Bottom jeder Hypothese sind Bereiche. Bei jeder gefundenen Hypothese reduziert sich der Bereich auf einen Punkt, d. h. Left.Start = Left.End, top.Start = top.End usw. Bei einer nicht gefundenen Hypothese entsprechen die Bereiche der Grenzen den Bereichen ihres Suchbereichs.

Zugriff auf Hypothesen im FlexiLayout-Code

Der Zugriff auf generierte Hypothesen und ihre Eigenschaften im Code der entsprechenden Dialogfelder von Blöcken und Elementen bietet zusätzliche Tools zum Einrichten des FlexiLayout. Auf Elementhypothesen kann über die Namen der Elemente zugegriffen werden. Um im Feld Erweiterte Nach-Suchbeziehungen 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 Feldern Erweiterte Vor-Suchbeziehungen und Erweiterte Nach-Suchbeziehungen auf der Registerkarte Erweitert im Dialogfeld Eigenschaften des Elements sowie im Feld Regionsausdruck im Dialogfeld Eigenschaften des Blocks zugegriffen werden. In Erweiterte Vor-Suchbeziehungen können Sie auf die generierten Hypothesen (und ihre Eigenschaften) für alle Elemente zugreifen, die sich im FlexiLayout-Baum oberhalb des aktuellen Elements befinden. In Erweiterte Nach-Suchbeziehungen können Sie auf die generierten Hypothesen für die Elemente zugreifen, die sich im FlexiLayout-Baum oberhalb des aktuellen Elements befinden, sowie auf die Hypothese für das aktuelle Element selbst. In Regionsausdruck können Sie auf die Hypothesen (und ihre Eigenschaften) für alle Elemente zugreifen.

Eigenschaften von Hypothesen für alle Elementtypen

Die folgende Tabelle enthält die Eigenschaften von Hypothesen für alle Elementtypen.

Beispiel: Vor dem Zugriff auf Eigenschaften prüfen, ob eine Nullhypothese vorliegt

Bevor Sie auf die Eigenschaften einer Hypothese für ein einfaches oder Group-Element zugreifen, stellen Sie sicher, dass die Hypothese, auf die zugegriffen werden soll, keine Nullhypothese ist (rufen Sie ihre Eigenschaft IsNull auf). Der Zugriff auf eine Eigenschaft einer Nullhypothese (die einem nicht erkannten Element entspricht) führt zu einem Fehler. Sehen Sie sich ein Beispiel an, das das Projekt aus Sample 1 verwendet, das auf der Programm-CD-ROM zu finden ist. Angenommen, auf Ihrem Dokument befindet sich ein Bezeichner in Form eines Barcodes, und Sie möchten, dass Ihr FlexiLayout nur diejenigen Dokumente abgleicht, bei denen der Wert des Barcodes 1556897142240 ist. Schreiben Sie im Abschnitt Erweiterte Nach-Suchbeziehungen des Elements, das die Eigenschaften und Suchbedingungen des Barcodes beschreibt (Element IdentityNumber in Sample 1), den folgenden Code:
Klicken Sie auf Apply oder Check. Der Compiler erkennt keine Syntaxfehler. Es sieht so aus, als sei der Code in Ordnung. Wenn Sie jedoch versuchen, das FlexiLayout mit einer beliebigen Seite aus Sample 1 abzugleichen, erscheint die folgende Fehlermeldung: Error in element “MainGroup.IdentityNumber”, Advanced relations section: Attempt to access undefined hypothesis MainGroup.IdentityNumber. Der Grund für den Fehler ist folgender: FlexiLayout Studio 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. Dann wird für dieses Element eine Nullhypothese erzeugt, für die FlexiLayout Studio ebenfalls die Bedingung value != "1556897142240" prüft. Da der Zugriff auf den Wert einer Nullhypothese nicht zulässig ist (sie verfügt nicht über diese Eigenschaft), gibt FlexiLayout Studio die Fehlermeldung “…undefined hypothesis…” aus. Passen Sie den Code daher wie folgt an:
Der obige Code funktioniert nur für ein erforderliches Element. Für ein optionales Element passen Sie den Code wie folgt an:
Andernfalls wird nur die Quality der tatsächlichen Hypothese auf 0 zurückgesetzt. Dadurch erzeugt FlexiLayout Studio eine Nullhypothese, für die die Bedingung if not IsNull nicht ausgeführt wird. Daher bleibt die Quality der endgültigen (Null-)Hypothese unverändert und entspricht dem in den Eigenschaften des Elements angegebenen Wert (0,97, wenn der Standardwert beibehalten wurde), und FlexiLayout Studio setzt den Abgleich des FlexiLayouts auch ohne das betreffende Element fort. Wenn Sie dem Code else {Quality: 0;} hinzufügen, wird die Anweisung für alle Hypothesen (einschließlich der Nullhypothese) ausgeführt, und der Abgleich des FlexiLayouts wird beendet, weil bei diesem Element auch die gesamte Kette von Hypothesen auf 0 zurückgesetzt wird.

Vergleich der Methoden Region() und SimplifiedRegion()

Die Methoden Region Region() und Region SimplifiedRegion() geben beide die Region eines Elements zurück, aber die Methode Region Region() gibt die exakte Region zurück:
Screenshot der exakten Hypothesenregion, die von der Methode Region() in ABBYY FlexiLayout Studio zurückgegeben wird und den Begrenzungen der erkannten Objekte folgt.
Die Methode Region SimplifiedRegion() gibt das Rectangle zurück, das anhand der Koordinaten der Begrenzungen erstellt wurde:
Screenshot der vereinfachten rechteckigen Hypothesenregion, die von der Methode SimplifiedRegion() in ABBYY FlexiLayout Studio zurückgegeben wird und auf den Koordinaten der Begrenzungen basiert.