Любая компания рано или поздно сталкивается с вопросом обработки большого объема входящей документации. В первую очередь это может быть, например, бухгалтерия со своими первичными документами: счетами, актами, накладными, либо HR-отдел с больничными и заявлениями на отпуск. Когда определенные задачи выполняются систематически, с постоянной четкой логикой, и при этом фигурируют в большом количестве бизнес-процессов, становится экономически выгодной их роботизация. UiPath предлагает использовать программных роботов для автоматизации процесса обработки входящих документов — Document Understanding.  

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

Фреймворк Document Understanding

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

Уже на этапе OCR может возникать ряд проблем. Например, необходимо распознать миллион страниц документов. Представим, что из них 900 тысяч — простые, а 100 тысяч — сложные для распознавания. Если покупать лицензии у одного поставщика средств OCR на весь этот миллион документов, то платить придется одинаково и за простые, и за сложные страницы. Обработка простых документов оказывается дорогостоящим делом. 

Вдобавок классические системы распознавания сами по себе не дают возможности сразу же передавать данные в ваши системы: 1С, SAP и т.д. А именно это и требуется после распознавания.

UiPath Document Understanding — это фреймворк, который закрывает весь процесс обработки документа. Документы могут поступать абсолютно из любого источника, при этом фреймворк независим от вендора OCR. В систему уже интегрированы несколько движков, в том числе ABBYY, Omnipage, Microsoft OCR, Google Tesseract OCR и других. Может использоваться также и собственная система распознавания текста UiPath OCR. Какой именно движок использовать — решает сам заказчик, отталкиваясь от своих задач. 

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

Таксономия и OCR

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

OCR — это оптическое распознавание графических изображений и преображение их в машиночитаемые символы. В разработках UiPath используются наиболее популярные движки как платные, так и бесплатные. Существует возможность использовать сразу несколько движков распознавания. Например, отправлять часть наиболее сложных документов на платные движки — ABBYY или Google Cloud, а остальные – на бесплатные, например, на OmniPage.

Есть 3 разных варианта распределения документов на разные OCR-движки:

Первый вариант – создавать разные проекты для разных типов документов. Это применимо в том случае, когда мы знаем, например, что все акты сверки у нас хорошего качества, а счета-фактуры — плохого. В таком случае нет смысла отправлять акты сверки на платный движок, тут можно сэкономить. На продвинутые движки направляются только счета-фактуры. 

Второй вариант – отправить сразу все документы на бесплатный движок распознавания. На выходе каждый движок показывает степень уверенности, с которой он распознал документ. В проекте можно задать фильтр, определяющий, куда дальше документ направляется. Если степень уверенности распознавания оказывается меньше 80-90%, то такие документы передаются уже на более продвинутый платный движок.

Есть и третий вариант. Можно прогнать всё через бесплатный движок и посмотреть, как распознались, к примеру, названия контрагентов. Например, в счетах значится «Ромашка Inc.» Отправляем данные в ERP-систему и смотрим, есть ли у нас такой поставщик. Если есть, значит всё распозналось хорошо. Если вместо «Ромашки» всплывает что-то вроде «Ормашок», и он не значится в базе, то мы делаем вывод, что что-то распозналось некорректно, и документ отправляется на повторное распознавание — уже на платный движок.

Классификация документов

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

Извлечение данных и якоря

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

Form Extractor — экстрактор форм с поддержкой назначаемых якорей; 

Intelligent Form Extractor — экстрактор форм, который умеет работать с рукописным текстом, правда, пока только с английским, и подписями; 

Regex Extractor — экстрактор на базе регулярных выражений;

Machine Learning Extractor, который использует модели машинного обучения;

FlexiCapture Extractor, который использует шаблоны ABBYY FlexiLayout.

Экстрактор форм хорошо работает со структурированными данными: больничными, счетами-фактурами, УПД, товарными накладными и т.п. Тут очень кстати оказываются якоря, с помощью которых мы указываем роботу, в какой части документа размещаются определенные данные. Якорей может быть сколь угодно много, всё зависит от документа. 

Якоря в экстракторе форм — недавно добавленная функция, которая значительно расширила его возможности. Теперь можно извлекать данные из гораздо большего объёма документов, чем раньше.

Часто используется и Regex Extractor, поскольку он бесплатный и позволяет закрывать большую часть задач. Это мощное решение, позволяющее извлекать большое количество данных с учётом множества факторов — например, неожиданных переносов строк и т.д. Он также позволяет работать с полностью неструктурированными данными — массивами документов, написанных в произвольной форме. Их вполне успешно можно обрабатывать с помощью Regex при условии правильной настройки регулярных выражений. Для этой цели может служить собственный конструктор таких выражений в UiPath Studio – или популярный сайт regex101.com.
Как и в случае с движками распознавания, можно использовать параллельно сразу несколько экстракторов; более того, назначать свой экстрактор возможно для каждого поля. Например, Intelligent Form Extractor — для номера документа, для номера заказа —  Regex, для даты — FlexiCapture. Разные экстракторы могут быть задействованы в зависимости от степени уверенности, которую экстрактор выдаёт на выходе. Если один экстрактор не отработал как ожидалось, за дело берётся другой, по порядку их расположения.

