Pull to refresh
0
Content AI
Решения для интеллектуальной обработки информации

ABBYY FlexiLayout Studio: тренируем гибкость

Reading time 4 min
Views 6.8K
Мы продолжаем рассказывать о ABBYY FlexiLayout Studio – программе для создания гибких описаний в системе ввода данных ABBYY FlexiCapure. В прошлый раз я рассказал вам, как вручную делать гибкие описания, а сегодня мы поговорим о том, как их можно создавать автоматически, – это новая функция, которая появилась в последней, десятой версии ABBYY FlexiLayout Studio.

Не будем лукавить, раньше создавать описания для слабо структурированных документов было не так уж просто: даже для простой платёжки или счёта создать гибкое описание без предварительного обучения было весьма затруднительно. Нужно было вручную определять взаимное расположение полей, связи между ними и тому подобные параметры, а потом указывать их, причем не наглядно, прямо на изображении, а в виде чисел. Теперь можно загрузить несколько изображений, «показать» программе, где на них находятся статические элементы и поля с данными – и она автоматически создаст описание.

Для пользователей ABBYY FlexiCapture это означает, что с простыми проектами (там, где взаимное расположение статических элементов и полей с данными в разных документах отличается не сильно) теперь может справиться неподготовленный человек – например, бухгалтер Лена. Согласитесь, это удобно.

А теперь давайте посмотрим, как это работает.

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

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

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


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



Видно, что интерфейс несколько отличается от описанного ранее ручного режима создания разметки: вместо панели со структурой FlexiLayout отображается панель Training. Она содержит список опорных элементов (слева) и полей данных. Справа, как и раньше, изображение. Синими рамками выделен статический текст, зелеными – поля, из которых необходимо извлекать информацию.

Статические элементы отображаются на панели Training в левой колонке, поля – в правой. Для статических элементов программа определяет текст, который необходимо искать, а также некоторые другие параметры, например, может ли текст быть многострочным. Распознанный текст используется в качестве названия элемента (например, ДоступныйОстаток). Для полей данных программа пытается найти заголовок (статический элемент) и называет поле в соответствии с ним. Для полей Date и Time программа заголовок нашла неверно (поскольку его нет), их пришлось называть вручную.

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

А дальше начинается самое интересное: берем чек другого банка и пытаемся применить на нем созданную разметку:


На панели Training найденные объекты выделены полужирным шрифтом, на рисунке – как и раньше, синими и зелеными рамками.

Упс… Результат, на первый взгляд, обескураживающий. Два статических элемента (название банка и заголовок поля с остатком на счете) не найдены, распознаны три поля из четырех, да к тому же одно неправильно: вместо суммы выбран остаток. С другой стороны, ничего удивительного: чек-то другого банка, статические элементы называются по-другому, а поиск полей ведется относительно них. Указываем вручную расположение нужных элементов, перемещая и изменяя размеры рамок с помощью мыши, а для ненайденных элементов – обводя нужную группу слов курсором при нажатой левой кнопке мыши. При этом программа не только скорректирует возможное расположение объектов друг относительно друга, но и «поймет», что статические элементы Raiffeisenbank и ДоступныйОстаток могут содержать и другой текст: ОАО «СБЕРБАНК РОССИИ» и БАЛАНС соответственно.



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


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

Конечно, для сложных многостраничных проектов, поля на которых расположены самым различным образом, создавать описания подобным образом пока нельзя. С другой стороны, для сложных проектов можно найти время и силы на разработку описаний (или обратиться к нам в службу Professional Services). А вот большому числу людей, которым нужно создавать сравнительно несложные гибкие описания, например, счетов, платежек, инвойсов, новая возможность будет очень полезна: раньше было необходимо довольно долго учиться, а потом настраивать описание, а сейчас достаточно обучить программу с помощью нескольких (десятков) примеров – и все.

Павел Соколов
Департамент продуктов для ввода данных
Tags:
Hubs:
+17
Comments 2
Comments Comments 2

Articles

Information

Website
www.contentai.ru
Registered
Founded
Employees
101–200 employees
Location
Россия