Zum Hauptinhalt springen
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 gekennzeichnet. ABBYY FlexiLayout™ Studio unterstützt die folgenden Blocktypen:
  • Text (gekennzeichnet durch das Symbol ) wird zum Extrahieren von Textdaten verwendet Durch das Erweitern der Regionen von Textblöcken kann die Erkennungsqualität verbessert werden. Um eine Region zu erweitern, doppelklicken Sie auf das Element Block, um das Dialogfeld „Eigenschaften“ zu öffnen, und geben Sie die vertikalen und horizontalen Werte für die Eigenschaft Block result region inflate an.
  • Barcode (gekennzeichnet durch das Symbol ) wird zum Lesen von Barcodes verwendet
  • Checkmark (gekennzeichnet durch das Symbol ) wird zum Erkennen von Häkchen verwendet
  • Picture (gekennzeichnet durch das Symbol ) wird zur Verarbeitung von Objekten verwendet, die bei der Vorerkennung nicht als Text identifiziert wurden
  • Table (gekennzeichnet durch das Symbol ) wird zum Extrahieren von Daten aus Tabellen verwendet
  • Group (gekennzeichnet durch das Symbol ) wird zum logischen Gruppieren von Blöcken verwendet
  • Häkchengruppe (gekennzeichnet durch das Symbol ) wird zum Erstellen von Häkchengruppen verwendet. Zu diesem Gruppentyp können nur Häkchenblöcke hinzugefügt werden – Blöcke anderer Typen können hier weder erstellt noch hineingezogen werden.
  • wiederholbare Gruppe (gekennzeichnet durch das Symbol ) wird zum Erstellen einer wiederholbaren Gruppe von Blöcken verwendet
  • Non-Recognized (gekennzeichnet durch das Symbol ) wird verwendet, um einen Bereich von der Erkennung auszuschließen
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: . 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 FlexiLayouts), prüft das Programm den Bildbereich nur in diesem FlexiLayout.
Daten aus den Blöcken werden in einer Datenerfassungsanwendung wie ABBYY FlexiCapture extrahiert.

Block-Eigenschaften

  • Name - der Name des Blocks. Der Name eines Blocks kann Buchstaben (lateinische Buchstaben, lateinische Buchstaben mit diakritischen Zeichen, kyrillische Buchstaben), Ziffern und Unterstriche enthalten. Der Name eines Blocks muss mit einem Buchstaben oder einem Unterstrich beginnen. Blocknamen dürfen keine Leerzeichen oder Sonderzeichen enthalten.
  • Type - der Typ des Blocks (wird beim Erstellen ausgewählt). Der Typ des Blocks muss dem Typ des Objekts bzw. der Objekte entsprechen, die sich in dem vom Block umschlossenen Bereich befinden.
  • Comment - ein vom Benutzer eingegebener Kommentar (optional).
  • Has repeating instances - zeigt an, dass der Block aus mehreren Instanzen besteht. Wählen Sie diese Eigenschaft aus, wenn beispielsweise alle Instanzen eines wiederholbare GruppeElements als Blockregion verwendet werden sollen.
  • Instance sort order - legt die Reihenfolge fest, in der Gruppeninstanzen zu einem Block zusammengeführt werden. Diese Eigenschaft ist nur verfügbar, wenn Has repeating instances ausgewählt ist. Mögliche Werte:
    • Top to bottom - die Instanzen werden entsprechend ihrer Position im Bild von oben nach unten zu einem Block zusammengeführt
    • Left to right - die Instanzen werden entsprechend ihrer Position im Bild von links nach rechts zu einem Block zusammengeführt
    • Right to left - die Instanzen werden entsprechend ihrer Position im Bild von rechts nach links zu einem Block zusammengeführt
    • In order of finding - die Instanzen werden in der Reihenfolge zu einem Block zusammengeführt, in der Hypothesen erzeugt werden. Hypothesen werden in absteigender Quality erzeugt. Wenn der Benutzer zusätzliche Bedingungen für Instanzen angegeben hat, werden Hypothesen in der benutzerdefinierten Reihenfolge erzeugt. Wenn Sie also eine andere als die vom Programm standardmäßig verwendete Reihenfolge benötigen, können Sie die gewünschte Reihenfolge mithilfe zusätzlicher Bedingungen festlegen.
