- Auf einigen Dokumenten befindet sich das Feld Rechnungsdatum rechts vom Feldnamen, auf anderen unterhalb des Namens. Daher beschränken wir den Suchbereich auf Rechtecke rechts vom und unterhalb des Namens.
- Wir verwenden ein Element vom Typ Date , um nach dem Datum zu suchen. Außerdem legen wir die folgende Bedingung fest: Wenn der Feldname nicht erkannt wird, suchen wir nicht nach den Felddaten.
- Datumsangaben werden oft unzuverlässig erkannt. Das kann an Scanfehlern, ungültigen Datumsformaten usw. liegen. Daher geben wir zusätzlich ein Element vom Typ Zeichenkette an, falls das Element Date kein Datum findet.
- Erstellen Sie im Element InvoiceHeader ein Element vom Typ Group und nennen Sie es grDate.
- Klicken Sie auf die Registerkarte Advanced und geben Sie zusätzliche Suchbedingungen an: Beschränken Sie den Suchbereich auf das Rechteck-Array, das aus einem Rechteck rechts vom Feldnamen und einem Rechteck unterhalb des Feldnamens mit einem gewissen Versatz besteht. In der FlexiLayout language kann diese Bedingung wie folgt geschrieben werden: RectArray DataRegion; Let r1= Rect (kwInvoiceDate.Rect.Right, kwInvoiceDate.Rect.Top -20dt, kwInvoiceDate.Rect.Right + 650dt, kwInvoiceDate.Rect.Bottom + 50dt); Let r2 = Rect (kwInvoiceDate.Rect.Left - 150dt, kwInvoiceDate.Rect.Bottom, kwInvoiceDate.Rect.Right + 100dt, kwInvoiceDate.Rect.Bottom + 100dt);
- Erstellen Sie im Element InvoiceHeader.grDate ein Element vom Typ Date und nennen Sie es InvoiceDate.
- Klicken Sie auf die Registerkarte Date.
- Geben Sie alle möglichen Datumsformate für das Element InvoiceDate an:

- Bei einigen Bildern umfasst der Suchbereich des Felds Rechnungsdatum auch die bereits erkannten Elemente kwInvoiceNumber und InvoiceNumber. Damit das Programm die Werte dieser Elemente nicht als Hypothesen für das Feld Rechnungsdatum berücksichtigt, schließen Sie diese Elemente aus dem Suchbereich aus:
- Klicken Sie auf die Schaltfläche Add… neben dem Feld Exclude regions of elements.
- Wählen Sie kwInvoiceNumber aus der Elementliste aus.
- Klicken Sie auf OK. Die Zeichenfolge SearchElements.InvoiceHeader.kwInvoiceNumber wird im Feld Exclude regions of elements angezeigt.
- Klicken Sie auf die Registerkarte Advanced.
- Das Feld Rechnungsdatum ist kein erforderliches Element. Wenn ein Dokument jedoch ein Datum enthält (im Feld Rechnungsdatum), ist auf dem Dokument immer auch der entsprechende Feldname vorhanden (zuvor durch das Element kwInvoiceDate beschrieben). Daher können Sie in Advanced pre-search relations eine zusätzliche Suchbedingung angeben: Suchen Sie nur dann nach dem Bildobjekt, wenn kwInvoiceDate erkannt wurde. In der FlexiLayout language kann diese Bedingung wie folgt geschrieben werden: If InvoiceHeader.kwInvoiceDate.IsNull Then DontFind();
- Schließen Sie das Element InvoiceFooter vorübergehend aus und gleichen Sie das FlexiLayout ab.
- Erstellen Sie im Element InvoiceHeader.grDate ein Element vom Typ Zeichenkette und benennen Sie es als InvoiceDateAsString.
- Klicken Sie auf die Registerkarte Zeichenkette.
- Geben Sie das Alphabet an: ,-./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz
- Setzen Sie den Anteil der Zeichen, die nicht zum Alphabet gehören, auf 30 %.
- Geben Sie im Feld Zeichenanzahl das Fuzzy-Intervall {-1, 8, 14, INF} für die Länge der Zeichenkette an, wobei davon ausgegangen wird, dass mögliche Werte im Bereich von 8 bis 14 Zeichen liegen. Jede Hypothese außerhalb dieses Intervalls wird herabgestuft.
- Setzen Sie Max space length auf 20. Dadurch wird die maximale Länge von Leerzeichen in der Textzeichenkette auf 20 dots begrenzt.
- Behalten Sie für die übrigen Elementeigenschaften die Standardeinstellungen bei.
- Klicken Sie auf die Registerkarte Advanced.
- Da wir nur dann nach dem Element InvoiceDateAsString suchen, wenn InvoiceDate im Bild nicht erkannt wird, geben Sie die folgende Bedingung im Feld Advanced pre-search relations an:Suchen Sie nur dann nach dem Bildobjekt, wenn das Element InvoiceDate *nicht erkannt wird.*In der FlexiLayout language kann diese Bedingung wie folgt geschrieben werden: If Not InvoiceDate.IsNull Then DontFind;
- Geben Sie für InvoiceDate eine zusätzliche Bedingung an, ähnlich der oben genannten:Suchen Sie nur dann nach dem Bildobjekt, wenn das ElementkwInvoiceDate erkannt wurde. Suchen Sie nach einem Bildobjekt, das dem ElementkwInvoiceDate am nächsten ist. In der FlexiLayout language kann diese Bedingung wie folgt geschrieben werden: If InvoiceHeader.kwInvoiceDate.IsNull Then DontFind; Nearest: InvoiceHeader.kwInvoiceDate;
- Geben Sie die Position des Blocks InvoiceDate als rechteckige Region des erkannten Elements InvoiceDate oder InvoiceDateAsString an, die vertikal und horizontal um 5 dots vergrößert wird. Wählen Sie dazu die Option Expression aus und geben Sie den folgenden Ausdruck ein: Rect outputRect; if not InvoiceHeader.grDate.InvoiceDate.IsNull then outputRect = InvoiceHeader.grDate.InvoiceDate.Rect; else { outputRect = InvoiceHeader.grDate.InvoiceDateAsString.Rect; IsNull = InvoiceHeader.grDate.InvoiceDateAsString.IsNull; } OutputRegion = outputRect; OutputRegion.Inflate (5dt, 5dt);
