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

Блоки

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

В дереве проекта ветка блоков гибкого описания отображается значком .

В зависимости от типа данных, находящихся в области изображения, возможно использование одного из следующих типов блоков:

  • Text, отображается в дереве значком - позволяет извлечь текстовые данные.
    Чтобы улучшить качество распознавания, можно расширить регионы текстовых блоков. Для этого в диалоге свойств корня блоков (открывается двойным щелчком мыши по Blocks) укажите значение  Blocks result region inflate по горизонтали и вертикали.
  • Barcode, отображается в дереве значком - позволяет распознавать штрих-коды.
  • Checkmark, отображается в дереве значком - служит для распознавания меток.
  • Picture, отображается в дереве значком - позволяет обрабатывать объекты, которые при предраспознавании не были распознаны как текстовые.
  • Table, отображается в дереве значком - позволяет извлекать данные из таблиц.
  • Group, отображается в дереве значком - служит только для логической группировки блоков.
  • Checkmark group, отображается в дереве значком - служит для создания группы меток. В такую группу могут быть добавлены только блоки метки, создавать и переносить в группу меток блоки других типов нельзя.
  • Repeating group, отображается в дереве значком - позволяет объединять блоки в группу, допускающую повторения.
  • Unrecognizable, отображается в дереве значком - позволяет исключить область из распознавания.

Блоки, для которых хотя бы в одном варианте описания не указана область изображения, помечаются пустым квадратиком в верхнем правом углу значка: . Если выбрано одно гибкое описание (с помощью пункта Select Layout контекстного меню элемента гибкого описания или раздела FlexiLayout, либо с помощью пункта Select Alternative Layout контекстного меню гибкого описания), то наличие области изображения проверяется только в нем.

Замечание. Распознавание и извлечение данных из блоков выполняется в системе потокового ввода (FlexiCapture).

Свойства блока

  • Name - имя блока. Имя блока должно состоять из букв (русских, латинских или латинских с диакритическими символами), цифр и знака подчеркивания. Имя блока должно начинаться с буквы или подчеркивания. Пробелы и специальные символы в именах не допускаются.
  • Тип блока - выбирается при создании блока. Тип блока должен соответствовать объекту(ам) изображения, находящемуся в области изображения, описываемой данным блоком.
  • Comment - комментарий, который может указать пользователь. Наличие комментария необязательно.
  • Has repeating instances - данное свойство указывает на то, что блок будет состоять из нескольких экземпляров. Например, это свойство следует отметить, если в качестве области блока будут использоваться все экземпляры элемента Repeating Group.
  • Instance sort order - данное свойство позволяет задать порядок объединения экземпляров группы в блок. Свойство активно только при отмеченной опции Has repeating instances. Возможные значения:
    • Top to bottom - экземпляры объединяются в блок в зависимости от их расположения на изображении, сверху вниз.
    • Left to right - экземпляры объединяются в блок в зависимости от их расположения на изображении, слева направо.
    • Right to left - экземпляры объединяются в блок в зависимости от их расположения на изображении, справа налево.
    • In order of finding - экземпляры объединяются в блок в порядке формирования гипотез. Гипотезы формируются в порядке убывания качества, а если пользователь задал дополнительные условия поиска экземпляров, то в определенном пользователем порядке. Таким образом, если нужен не предусмотренный программой порядок, его можно задать с помощью дополнительных условий.

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

  • For Layout - позволяет выбрать вариант описания, в котором указывается область изображения.
  • Source element - позволяет задать на изображении область, идентичную региону элемента, который используется для поиска блока на изображении. При наложении гибкого описания на изображение будет найден объект (или несколько объектов), соответствующий этому элементу. Именно из этих объектов и будут извлекаться данные при обработке форм. Для повторяющейся группы можно выбрать один из экземпляров или использовать все экземпляры (AllInstances). См. подробнее Выбор экземпляров повторяющейся группы в качестве опорного, исключаемого или Source элемента.
  • Expression - данное свойство позволяет задать область изображения, несовпадающую ни с один регионом элементов гибкого описания. Например, можно объединить регионы элементов и пространство между ними в один блок, расширить регион элемента на заданную величину или задать месторасположение блока на основе абсолютных координат, не привязываясь к элементам. В этом случае регион блока можно описать на специальном языке описания FlexiLayout.

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

Группа меток и обычная группа блоков не имеют никаких параметров, кроме имени и комментария.

Параметры повторяющейся группы блоков такие же, как у других, не групповых, блоков. При этом опция Has repeating instances у них всегда включена. Дочерние блоки могут как иметь опцию Has repeating instances , так и не иметь, но для них всегда создается переменная "Output instances". Если блок внутри повторяющейся группы блоков имеет опцию Has repeating instances , это значит, что он может повторяться внутри каждого экземпляра родительского блока.

Задание региона блока с помощью экземпляров повторяющейся группы

