ABBYY представила Vantage – low-code/no-code платформу нового поколения для интеллектуальной обработки документов с набором готовых обученных когнитивных сервисов (навыков или скиллов) для распознавания, классификации и извлечения данных из документов любой сложности.

Это значимое событие по ряду причин. Во-первых, в разработке мы использовали самый современный стек технологий (REST API, Cloud-native, микросервисная архитектура с Docker-контейнерами, которые управляются с помощью Kubernetes). Во-вторых, запустили Marketplace – онлайн-площадку, на которой клиенты могут приобретать готовые навыки для обработки документов и обмениваться ими с другими компаниями. В-третьих, добавили в продукт машинное обучение на стороне клиента. То есть система сама постоянно дообучается и повышает качество работы сервисов на основании того, как с ней взаимодействует клиент. Например, когда вносит исправления в результаты распознавания. Но обо всем по порядку.

Мы расскажем о разных составляющих Vantage в серии постов. Первый из них об общей концепции платформы. В этом посте мы покажем интерфейс и обозначим технологии, которые используются в платформе. Скорее под кат!

От AI для продвинутых пользователей к low-code/no-code

Времена меняются, как меняются и запросы наших клиентов. Все больше компаний хотят использовать готовые решения «из коробки», которые не требуют сложных доработок и обучения моделей, а также навыков программирования у сотрудников и армии опытных разработчиков. Именно таким low-code решением и стала платформа ABBYY Vantage.

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

Концепция Vantage чем-то напоминает кубики в конструкторе. Сначала пользователь определяет источник, из которого документы – сканы или фотографии – поступают на обработку в платформу. Каждый кубик в процессе – это активность, то есть действие, которое Vantage должен совершить: классифицировать, извлечь те или иные поля, обучить систему на этих документах и так далее. Из этих кубиков складывается skill, или когнитивный навык. Мы используем этот термин, потому что skills работают с информацией из любых носителей так, как это бы сделал человек.

Когнитивные навыки, в том числе разработанные заказчиками и партнерами ABBYY, собраны на онлайн-площадке ABBYY Marketplace. На текущий момент на ней доступно 30 навыков для документов на различных языках. Таким образом, каждый пользователь Vantage может делиться собственными скиллами или выбирать те, которые ему нужны, и, если нужно, докупить новые, как дополнения в компьютерных играх.

Пользовательский интерфейс

Vantage – cloud-native решение, все его сервисы доступны в облаке. Для работы сотруднику нужно ввести логин и пароль на сайте продукта, загрузить файлы (счета-фактуры, акты, накладные или другие документы из горячей папки, хранилища или электронной почты), и через несколько секунд технология уже покажет первые результаты извлечения полей.

Ниже наглядно расскажем, как работать с интерфейсом Vantage (по ссылке – видео, где рассказывается подробнее).

 

Рисунок 1
Рисунок 1

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

Во время загрузки система, еще даже до каких-либо настроек, уже начала обрабатывать файл и самостоятельно выделять главные поля (Рисунок 2, №1).

Рисунок 2
Рисунок 2

Если система не смогла определить тип загруженного документа, то пользователь может его выбрать из предложенного списка, кликнув по кнопке №2, Рисунок 2.

Если для таких типов документов в изначальные настройки Vantage не загружены нужные навыки, то пользователь может их найти на ABBYY Marketplace, кликнув по кнопке №3, Рисунок 2.

Если же нужный навык отсутствует и в Marketplace, то пользователь может самостоятельно его создать (Рисунок 2, №4) за пару минут, разметив лишь один файл – для начала обучения системы этого будет достаточно. При этом скилл создается без какого-либо кодинга – на загруженном документе пользователю нужно выделить необходимые для извлечения поля и назвать их (Рисунок 3, № 4). Далее он нажимает кнопку Train (Рисунок 3, № 5), и система готова работать с новым типом файлов в полном объеме.

Рисунок 3
Рисунок 3

Магазин когнитивных навыков

ABBYY Marketplace – одна из важных составляющих Vantage. Это универсальный «магазин», с помощью которого продукт можно постоянно совершенствовать и дополнять – актуальная информация автоматически подгружается в профиль каждого пользователя.

