ПРИМЕРЫ

 

1.1. Создание шаблона на примере документа «Справка о стоимости выполненных работ»

.

В случае, когда одним из действий сценария является распознавание и импорт данных из сканированного документа, необходимо воспользоваться блоками из вкладки Автоматизация OCR, которые находятся на главной панели Дизайнера (Sherpa Designer).

В Дизайнере есть предустановленные шаблоны по следующим видам документов:

Торг12
УПД
Счет-фактура
Счет на оплату
Акт выполненных работ
ТТН
Акт сверки
Паспорт
СНИЛС
2 НДФЛ
CAPCHA

.

В случае, когда роботу необходимо распознать информацию из иного вида документа, не указанного во вкладке Автоматизация OCR, потребуется создать шаблон документа. При этом в сценарий проекта добавляется блок «Распознать по шаблону».

По созданному шаблону в дальнейшем робот будет распознавать и обрабатывать информацию из всех документов данного вида (Справка о стоимости выполненных работ и затрат, Акт об оказании услуг и т.д.).

Для каждого вида документов создается отдельный шаблон..

5.1.1. Предобработка документа

Рассмотрим создание шаблона на примере документа «Справка о стоимости выполненных работ и затрат».

Прежде чем робот приступит к созданию шаблона, документ должен быть распознан роботом и сохранен по указанному пути.

Например, при распознавании документа в формате .pdf в проекте сценария добавляем блок «Получить текст со страницы OCR». В настройках результатов во вкладке «Выход» указываем $DocPageText

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

Проверить и сопоставить названия столбцов необходимо в сценарии проекта «Определить колонки.process», они задаются в настройках справа: «Панель свойств» — «Переменные».

Например, после обработки документа «Справки о стоимости работ и затрат» в результате роботом должны выводиться следующие колонки:

.

Summa

сумма

Price

цена

SummaNDS

сумма с НДС

Stavka

ставка

Name

имя/название

Count .

количество

.

Но при создании шаблона мы видим, что в самом документе часть этих данных отсутствует.

5.1.2. Создание шаблона

Создание шаблона происходит на верхней панели основного меню Дизайнера во вкладке «Разработка» — раздел «Запись» — «Извлечь по шаблону».

5.1.2.1. Извлечь по шаблону

При нажатии на кнопку «Извлечь по шаблону» открывается обработка «Генератор шаблонов» (Шаблонизатор).

При создании нового шаблона происходит автоматическое распознавание документа. Так как мы создаем шаблон документа, с которым ранее не работали, нам необходимо создать новые якоря и привязки к тем значениям, которые будут обрабатываться роботом именно в данном типе документа. Поэтому на сообщение во всплывающем окне «Вы хотите импортировать все таблицы из документа в шаблон» отвечаем «Нет».

5.1.2.2. Распознавание текста

Распознавание текста в Шаблонизаторе производится с помощью встроенных и внешних модулей распознавания:

1.Tesseract OCR
2.ABBYY Cloud OCR
3.ABBYY Fine Reader
4.Microsoft OСR
5.YandexVision

.

В платформе Sherpa интегрированы несколько OCR -модулей. Два из них – офлайн (поставляются вместе с роботом), и будут работать без подключения к интернету. Это Tesseract OCR и Microsoft OCR.

Yandex Vision и ABBYY OCR – онлайн-модули, т.е. используют функции соответствующих облачных модулей.

ABBYY Fine Reader – это коммерческий офлайн-модуль, использование которого требует отдельной лицензии.

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

В случае, если распознаваемый документ высокого качества, с высоким расширением, то достаточно использовать бесплатные OCR-модули.

При обработке документов низкого качества лучше использовать платные решения.

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

.

Обработанный документ выглядит так, как показано на скриншоте выше.

5.1.2.3. Сохранить шаблон

Для дальнейшей работы с шаблоном его нужно сохранить, нажав на иконку в левом верхнем углу основной панели действий. Далее указываем путь для сохранения шаблона и имя файла. Имя файла указываем исходя из вида документа, например, «Справка о стоимости выполненных работ и затрат».

5.1.3. Работа с таблицами

После сохранения шаблона переходим к работе с таблицами.

