Zum Hauptinhalt springen
Eine Hypothese für ein Element kann entweder gefunden oder nicht gefunden werden. Eine gefundene Hypothese wird in der Regel auf Grundlage eines oder mehrerer Bildobjekte oder ihrer Fragmente gebildet (eine Ausnahme ist das Element White Gap, das überhaupt keine Bildobjekte enthalten kann). 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 search area 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 search area 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 search area. Wenn eine nicht gefundene Hypothese im Bild angezeigt wird, zeichnet das Programm 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 search area. 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. Die folgende Tabelle listet die Eigenschaften von Hypothesen für alle Elementtypen auf.

Logic IsNull()

Gibt an, ob es sich um eine Nullhypothese handelt (wenn das Element erkannt wurde, ist die IsNull-Eigenschaft der Hypothese True).

Logic IsFound()

Gibt an, ob die Hypothese nicht null ist (wenn das Element nicht erkannt wurde, ist die IsNull-Eigenschaft der Hypothese False). Entspricht IsNull.

XInterval Left()

Die linke Begrenzung der Hypothese, horizontaler Bereich in globalen Koordinaten.

YInterval top()

Die obere Begrenzung der Hypothese, vertikaler Bereich in globalen Koordinaten.

XInterval Right()

Die rechte Begrenzung der Hypothese, horizontaler Bereich in globalen Koordinaten.

YInterval Bottom()

Die untere Begrenzung der Hypothese, vertikaler Bereich in globalen Koordinaten.

XInterval XCenter()

Die X-Koordinate des Mittelpunkts der Hypothesen, horizontaler Bereich in globalen Koordinaten.

YInterval YCenter()

Die Y-Koordinate des Mittelpunkts der Hypothesen, vertikaler Bereich in globalen Koordinaten.

DistInterval Width()

Die Breite der Hypothese in globalen Koordinaten, Bereich von Abständen.

DistInterval Height()

Die Höhe der Hypothese in globalen Koordinaten, Bereich von Abständen.

FuzzyRect FuzzyRect()

Fuzzy rectangle der Hypothese in globalen Koordinaten.

Rect Rect()

Das Rectangle, das die Hypothese in globalen Koordinaten umschreibt. Es stimmt mit dem external rectangle des fuzzy rectangle überein.

Region Region()

Die Region der Hypothese in globalen Koordinaten. Die Methode wird für Gruppenelemente nicht unterstützt.

Region SimplifiedRegion()

Die Region der Hypothese in globalen Koordinaten, vereinfacht für eine bessere visuelle Darstellung. Die Methode wird für Gruppenelemente nicht unterstützt.

ImageObjectSet Set()

Die Bildobjekte, die Teil der Hypothese sind.

ImageObjectSet ExcludeSet()

Die Bildobjekte, die sich in der Region befinden, die durch Methoden vom Typ Exclude aus dem search area ausgeschlossen wurde.

RectArray Rects()

Das array der Rechtecke, die in der Hypothese enthalten sind. Bei den meisten Elementen entspricht es dem array der Rechtecke, die erkannte Objekte umschließen. Für White Gap- und Region-Elemente sind keine Objekte verfügbar.

Int HypothesesCount()

Die Anzahl der Hypothesen, die für das Element im search area formuliert werden können.

Wichtig! Die Funktion darf nur verwendet werden, wenn die maximale und minimale Seitenzahl im Dokument auf 1 gesetzt ist, d. h., das erkannte Dokument hat nur eine Seite. Wenn Sie diese Funktion für ein mehrseitiges Dokument verwenden, führt das Matching eines FlexiLayout zu einem Fehler.

PageInterval Pages()

Der Seitenbereich, in dem die Hypothese zu finden ist.

PageArea PageAreaGlobal( Int PageNumber )

Gibt den Teil der Hypothese zurück, der sich auf der angegebenen Seite in globalen Koordinaten befindet.

PageArea PageAreaLocal( Int PageNumber )

Gibt den Teil der Hypothese zurück, der sich auf der angegebenen Seite in den lokalen Koordinaten der Seite befindet.

Bevor Sie auf die Eigenschaften einer Hypothese für ein einfaches oder ein Gruppenelement zugreifen, stellen Sie sicher, dass die Hypothese, auf die Sie zugreifen möchten, keine Nullhypothese ist (prüfen Sie dazu ihre Eigenschaft IsNull). Der Zugriff auf eine Eigenschaft einer Nullhypothese (die einem nicht erkannten Element entspricht) führt zu einem Fehler. Betrachten wir ein Beispiel mit dem Projekt aus Sample 1, das sich auf der Programm-CD-ROM befindet.Angenommen, Ihr Dokument enthält einen Bezeichner in Form eines Barcodes, und Sie möchten, dass Ihr FlexiLayout nur Dokumente matched, bei denen der Barcode den Wert 1556897142240 hat. Gehen Sie wie folgt vor, um das gewünschte Ergebnis zu erzielen. Schreiben Sie im Abschnitt Erweiterte Nach-Suchbeziehungen des Elements, das die Eigenschaften und Suchbeschränkungen des Barcodes beschreibt (Element IdentityNumber in Sample 1), den folgenden Code:if value != “1556897142240” then Quality: 0;Klicken Sie auf Apply oder Check. Der Compiler erkennt keine Syntaxfehler. Es sieht also so aus, als wäre der Code korrekt. Wenn Sie jedoch versuchen, das FlexiLayout mit einer beliebigen Seite aus Sample 1 zu matchen, wird die folgende Fehlermeldung angezeigt: ” Fehler in Element „MainGroup.IdentityNumber“, Abschnitt Advanced relations: Versuch, auf undefinierte Hypothese MainGroup.IdentityNumber zuzugreifen.”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 value 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:if not IsNull then { if value != “1556897142240” then Quality: 0; }Hinweis. Der obige Code funktioniert nur für ein erforderliches Element. Für ein optionales Element muss der Code wie folgt angepasst werden:if not IsNull then { if value != “1556897142240” then Quality: 0; } else {Quality: 0;}Andernfalls wird nur die Qualität der tatsächlichen Hypothese auf 0 zurückgesetzt. Dadurch erzeugt das Programm eine Nullhypothese, für die “if not IsNull” nicht ausgeführt wird. Daher bleibt die Qualität der endgültigen Nullhypothese unverändert, wie sie in den Eigenschaften des Elements angegeben ist (0.97, wenn der Standardwert beibehalten wurde), und das Programm setzt das Matching des FlexiLayout auch ohne das angegebene 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 das Matching des FlexiLayout wird angehalten, weil an diesem Element auch die vollständige Hypothesenkette auf 0 zurückgesetzt wird.
Mit den Methoden Region Region() und Region SimplifiedRegion() können Sie die Region eines Elements abrufen, aber die Methode Region Region() liefert die exakte Region:während die Methode Region SimplifiedRegion() das Rechteck liefert, das anhand der Grenzkoordinaten erstellt wird: