FlexiLayout-Blocktypen
| Blocktyp | Symbol | Beschreibung |
|---|---|---|
| Text | Wird zum Extrahieren von Textdaten verwendet. | |
| Barcode | Wird zum Lesen von Barcodes verwendet. | |
| Checkmark | Wird zum Erkennen von Häkchen verwendet. | |
| Picture | Wird zum Verarbeiten von Objekten verwendet, die bei der Vorerkennung nicht als Text identifiziert wurden. | |
| Table | Wird zum Extrahieren von Daten aus Tabellen verwendet. | |
| Group | Wird zum logischen Gruppieren von Blöcken verwendet. | |
| Checkmark Group | 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 verschoben werden. | |
| wiederholbare Gruppe | Wird zum Erstellen einer wiederholbaren Gruppe von Blöcken verwendet. | |
| Non-Recognized | Wird verwendet, um einen Bereich von der Erkennung auszuschließen. |
Daten aus den Blöcken werden in einer Datenerfassungsanwendung wie ABBYY FlexiCapture extrahiert.
Blockeigenschaften
| Eigenschaft | Beschreibung |
|---|---|
| Name | Der Name des Blocks. Er kann Buchstaben (lateinische Zeichen, lateinische Zeichen mit diakritischen Zeichen, kyrillische Zeichen), Ziffern und Unterstriche enthalten. Er muss mit einem Buchstaben oder einem Unterstrich beginnen und darf keine Leerzeichen oder Sonderzeichen enthalten. |
| Type | Der Typ des Blocks, der beim Erstellen ausgewählt wird. Er muss dem Typ der Objekte entsprechen, die sich in dem vom Block umschlossenen Bereich befinden. |
| Comment | Ein optionaler Comment, der vom Benutzer eingegeben wird. |
| Has repeating instances | Zeigt an, dass der Block aus mehreren Instanzen besteht. Wählen Sie diese Eigenschaft aus, wenn beispielsweise alle Instanzen eines Elements vom Typ wiederholbare Gruppe als Blockregion verwendet werden. |
| Sortierreihenfolge der Instanzen | Legt die Reihenfolge fest, in der Gruppeninstanzen zu einem Block zusammengeführt werden. Nur verfügbar, wenn Has repeating instances ausgewählt ist. |
| Sortierreihenfolge | Verhalten |
|---|---|
| Von oben nach unten | Führt die Instanzen entsprechend ihrer Position im Bild von oben nach unten zu einem Block zusammen. |
| Von links nach rechts | Führt die Instanzen entsprechend ihrer Position im Bild von links nach rechts zu einem Block zusammen. |
| Von rechts nach links | Führt die Instanzen entsprechend ihrer Position im Bild von rechts nach links zu einem Block zusammen. |
| In der Reihenfolge des Auffindens | Führt die Instanzen in der Reihenfolge zu einem Block zusammen, in der Hypothesen erzeugt werden. Die Hypothesen werden in absteigender Quality erzeugt. |
For Layout
Source element
AllInstances). Weitere Informationen finden Sie unter Verwenden von Instanzen einer wiederholbaren Gruppe als Referenz-, Ausschluss- oder Quellelemente.
Ausdruck
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.
Parameter von Blöcken vom Typ Gruppe und wiederholbare Gruppe
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
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:
- 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
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 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:
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
| Variable | Typ |
|---|---|
OutputRegion | Region |
OutputTable | TableHypothesis |
OutputInstances | HypothesisInstances oder TableHypothesisInstances |
| Aufgabe | Beispielcode |
|---|---|
| Die Region eines Elements abrufen und um 3 mm in der Breite und 5 mm in der Länge erweitern | OutputRegion = SomeElement.Rect; OutputRegion.Inflate( 3*mm, 5*mm ); |
| Die Rechtecke der Regionen zweier Elemente zusammenführen und das Rechteck abrufen, das die zusammengeführten Rechtecke umschließt | Rect outputRect; outputRect = Element1.Rect Or Element2.Rect; OutputRegion = outputRect; |
| Die Rechtecke, die die Regionen zweier Elemente umschließen, zu einer Region zusammenführen | RectArray outputRects; outputRects = RectArray( Element1.Rect ); outputRects.Add: Element2.Rect; OutputRegion = Region( outputRects ); |
| Die Regionen der Objekte, die zwei verschiedenen Elementen entsprechen, zu einer Region zusammenführen | RectArray outputRects; outputRects = Element1.Rects; outputRects.Add( Element2.Rects ); OutputRegion = outputRects.Region; |
Die Regionen der Objekte zusammenführen, die zur Region von Element1 gehören, und die Regionen der Objekte entfernen, die zur Region von Element2 gehören | OutputRegion = FormRegion( Element1.Rects, Element2.Rects ); |
| Ein Table-Element verwenden, um einen Table-Block anzugeben | OutputTable = SearchElements.TableElement; |
| Hypotheseninstanzen für ein bestimmtes Element verwenden, um einen Table-Block anzugeben | OutputInstances = SearchElements.RepeatingGroup.AllInstances.TemplateElement; |
Die Variable IsNull verwenden
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:
Element1 gefunden wurde, geben Sie den folgenden Code in das Feld Region expression ein:
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.