Um verschiedene Titel von Dokumenten, Tabellen, Feldern oder beliebigen Text zu erkennen, die auf allen oder den meisten Bildern in einem Dokument vorkommen, verwendet FlexiLayout Studio ein spezielles Element vom Typ Static Text. Wenn verschiedene Bilder, die mit demselben FlexiLayout verarbeitet werden sollen, unterschiedliche Varianten ein und derselben Bezeichnung haben (zum Beispiel hat das Feld ‘Rechnungsnummer’ die Varianten ‘Invoice’, ‘Invoice:’, ‘Invoice No.’ usw.), müssen Sie alle möglichen Werte für den statischen Text angeben, auch wenn sie sich nur in den Satzzeichen unterscheiden.
Dies ist aus den folgenden Gründen notwendig:
- Um eine Hypothese zu erzeugen, die dem angegebenen Wert entspricht. Wenn wir zum Beispiel die Variante ‘Invoice:’ nicht angeben, sondern nur die Variante ‘Invoice’, wird der Doppelpunkt nicht in die Hypothese für den Feldnamen aufgenommen. Er kann dann in den Suchbereich der Rechnungsnummer geraten, nach der das Programm rechts vom Namen sucht. Wenn die Suche nach der Nummer Nicht-Ziffern oder nicht angegebene Zeichen zulässt, kann der Doppelpunkt in die Hypothese des Elements gelangen, das die Rechnungsnummer beschreibt.
- Um zu vermeiden, dass eine Hypothese für Zeichen abgestraft wird, die im Fenster Search text nicht angegeben sind. Wenn zum Beispiel der Wert ‘Invoice:’ im Abschnitt Search text angegeben ist und auf den verarbeiteten Bildern auch die Bezeichnung ‘Invoice#’ vorkommt, wird dennoch eine Hypothese erzeugt, sofern für das Element einige Fehler zulässig sind, aber ihre Quality wird herabgesetzt (in diesem Beispiel erlaubt das FlexiLayout mindestens 1 Fehler).
- Wenn Variantenhypothesen verfügbar sind, zum Beispiel ‘Invoice|Invoice:’, weist das Programm der längeren Hypothese eine etwas höhere Quality zu, sodass die Hypothese ‘Invoice:’ bevorzugt wird. Wenn eine Variante mit ’:’ angegeben ist, wird die Variante ohne ’:’ mit 0.001 abgestraft, weil die Zeichenkette ‘Invoice’ eine Teilzeichenkette von ‘Invoice:’ ist. Durch das Abwerten der kürzeren Namenszeichenkette, die eine Teilzeichenkette der anderen ist, wird die längere Hypothese zum Gewinner.
Verwenden wir das Beispielprojekt StaticText.fsp (Ordner %public%\ABBYY\FlexiCapture\12.0\Samples\FLS\Tips and Tricks\Variants of StaticText), um zu sehen, wie die Angabe der Werte eines Static Text-Elements dabei hilft, den Namen des Felds ‘Rechnungsnummer’ und das Feld selbst zu erkennen.
Das Projekt hat 5 Seiten:
- Seite 1 - das Feld “Rechnungsnummer” hat die Bezeichnung “INVOICE”;
- Seite 2 – das Feld “Rechnungsnummer” hat die Bezeichnung “Invoice:”;
- Seite 3 – das Feld “Rechnungsnummer” hat die Bezeichnung “Invoice #:”;
- Seite 4 – das Feld “Rechnungsnummer” hat die Bezeichnung “Invoice -”;
- Seite 5 – das Feld “Rechnungsnummer” hat die Bezeichnung “Invoice:”, aber auf der Seite gibt es auch ein Feld “Rechnungsdatum”, in dem das Wort “Invoice” vorkommt.
Im Dialogfeld Eigenschaften des Static Text-Elements mit dem Namen InvoiceHeader haben wir alle möglichen Bezeichnungen für das Feld angegeben, die in den verarbeiteten Dokumenten gefunden werden können. In diesem Fall sind dies die oben genannten Werte. Die Groß-/Kleinschreibung in den Bezeichnungen ist für die Suche irrelevant: Invoice|Invoice:|Invoice#:|Invoice-.
Um die Suche nach dem Element zu beschleunigen, werden alle Varianten ohne Leerzeichen geschrieben. Das Fehlen oder Vorhandensein von Leerzeichen beeinflusst die Quality einer Hypothese nicht.
Der Einfachheit halber nehmen wir an, dass sich die Rechnungsnummer immer rechts vom Namen befindet. Um nach der Rechnungsnummer zu suchen, wurde ein Element vom Typ Character String mit dem Namen InvoiceNumber erstellt. Sein alphabet und seine Suchbedingungen sind im Feld Relations angegeben. Diese Einstellungen sind sehr einfach und werden hier nicht beschrieben. Sie können sie direkt im Projekt nachsehen.
Im FlexiLayout-Baum wurde ein Textblock Invoice erstellt. Das Element InvoiceNumber wurde als Source-Element für den Block angegeben.
Wie Sie nach dem Ausführen der Analyse sehen können, werden der Feldname und die Rechnungsnummer auf allen Seiten erfolgreich erkannt.
Versuchen Sie nun, vorübergehend alle Static Text-Werte bis auf den ersten (Invoice) aus dem Element InvoiceHeader zu entfernen, und versuchen Sie dann erneut, das FlexiLayout mit allen Seiten abzugleichen. Sie werden sehen, dass die Bezeichnung und die Rechnungsnummer nur auf Seite 1 erfolgreich erkannt wurden, da die Bezeichnung dort vollständig mit dem angegebenen Wert (Invoice) übereinstimmt. Auf den Seiten 2–4 ist ein Teil der Bezeichnung in die Rechnungsnummer geraten. Auf Seite 5 gab es einen Fehler beim Lokalisieren des Zahlenfelds.
Stellen wir nun die entfernten Werte wieder her. Betrachten Sie die Analyseergebnisse auf Seite 5, wo das Wort Invoice zweimal vorkommt. Wie zu sehen ist, hat das Programm 5 Hypothesen für das Element InvoiceHeader erzeugt. Die höchste Quality (Chain Quality = 1, was in diesem Fall der Pre-search Quality entspricht) wird der Hypothese für die Bezeichnung „Invoice:“ zugewiesen. Hypothesen wurden auch für die Werte „Invoice“ und „Invoice d“ erzeugt, da diese Zeichenfolgen von den für das Element InvoiceHeader angegebenen Werten abgeleitet sind und dabei ein bestimmter Fehlerprozentsatz zulässig ist. Diese Hypothesen wurden abgewertet (vgl. die obigen Argumente für die Auflistung aller möglichen Static Text-Werte), daher ist ihre endgültige Quality geringer.
