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

Пример 3. Шаг 9. Описание поля Invoice Date, элементы grDate, InvoiceDate и InvoiceDateAsString

Проанализировав изображения, видим, что поле Invoice Date располагается правее заголовка и на одном с ним уровне. Для поиска даты воспользуемся элементом типа Date.На случай появления изображений низкого качества, где текст даты может распознаваться не очень хорошо и поиск элемента типа Date не даст результатов, дополнительно опишем элемент типа Character String. Для того чтобы задать настройки, общие для всех этих элементов, нам потребуется составной элемент grDate:

  • Поле Invoice Date располагается правее заголовка и на одном с ним уровне.
    Для поиска даты воспользуемся элементом типа Date.
  • На некоторых изображениях текст даты распознаётся не очень хорошо.
    Поэтому на тот случай, если поиск элемента типа Date не даст результатов, дополнительно опишем элемент типа Character String.

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

Чтобы создать элемент grDate:

  1. В составе элемента InvoiceHeader создайте элемент grDate (тип Group).
  2. Перейдите на вкладку Relations.
  3. Поскольку все элементы, служащие поиску местоположения поля Invoice Date, могут находиться только правее ключевых слов заголовка kwInvoiceDate и на одном с ними уровне, задайте следующие условия поиска:
    • Right of элемента kwInvoiceDate, Offset = 0.
    • Above элемента kwInvoiceDate, Offset = -10, Element boundary = Bottom.
    • Below элемента kwInvoiceDate, Offset = -10, Element boundary = Top.

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

Чтобы создать элемент InvoiceDate:

  1. В составе элемента InvoiceHeader.grDate создайте элемент InvoiceDate (тип Date).
  2. Выберите вкладку Date.
  3. Для элемента InvoiceDate на вкладке Date следует указать все допустимые форматы записи даты. Предполагаем, что формат даты Day, month, year , язык English, других ограничений на дату нет.

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

  1. Выберите вкладку Advanced.
  2. Поле Invoice Date является необязательным элементом изображении. В случае присутствия поля Invoice Date всегда будет и заголовок. При этом, поле Invoice Date расположено ближе всего к заголовку области поиска. Таким образом, в поле Advanced pre-search relations задайте дополнительные условия поиска:Искать объект изображения, только если найден элемент kwInvoiceDate. Искать объект изображения, ближайший к элементу kwInvoiceDate . На языке описания FlexiLayout данное условие выглядит следующим образом:
    If InvoiceHeader.kwInvoiceDate.IsNull Then DontFind;
    Nearest: InvoiceHeader.kwInvoiceDate;
    Замечание. Условие Nearest также можно задать через интерфейс программы. Для этого перейдите на вкладку Relations, отметьте опцию Nearest, в выпадающем списке To: выберите Element и укажите kwInvoiceDate в качестве Reference element.
  3. Протестируйте изображения и изучите, на сколько верно программа находит элемент на всех изображениях, где поле Invoice Date присутствует.

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

Замечание. Более подробно про поиск даты в случае плохого качества изображений см. Tips and tricks.

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

  1. В составе элемента InvoiceHeader.grDate создайте элемент InvoiceDateAsString типа Character String.
  2. Выберите вкладку Character String.
  3. В поле Character count задайте нечеткий интервал { -1, 8, 14, INF } оценивающий длину цепочки символов. Предполагаем, что все возможные значения будут находиться в интервале от 8 до 14 символов. Любая гипотеза, выходящая за рамки данного интервала, будет штрафоваться.
  4. В поле Max space length задайте значение 20, ограничивающее допустимый размер просвета в текстовой строке в 20 dot;
  5. Не накладывайте других ограничений на параметры элемента, оставьте значения по умолчанию.
  6. Выберите вкладку Advanced.
  7. Поскольку элемент InvoiceDateAsString мы хотим искать только в том случае, если элемент InvoiceDate не обнаружен на изображении, в поле Advanced pre-search relations задайте дополнительные условия поиска:Искать объект изображения, только если не найден элемент InvoiceDate . На языке описания FlexiLayout данное условие выглядит следующим образом:
    If Not InvoiceDate.IsNull Then DontFind;
  8. Поскольку поле Invoice Date может находиться на изображении, а может и нет, но при этом всегда присутствует вместе с заголовком и расположено ближе всего к заголовку в области поиска, в поле Advanced pre-search relations задайте дополнительные условия поиска:Искать объект изображения, только если найден элемент kwInvoiceDate. Искать объект изображения, ближайший к элементу kwInvoiceDate . На языке описания FlexiLayout данное условие выглядит следующим образом:
    If InvoiceHeader.kwInvoiceDate.IsNull Then DontFind;
    Nearest: InvoiceHeader.kwInvoiceDate;
    Замечание. Условие Nearest также можно задать через интерфейс программы. Для этого перейдите на вкладку Relations, отметьте опцию Nearest, в выпадающем списке To: выберите Element и укажите kwInvoiceDate в качестве Reference element.
  9. Протестируйте изображения и убедитесь, что программа верно находит элемент на всех изображениях, где поле Invoice Date присутствует, и для элемента InvoiceDate сформирована гипотеза.
  10. Выберите в качестве описания местоположения блока InvoiceDate опцию Source element. В качестве source element укажите элемент InvoiceHeader.grDate, нажав кнопку .
    Замечание. Регион составного элемента состоит из объединения регионов найденных подэлементов.

12/1/2020 7:04:05 AM


Please leave your feedback about this article