Die folgenden Eigenschaften geben den Bereich im Bild an, aus dem Daten extrahiert werden.
  • For Layout wählt die Layout-Alternative aus, in der der Suchbereich angegeben wird.
  • 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 bzw. den durch das Element beschriebenen Objekten. Aus diesen Objekten werden die Daten extrahiert. Bei einer wiederholbaren Gruppe können Sie entweder eine der Instanzen auswählen oder alle Instanzen verwenden (AllInstances). Einzelheiten finden Sie unter Using instances of a Repeating Group as reference, excluded or source elements.
  • Expression - legt einen Bereich im Bild fest, der mit keiner der Elementregionen übereinstimmt. Sie können beispielsweise 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 sich auf Elemente zu beziehen. 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 voneinander liegenden Rechtecken erstellen, werden die Zwischenräume mit schmalen zusätzlichen Rechtecken gefüllt, damit die Region zusammenhängend ist.
Ein Block kann jedoch aus mehreren Regionen bestehen, wenn alle Instanzen einer wiederholbaren Gruppe als Referenzelement verwendet werden. Die Region eines Gruppenblocks wird auf Grundlage der Regionen der untergeordneten Blöcke berechnet, genau wie die Region der Hypothesen. Die resultierende Region wird für eine bessere Darstellung leicht erweitert. Eine Häkchengruppe und eine gewöhnliche Gruppe von Blöcken haben außer Name und Kommentaren keine weiteren Parameter. Die Parameter einer wiederholbaren Gruppe von Blöcken sind dieselben wie die von Blöcken, die keine Gruppen sind. 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 eine Variable “Output instances” erstellt. Wenn ein Block innerhalb einer wiederholbaren Gruppe von Blöcken die Option Has repeating instances hat, bedeutet dies, dass er sich innerhalb jeder Instanz des übergeordneten Blocks wiederholen kann.

Festlegen einer Blockregion mithilfe von Instanzen einer wiederholbaren Gruppe

