Вжух — и распозналось: как на самом деле работают алгоритмы распознавания документов

Результат есть, а как оно там распознаётся, никто и не представляет. Решили на пальцах, паспорте и алгоритмах 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 мс, про это мы расскажем позже.

Безопасность

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

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

Кроме того, мы не сохраняем изображения документов на устройстве, оно сразу отправляется на сервер банка. Благодаря этому, банки могут спокойно доставлять карты: курьер никому не передаст фотографии клиентских паспортов — у него их просто нет.

А что по кейсам

Решили, что текста и так много получилось, поэтому кейсы клиентов опишем в следующей статье. Спасибо за ваше время и внимание :)

0
27 комментариев
Написать комментарий...
Сергей Багрецов

Да никак не работает. Сколько юзал, где помогал знакомым выкладывать авто на площадки Яндекса, там сканер не распознавал СТС и права - совсем никак.

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

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

Ответить
Развернуть ветку
Dbrain
Автор

lдумаю дело в том, что они используют свое распознавание, а не наше :)

Ответить
Развернуть ветку
Петухов Илья

А как решается вопрос безопасности персональных данных при использование Яндекс Толоки?
Ваше решение интегрировано в контур, но если ИИ не уверен, он передает данные третьей стороне.

Ответить
Развернуть ветку
Dbrain
Автор

о, это очень хороший вопрос.

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

Персональными данными является комбинация данных - например ФИО + телефон или серия номер + дата рождения. На стороне клиента сервис разделяет документ на отдельные поля и дальше они уходят к нам. Мы у себя проверяем, чтобы данные из 1 документа не попали на одного и того же верификатора, тем самым у них никогда не окажутся перс данные

Ответить
Развернуть ветку
Петухов Илья

Спасибо за ответ.
Дополню касательно деперсонализации, выполнял пару заданий в Толоке от вас, там не все четко было "разрезано". Мне попался отрывок ПТС с ФИО, маркой и VIN автомобиля.

Ответить
Развернуть ветку
unknown

60 тыс штрафа!

Ответить
Развернуть ветку
Михаил Балакин

жесткий финансовый удар

Ответить
Развернуть ветку
Dim Dimych

Если выполнив всего несколько заданий был такой инцидент, то возникают вопросы к алгоритму деперсонализации. Было бы интересно спецов из инфобеза послушать. Может есть стандарт на эту тему? Ибо если его нет, то это волшебство для вашего заказчика может стать совсем не волшебным, а "оборотным" и может быть в этом году ещё и уголовным.

Ответить
Развернуть ветку
Петухов Илья

Касательно персональных данных есть 152 ФЗ.
И компания оператора п.д. берет на себя обязательства по получению, хранения и уничтожению без передачи третьей стороне.
Но тут есть особенность - в поручении на обработку перс. данных может быть прописана возможность передачи третьей стороне. Тут читать надо, что у них прописано.

Ответить
Развернуть ветку
Dim Dimych

С Dbrain конструктивное общение что-то не пошло) Илья, а у вас вроде тоже сервис распознавания. А кто у вас верификаторы?

Ответить
Развернуть ветку
Петухов Илья

Добрый день. Да, у нас есть сервис распознавания. По верификаторам есть 2 сценария:
1. Сотрудники заказчика проверяют как справились сервисы. Это при локальной установке на мощностях компании-заказчика.
2. Выделенные операторы (сотрудники нашей компании и партнеров) задача который допроверить и обработать рукописку. Это при облачном подключении к сервису.
Облако соответствует 152 ФЗ, поддерживает 3-1 уровень угроз, со всеми сотрудниками подписан NDA.

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

Ответить
Развернуть ветку
Dim Dimych

Да, спасибо! А вот у вас на сайте написано 100% распознавание. Это при каком варианте? И что у вас используется на уровне OCR? Tesseract?

Ответить
Развернуть ветку
Петухов Илья

Так или иначе заказчик получает 100% распознанный документ. Главный вопрос какими ресурсами: с привлечением своих либо аутсорс.
На сайте описан вариант облачного подключения, где в симбиозе машина и человек распознают документы.

OCR
Мы несколько открытых библиотек используем, в том числе и Tesseract.

Ответить
Развернуть ветку
Dim Dimych

