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

Пример 3. Шаг 26. Поиск табличного элемента, элемент InvoiceTable

Итак, все предварительные приготовления произведены, и мы можем искать поле Invoice Table. Опишем элемент типа Table:

  1. Header таблицы. Как уже было решено (см. подробнее Шаг 13), заголовки первых 2х столбцов Reference и Designation мы опишем с помощью соответствующих ключевых слов (диалог свойств табличного элемента → вкладка Columns → диалог свойств столбца), а для остальных - столбцы Quantity, Unit Price и Total – воспользуемся предварительно описанными вспомогательными элементами.
  2. Footer таблицы. Для задания футера таблицы (Footer) мы решили (см. подробнее Шаг 13) использовать предварительно описанный элемент, отыскивающий начало итоговой части по ключевым словам и фразам.
  3. Область поиска таблицы. Ограничим область поиска справа относительно заголовка последнего, не нужного нам, столбца Sales.

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

  1. Создайте элемент InvoiceTable (тип Table).
  2. Выберите вкладку Columns.
  3. Выберите в качестве блока, для поиска которого служит данный элемент, ранее созданный (см. Шаг 2) блок InvoiceTable, нажав кнопку " Select ".
  4. Выберите в списке столбцов Reference и нажмите кнопку Properties....
    Заголовок данного столбца мы будем искать по ключевому слову Reference, поэтому оставьте значения по умолчанию.
  5. Выберите в списке столбцов Designation и нажмите кнопку Properties....
    Заголовок данного столбца мы будем искать по ключевому слову Designation, поэтому оставьте значения по умолчанию.
  6. Выберите в списке столбцов Quantity и нажмите кнопку Properties....
    Для заголовка данного столбца мы будем использовать ранее найденный элемент TableHeader.kwQuantity. Для этого переключитесь на опцию Use found element as column name и выберите элемент TableHeader.kwQuantity, нажав кнопку .

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

  1. Выберите в списке столбцов UnitPrice и нажмите кнопку Properties....
    Для заголовка данного столбца мы будем использовать ранее найденный элемент TableHeader.kwUnitPrice. Для этого переключитесь на опцию Use found element as column name и выберите элемент TableHeader.kwUnitPrice, нажав кнопку .

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

  1. Выберите в списке столбцов Total и нажмите кнопку Properties....
    Для заголовка данного столбца мы будем использовать ранее найденный элемент TableHeader.kwTotal. Для этого переключитесь на опцию Use found element as column name и выберите элемент TableHeader.kwTotal, нажав кнопку .
  2. Выберите вкладку Order.
  3. Поскольку искомые столбцы могут перемежаться другими (например, Unit), но всегда следуют в следующем порядке: сначала Reference, потом Designation, потом Quantity, правее него Unit Price, и ещё правее Total, - то выберем вариант Rules for column order и, нажав кнопку Add... , добавим все столбцы в таком порядке: Reference << Designation << Quantity << Unit Price << Total.

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

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

  1. Выберите вкладку Header. Заголовок таблицы нам нужен, но других ограничений мы накладывать не будем, поэтому оставьте значения по умолчанию.

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

  1. Выберите вкладку Footer. Для итоговой части таблицы мы будем использовать ранее найденный элемент Footer.kwFooter. Для этого переключитесь на опцию Use found element as footer и выберите элемент Footer.kwFooter, нажав кнопку .

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

  1. Выберите вкладку Rows.
  2. Поскольку в нашей таблице некоторые столбцы могут содержать многострочные (multiline) записи (rows), необходимо задать ключевые столбцы для разделения на строки. Выберите опцию Use master columns to detect rows.
    В качестве разделителя на строки первым укажем столбец Total, так как в этом столбце всегда присутствуют данные, и каждой записи таблицы в этом столбце соответствует одна строка данных. На тот случай, если данный столбец не будет обнаружен на форме, укажем следующими разделителями столбец Quantity и столбец Unit Price. Выберите данный набор столбцов с помощью кнопки .

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

  1. Выберите вкладку Relations. Поскольку интересующие нас столбцы таблицы располагаются левее начала заголовка столбца Sales с некоторым запасом, добавьте следующие условия поиска:
    Left of элемента TableHeader.kwSales, Offset = -40, Reference boundary = Left.
    Замечание. При подборе значений для отступов (offset) бывает полезно обратить внимание на геометрические свойства (границы и размеры) опорных и искомых объектов изображения в режиме просмотра результатов предраспознавания. В остальном эти значения подбираются опытным путем.
  2. Наложим гибкое описание на тестовый набор изображений.
    Видим, что программа верно находит табличный элемент на всех изображениях, но на некоторых изображениях в столбец Quantity попадает текст из предыдущего, не нужного нам столбца.
    Чтобы отделить данные столбца Quantity от мусора, зададим тип контекста для данного столбца.
  3. Откройте диалог Properties табличного элемента InvoiceTable.
    Перейдите на вкладку Columns , откройте диалог Properties для столбца Quantity, отметьте опцию проверки содержимого столбца Check content type. В типе контекста Type of column content выберите Number.

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

  1. Если мы протестируем изображения теперь, то видим, что сейчас в столбец Quantity попадают только цифры, что и требовалось.
  2. Выберите в качестве описания местоположения блока InvoiceTable опцию Source element. В качестве source element укажите элемент InvoiceTable, нажав кнопку .

11/10/2020 12:08:08 PM


Please leave your feedback about this article