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

Пример 4. Шаг 4. Анализ изображений и определение последовательности поиска элементов и групп элементов

Необходимо выяснить:

  • Какова закономерность расположения полей на изображении?
  • На какие элементы мы можем опереться в поиске полей?
  • Какую выбрать последовательность поиска (поскольку на каждом следующем шаге мы можем опираться только на описанные выше элементы)?

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

  • Элемент Header должен накладываться по возможности только на первую страницу документа.
    При наличии определений документов других типов в одном проекте программы FlexiCapture данный элемент также играет роль идентификационного (уникального признака данного типа документа).
  • Элемент Footer должен накладываться только на последнюю страницу документа, он служит для определения конца документа. Рекомендуется создавать в этой группе обязательные подэлементы, которые не позволят наложить Footer на промежуточную страницу документа.

Анализ изображений документов показывает, что:

  1. На первой странице документов располагается группа полей Invoice Number, Invoice Date, Delivery Address. При этом заголовок поля Invoice Number всегда присутствует в начале каждого документа, в то время как поля Invoice Date и Delivery Address могут и отсутствовать.
    • Поля Invoice Number и Invoice Date могут располагаться или справа от соответствующего заголовка или под ним.
    • Delivery Address тоже будем искать справа и под соответствующим заголовком, строго ограничив область поиска. Кроме этого нам понадобится дополнительный элемент для ограничения снизу.
    • Так как значения этих полей присутствует не на всех изображениях, то для ускорения процедуры наложения гибкого описания, можно задать дополнительное условие – не искать значение поля, если не найден его заголовок.
  2. Мы можем использовать группу этих полей как идентификатор нашего документа. Поэтому эти поля будем описывать в составе предопределенного в программе группового элемента Header (назовем его InvoiceHeader).
  3. Последняя страница документа характеризуется словами TOTAL AMOUNT MUST, Carried over, Total CHF, TOTAL, которые находятся ниже таблицы. Но они не уникальны и в наших документах могут встречаться и в заголовке, и в теле таблицы. Поэтому для их поиска дополнительно потребуются опорные элементы, например заголовки некоторых столбцов, опираясь на которые, мы можем описать правильную область поиска наших слов.
  4. Элементы, которыми мы будем описывать последнюю страницу, мы будем создавать в составе предопределенного в программе группового элемента Footer (назовем его InvoiceFooter).
  5. Для того чтобы Footer накладывался только на последнюю страницу документа, он должен содержать в себе обязательный элемент. Так как слова, которые идентифицируют последнюю страницу (см. п.3), находятся на каждой последней странице каждого документа, то элемент, описывающий их, сделаем обязательным.
  6. Таблица (назовем ее InvoiceTable) в наших документах всегда начинается на первой странице и заканчивается на последней. Кроме этого, она всегда ограничена сверху заголовками ее столбцов на первой странице. А ограничение снизу (на последней странице) легче всего задать через вспомогательный элемент, например, мы можем использовать обязательный элемент из группы InvoiceFooter.
    Замечание. Множество всех страниц документа называется многостраничным полотном. Многостраничное полотно образуется при склеивании страниц документа сверху вниз, без стыков и зазоров, левые границы всех страниц лежат на одной прямой, проходящей через точку (0, 0). Порядок склейки страниц определяется порядком страниц в пакете. Поэтому мы можем задать только начало таблицы – ее header на первой странице и конец – footer на последней. Программа будет искать таблицу на протяжении всего документа, всего многостраничного полотна.
  7. Название компании Company мы будем искать всегда на первой странице документа, причем только в первой ее трети.
  8. Заголовок поля Total Amount всегда располагается на последней странице под таблицей. Значение поля будем искать или правее или ниже заголовка.

10.11.2020 12:08:08


Please leave your feedback about this article