Кроме того, любой пользователь может создать свой собственный навык, которого еще нет в системе, и по желанию опубликовать его на Marketplace. После того, как навык пройдет предварительную проверку, им смогут пользоваться другие клиенты Vantage. Чем больше страниц они обработают с помощью этого скилла, тем больше будет гонорар пользователя, который его опубликовал. Стоит отметить, что для создания нового скилла также не требуются углубленные знания программирования. По нашей оценке, Citizen Developer сможет справиться с этой задачей.

Рабочий стол бизнес-процесса

Каждый пользователь может построить из скиллов свой бизнес-процесс. Это можно сделать на рабочем столе Process Skill с помощью блок-схем, каждая из которых в свою очередь тоже настраивается (Рисунок 4).

Рисунок 4
Рисунок 4

Вначале нужно настроить порядок обработки документа (например, Input-Classify-Extract-Review-Output).

К примеру, в блоке Input можно настроить Shared Folder, которая будет содержать файлы для извлечения информации. В блоках классификации и экстракции пользователь выбирает нужные документные скиллы (их может быть больше одного). А с помощью Review можно определить, в каких случаях необходима проверка документов.

Главная особенность такой блочной настройки заключается в ее простоте и понятном для любого пользователя интерфейсе. Кроме того, здесь также заложена возможность расширять настройки скиллов с помощью несложного кодирования.

Технологии в Vantage

С пользовательской частью Vantage немного разобрались, теперь расскажем о ее главных технологических составляющих. Обзор будет краткий, поскольку про каждую фичу мы расскажем на Хабре чуть позже отдельным постом. Так что stay tuned ????

Движок Workflow

