Mitunter müssen Sie ein FlexiLayout erstellen, um nach Feldern zu suchen, die typischerweise in herkömmlichen Dokumenten mit festem Layout vorkommen. Beispielsweise müssen Sie möglicherweise ein Feld beschreiben, in das Buchstaben in kleine Kästchen eingetragen werden. Ein typisches Beispiel wäre ein Unternehmen, das Dokumente aus seinen regionalen Niederlassungen sammelt. Selbst wenn die Dokumente eigentlich gleich aussehen sollten, kann es zwischen den Layouts einzelner Niederlassungen geringfügige Unterschiede geben. Das bedeutet, dass sie nicht mit einer einzigen „starren“ Dokumentdefinition verarbeitet werden können. In diesem Fall ist ein FlexiLayout unter Umständen mehreren leicht unterschiedlichen „starren“ Dokumentdefinitionen vorzuziehen.
Wenn die im Dokument gesuchten Datenfelder vom Typ „framed letters“ oder „separate framed letters“ sind, kann eine auf Separatoren basierende Suche nach den Begrenzungen solcher Felder sehr kompliziert sein, und die Beschreibung der Elemente kann umfangreich werden, insbesondere wenn die Namen solcher Felder nicht verfügbar sind oder nur unsicher erkannt werden. Außerdem ist es sehr wichtig, dass der Block nicht nur diese Felder, sondern auch den gesamten Rahmen enthält. Wenn Separatorlinien dünn sind, können sie manchmal fehlerhaft gedruckt werden oder beim Scannen verloren gehen. In solchen Fällen empfiehlt es sich, die Begrenzungen mithilfe von White-Gap-Elementen zu suchen. Solche Feldbegrenzungen werden in der speziellen FlexiLayout-Sprache im Feld Expression des Dialogfelds „Properties“ des Blocks beschrieben. Sie können die obere Begrenzung des Felds als Unterkante des oberen White Gap, die untere Begrenzung als Oberkante des unteren White Gap, die rechte Begrenzung des Felds als linke Begrenzung des rechten White Gap und die linke Begrenzung des Felds als rechte Begrenzung des linken White Gap beschreiben.
Ein FlexiLayout Studio-Projekt, das Testbilder und ein getestetes FlexiLayout enthält, finden Sie unter %public%\ABBYY\FlexiCapture\12.0\Samples\FLS\Tips and Tricks.
Beispiel
Nehmen wir an, dass alle 4 Lücken (LeftGapName, RightGapName, TopGapName, BottomGapName), die erforderlich sind, um die Position des Datenfelds im Bild formal zu beschreiben, gefunden wurden.
Der Code im Feld Expression sieht dann wie folgt aus:
Rect outputRect;
Let FieldLeft = LeftGapName.Rect.Right;
Let FieldRight = RightGapName.Rect.Left;
Let FieldTop = TopGapName.Rect.Bottom;
Let FieldBottom = BottomGapName.Rect.Top;
outputRect = Rect(FieldLeft, FieldTop, FieldRight, FieldBottom);
OutputRegion = outputRect;
Anstelle von “LeftGapName”, “RightGapName”, “TopGapName” und “BottomGapName” sollten Sie die Namen der entsprechenden White-Gap-Elemente einsetzen. Falls erforderlich, können Sie Breite und Höhe des Felds mit der Option Inflate erweitern.
Wenn die im Dokument gesuchten Datenfelder mehrzeilige Felder mit einer Kennzeichnung vom Typ „framed letters“ oder „separate framed letters“ sind und die Zeilen nicht durch Lücken voneinander getrennt sind, sollten Sie die obere, untere, rechte und linke Begrenzung mithilfe von White-Gap-Elementen suchen. Die Suche nach einzelnen Zeilen sollte dann durch einen speziellen Algorithmus im Feld Expression angegeben werden. Im vorliegenden Beispiel kann die Höhe jeder einzelnen Zeile berechnet werden, indem die Höhe des gesamten Felds durch 2 geteilt wird.
