Russian (Русский) - Change language

Описание текстовых полей, содержащих буквы в рамках

Иногда бывает нужно создать гибкое описание для поиска полей, характерных для жестких форм, таких как, например, буквы, заключенные в рамки.

Обычно такое решение применимо для ввода жестких форм, поступивших в систему обработки из разных источников. Примером могут служить формы, созданные в региональных отделениях одной организации, которые, несмотря на внешнее сходство, могут, тем не менее, не подходить под одно и то же жесткое определение документа. В таких случаях бывает целесообразно создать одно гибкое описание вместо нескольких чуть отличающихся жестких определений документов.

Если искомые на форме поля данных представляют собой разметку типа «буквы в рамках» или «буквы в изолированных рамках», поиск границ таких полей через разделители может оказаться довольно сложным занятием, а описание элементов может получиться довольно громоздким, особенно при отсутствии или неустойчивом распознавании заголовков к данным полям. Кроме того, для таких полей очень существенно, чтобы в блок попали не только данные поля, но и сама рамка целиком. А в случае тонких разделителей возможны ситуации, при которых они могут находиться не целиком, а частично. В этом случае верхнюю, нижнюю, правую и левую границы поля предпочтительно искать через элементы типа White Gap. Границы поля описываются с помощью специального алгоритма в диалоге свойств блока в поле Expression. При этом верхнюю границу поля можно определить, как нижнюю границу верхнего просвета, нижнюю границу поля – как верхнюю границу нижнего просвета, левую границу поля – как правую границу левого просвета, и правую границу поля – как левую границу правого просвета.

Проект FlexiLayout Studio, содержащий тестовые изображения и отлаженное гибкое описание, находится в %public%\ABBYY\FlexiCapture\12.0\Samples\FLS\Tips and Tricks.

Пример:

Допустим, на изображении найдены все 4 просвета (LeftGapName, RightGapName, TopGapName, BottomGapName), необходимые для описания поля данных, представленного на рисунке.

Тогда код в окне Expression будет выглядеть так:

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;
    

Замечание. Вместо LeftGapName, RightGapName, TopGapName и BottomGapName должны стоять имена соответствующих элементов-просветов. При необходимости можно задать запас поля по ширине и высоте с помощью функции Inflate.

Если искомые на форме поля данных являются многострочными полями с разметкой типа «буквы в рамках» или «буквы в изолированных рамках», причем строки не отделяются друг от друга просветами, в этом случае через элементы типа White Gap предпочтительно искать верхнюю, нижнюю, правую и левую границы поля целиком. А поиск отдельных строк ведется уже в свойствах блока путем описания соответствующего алгоритма в поле Expression. Для приведенного примера высота отдельной строки может быть получена путем деления высоты поля на 2.

12/1/2020 7:04:05 AM


Please leave your feedback about this article