Wenn ein Block mithilfe mehrerer Instanzen definiert wird, besteht die Blockregion aus mehreren separaten Regionen. Wenn Sie eine bestimmte Instanz einer wiederholbaren Gruppe verwenden (z. B. 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, wählen Sie die Option Has repeating instances. Sie können auch mithilfe der vordefinierten Variablen OutputInstances Code für den Block schreiben. Zum Beispiel:
OutputInstances = SearchElements.PageHeader.AllInstances.UnionRect;
ABBYY FlexiCapture verarbeitet Blöcke mit aktivierter Option Has repeating instances wie folgt:
  • bei Blöcken, die keine Tabellenblöcke sind, entsprechen die angegebenen Instanzen den Instanzen des jeweiligen Felds
  • bei einem Tabellenblock werden die angegebenen Instanzen als eine Instanz des Felds behandelt, d. h. ABBYY FlexiCapture verarbeitet einen solchen Block als 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 Elemente unterhalb des Elements mit AllInstances keine anderen IDs haben dürfen, bedeutet diese Bedingung außerdem, dass das unterste wiederholbare Element AllInstances hat. 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 Instanzen dieselbe ID haben. Beispiel: Wenn ein Block einer wiederholbaren Gruppe den folgenden Verweis hat: SearchElements..RepGr1.Instance(1).RepGr2.AllInstances, können seine untergeordneten Blöcke nur wie folgt auf das Element RepGr1..RepGr2.Element verweisen: SearchElements.RepGr1.Instance(1).RepGr2.AllInstances.Element. Wenn es kein Attribut HasRepeatingInstances gibt, können Sie nur auf Subelemente der Basisgruppe verweisen, die darin keine Wiederholungen enthalten. Umgekehrt gilt: Wenn es ein Attribut HasRepeatingInstances gibt, können Sie auf Elemente verweisen, die innerhalb der Basisgruppe Wiederholungen enthalten (und dabei nur auf alle Instanzen gleichzeitig). Beispiele: Es gibt ein Attribut HasRepeatingInstances SearchElements.RepGr1.Instance(1).RepGr2.AllInstances.RepGr3.AllInstaces.Element SearchElements.RepGr1.Instance(1).RepGr2.AllInstances.RepGr3.AllInstaces.RepGr4.AllInstances.Element Es gibt kein Attribut HasRepeatingInstances SearchElements.RepGr1.Instance(1).RepGr2.AllInstancess.Gr3.SubElement(where Gr3 is a simple group) SearchElements.RepGr1.Instance(1).RepGr2.AllInstances.SubElement
Wenn Verweise über das Source element erstellt werden, erfolgt die Prüfung beim Erstellen des FlexiLayout. Wenn Verweise mit Advanced code erstellt werden, wird ein Fehler beim Matching des FlexiLayout erkannt.

Verwenden der FlexiLayout-Sprache zum Beschreiben der Position eines Blocks

Um die Region eines Blocks anzugeben, verwenden Sie das Feld Expression. Je nach Typ des Blocks und je nachdem, ob für ihn die Option Has repeating instances ausgewählt ist, wird eine der folgenden vordefinierten Variablen verwendet: OutputRegion (vom Typ Region), OutputTable (vom Typ TableHypothesis) und OutputInstances (vom Typ HypothesisInstances oder TableHypothesisInstances). Weitere Informationen zu den vordefinierten Variablen, die im Feld Expression verwendet werden können, finden Sie unter Vordefinierte Variablen.
Abrufen und Erweitern der Region eines Elements um 3 mm in der Breite und 5 mm in der LängeOutputRegion = SomeElement.Rect; OutputRegion.Inflate( 3mm, 5mm );
Zusammenführen der Regionsrechtecke von zwei Elementen und Abrufen des Rechtecks, das die zusammengeführten Rechtecke umschließtRect outputRect; outputRect = Element1.Rect Or Element2.Rect; OutputRegion = outputRect;
Zusammenführen der Rechtecke, die die Regionen von zwei Elementen umschließen, zu einer RegionRectArray outputRects; outputRects = RectArray( Element1.Rect ); outputRects.Add: Element2.Rect; OutputRegion = Region( outputRects );
Zusammenführen der Regionen der Objekte, die zwei verschiedenen Elementen entsprechen, zu einer RegionRectArray outputRects; outputRects = Element1.Rects; outputRects.Add( Element2.Rects ); OutputRegion = outputRects.Region;
Zusammenführen der Regionen der Objekte, die zur Region von Element1 gehören, und Entfernen der Regionen der Objekte, die zur Region von Element2 gehörenOutputRegion = FormRegion( Element1.Rects, Element2.Rects );
Verwenden eines Table-Elements zum Angeben eines Table-BlocksOutputTable = SearchElements.TableElement;
Verwenden von Hypotheseninstanzen eines bestimmten Elements zum Angeben eines Table-BlocksOutputInstances = SearchElements.RepeatingGroup.AllInstances.TemplateElement;
Sie können zum Beschreiben der Region eines Blocks auch die vordefinierte Variable IsNull verwenden. Diese Variable gibt an, ob die Region des Blocks beim Matching des FlexiLayout gefunden wurde. Der Wert false bedeutet, dass die Region gefunden wurde, der Wert true bedeutet, dass die Region nicht gefunden wurde. Die Variable IsNull wird mit dem Wert false initialisiert, d. h. die Region des Blocks gilt zunächst als gefunden. In manchen Fällen möchten Sie jedoch bestimmte Bedingungen prüfen, bevor Sie dies festlegen.
  1. Um das Programm anzuweisen, die Region des Blocks als gefunden zu betrachten, wenn die Breite der Region des Quellelements 50 dots überschreitet, geben Sie den folgenden Code in das Feld Region Expression ein: if Element1.Width < 50dt then IsNull = true;
  2. Um das Programm anzuweisen, die Region des Blocks von Element1 als gefunden zu betrachten, geben Sie den folgenden Code in das Feld Region Expression ein: IsNull = Element1.IsNull
  3. 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. Rect outputRect; Let FieldLeft = Element1.Rect.Left; Let FieldRight = Element2.Rect.Right; Let FieldTop = Element1.Rect.Top; Let FieldBottom = Element2.Rect.Bottom; outputRect = Rect( FieldLeft, FieldTop, FieldRight, FieldBottom); if ((Element1.IsNull == True) or (Element2.IsNull == True) ) then {IsNull = true;} OutputRegion = outputRect;
Hinweis. Dieser Code funktioniert nur dann korrekt, wenn der Suchbereich von Element1 oberhalb und links vom Suchbereich von Element2 liegt. Im obigen Beispiel ist diese Prüfung der Einfachheit halber nicht enthalten. Im tatsächlichen Code ist diese Prüfung 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.