Skip to main content
FlexiLayout-Blöcke entsprechen Feldern in Dokumenten, aus denen Daten erfasst werden müssen. Ein Block gibt den Datentyp an, den das Feld enthalten kann, sowie die Koordinaten des Bildbereichs, in dem sich das Feld voraussichtlich befindet. Der Zweig „Block“ ist im FlexiLayout-Baum mit Blocksymbol im Baum gekennzeichnet.

FlexiLayout-Blocktypen

ABBYY FlexiLayout Studio unterstützt die folgenden Blocktypen: Das Erweitern der Regionen von Textblöcken kann die Erkennungsqualität verbessern. Um eine Region zu erweitern, doppelklicken Sie auf das Element Block, um das Dialogfeld Properties zu öffnen, und geben Sie die vertikalen und horizontalen Werte für die Eigenschaft Blocks result region inflate an. Blöcke, für die in mindestens einer Layout-Alternative kein Bildbereich angegeben ist, haben in der oberen rechten Ecke des Symbols ein leeres Quadrat: Symbol für undefinierten Block. Wenn nur ein FlexiLayout ausgewählt ist (über den Eintrag Select Layout im Kontextmenü des Elements, über denselben Eintrag im Abschnitt FlexiLayout oder über den Eintrag Select Alternative Layout im Kontextmenü des FlexiLayout), prüft das Programm den Bildbereich nur in diesem FlexiLayout.
Daten aus den Blöcken werden in einer Datenerfassungsanwendung wie ABBYY FlexiCapture extrahiert.

Blockeigenschaften

Ein Block hat die folgenden Eigenschaften: Die Eigenschaft Sortierreihenfolge der Instanzen hat die folgenden Werte: Wenn Sie bei In der Reihenfolge des Auffindens zusätzliche Bedingungen für Instanzen angeben, werden die Hypothesen in der benutzerdefinierten Reihenfolge erzeugt. Wenn Sie eine andere Reihenfolge als die vom Programm verwendete Standardreihenfolge benötigen, können Sie diese mithilfe zusätzlicher Bedingungen festlegen. Die folgenden Eigenschaften legen den Bereich im Bild fest, aus dem Daten extrahiert werden sollen.

For Layout

Wählt die Layout-Alternative aus, in der der Suchbereich angegeben ist.

Source element

Gibt einen Bereich im Bild an, der mit der Region des Elements identisch ist, das verwendet wird, um den Block im Bild zu finden. Wenn das FlexiLayout auf das Bild angewendet wird, sucht das Programm nach dem Objekt bzw. den Objekten, die durch das Element beschrieben werden. Die Daten werden aus diesen Objekten erfasst. Für eine wiederholbare Gruppe können Sie entweder eine der Instanzen auswählen oder alle Instanzen verwenden (AllInstances). Weitere Informationen finden Sie unter Instanzen einer wiederholbaren Gruppe als Referenz-, Ausschluss- oder Quellelemente verwenden.

Ausdruck

Legt einen Bereich im Bild fest, der mit keiner der Elementregionen übereinstimmt. Sie können zum Beispiel die Regionen einiger Elemente und den Raum zwischen ihnen zu einem Block zusammenführen, die Region eines Elements um einen bestimmten Wert erweitern oder die Koordinaten des Blocks angeben, ohne auf Elemente Bezug zu nehmen. In diesem Fall kann die Region des Blocks in der FlexiLayout-Sprache beschrieben werden.
Die Region eines Blocks ist zusammenhängend. Das bedeutet: Wenn Sie eine Region aus getrennt liegenden Rectangles erstellen, werden die Zwischenräume durch schmale zusätzliche Rectangles gefüllt, damit die Region zusammenhängend wird.
Ein Block kann jedoch aus mehreren Regionen bestehen, wenn alle Instanzen einer wiederholbaren Gruppe als Referenzelement verwendet werden. Die Region eines Gruppenblocks wird anhand der Regionen der untergeordneten Blöcke berechnet, genau wie die Region der Hypothesen. Die resultierende Region wird für eine bessere Darstellung leicht erweitert.

Parameter von Blöcken vom Typ Gruppe und wiederholbare Gruppe

Eine Häkchengruppe und eine normale Gruppe von Blöcken haben außer Name und Comment keine weiteren Parameter. Die Parameter einer wiederholbaren Gruppe von Blöcken sind dieselben wie bei Blöcken, die keiner Gruppe angehören. Die Option Has repeating instances ist für sie immer aktiviert. Untergeordnete Blöcke können die Option Has repeating instances haben oder nicht, aber für sie wird immer die Variable OutputInstances erstellt. Wenn ein Block innerhalb einer wiederholbaren Gruppe von Blöcken die Option Has repeating instances hat, bedeutet das, dass er sich innerhalb jeder Instanz des übergeordneten Blocks wiederholen kann.

Eine Blockregion mithilfe von Instanzen einer wiederholbaren Gruppe angeben

