Dies geschieht, um das FlexiLayout zu optimieren, das Matching-Verfahren zu beschleunigen und eine unerwünschte „Verzweigung“ des Hypothesenbaums zu vermeiden. Eine Hypothese, die für FlexiLayout Studio optimal ist, entspricht jedoch nicht unbedingt dem im Bild gesuchten Objekt.Das kann passieren, wenn die Suchbedingungen für das Element nicht streng genug sind. Wenn eine solche Situation eintritt, analysieren Sie zuerst die für die Elementsuche festgelegten Parameter.
Das Beispielprojekt GO.fsp
Betrachten Sie das Projekt GO.fsp (Ordner %public%\ABBYY\FlexiCapture\12.0\Samples\FLS\Tips and Tricks\GO\1), dessen Ziel es ist, das Feld „Rechnungsnummer“ zu finden.
Das Projekt hat zwei Seiten:
- Seite 1 – Die Bildqualität ist gut.
- Seite 2 – Der Name des gesuchten Felds ist verrauscht.
Die Groß-/Kleinschreibung des Namens im Abschnitt Search text ist unerheblich.
Warum die Hypothesengenerierung bei einer Kette mit Quality 1 stoppt
Beachten Sie, dass die Zeichenfolge „Invoice“, die als Wert für das Element InvoiceHeader angegeben ist, auf den Bildern dreimal vorkommt: als Bezeichnung des Feldes „Rechnungsnummer“, als Teilzeichenfolge in der Bezeichnung „Rechnungsdatum“ und unten auf der Rechnung als Teilzeichenfolge in den Zahlungsbedingungen „Current invoice is…“. Sie können daher davon ausgehen, dass es nach dem Matching-Verfahren drei Hypothesen geben wird. Nach dem Ausführen des Abgleichs des FlexiLayouts über den Befehl Match sehen Sie, dass der Hypothesenbaum im Element Gruppenelement InvoiceGroup statt der erwarteten drei nur eine vollständige Kette enthält und dass diese einzelne Kette nicht der erkannten Bezeichnung entspricht.
Um den Hypothesenbaum der Gruppe anzuzeigen, doppelklicken Sie im Hypothesenbaum auf den Namen des Elements Gruppenelement, drücken Sie Enter oder wählen Sie im Kontextmenü Show Details aus.
Verankern Sie den Namen mit Nearest am rechten Seitenrand
Wenn davon ausgegangen werden kann, dass die Anordnung der Felder auf allen Seiten des Projekts identisch ist, teilt man FlexiLayout Studio am einfachsten mit, dass die erforderliche Zeichenfolge „Invoice“ das Element ist, das dem rechten Seitenrand am nächsten liegt. Schreiben Sie dazu den folgenden Code in den Abschnitt Advanced pre-search relations des Elements InvoiceHeader:Nearest: PageRight;.
Das funktioniert, weil die Bezeichnung des gesuchten Felds „Rechnungsnummer“ das einzige Element ist, das dem rechten Seitenrand am nächsten liegt. Wäre das nicht der Fall oder wäre das Dokument nicht standardisiert, könnte die Funktion Nearest das Problem nicht lösen.
Weit entfernte Zahlenhypothesen mit FuzzyQuality abwerten
Alternative Möglichkeiten zur Lösung dieser Aufgabe, einschließlich des Falls mit einem semi-strukturierten Dokument, werden im ProjektGO.fsp (Ordner GO\2) gezeigt.
Wie Sie auf den Bildern sehen können, ist der Abstand zwischen der Ziffernfolge und dem Wort “invoice” im gesuchten Feld “Rechnungsnummer” am geringsten.
Das gilt auf allen Seiten, wodurch wir die Quality-Werte der erzeugten Hypothesen beeinflussen können, indem wir den folgenden Code im Abschnitt Erweiterte Nach-Suchbeziehungen des Elements InvoiceNumber eingeben:
{0, 0, 0, 10000}*dt fällt.
Diese Beschreibung des Intervalls zeigt die lineare Abhängigkeit zwischen der Quality der Hypothese und dem Abstand zwischen den Elementen: Je größer der Abstand, desto höher die Abwertung (die Funktion FuzzyQuality gibt die Post-search quality der Hypothese zurück, die im Properties-Fenster der Hypothese zu sehen ist).
Der Wert für die rechte Grenze des Intervalls (10000dt) wurde experimentell ermittelt. Bei der Wahl dieses Werts sollten Sie den Abstand zwischen den entsprechenden Objekten auf Testbildern berücksichtigen.
Wie aus der folgenden Abbildung hervorgeht, entspricht bei den angegebenen Intervalleigenschaften die maximale Abwertung (1) einem Abstand von 10000dt. Entsprechend führt ein Abstand von 1000dt zu einer Abwertung von 0.1, ein Abstand von 100dt zu einer Abwertung von 0.01 usw.
Bei realen Abständen von etwa 100–300 Dots, die auf den Bildern zu sehen sind, beträgt der Abwertungskoeffizient also 0.99–0.97.

Weitere Informationen zur Verwendung dieser Funktionen finden Sie unter Suchen nach Elementen mit Nearest und FuzzyQuality.

