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

Пример 2. Шаг 11: Описание поля Recipe #. Элемент RecipeNumber

Будем полагать, что значение поля Recipe #  всегда является однострочным. Поскольку значение этого поля не является фиксированным, в отличие от заголовка поля, для его нахождения следует определить элемент типа Character String .

Для того чтобы создать элемент RecipeNumber:

  1. Создайте элемент типа Character String с именем RecipeNumber.

    Показать пример

  1. Выберите вкладку Character String.

    Показать пример

  1. Задайте алфавит (все возможные символы, которые могут встретиться в номере рецепта). Исходя из информации, полученной при просмотре тестовых изображений, предполагаем, что это - все заглавные буквы латинского алфавита и цифры. Причем их порядок и количественное соотношение произвольно.
    Для задания символов алфавита следует нажать кнопку Add... и выделить соответствующие символы в открывшемся диалоге Add New Alphabet .
    Замечание. Выбранные символы отобразятся в столбце
    , поля Alphabets , вкладки Character String.
  2. Задайте значение параметра Percentage of alphabet characters равным 1. Это значит, что при поиске элемента RecipeNumber в расчет будут приниматься только символы данного алфавита.

    Показать пример

Замечание. В общем случае для элемента может быть создано несколько разных алфавитов. В поле Percentage of alphabet characters можно задать максимально допустимую долю участия символов каждого из них в данном элементе.

  1. Снимите отметку с пункта Allow embedded hypotheses. Это позволит формировать гипотезы максимальной длины, удовлетворяющие всем условиям поиска. Иначе может быть сформировано несколько пересекающихся гипотез меньшей длины, каждая из которых состоит из кусочков, относящихся к одному из заданных алфавитов (с учетом параметра Percentage of non-alphabet characters , т.е. с добавлением допустимого числа неалфавитных символов), и удовлетворяет всем условиям поиска.
  2. В поле Percentage of non-alphabet characters задайте допустимую долю символов, не входящих в алфавит данного элемента, равную 0.2 (что означает 20%).
    Замечание. Значение данного свойства подбирается опытным путем и может быть изменено в процессе отладки гибкого описания.
  3. В поле Character count задайте нечеткий интервал { 0, 8, 10, 16 }, оценивающий длину цепочки символов. Предполагаем, что длина номера составляет всегда 8 символов. Запишем с запасом, что длина номера должна находиться в интервале от 8 до 10 символов. Любая гипотеза, выходящая за рамки данного интервала, будет штрафоваться.
    Замечание. Значение данного свойства подбирается опытным путем и может быть изменено в процессе отладки гибкого описания.
  4. Перейдите на вкладку Relations.

    Показать пример

  1. В качестве опорного элемента (элемента, относительно которого задается положение искомого элемента) для элемента RecipeNumber будем использовать элемент Recipe. Номер рецепта всегда находится справа от заголовка поля, а также на одном уровне с ним. Поэтому помимо отношения правее, необходимо задать положение номера рецепта относительно верхней и нижней границы элемента заголовка. Иначе в качестве гипотезы может быть найден любой текст, соответствующий заданному алфавиту, и лежащий в правой полуплоскости относительно элемента заголовка, в том числе выше или ниже него.
    Итак, будем искать номер рецепта, заданный элементом RecipeNumber, справа от заголовка, заданного элементом Recipe и находящийся на одном уровне с заголовком Recipe.
  2. Задайте положение элемента RecipeNumber справа от правой границы элемента Recipe.
    Для этого нажмите кнопку Add и в открывшемся диалоговом окне выберите в поле Reference element элемент Recipe. В выпадающем списке Type выберите значение Right of , в выпадающем списке Reference boundary выберите значение Right и оставьте значение свойства Offset равным 0. Нажмите кнопку Add Relation.

    Показать пример

  1. Задайте положение элемента RecipeNumber не ниже элемента Recipe.
    Для этого нажмите кнопку Add и в открывшемся диалоговом окне выберите в поле Reference element элемент Recipe. В выпадающем списке Type выберите значение Above и задайте значение свойства Offset равным -50 (значение подбирается опытным путем), чтобы описать область поиска с небольшим запасом по высоте заголовка. Отрицательное значение смещения позволяет задавать положение нижней границы элемента ниже нижней границы заголовка. Нажмите кнопку Add Relation.
  2. Задайте положение элемента RecipeNumber не выше элемента Recipe.
    Для этого нажмите кнопку Add и в открывшемся диалоговом окне выберите в поле Reference element элемент Recipe. В выпадающем списке Type выберите значение Below и задайте значение свойства Offset равным -50 (значение подбирается опытным путем), чтобы описать область поиска с небольшим запасом по высоте заголовка. Отрицательное значение смещения позволяет задавать положение верхней границы элемента выше верхней границы заголовка. Нажмите кнопку Add Relation.

Замечание. Неотрицательные смещения при указании в поле Reference boundary значения  позволяют задавать только положение типа правее правой границы элемента, левее левой границы элемента, выше верхней границы элемента и ниже нижней границы элемента. Задание области поиска между верхней и нижней границами заголовка при указании в свойстве Reference boundary значений Top и Bottom с неотрицательным значением свойства Offset ограничивает область поиска высотой заголовка, что исключает обнаружение гипотез, слегка выходящих по вертикали за горизонтальные границы заголовка.

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

11/10/2020 12:08:08 PM


Please leave your feedback about this article