Skip to main content
Beim Erstellen eines FlexiLayouts lassen sich Suchbereiche nicht immer ausschließlich anhand ihrer relativen Position definieren, etwa oberhalb, unterhalb, links von oder rechts von einem anderen Objekt. Das gilt insbesondere dann, wenn der Suchbereich unerwünschte Objekte enthält, zum Beispiel Objekte, die beim Scannen entstanden sein können. Diese Objekte dürfen nicht in den Erkennungsblock aufgenommen werden und müssen daher beim Erstellen des entsprechenden Elements ausgeschlossen werden. Das Adressfeld in den folgenden Abbildungen ist ein gutes Beispiel. Beachten Sie die relative Position der Feldnamen Address: und (Address) (die von der Erkennung ausgeschlossen werden müssen) sowie der Adresse selbst (die erkannt werden soll).

Wie die Funktion Exclude Regionen aus einem Suchbereich ausschließt

Die Funktion Exclude schließt eine Region aus dem Suchbereich eines Elements aus. Die auszuschließende Region wird beim Aufruf der Funktion angegeben. Die ausgeschlossene Region kann eine der folgenden sein:
  • Die Region einer Hypothese (unabhängig davon, ob sie erkannt wurde oder nicht)
  • Ein Rectangle oder ein Array von Rectangles der gefundenen Elemente
  • Eine Region, die aus den Regionen von Objekten aufgebaut ist, die Teil einer gefundenen Hypothese sind (siehe Methode ExcludeSet)
Diagramm mit zwei Beispiel-Adressfeldern, in denen die Feldnamen Company, Adresse und (Adresse) neben dem zu erkennenden Adresstext angezeigt werden.

Das Beispielprojekt Exclude.fsp

Das Projekt Exclude.fsp (Ordner %public%\ABBYY\FlexiCapture\12.0\Samples\FLS\Tips and Tricks\Exclude) zeigt, wie die Funktion Exclude funktioniert. Das Projekt hat vier Seiten:
  • Seite 1 – Das Adressfeld erstreckt sich über mehrere Zeilen. Der Name Address: steht in der ersten Zeile, daher können wir nicht sagen, dass sich das gesuchte Datenfeld rechts vom oder unter dem Feldnamen befindet. Der Name muss jedoch trotzdem von der Erkennung ausgeschlossen werden.
  • Seite 2 – Das Adressfeld hat keinen Namen.
  • Seiten 3 und 4 – Die Zeile (Address) liegt innerhalb des Datenfelds. Sie muss jedoch von der Erkennung ausgeschlossen werden.
Auf allen Seiten befindet sich das Adressfeld unter dem Feld mit dem Firmennamen.

Elemente für die Feldnamen und das Adressfeld erstellen

Erstellen Sie zunächst ein Static Text-Element, benennen Sie es CompanyHeader und geben Sie seinen Wert an. Dieses Element dient dazu, den Feldnamen zu erkennen. Erstellen Sie anschließend ein Static Text-Element und benennen Sie es AddressHeader. Dieses Element dient dazu, den Feldnamen zu erkennen. Geben Sie die folgenden statischen Textwerte an: Address:|(Address). Listen Sie also alle Varianten dieser Zeile auf, die erkannt und anschließend im Adressfeld von der Erkennung ausgeschlossen werden sollen. Beschreiben Sie die Suchbedingungen für diese Zeilen im Feld Relations und geben Sie an, dass diese Zeilen unterhalb (Below) des Elements CompanyHeader gesucht werden sollen.
Das Element für den Namen muss vor dem Element für das Adressfeld erstellt werden, da die Funktion Exclude nur Verweise auf Elemente zulässt, die im FlexiLayout-Baum über dem aktuellen Element stehen.
Starten Sie den Abgleich des FlexiLayouts (Match FlexiLayout), um sicherzustellen, dass die Adressbezeichnung auf allen Seiten gefunden wird, auf denen sie vorkommt. Da das Adressfeld in diesem Beispiel mehrere Zeilen umfasst, erstellen Sie ein Paragraph-Element, um danach zu suchen. Benennen Sie es Address und geben Sie wie im vorherigen Beispiel an, dass es unterhalb (Below) des Elements CompanyHeader gesucht werden soll. Nachdem Sie den Abgleich des FlexiLayouts ausgeführt haben, sehen Sie, dass auf den Seiten 1, 3 und 4 auch die Zeile mit der Bezeichnung in das Adressfeld aufgenommen wurde.
Screenshot des Ergebnisses des FlexiLayout-Abgleichs in ABBYY FlexiLayout Studio für das Projekt Exclude.fsp. Er zeigt, dass die Bezeichnung des Adressfelds auf den Seiten 1, 3 und 4 fälschlicherweise in das erkannte Feld Address aufgenommen wurde.

Schließen Sie den Feldnamen aus dem Suchbereich von Address aus

Gehen Sie nun zurück zum Dialogfeld „Eigenschaften“ des Elements Address und klicken Sie auf die Registerkarte Suchbedingungen. Klicken Sie neben dem Abschnitt Exclude regions of elements auf Add… und wählen Sie das Element AddressHeader aus der Liste aus. Nachdem Sie die Eigenschaften des Elements gespeichert haben, führen Sie den Abgleich des FlexiLayouts erneut aus. Sie werden sehen, dass die Region des Blocks, die dem Adressfeld entspricht, eine nicht rechteckige Form annimmt, weil die Region des Namens daraus ausgeschnitten wurde.
Screenshot des Ergebnisses des FlexiLayout-Abgleichs in ABBYY FlexiLayout Studio nach dem Ausschließen der AddressHeader-Region; der Adressblock nimmt eine nicht rechteckige Form an, weil der Feldname daraus ausgeschnitten wurde.
Im Abschnitt Exclude regions of elements können Sie die Region einer gefundenen Hypothese für ein anderes Element aus dem Suchbereich des aktuellen Elements ausschließen. Um einen geometrisch komplexeren Bereich auszuschließen oder zuerst eine Region zu erkennen und sie dann aus dem Erkennungsprozess auszuschließen, verwenden Sie die Funktionen Exclude, ExcludeRect und ExcludeSet im Feld Advanced pre-search relations.
Die Region eines Blocks besteht definitionsgemäß aus Rechtecken, die übereinander angeordnet sind, sodass jede horizontale Linie die Region nur einmal schneiden kann; es kann also keine vertikalen „Zacken“ geben, die herausragen.Wenn sich daher die auszuschließende Zeile und die erforderlichen Informationen auf derselben oder annähernd derselben Höhe befinden, kann der Name bei der Erstellung des FlexiLayouts nicht ausgeschlossen werden. In diesem Fall kann der Name nach der Erkennung in FlexiCapture mithilfe der Regel „Substitute from the list“ ausgeschlossen werden.