Если блок задается с помощью нескольких экземпляров, область блока будет состоять из отдельных регионов. В случае использования конкретного экземпляра повторяющейся группы (например, LastFound), регион блока задается также, как и для любого другого элемента. Однако, можно использовать все найденные экземпляры (AllInstances). Для использования нескольких экземпляров необходимо включить опцию Has repeating instances.

Также можно написать вручную код для блока с использованием предопределенной переменной OutputInstances, например:

OutputInstances = SearchElements.PageHeader.AllInstances.UnionRect;
    

В программе FlexiCapture блоки, у которых отмечена опция Has repeating instances , обрабатываются следующим образом:

  • для нетабличных блоков заданные экземпляры будут экземплярами соответствующего поля;
  • для табличного блока заданные экземпляры будут считаться одним экземпляром поля, т.е. в программе FlexiCapture такой блок будет обрабатываться как поле типа Таблица, с разрывным регионом.

Правила задания ссылок на элементы для повторяющейся группы блоков

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

Дочерние блоки повторяющейся группы блоков ссылаются на дочерние элементы повторяющейся группы элементов, на которую ссылается родительский блок. При этом ссылка должна быть с таким же Id экземпляров.

Пример: Если повторяющийся групповой блок ссылается таким образом: SearchElements..RepGr1.Instance(1).RepGr2.AllInstances, то его дочерние блоки могут сослаться на элемент RepGr1..RepGr2.Element только так:

SearchElements.RepGr1.Instance(1).RepGr2.AllInstances.Element.
    

При отсутствии признака HasRepeatingInstances можно ссылаться только на подэлементы базовой группы, которые не имеют повторений внутри нее, и, наоборот, при наличии признака ссылаться можно на элементы, имеющие повторения внутри базовой группы, причем только на все экземпляры сразу.

Примеры:

Есть признак HasRepeatingInstances

SearchElements.RepGr1.Instance(1).RepGr2.AllInstances.RepGr3.AllInstaces.Element
SearchElements.RepGr1.Instance(1).RepGr2.AllInstances.RepGr3.AllInstaces.RepGr4.AllInstances.Element
    

Нет признака HasRepeatingInstances

SearchElements.RepGr1.Instance(1).RepGr2.AllInstancess.Gr3.SubElement(здесь Gr3 – простая группа)
SearchElements.RepGr1.Instance(1).RepGr2.AllInstances.SubElement
    

Замечание. Если ссылки выставлены через Source element , то проверка осуществляется во время компиляции гибкого описания, а если через Advanced Code, то ошибка обнаружится во время наложения гибкого описания.

Примеры задания региона блока с помощью языка описания FlexiLayout

Для задания региона блока используется поле Expression. В зависимости от типа блока и от состояния опции Has repeating instances для формирования региона блока используется одна из предопределенных переменных: OutputRegion (типа Region), OutputTable (типа TableHypothesis) и OutputInstances (типа HypothesisInstances либо TableHypothesisInstances). Подробнее о предопределенных переменных, используемых в поле Expression, см. Язык описания FlexiLayout. Предопределенные переменные.

Получение и расширение региона элемента на 3 мм по ширине и на 5 мм по высоте OutputRegion = SomeElement.Rect;
OutputRegion.Inflate( 3*mm, 5*mm );
Объединение описывающих прямоугольников регионов двух элементов и возвращение описывающего прямоугольника от объединения Rect outputRect;
outputRect = Element1.Rect Or Element2.Rect;
OutputRegion = outputRect;
Формирование точного региона из описывающих прямоугольников регионов двух элементов RectArray outputRects;
outputRects = RectArray( Element1.Rect );
outputRects.Add: Element2.Rect;
OutputRegion = Region( outputRects );
Формирование точного региона из регионов объектов изображения, соответствующим двум различным элементам RectArray outputRects;
outputRects = Element1.Rects;
outputRects.Add( Element2.Rects );
OutputRegion = outputRects.Region;
Формирование точного региона из регионов объектов изображения, входящих в регион элемента Element1, с удалением регионов объектов, входящих в регион элемента Element2 OutputRegion = FormRegion( Element1.Rects, Element2.Rects );
Задание табличного блока с помощью табличного элемента OutputTable = SearchElements.TableElement;
Задание не табличного блока с помощью экземпляров гипотез некоторого элемента OutputInstances = SearchElements.RepeatingGroup.AllInstances.TemplateElement;
Задание табличного блока с помощью экземпляров гипотез некоторого элемента OutputInstances = SearchElements.RepeatingGroup.AllInstances.TableElement;

Для описания региона блока может также использоваться предопределенная переменная IsNull, которая сигнализирует о том, найден ли регион блока при наложении гибкого описания. Значение false означает, что регион найден, true - не найден.

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

Примеры использования переменной IsNull

12/1/2020 7:04:05 AM


Please leave your feedback about this article