В левой части основной панели настроек выбираем вкладку «Таблицы» — нажимаем кнопку «Импортировать» .

Импортируем все таблицы документа, для этого в появившемся окне «Вы хотите импортировать все таблицы документа в шаблон?» выбираем «Да».

На рабочей панели справа отобразятся все таблицы шаблона, которые были распознаны. Их может быть одна-две и более. В нашем случае на скриншоте ниже мы видим, что OCR-модулем распознаны 3 таблицы шаблона.

Каждой таблице автоматически присваивается номер, нумерация начинается с 0. Также отображается количество колонок каждой распознанной таблицы. Именно по этому значению мы можем определить с какой (или с какими) таблицами мы продолжим работать.

В нашем примере нас интересуют данные из таблицы с 6-ю колонками, соответственно, остальные таблицы (с 2 и с 1 колонками) мы можем удалить из окна панели.

.

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

.

5.1.3.1. Индекс

Индекс OCR-таблицы. В случае, если Шаблонизатор извлекает данные лишь из одной таблицы сканированного документа, необходимо указывать индекс, равный 0. При этом для улучшения привязки рекомендуется указывать минимальное количество колонок.

1.1.1.2.Минимальное количество колонок

Указывается минимальное количество колонок в OCR-таблице. Все таблицы с количеством меньше указанного будут пропущены.

1.1.1.3.Максимальное количество колонок

Указывается максимальное количество колонок в OCR-таблице. Все таблицы с количеством больше указанного будут пропущены.

При создании шаблона «Справки о стоимости выполненных работ и затрат» указываем минимальное количество колонок равное 5, т.к. нас интересуют данные из таблицы с 6 колонками. Остальные таблицы данного документа содержат менее 5 колонок.

Таким образом Шаблонизатор продолжит работу с интересующей нас таблицей.

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

1.1.1.4. Проверить

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

Также проверку можно запустить нажатием клавиши F5.

1.1.1.5. Пропустить строки

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

При выборе значения, равного 1, — первые строки будут пропущены. Наименования колонок будут соответствовать значениям первой строки.

Если задать названия колонок в шаблоне, то эти значения не будут изменены.

.

В нашем примере необходимо пропустить 5 верхних строк таблицы, т.к. значения интересующих нас данных указаны в таблице документа начиная с 6 строки.

Для этого в строке «Пропустить строки» указываем число 5.

.

1.1.1.6. Строк в заголовке

При построении таблицы, заданное количество строк будет использовано для создания заголовков колонок. При указании значения 0 заголовки будут взяты из шаблона колонок, в противном случае название будет суммироваться из ячеек колонки по заданному количеству строк.

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

После выполненных действий необходимо проверить промежуточный результат. Нажимаем «Проверить» — далее «Выполнить полное сканирование».

1.1.1.7. Результат полного сканирования

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

1.1.1.8. Определить колонки

На этом этапе часть данных может отражаться некорректно, в частности, названия колонок могут не совпадать с теми значениями, которые ранее были заданы в сценарии проекта «Определить колонки.process» — в настройках «Панель свойств» — «Переменные».

Для корректировки выводимых результатов необходимо вернуться в сценарий проекта «Определить колонки.process», сопоставить значения переменных, заданных в настройках «Панель свойств», добавить указанные здесь колонки и определить для них названия.

1.1.1.9. Добавление колонок «Количество», «НДС Сумма», «Ставка».

В нашем примере в результатах полного сканирования отсутствует несколько колонок, в том числе колонка «Количество».

Название колонки должно соответствовать значению, присвоенному данной переменной «количество».

Добавление недостающих колонок производится на правой рабочей панели Шаблонизатора во вкладке «Таблицы». Нажимаем на кнопку , добавляем колонку, присваиваем колонке имя «Количество».

При повторной проверке в результатах полного сканирования Шаблонизатора появится колонка «Количество».

Производим проверку остальных колонок и корректируем их названия в зависимости от значений переменных в сценарии проекта «Определить колонки.process».

При создании шаблона «Справка о стоимости выполненных работ и затрат» аналогичным образом добавляем колонки: «НДС Сумма», «Ставка».