Wenn ein Block über mehrere Instanzen definiert wird, besteht die Blockregion aus mehreren separaten Regionen. Wenn Sie eine bestimmte Instanz einer wiederholbaren Gruppe verwenden (zum Beispiel LastFound), wird die Blockregion wie bei jedem anderen Element definiert. Sie können jedoch auch alle erkannten Instanzen verwenden (AllInstances). Um mehrere Instanzen zu verwenden, aktivieren Sie die Option Has repeating instances. Sie können auch Code für den Block schreiben und dabei die vordefinierte Variable OutputInstances verwenden. Zum Beispiel:
ABBYY FlexiCapture verarbeitet Blöcke mit der aktivierten Option Has repeating instances wie folgt:
  • Bei Blöcken, die keine Tabellenblöcke sind, sind die angegebenen Instanzen die Instanzen des entsprechenden Felds.
  • Bei einem Tabellenblock werden die angegebenen Instanzen als eine einzige Instanz des Felds behandelt. Das heißt, ABBYY FlexiCapture verarbeitet einen solchen Block als ein Feld vom Typ Table mit einer nicht zusammenhängenden Region.

Regeln zum Erstellen von Verweisen auf Elemente für wiederholbare Gruppen von Blöcken

Eine wiederholbare Gruppe von Blöcken verweist auf ein wiederholbares Element. Um Instanzen einer wiederholbaren Gruppe von Blöcken zu erstellen, benötigen Sie mehrere Elementinstanzen. Daher muss eine der IDs AllInstances sein. Da die unter dem Element mit AllInstances verschachtelten Elemente keine anderen IDs haben können, bedeutet diese Bedingung auch, dass das unterste wiederholbare Element AllInstances haben muss. Untergeordnete Blöcke einer wiederholbaren Gruppe von Blöcken verweisen auf untergeordnete Elemente der wiederholbaren Gruppe von Elementen, auf die der übergeordnete Block verweist. Der Verweis muss für die Instanzen dieselbe ID haben. Wenn ein Block einer wiederholbaren Gruppe beispielsweise den Verweis SearchElements..RepGr1.Instance(1).RepGr2.AllInstances hat, können sich seine untergeordneten Blöcke nur wie folgt auf das Element RepGr1..RepGr2.Element beziehen:
Wenn kein Attribut HasRepeatingInstances vorhanden ist, können Sie nur auf Subelemente der Basisgruppe verweisen, die selbst keine Wiederholungen enthalten, und umgekehrt. Wenn ein Attribut HasRepeatingInstances vorhanden ist, können Sie auf Elemente verweisen, die innerhalb der Basisgruppe Wiederholungen enthalten (dabei können Sie nur auf alle Instanzen gleichzeitig verweisen).
With a HasRepeatingInstances attribute
Without a HasRepeatingInstances attribute
Wenn Referenzen über Source element erstellt werden, erfolgt die Prüfung beim Erstellen des FlexiLayouts. Wenn Referenzen mit Advanced-Code erstellt werden, wird beim Abgleich des FlexiLayouts ein Fehler festgestellt.

Eine Blockregion mit der FlexiLayout-Sprache beschreiben

Verwenden Sie zum Angeben der Region eines Blocks das Feld Ausdruck. Welche vordefinierte Variable verwendet wird, hängt vom Typ des Blocks und davon ab, ob für ihn die Option Has repeating instances ausgewählt ist: Weitere Informationen zu den vordefinierten Variablen, die im Feld Ausdruck verwendet werden können, finden Sie unter Vordefinierte Variablen.

Die Variable IsNull verwenden

Sie können auch eine vordefinierte Variable IsNull verwenden, um die Region eines Blocks zu beschreiben. Diese Variable gibt an, ob die Region des Blocks beim Abgleich des FlexiLayouts gefunden wurde. Der Wert false bedeutet, dass die Region gefunden wurde. Der Wert true bedeutet, dass sie nicht gefunden wurde. Die Variable IsNull wird mit dem Wert false initialisiert. Das bedeutet, dass die Region des Blocks zunächst als gefunden gilt. Manchmal müssen Sie jedoch bestimmte Bedingungen prüfen, bevor Sie eine Entscheidung treffen. Wenn das Programm die Region des Blocks nur dann als gefunden betrachten soll, wenn die Breite der Region des Source element größer als 50 dots ist, geben Sie den folgenden Code in das Feld Region expression ein:
Wenn das Programm die Region des Blocks nur dann als gefunden betrachten soll, wenn Element1 gefunden wurde, geben Sie den folgenden Code in das Feld Region expression ein:
Angenommen, Sie müssen Element1 und Element2 verwenden, um nach einem Block zu suchen. Wenn mindestens eines der Elemente nicht gefunden wurde, gilt der Block als nicht gefunden:
Dieser Code funktioniert nur dann korrekt, wenn sich der Suchbereich von Element1 oberhalb und links vom Suchbereich von Element2 befindet.Im vorherigen Beispiel wird diese Bedingung der Einfachheit halber nicht geprüft. Im tatsächlichen Code ist diese Prüfung jedoch erforderlich, und die Werte der Variablen FieldLeft, FieldRight, FieldTop und FieldBottom müssen entsprechend angepasst werden. Andernfalls führt der Aufruf der Funktion Rect zu einem Fehler.