Привет, меня зовут Георгий Гончаров, я инженер‑консультант OCR‑платформы SOICA, предназначенной для распознавания и обработки текстовых и графических данных. Поскольку это собственная разработка, то мы постоянно внедряем новые фичи. Недавно появилась еще одна — мы назвали ее ML‑локатор. В статье расскажу, почему и как мы реализовали эту функциональность и каких результатов удалось достичь.

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

Стандартная настройка: логическая цепочка

Типовая работа в проекте — это настройка логической цепочки инструментов извлечения. В системе их более 30, у нас они называются локаторами. Не будем описывать их подробно, но вот некоторые из них:

  • поиск на основе регулярных выражений,

  • поиск графических элементов,

  • поиск областей относительно ключей, нескольких или одного,

  • поиск по справочным данным,

  • поиск по графическим маскам,

  • и прочее (см. Руководство инженера=) ).

В целом локаторы можно поделить на пять типов: 

  1. Локаторы, которые используют OCR и графические элементы.

  2. Локаторы, которые используют результат работы выполненных ранее локаторов.

  3. Локаторы, которые обрабатывают табличные данные.

  4. Локаторы взаимодействия со внешними справочными данными.

  5. Локаторы, позволяющие формировать условия финального выбора атрибутов или их модификацию.

Выстраивая последовательную цепочку инструментов извлечения (локаторы, расположенные друг за другом), мы определяем область, где находятся нужные данные. Можно настроить поиск по определенной форме слов и выражений, выбрать нужный нам результат с помощью локатора условия. Итоговая цепочка может состоять из 20+ локаторов. Основным плюсом является то, что мы не используем точные координаты нужной нам информации — мы анализируем весь документ и делаем единственный правильный выбор.

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

В проектах, где нужно настроить извлечение данных из высокоструктурированных документов (паспорт, СНИЛС, водительское удостоверение…), наши инженеры создавали логические цепочки поиска информации для одного поля, включающие в себя 10–15 локаторов. Подобный подход создает высокий порог входа для специалистов. Поскольку наша экспертиза начала быстро распространяться, мы решили снизить порог и создали инструмент, который позволяет размечать данные для реализации быстрых проектов.

Новая фича: ML-локатор для детектирования атрибутов, ключей и графики

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

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

Поэтому обучение ML выполняется в модуле администратора: он предназначен для настройки всей системы и конкретного проекта в частности. Обычные пользователи работают в модуле валидации, где они видят результат работы системы и не могут ничего сломать.

Как устроено обучение своих моделей в SOICA

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

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

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

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

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

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

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

Далее нужно выбрать для полученных областей необходимые профили распознавания. Хочу отметить, что в нашей системе есть множество настроек движка OCR и способов очистки изображение перед распознаванием. В результате мы получаем цепочку поиска, состоящую из 3–4 локаторов вместо 20.

Выводы и перспективы

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

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

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


  1. Spiller26
    04.06.2024 11:36

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


    1. patapum_gg Автор
      04.06.2024 11:36
      +1

      Плохой скан не приговор. В статье рассказываю только про функционал ML. Но сама система намного больше! Для первичной обработки изображения есть более 10 профилей очистки.


      1. Spiller26
        04.06.2024 11:36

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


        1. Spiller26
          04.06.2024 11:36

          А про шаблоны документов вообще отдельная тема, т.к. шаблоны могут менять, добавлять колонки и строки, растояния между колонками.
          И со словами "у нас это всё есть" пытаются менеждеры "втюхать".
          Про кросплатформенность вообще молчу, одни неделю пытались, но когда узнали что у нас Linux, сразу всё прекратилось.


          1. patapum_gg Автор
            04.06.2024 11:36

            Всё верно. Качественный OCR также важен) Для этого у нас используются разные модели OCR в движке, в том числе и для рукописного текста. Кстати наша система работает и на ОС семейства Linux.


        1. SOICA_team
          04.06.2024 11:36

          Всё верно. Качественный OCR также важен) Для этого у нас используются разные модели OCR в движке, в том числе и для рукописного текста.


  1. vagon333
    04.06.2024 11:36

    Ваш подход похож на решение ABBYY с гибкими шаблонами.
    Каковы отличия в вашем продукте?
    Сильные стороны, ... и слабые, если не слабо ответить. :)


    1. patapum_gg Автор
      04.06.2024 11:36

      Ответить не слабо )

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


  1. pyur
    04.06.2024 11:36

    тут же на хабре уже не раз рекламировался какой-то smart-engine кажется. и хвастали, что их движок уже используют ведущие корпорации.


  1. pspetrov
    04.06.2024 11:36

    Я правильно понял, что Вы стали применять ML из-за того, что на настройку множества локаторов уходило много времени? Сколько времени уходит на качественную настройку ML моделей?


    1. patapum_gg Автор
      04.06.2024 11:36

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

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