В случае, если название колонки не соответствует названию переменной, но содержание колонки соответствует значению переменной, то создавать дополнительную колонку не нужно, достаточно изменить название колонки в Шаблонизаторе.

Например, в таблице с результатами Шаблонизатора название колонки «Стоимость начала проведения работ», а название переменной «Цена», тогда мы вносим изменения в название колонки, предварительно убедившись в том, что именно в этой колонке отображается цена.

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

Нумерация колонок таблицы в Шаблонизаторе начинается с 0.

.

В случае если название колонки сохранено по умолчанию и содержит в себе числовое значение (например, «Без имени1»), то в таблице результатов Шаблонизатора название указанной колонки определится автоматически и будет содержать в себе текст из соответствующей колонки сканированного документа.

Если название колонки мы изменили вручную, то в таблице результатов Шаблонизатора будет отображаться именно заданное нами название колонки.

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

В нашем примере слово «Стоимость» располагается в 4 ячейке таблицы, но в некоторых документах может сместиться в 5 ячейку. В таких случаях рекомендуем переименовать все ячейки, названия которых могут быть смещены.

По завершению работы с таблицей в Шаблонизаторе необходимо произвести проверку и удостовериться в корректности результатов полного сканирования.

1.1.3.Якоря

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

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

.

В нашем примере необходимо получить данные следующих атрибутов:

«Инвестор»
«Заказчик (Генподрядчик)»
«Номер документа»
«Дата»

.

5.1.4.1. Создание якоря (атрибут «Инвестор»)

Рассмотрим процесс создания якоря на примере атрибута «Инвестор».

.

Для создания якоря переходим во вкладку «Якоря» в правой рабочей области Шаблонизатора и нажимаем кнопкув верхней части панели. В этот момент становятся активны «OCR блоки» и «OCR таблицы» для удобства выбора определенного блока в качестве якоря.

Для того, чтобы Шаблонизатор мог корректно определить местоположение атрибута в документе, необходимо ограничить его границы. Ограничение верхней границы задается по тексту, находящемуся на строку выше самого атрибута. В нашем случае это блок «Форма по».

Для присвоения значения якорю достаточно кликнуть левой клавишей мыши по OCR-блоку (слову), которое мы выбрали в качестве якоря. Также можно указать значение вручную, написав якорное слово в строке «Значение».

В случае, если мы укажем в качестве якоря слово «Форма», то якорь будет установлен неверно, т.к. в документе есть несколько OCR-блоков, распознавших это слово.

Поэтому меняем указанное значение якоря на «Форма по». После этого необходимо произвести проверку, чтобы убедиться, что якорное слово определилось корректно.

Когда значение якоря задается нажатием клавишей мыши на OCR-блок, — к значению добавляется знак «*», если значение указывается вручную, — добавлять этот знак необязательно. При использовании якорных привязок знак «*» нужно удалить и после этого добавить привязку.

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

Далее добавляем якорь для атрибута «Инвестор». Для корректного распознавания информации об Инвесторе, необходимо ограничить якорными точками данный атрибут слева и справа.

Слева якорем будет выступать слово «Инвестор». Добавляем якорь, нажимаем левой клавишей мыши на OCR-блок «Инвестор» и Шаблонизатор автоматически заполняет строку «Значение», тем самым определяя якорную точку.

Справа якорем будет выступать слово «по». По аналогии добавляем якорь в рабочей области Шаблонизатора, нажимаем на OCR-блок «по» и производим проверку.

После проверки видим, что якорь установлен неверно, т.к. в документе есть несколько OCR-блоков, распознавших слово «по».

Для корректного определения якоря осуществляем якорную привязку к якорю «Форма по», который находится строкой выше того блока, который мы хотим указать в качестве якоря. Для этого нажимаем на кнопку «Добавить привязку», затем кликаем по якорю «Форма по», тем самым привязываем наш новый якорь к OCR-блоку, который располагается строкой выше нужного нам якоря.

Для того, чтобы Шаблонизатор определил координаты создаваемого якоря относительно якоря «Форма по» указываем параметр привязки «Bottom». Этот параметр говорит о том, что создаваемый якорь будет привязан к якорю «Форма по» и находится строкой ниже.

