Вжух — и распозналось: как на самом деле работают алгоритмы распознавания документов
Результат есть, а как оно там распознаётся, никто и не представляет. Решили на пальцах, паспорте и алгоритмах Dbrain рассказать, как происходит волшебство. Хотя «Вжух» нам тоже нравится.
В месяц мы распознаем более 500 тыс. паспортов для разных клиентов и их нужд. Банки хотят знать кому дают кредит или оформляют счёт. Крупным компаниям нужно быстро нанимать новых сотрудников.
Dbrain тот самый пластырь, шоколадное мороженое или таблетка, которая снимает боль с процессов, связанных с извлечением данных. Нашим клиентам достаточно запросить у человека скан или фотографию документа, дальше за работу возьмутся нейросети. За секунды они распознают тип документа, выравнивают его, находят поля и преобразуют изображение в цифровую информацию.
Ключ к успеху: ИИ + люди
Мы уже писали, что искусственный интеллект хорошо и быстро учится, если у него есть обратная связь от людей. Алгоритмы Dbrain верно распознают до 92% всех документов. Часто этой точности хватает. Но когда нужен максимум, алгоритмам помогают верификаторы, тогда точность приближается к 100%, а у сетей появляется возможность обучаться на своих ошибках.
Мы используем технологию human-in-the-loop для исправления ошибок ИИ. Это достаточно сложный механизм, где алгоритму необходимо определить, что он мог ошибиться, передать ответ на людей, а после взять эти данные и использовать в дообучении. Мы часто используем для этой задачи людей из публичной платформы Яндекс.Толока, а значит, нам важно не передать туда никаких персональных данных. В целом, интересная задача.
Этапы и алгоритмы
1. Классификация документа
На входе: документ с любым количеством страниц
Внутри происходит несколько процессов:
- Сначала изображение считывается.
- Дальше детектор ищет и выделяет на входящем изображении области, похожие на документы и вырезает их. Каждой области присваивает тип: главный разворот паспорта России, водительское удостоверение образца 2011 года, СНИЛС и так далее. И если на фото одновременно сняты паспорт, водительское удостоверение и СНИЛС, система вырежет три отдельных картинки и распознает каждую.
- Отдельная «голова» алгоритма отвечает за определение угла поворота отзеркаливания, чтобы на выходе отдать ровный, правильно ориентированный документ.
На выходе: массив изображений разделенных по типам документов с восстановленной ориентацией
2. Поиск структуры: полей, таблиц, печатей и подписей
На входе: кроп документа и его тип
Fieldnet — сервис, объединяющий в себе набор однотипных нейросетей, способных определять структуру документа: поля, специальные отметки, таблицы и тд. Он предсказывает пиксельные маски на полях документа, ориентируясь на окружающий контекст в документе. Здесь одно из важных отличий от подхода с использованием шаблонов — даже если поле перемещается в разных версиях документа, алгоритм его найдет.
Например, в паспорте отдельно вырезаются фамилия, место рождения, серия, номер и остальные поля. Сетка долго тренировалась, и она точно знает, что у документа в определённых местах должна быть такая-то информация. Поэтому она ищет на документе не просто текст, а информацию вот в этом уголочке, потому что тут обычно имя человека. После этого она вырезает каждое из полей с изображения. Получаются прямоугольные маски полей, которые идут дальше.
На выходе: вырезанные поля
3. Все виды OCR
На входе: кропы полей
Наша гордость — OCR. Это движки для перевода изображений в машиночитаемый язык. На визуале показали только 3, на самом деле их больше 10. Одни умеют читать слова просто по символам, другие знают много информации про язык и могут исправить ошибки людей, а последние и вовсе читают текст целыми строками.
В 2022 году у нас появился алгоритм, который способен читать рукописный текст на русском языке с качеством, близким к печатному.
На выходе: машиночитаемый текст
4. Сервисы антифрода
На входе: все данные от предыдущих алгоритмов и само изображение
Проверка источника изображения, наличие фотошопа, распознавание лиц и базы данных. Почему этот этап важен, писали здесь.
А вот несколько примеров того, что сеть пометит как отредактированный документ:
- Текст набран поверх «пустой» картинки паспорта и шрифт не совпадает с оригиналом.
- Шумы части изображения не совпадают с шумами самого изображения. Например, на фото, сделанное на один тип камеры наложили кусок с фото, сделанного на другую камеру.
- Не совпадает степень jpeg сжатия части изображения. Аналогично, когда вставляют части из другого изображения, количество и степень jpeg-сжатий может отличаться от того изображения, куда вставляют.
- На изображении виден сплайсинг — это когда, например, цифру из серии поменяли на цифру из номера паспорта.
На выходе: вероятность подделки документа
5. Верификаторы
На входе: кропы полей + названия документов и полей
Дополнительный модуль верификации результатов распознавания и ручного ввода сложных случаев. Доступен как в облачной, так и в локальной версии. В качестве платформы разметки используется Яндекс.Толока.
На выходе: содержимое полей документов + ответ консенсуса
Вот так на самом деле выглядит распознавание документов в Dbrain, которое вы получаете за несколько секунд. А теперь ещё два важных пункта: скорость — за сколько алгоритмы справляются с паспортом и безопасность — где хранятся данные, которые вытащили нейросети.
Скорость распознавания
Никто не любит ждать. Клиенты компаний, когда загружают документы. Компании, когда поток клиентов огромный, а обработка документов занимает по 10 минут.
Хуже медленного распознавания может быть только медленное и неточное распознавание. Легко представить себе ситуацию, когда клиент ждет 15 минут подтверждения кредита на технику в магазине, а потом получает отказ из-за того, что система не распознала фамилию из-за блика на фото или не справилась с почерком в поле с адресом регистрации.
Наши сервисы справлялись с документами за 3 секунды, но в 2023 все поменялось, и время уменьшилось до 300 мс, про это мы расскажем позже.
Безопасность
По правилам безопасности, банки и другие финансовые организации не могут передавать данные клиентов третьим лицам и сторонним сервисам. Это значит, что любое решение для распознавания должно быть интегрировано в контур банка и располагаться на внутренних серверах.
Мы написали нашу платформу с нуля, не используем открытое программное обеспечение или сторонние решения. Поэтому нас удобно и быстро можно интегрировать в сервисы финансовых компаний.
Кроме того, мы не сохраняем изображения документов на устройстве, оно сразу отправляется на сервер банка. Благодаря этому, банки могут спокойно доставлять карты: курьер никому не передаст фотографии клиентских паспортов — у него их просто нет.
А что по кейсам
Решили, что текста и так много получилось, поэтому кейсы клиентов опишем в следующей статье. Спасибо за ваше время и внимание :)