Стоит отметить, что для встроенных экстракторов UiPath Studio не понадобится прописывать никакие поля, а вот для сторонних, например, FlexiCapture, потребуется указать, какие поля в экстракторе (в шаблоне) соответствуют какому полю в вашей таксономии. 

Извлекать можно не только текстовые данные, но и информацию о печати и подписях. Для этого можно использовать OpenCV; это достаточно долго и сложно, поскольку требует соответствующих компетенций, но зато бесплатно. Также можно использовать ML-модель для обнаружения подписей и печатей, например, Microsoft Custom Vision или UiPath AICenter. Это быстро, просто, но стоит денег. Наконец, для нахождения подписей можно использовать Intelligent Form Extractor. 

Настройка шаблона и работа с таблицами

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

В UiPath Studio при создании таксономии создаем поле с типом «таблица». В этом поле описываем наши колонки. В нашем примере таксономия выглядит следующим образом (мы оставили 7 колонок):

В активности Form Extractor  переходим в Manage Templates. Создаём новый шаблон, определяем тип документа (УПД) и выбираем цифровой документ, на основе которого будет строиться шаблон. В идеале это должен быть чистый PDF (не скан). Если это скан, желательно, чтобы он был хорошего качества и правильно ориентирован; функция автоматического поворота работает при распознавании, но для создания шаблона необходимо, чтобы документ уже был повёрнут правильно.

В нашем примере мы будем работать со сканом: нажимаем Manage Templates, а затем Create Template.

После того, как документ оцифровывается, появляется форма, где справа сам документ — отсканированный двухстраничный УПД, а слева — сформированные в нашей таксономии поля.

Далее начинается процесс разметки документа для робота. Вариантов тут несколько. Можно указать точную область, где находится нужное нам поле. Например, номер документа будет всегда находиться на одном и том же месте. Это хорошо работает для анкет и других жестко фиксированных документов, однако, мало применимо для полуструктурированных документов. Лучше использовать уже упомянутые якоря. С их помощью отмечаем, где какие элементы располагаются. 

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

Для данного поля мы указали 2 якоря: основной «счет фактура» и дополнительный «от».

В сущности, якорей может быть неограниченное количество и находиться они могут где угодно. Кстати, например, для поля ИНН/КПП мы рекомендуем использовать регулярные выражения. 

Переходим к таблицам. Довольно часто приходится иметь дело с ситуацией, когда в примерно одинаковых документах таблицы могут значительно отличаться друг от друга по количеству страниц. В таком случае для шаблона необходимо выбрать документ с максимальным количеством страниц (например, 100) и разметить его целиком. При обработке документов робот будет извлекать данные из всего диапазона, с первой до сотой страницы включительно. То есть для документа с 99 страницами обработка пройдет успешно, а для 101-страничного документа — уже нет.

Разделители таблицы формируются автоматически, но если где-то они не начертились, их можно выставить вручную (и удалить лишние). Для каждой колонки необходимо выставить её название в соответствии с названиями колонок в таксономии. Стоит отметить, что ширина колонок на всех документах должна быть одинакова.

Процесс разметки таблицы выглядит следующим образом:

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

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

Суммируя вышесказанное

Мы рассмотрели общую структуру функционирования фреймворка Document Understanding в UiPath Studio. Она довольно проста и её использование не требует особо продвинутых компетенций и больших усилий, особенно, если иметь в виду, с какими объемами документации помогут в итоге справиться роботы.

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

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

Комментарии (4)


  1. alan008
    30.10.2021 09:09

    Электронный (безбумажный) документооборот? Не, не слышал. Распознавание бумажных документов (и вообще обмен бумагой) это путь в никуда в 2021 году.


    1. Xeldos
      30.10.2021 09:18

      Архивы за 250 лет? Не, не слышал.


      1. alan008
        30.10.2021 20:15

        Какие архивы? Архивы вручную распознают. Статья совсем о другом:


        Распознавание начинается с определения таксономии… счет-фактура, акт, товарная накладная. Дальше для каждого типа документов указываются те поля, данные из которых будет извлекать робот....

        Не вижу смысла счета-фактуры, акты и накладные в 2021 году передавать в бумажном виде, если давно есть ЮЗЭДО (юридически значимый электронный документооборот).


    1. Drazd
      01.11.2021 12:21
      +1

      Абсолютно согласен, но... Когда вы придете работать в настоящие компании и столкнетесь с реальностью - поймете, что в очень многих компаниях до сих пор ведется бумажный документооборот. Сам по себе за секунду он электронным не станет. Для начала надо перегнать все в цифру + правильно его считать (не просто текст, а данные из полей, таблиц).

      Когда я начинал свою карьеру в 2009 году, то точно так же как вы, многие возмущались, что никто не переводит бумажный документооборот в электронный. И тогда уже технологии распознавания и считывания документов существовали и использовались. Но есть большая разница. Тогда нужно было обладать высокой экспертизой в OCR, знать специфичное ПО, очень много работать над настройкой извлечения данных из одного шаблона документас (а шаблонов надо всегда настраивать много).

      Сегодня благодаря Document Understanding, о котором написано в этой статье, настройка одного шаблона занимает смешное время для не сильно квалифицированного сотрудника. И это действительно дает гораздо большую возможность для более скорого перехода от безбумажного к электронному документообороту.