1.1.1.2. Создание якоря (атрибут «Заказчик»)

По аналогии создаем якоря для атрибута «Заказчик». Слева якорем будет выступать слово «Заказчик». Добавляем якорь, нажимаем левой клавишей мыши на OCR-блок «Заказчик» и Шаблонизатор автоматически заполняет строку «Значение», определяя якорную точку.

Справа якорем будет выступать слово «по». По аналогии добавляем якорь в рабочей области Шаблонизатора, нажимаем на OCR-блок «по», производим проверку и добавляем якорную привязку. В этом случае привязку осуществляем к якорному слову «по», которое располагается строкой выше в документе. Указываем параметр привязки «Bottom» и производим проверку.

.

Атрибут «Заказчик» необходимо ограничить не только справа и слева, но и сверху. Для этого в качестве якоря выбираем слово «организация». Создаем еще один якорь, редактируем название так, чтобы с обеих сторон слова стоял знак «*» — «*организация*». Проверяем корректность расположения якорей.

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

Если сочетание слов встречается в документе единожды, то второе слово можно написать сокращенно. Например, в качестве якоря по номеру документа можем указать «номер* докум.

Если в начале значения якоря присутствует лишний символ (чаще всего это скобка), мы можем удалить этот символ и вместо него поставить знак «*». Тогда получим значение *организация* вместо (организация*.

1.1.1.3.Завершающий якорь

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

В нашем примере завершающим якорем будет слово расшифровка.

В нашем примере завершающим якорем будет слово расшифровка*.

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

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

.

Если в документе отсутствует слово расшифровка*, то робот будет искать слово подпис*

Для завершающего якоря указываем Режим работы – LastPage

1.1.4.Создание атрибутов

Следующий этап в создании шаблона – создание атрибутов.

Атрибуты — позволяют определить и обозначить области документа, данные из которых будут распознаваться роботом и импортироваться в таблицу «Результаты».

5.1.5.1. Атрибуты «Инвестор» и «Заказчик»

.

В нашем примере в таблицу с результатами должны импортироваться данные об Инвесторе, Заказчике, а также Дата и Номер документа

В Шаблонизаторе необходимо добавить эти атрибуты на рабочей панели справа: выбираем «Атрибуты», нажимаем кнопку добавить, присваиваем имя атрибута «Инвестор».

.

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

В нашем примере якорем справа будет выступать якорь «Инвестор», слева – якорь «по».

1.1.4.2.Якорные привязки к атрибуту «Инвестор»

Для создания привязок в созданном атрибуте нажимаем «Якорные привязки», далее «Добавить привязку», затем левой клавишей мыши кликаем на якорное слово «Инвестор». Аналогичным образом создаем привязку к якорному слову «по». Производим проверку, в результате которой область данных нашего атрибута должны подсветиться синей рамкой, как на скриншоте выше.

Чтобы ограничить область данных атрибута сверху, создаем третью якорную привязку к OCR-блоку «Форма по». Нажимаем «Добавить привязку», кликаем левой клавишей мыши на созданный ранее якорь «Форма по». В параметрах привязки выбираем значение «Bottom», т.к. в качестве ориентира мы будем использовать нижнюю границу данного якоря.

Помимо параметра в привязке для данного атрибута необходимо указать «Объект привязки». Т.к. данные атрибута могут располагаться выше строки, которую мы выделили при помощи первых двух якорей слева и справа.

В строке «Объект привязки» указываем «TopEdge» — верхняя грань.

1.1.4.3.Якорные привязки к атрибуту «Заказчик»

По аналогии создаем атрибут «Заказчик», устанавливаем привязки к ранее созданным якорям «Заказчик» справа, «по» слева и «организация» сверху. Для привязки к якорю сверху устанавливаем параметр «Bottom», «Объект привязки» указываем «TopEdge».

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

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

1.1.4.4.Ограничение линиями

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

В таких случаях для корректной привязки рекомендуем воспользоваться дополнительным параметром «Ограничение линиями». Предварительно нужно проверить присутствуют ли в шаблоне OCR-линии, ограничивающие созданные нами атрибуты.

Нажимаем кнопку OCR-линии на верхней рабочей панели и проверяем наличие линий.

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

На верхней рабочей панели выбирает «Атрибуты», кликаем лекой кливишей мыши на один из атрибутов, после чего он становится активным и в правой рабочей панели открываются инструменты для работы с выбранным атрибутом.

Выбираем «Ограничение линиями», из выпадающего списка выбираем значение «Down». Таким обратом мы ограничиваем нижнюю границу атрибута, которая теперь будет ориентироваться на OCR-линии.

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

1.1.4.5. Создание атрибутов «Номер» и «Дата». Якорные привязки

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

В качестве привязки слева используем якорь Справка*, в качестве параметра выбираем Bottom, также указываем Объект привязкиBottomEdge..

.

Создаем вторую привязку к якорю номер* докум*. В качестве параметра выбираем BottomLeft (нижний левый угол). Объект привязки указываем TopLeft (верхний левый угол).

Таким же образом производим привязку атрибута к правому углу. Создаем третью привязку также к якорю номер* докум*. В качестве параметра выбираем BottomRight (нижний правый угол). Объект привязки указываем TopRight (верхний правый угол).

.

Таким образом, для атрибута Номер должны быть созданы три якорные привязки.

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

.

.

Создание атрибута Дата.

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

В качестве привязки слева используем якорь Справка*, в качестве параметра выбираем Bottom, также указываем Объект привязкиBottomEdge.

.

.

Создаем вторую привязку к якорю дата* состав*. В качестве параметра выбираем BottomLeft (нижний левый угол). Объект привязки указываем TopLeft (верхний левый угол).

Таким же образом производим привязку атрибута к правому углу. Создаем третью привязку также к якорю дата* состав*. В качестве параметра выбираем BottomRight (нижний правый угол). Объект привязки указываем TopRight (верхний правый угол).

В результате для атрибута Номер должны быть созданы три якорные привязки.

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

Тип данных – DateTime.

Формат значения – вручную указываем формат, необходимый для атрибута. В нашем примере это dd.MM.yyyy

В случае, если в каком-либо документе дата документа будет указана как 30 ноября 2022г., в результате эта дата будет преобразована в 30.11.2022

1.1.Создание шаблона c фиксированными атрибутами на примере документа «Счет на оплату»

Фиксированные атрибуты имеют положение и размеры, привязанные только к сторонам документа (масштабу), но не привязанные к конкретным якорям, поэтому их можно свободно перемещать по документу. Фиксированные атрибуты допустимо использовать только если во всех возможных образцах документа необходимые для извлечения данные находятся примерно на одном и том же месте и не смещаются по документу.

При создании шаблона «Счет на оплату», Шаблонизатор распознает все таблицы, которые содержатся в документе. Эта информация отображается на вкладке «Таблицы».

В случае, если роботом будут использоваться данные лишь из одной таблицы, вторая таблица может быть удалена. Для этого достаточно выделить ненужную таблицу и нажать на кнопку «» в верхней части рабочей области «Генератора шаблонов».

Вкладка «Атрибуты» позволяет определить и обозначить области документа, данные из которых будут распознаваться роботом и импортироваться в документы «Результаты»

Для каждого Атрибута (выделенной области, данные из которой будут импортированы) необходимо определить Тип данных из выпадающего списка. Например, для Атрибута «дата документа» выбираем «Date Time».

При необходимости любой Атрибут может быть удален или добавлен новый.

После завершения работы во вкладке «Атрибуты» производится проверка шаблона и выполняется полное сканирование. Нажимаем «Проверить», затем «Выполнить полное сканирование».

Открывается окно «Результат полного сканирования», в котором отображаются распознанные данные из документа в виде заполненной таблицы. Если при проверке обнаружены неточности, то их в любой момент можно исправить.

При выборе типа данных «дата документа» дополнительно можно указать «Формат значения» вручную. После чего повести повторную проверку и убедиться в корректности значений.

При распознавании данных двух и более таблиц обрабатываемого документа, в окне

«Результат полного сканирования» будут отображаться значения всех таблиц. Для просмотра значений по всем таблицам предусмотрена возможность переключения таблиц в выпадающем списке.

.