В Vantage используется движок бизнес-процессов на основе Workflow Core – технологии с открытым кодом, реализованной на платформе .NET на языке программирования C#. Анализ лицензий, возможностей и их соответствия нашим задачам других движков на Java и C#, а затем и нагрузочное тестирование показали, что Workflow Core лучше всего подходит для быстрой параллельной обработки документов от большого количества пользователей в облаке. Сейчас производительность движка составляет 50 wf/s. Мы выбрали Workflow Core не случайно, так как это позволило дорабатывать исходный код под наши нужды. Если коротко, то вот что мы переделали:

  • Перенесли хранилище Definitions из Workflow Core в Redis (Workflow Definition - это описание схемы выполнения Workflow. Мы его перенесли в SQL, добавив также in-memory cache для ускорения доступа к definition'ам).

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

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

  • Добавили ограничения на количество шагов в Workflow Core, чтобы избежать бесконечного выполнения заданий.

  • Изменили структуру хранения данных Workflow в системе, чтобы избежать ошибки Out of memory при создании Workflow с большим числом шагов (до 10 тыс.).

  • Оптимизировали использование блокировок и перевели ее на RedLock.net.

  • «Окультурили» код и начали приводить его к стандартам Resharper.

Дополнительно разработчики ABBYY создали для Workflow-движка уникальный алгоритм для справедливого распределения вычислительных мощностей между пользователями, который позволяет раскладывать задания каждого тенанта (каждый клиент, который может настраивать некоторые части продукта без внесения изменений в исходный код) по отдельным очередям и равномерно брать задания в работу. Если кто-то из тенантов прислал слишком много заданий, то они копятся в его очереди. Поскольку алгоритм проходит по каждой очереди последовательно и из каждой берет одинаковое количество заданий, то большая очередь заданий от одного тенанта будет висеть дольше, а остальным клиентам не придется долго ждать. Это базовый принцип, который позволяет в момент пиковой нагрузки платформы сделать так, чтобы все документы клиентов были обработаны в соответствии с их Service level agreement.

Архитектура

Платформа Vantage использует современную микросервисную архитектуру. Компоненты Vantage запускаются в контейнерах, и для того, чтобы ими управлять, используется оркестратор на базе Kubernetes. Такая система дает большое преимущество в работе с отдельными частями продукта: изменив одну из подсистем, мы не влияем на другие элементы.

Одна из ключевых особенностей архитектуры Vantage – ее автоматическое масштабирование. Неважно, сколько документов надо обработать в единицу времени, мощности выделяются по запросу. И если вдруг у заказчика появилась срочная задача – скажем, распознать и извлечь данные из 100 тысяч многостраничных кредитных договоров, то платформа справится и просто выделит под это больше виртуальных машин и столько нод в Kubernetes, сколько необходимо.

Разработана Vantage под Linux, но сам код кросс-платформенный и может так же эффективно работать на Windows. Кроссплатформенность кода в Vantage обеспечивает платформа .NET Core.

FastML

Еще одна важная составляющая Vantage – алгоритмы машинного обучения следующего поколения. Как правило, в продуктах машинное обучение бывает двух типов: то, которое быстро обучается делать какую-то простую задачу и то, которое долго обучается сложным моделям. Vantage использует оба вида моделей, благодаря чему одновременно достигаются высокие показатели качества и скорости. Эту технологию мы создали специально для Vantage и назвали FastML.

Как это работает? В Vantage зашита предобученная глубокая нейросетевая модель, которая уже многое знает о документах различного типа (Рисунок 5). Поэтому нейросетевая модель способна даже на основе одного примера нового размеченного документа определить нужные для извлечения поля.

 

Рисунок 5
Рисунок 5

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

Рисунок 6
Рисунок 6

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

OnlineML

OnlineML – это сервис в составе Vantage, который позволяет системе учиться распознавать и извлекать данные, опираясь на обратную связь от пользователей, и делать это в режиме реального времени. Онлайн-обучение вызывается в Vantage дополнительной настройкой. Всякий раз, когда документ отправляется на обработку, платформа записывает исправления пользователя, и запоминает, если что-то извлеклось неправильно. Когда накопится определенное количество таких правок, автоматически запустится переобучение. 

Сейчас работу OnlineML можно описать с помощью следующей схемы (Рисунок 7):

Рисунок 7
Рисунок 7

В начале работы системы OnlineML идет этап накопления документов, на которых система будет обучаться. Технология сохраняет результаты работы с каждым документом и фиксирует изменения, внесенные пользователем. Документы, которые поступают на обработку, OnlineML случайным образом разделяет по двум выборкам. Примерно 25% попадают в тестовую выборку, а 75% – в обучающую.

После того, как система запустила обучение, набрав 10% новых документов, она проверяет работу новой модели по тестовой выборке, получает статистику, запускает старую модель, обученную на той же выборке, и сравнивает старую и новую статистику распознавания. Если данные стали извлекаться лучше, то модель автоматически обновляется. Таким образом, с Online ML мы можем постоянно улучшать распознавание и настраивать его под задачи конкретного пользователя. Также отметим, что система не запускает два одновременных обучения.

Как только в обучающей части системы накопилось 30 тыс. документов, OnlineML начинает проводить замену старых документов на новые. В систему поступает новый документ, и OnlineML с вероятностью в 20% может заменить им один из самых старых документов в системе. Такая рандомизация процесса позволит продолжать обновлять систему для совершенствования навыков обучения, но не вычищать под ноль накопленные знания.

Что дальше?

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

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

На этом пока все. Совсем скоро вернемся с новыми подробностями и о технологической составляющей Vantage. So stand by ????  

Знаете, как можно улучшить наш продукт? Делитесь в комментариях!

А если хотите развивать новый продукт вместе с нами, то в команде Vantage есть открытые вакансии: Senior C# Developer, Frontend Team Lead, Frontend Developer, Senior C# Developer, Technical Project Manager, Senior UX designer, QA Engineer (Cloud, Auto).

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


  1. methlab
    12.10.2021 21:55

    Сейчас производительность движка составляет 50 wf/s

    Уточните, пожалуйста, что это за метрика?

    Можно запустить 50 workflow в секунду?
    Можно завершить 50 workflow за секунду?
    Можно выполнить за секунду 50 шагов workflow?

    Какая производительность у стандартного WorkflowCore без доработок в этой метрике?


    1. ABBYYTeam Автор
      13.10.2021 16:00

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

      Мы планируем более подробно рассказать о применении Workflow Core в Vantage и доработках в одном из следующих постов.


  1. niccolo2019
    13.10.2021 21:12
    +1

    Прочитал как пользователь и подумал — а для кого написан текст? Какие мои задачи, как пользователя - например организацию распознавания большого количества однотипных документов, оцифровку архивов и т.п. решает данная платформа и в чём она это делает лучше, быстрее (хотя для однократного применения это и не самый критичный фактор) и дешевле существующих решений (например какой нибудь обрезалки в размер с адаптацией разрешения и полей, и сценарием в ФР с автоматическим наложением блоков)? Где найти специалистов, которые эту систему понимают и смогут адекватно настроить и поддерживать?
    Товарищи разработчики - спускайтесь уже на уровень пользователей и описывайте, как ваша программа может решить их проблемы. Эти пустословные релизы очень мало кому не нужны (разве что вам для отчётности и блогов/соцсетей и может быть, конкурентам).


    1. apachik
      13.10.2021 22:46
      +1

      не сочтите за пафос, но вспомнилось:
      "Если ваш бизнес не укладывается в SAP — вы ещё не доросли до SAP".

      Этот солюшен явно не для конечных пользователей. И даже не для small business.

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


      1. niccolo2019
        13.10.2021 23:00

        Вы абсолютно правы - по скринам я вижу, из какой категории заказчик, и даже могу попытаться угадать его с 3 букв..... Но в чём смысл писать на русскоязычном сайте про решения, специфически заточенные под определённых иностранных заказчиков?
        Во-вторых в руководстве таких заказчиков сидят такие же люди, которым часто некогда вникать в дебри, но которые, подписывая бумаги на оплату, хотят чётко понимать «ЗА ЧТО ПЛАТЯТСЯ ДЕНЬГИ?». И этого тут как раз не видно....
        Зато виден типичный признак слабого понимания, про который еще кто-то из великих физиков сказал — если учёный не может объяснить простыми словами, чем он занимается - значит он сам не понимает этого.


        1. apachik
          13.10.2021 23:34

          > если учёный не может объяснить простыми словами, чем он занимается - значит он сам не понимает этого

          Люто плюсую, но для этого надо знать кому конкретно объясняешь.

          > заточенные под определённых иностранных заказчиков

          а я не смог этого уловить из статьи, равно как и догадаться о каких трех буквах идет речь. Кажется, что подобные солюшены вполне применимы в крупном энтерпрайз сегменте, т.е. условные там сбербанки/газпромы/страховые. А "их тоже есть" у нас в РФ.

          > в чём смысл писать на русскоязычном сайте

          вот если бы спрашивали "зачем такое на хабре?", то я бы еще понял, но все равно не до конца согласился бы. Никого же не удивляет зачем тут статьи про космонавтику или про автоматизацию работы комбайнов при помощи CV, хотя 99% аудитории вовсе не ЦА этих решений?


          1. apachik
            13.10.2021 23:45

            Так-с, я кажется осознал. Вы хотите конкретные примеры того, как улучшится этот мир после внедрения солюшена? В духе "заявка на кредит будет обрабатываться мгновенно" или "решение по страховому случаю будет приниматься на порядок быстрее" или "отдел кадровиков можно будет сократить в три раза". Да, этого нету. Наверное истории успеха не поместились в статью, или запланированы на другие статьи из цикла про Vantage. А может быть специально решили не ограничиваться конкретными сценариями, а подчеркнуть именно гибкость и адаптивность платформы.

            может вы знаете какой-то продукт или решение, где используется машинное обучение на стороне пользователя/клиента?


            1. niccolo2019
              14.10.2021 01:23

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

              Гибкость и адаптивность к чему? К старым полуслепым советским синькам, отсканированным сотрудниками, абсолютно не понимающими, что с изображениями будет дальше (типа проекта оцифровки библиотек Гуглем - я такого треша не видал даже у самых безруких сканировщиков начала века). Не смешите мои тапки.
              Технологии OCR Абби застыли на уровне 2000-2005, обработки изображений с целью подготовки к OCR (по FR) также далеки даже он фришных творений одиночек - типа Сканкромсатор.... Поэтому всё, что остаётся - просто максимальная типизация - расположения блоков, их структуры и т.п. с автоматизацией. Благо в наличии все исходники.......
              Все обучение тут, насколько понимаю - рассортировка документов по неким признакам (что они сейчас рекламируют в мобильном приложении), проверка стабильности расположения блоков информации на листах после выравнивания и подгонки сканов по реперам, и выведение контрольных шаблонов для информации в блоках..... Всё это можно было сделать в 8-9 FineReader, о чем тут тоже некоторые писали... И решение такое по цене наверняка было бы дешевле на пару порядков точно.....

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

              МО на стороне пользователя — насколько знаю, белорусский разработчик машинного перевода Lingvanex вроде как предлагал клиентам развёртывание системы МП с возможностью дрессировки машины на оборудовании клиента. Недешёвое это было удовольствие и до биткойнового хайпа - а после него - для выхода в плюс нужны просто гигантские объёмы последующего перевода...
              Раньше голь была на выдумку хитра и искала решения - а сейчас всё тупо пытаются мощой процессорной задавить и получается то, что мы видим...

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