Pull to refresh
82.64
SL Soft
Разработчик российских бизнес-приложений

ML в OCR: зачем и как

Level of difficultyEasy
Reading time5 min
Views2.2K

Привет, меня зовут Георгий Гончаров, я инженер‑консультант 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 позволило нам упростить настройку типовых документов. Теперь научиться строить проекты можно в разы быстрее, в том числе, при необходимости, сэкономить на эксплуатации решения. Мы будем и дальше упрощать настройку: сейчас работаем над языковыми моделями.

Tags:
Hubs:
Total votes 6: ↑5 and ↓1+4
Comments11

Articles

Information

Website
slsoft.ru
Registered
Founded
Employees
501–1,000 employees
Location
Россия
Representative
Дарья Шадрина