Илья, ваш ответ очень расстраивает.
1) 100% получится и вообще без вашего решения...
2) OCR это самая технически сложная часть распознавания документов. Это 95% всего процесса. А может и больше по трудоемкости. По сути у вас получается ничего своего нет... Кроме того, так как российских открытых OCR вроде нет, то у вас просто технологическая зависимость. А вы в реестр подавались со своим решением?

Ответить
Развернуть ветку
Петухов Илья

Так и получается, что OCR забирает 93-97% распознавания. Оставшиеся % добивает человек (проверяет, корректирует, распознает рукописку и прочее).
Касательно реестра, наше решение в реестре. И тут как раз нет зависимости от открытых библиотек. Все библиотеки и стороннее ПО которое необходимо для работы свободно распространяемое и ни о какой технологической зависимости речи не идет.

Ответить
Развернуть ветку
Dim Dimych

Спасибо за ответ. Но он вызывает ещё больше вопросов.

1) 93-97% это качество по полям или по символам? На чем измеряли (фото, сканы)? Были ли в выборке пережатые сканы с МФУ? На каком количестве страниц вы делали замеры?

2) Когда я писал про 95% всего процесса, я имел в виду что именно OCR это основной элемент системы распознавания. Например, сколько вложено в Tesseract разработчиками и потом Google даже сложно сказать. Может 10+ млн долларов, а может и сильно больше. Думаю вы понимаете, что именно поэтому в мире работающих OCR всего штук 10, а может и меньше. Поэтому когда в ПО чужая OCR говорить что нет зависимости странно. Сегодня открытые, а завтра в текущих реалиях закрытые.

Можете рассказать сколько человеко-лет вы вложили в разработку? Кто из учёных курирует разработку?

Ответить
Развернуть ветку
Петухов Илья

Добрый день!
Да вопросов я вижу много.
Предлагаю, чтобы не раздувать тут комментарии и для удобства обсудить по почте [email protected] либо в телеграмм мне напишите @pet_ilya

Ответить
Развернуть ветку
Dim Dimych

Илья, чтобы не задавать вопросы в этой теме, я продублировал их в комментарии к вашей статье - https://vc.ru/services/592851-vse-eshche-sravnivaete-dokumenty-vruchnuyu-a-mogli-by-doverit-eto-iskusstvennomu-intellektu?comments

Думаю, так будет логичней, чем отправить их приватно.

Ответить
Развернуть ветку
Dim Dimych

Вопрос не про ответственность сервиса. Какая может быть ответственность если в компании работает официально 3 человека. Я про алгоритм деперсонализации. Это в данном случае ключевой элемент процесса, который критически важен для безопасности. Если есть стандарт, то ОК, если стандарта нет, то в какой то момент к заказчикам может придти и ответственность.

Ответить
Развернуть ветку
Alexey Hahunov

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

Илья очевидно врет и внедряет рекламу своего решения.

Требует пруфы или вместо нарушения закона о перс данных это скорее похоже на клевету

Ответить
Развернуть ветку
Dim Dimych

Алексей, проверка Яндексом на риск звучит не очень. У них у самих менее чем за год 3 крупные утечки данных (в том числе у них утекли персданные клиентов и программный код).

А Илья, да, мог бы предоставить скриншот ситуации с которой столкнулся и тогда не было бы вопросов про рекламу и про риск использования вашего деперсонализатора.

Ответить
Развернуть ветку
nadegda cheremuhina

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

Ответить
Развернуть ветку
Мимо проходивший

согласен, на Пежо совсем не весело.

Ответить
Развернуть ветку
Архаров Петр

А потом сотруднику банку вручную это все занести в программу, в чем смысл?

Ответить
Развернуть ветку

Комментарий удален модератором

Развернуть ветку
Dim Dimych

Хорошо вы "элементы персональных данных" называете случайно ошибкой и передаёте верификаторам в Толоку. И очень интересно, что у вас на сайте Сколково указано 3 человека в штате на 2021 год.

Ответить
Развернуть ветку
Коммунист

Думаете, надо добавить всех работников толоки?

Ответить
Развернуть ветку
Dim Dimych

Я думаю, что персональные данные вообще не надо отправлять в Толоку. Посмотрите копирайт Толоки на сайте.

Ответить
Развернуть ветку
24 комментария
Раскрывать всегда