Вжух — и распозналось: как на самом деле работают алгоритмы распознавания документов
Результат есть, а как оно там распознаётся, никто и не представляет. Решили на пальцах, паспорте и алгоритмах 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 мс, про это мы расскажем позже.
Безопасность
По правилам безопасности, банки и другие финансовые организации не могут передавать данные клиентов третьим лицам и сторонним сервисам. Это значит, что любое решение для распознавания должно быть интегрировано в контур банка и располагаться на внутренних серверах.
Мы написали нашу платформу с нуля, не используем открытое программное обеспечение или сторонние решения. Поэтому нас удобно и быстро можно интегрировать в сервисы финансовых компаний.
Кроме того, мы не сохраняем изображения документов на устройстве, оно сразу отправляется на сервер банка. Благодаря этому, банки могут спокойно доставлять карты: курьер никому не передаст фотографии клиентских паспортов — у него их просто нет.
А что по кейсам
Решили, что текста и так много получилось, поэтому кейсы клиентов опишем в следующей статье. Спасибо за ваше время и внимание :)
Да никак не работает. Сколько юзал, где помогал знакомым выкладывать авто на площадки Яндекса, там сканер не распознавал СТС и права - совсем никак.
А всё дело в том, что в Гибдд выдают такую бумажку, которая свернута вровень вполовину высоты букв вин номера или иного текста. Либо у них отступы отрицательные, и буквы наезжают на следующую строку.
Вот бы делали помошника распознавания - с возможностью править, это уже другое дело.
lдумаю дело в том, что они используют свое распознавание, а не наше :)
А как решается вопрос безопасности персональных данных при использование Яндекс Толоки?
Ваше решение интегрировано в контур, но если ИИ не уверен, он передает данные третьей стороне.
о, это очень хороший вопрос.
чтобы система работала в контуре, но можно было подключить Толоку к верификации у нас есть алгоритм для депресонализации данных. Его используют многие крупные заказчики у нас.
Персональными данными является комбинация данных - например ФИО + телефон или серия номер + дата рождения. На стороне клиента сервис разделяет документ на отдельные поля и дальше они уходят к нам. Мы у себя проверяем, чтобы данные из 1 документа не попали на одного и того же верификатора, тем самым у них никогда не окажутся перс данные
Спасибо за ответ.
Дополню касательно деперсонализации, выполнял пару заданий в Толоке от вас, там не все четко было "разрезано". Мне попался отрывок ПТС с ФИО, маркой и VIN автомобиля.
60 тыс штрафа!
жесткий финансовый удар
Если выполнив всего несколько заданий был такой инцидент, то возникают вопросы к алгоритму деперсонализации. Было бы интересно спецов из инфобеза послушать. Может есть стандарт на эту тему? Ибо если его нет, то это волшебство для вашего заказчика может стать совсем не волшебным, а "оборотным" и может быть в этом году ещё и уголовным.
Касательно персональных данных есть 152 ФЗ.
И компания оператора п.д. берет на себя обязательства по получению, хранения и уничтожению без передачи третьей стороне.
Но тут есть особенность - в поручении на обработку перс. данных может быть прописана возможность передачи третьей стороне. Тут читать надо, что у них прописано.
С Dbrain конструктивное общение что-то не пошло) Илья, а у вас вроде тоже сервис распознавания. А кто у вас верификаторы?
Добрый день. Да, у нас есть сервис распознавания. По верификаторам есть 2 сценария:
1. Сотрудники заказчика проверяют как справились сервисы. Это при локальной установке на мощностях компании-заказчика.
2. Выделенные операторы (сотрудники нашей компании и партнеров) задача который допроверить и обработать рукописку. Это при облачном подключении к сервису.
Облако соответствует 152 ФЗ, поддерживает 3-1 уровень угроз, со всеми сотрудниками подписан NDA.
Вроде все аспекты осветил)
Да, спасибо! А вот у вас на сайте написано 100% распознавание. Это при каком варианте? И что у вас используется на уровне OCR? Tesseract?
Так или иначе заказчик получает 100% распознанный документ. Главный вопрос какими ресурсами: с привлечением своих либо аутсорс.
На сайте описан вариант облачного подключения, где в симбиозе машина и человек распознают документы.
OCR
Мы несколько открытых библиотек используем, в том числе и Tesseract.
Илья, ваш ответ очень расстраивает.
1) 100% получится и вообще без вашего решения...
2) OCR это самая технически сложная часть распознавания документов. Это 95% всего процесса. А может и больше по трудоемкости. По сути у вас получается ничего своего нет... Кроме того, так как российских открытых OCR вроде нет, то у вас просто технологическая зависимость. А вы в реестр подавались со своим решением?
Так и получается, что OCR забирает 93-97% распознавания. Оставшиеся % добивает человек (проверяет, корректирует, распознает рукописку и прочее).
Касательно реестра, наше решение в реестре. И тут как раз нет зависимости от открытых библиотек. Все библиотеки и стороннее ПО которое необходимо для работы свободно распространяемое и ни о какой технологической зависимости речи не идет.
Спасибо за ответ. Но он вызывает ещё больше вопросов.
1) 93-97% это качество по полям или по символам? На чем измеряли (фото, сканы)? Были ли в выборке пережатые сканы с МФУ? На каком количестве страниц вы делали замеры?
2) Когда я писал про 95% всего процесса, я имел в виду что именно OCR это основной элемент системы распознавания. Например, сколько вложено в Tesseract разработчиками и потом Google даже сложно сказать. Может 10+ млн долларов, а может и сильно больше. Думаю вы понимаете, что именно поэтому в мире работающих OCR всего штук 10, а может и меньше. Поэтому когда в ПО чужая OCR говорить что нет зависимости странно. Сегодня открытые, а завтра в текущих реалиях закрытые.
Можете рассказать сколько человеко-лет вы вложили в разработку? Кто из учёных курирует разработку?
Добрый день!
Да вопросов я вижу много.
Предлагаю, чтобы не раздувать тут комментарии и для удобства обсудить по почте [email protected] либо в телеграмм мне напишите @pet_ilya
Илья, чтобы не задавать вопросы в этой теме, я продублировал их в комментарии к вашей статье - https://vc.ru/services/592851-vse-eshche-sravnivaete-dokumenty-vruchnuyu-a-mogli-by-doverit-eto-iskusstvennomu-intellektu?comments
Думаю, так будет логичней, чем отправить их приватно.
Вопрос не про ответственность сервиса. Какая может быть ответственность если в компании работает официально 3 человека. Я про алгоритм деперсонализации. Это в данном случае ключевой элемент процесса, который критически важен для безопасности. Если есть стандарт, то ОК, если стандарта нет, то в какой то момент к заказчикам может придти и ответственность.
яндекс регулярно проверяет наши задания на риск попадания туда перс данных, такого не может быть.
Илья очевидно врет и внедряет рекламу своего решения.
Требует пруфы или вместо нарушения закона о перс данных это скорее похоже на клевету
Алексей, проверка Яндексом на риск звучит не очень. У них у самих менее чем за год 3 крупные утечки данных (в том числе у них утекли персданные клиентов и программный код).
А Илья, да, мог бы предоставить скриншот ситуации с которой столкнулся и тогда не было бы вопросов про рекламу и про риск использования вашего деперсонализатора.
если все это еще работает также быстро и четко, как здесь описано, то как говорится, респект и уважуха такому алгоритму
согласен, на Пежо совсем не весело.
А потом сотруднику банку вручную это все занести в программу, в чем смысл?
Комментарий удален модератором
Хорошо вы "элементы персональных данных" называете случайно ошибкой и передаёте верификаторам в Толоку. И очень интересно, что у вас на сайте Сколково указано 3 человека в штате на 2021 год.
Думаете, надо добавить всех работников толоки?
Я думаю, что персональные данные вообще не надо отправлять в Толоку. Посмотрите копирайт Толоки на сайте.