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

Выбор ниши

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

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

Способ распознавания паспорта, тем не менее, был один. И даже он впечатлял, поскольку позволял вводить паспортные данные:

1) Достаточно быстро. На весь процесс уходило от 2 до 26 секунд в зависимости от производительности сканера;

2) Весьма аккуратно. Число ошибок было существенно меньше по сравнению с ручным вводом.

Но все же системы распознавания паспорта образца 2015 года оставались нишевым продуктом. Связано это было главным образом с ограничениями в использовании такой системы. Вы можете представить сотрудника банка с ноутбуком и сканером, обрабатывающего документы клиента вне офиса? И мы такого не видели.

В 2015 году мы предположили, что привязку системы распознавания документов к офису можно и нужно преодолеть. Для этого, подумали мы, требуется совершенно новая технология, не только для ПК, но и для смартфонов. Так у нас родилась идея написать программу распознавания ID-документов для мобильного телефона. И первым таким документом, разумеется, стал паспорт гражданина РФ.

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

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

Новая система должна была понимать все тонкости защиты бланка паспорта РФ. Замечать гильоширный фон, голографические элементы, глянцевую пленку. А также обучиться распознаванию вариативных элементов паспорта вроде нестандартных шрифтов, неаккуратной печати и “видеть” механические повреждения.

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

Первые шаги

Олдскульный айфон и олдскульная система распознавания
Олдскульный айфон и олдскульная система распознавания

В том же 2015-ом году мы выкатили собственное ИТ-решение для распознавания паспорта Smart PassportReader, которое за 1-3 секунды извлекало все необходимые данные из третьей страницы паспорта – поля “серия”, “номер”, “ФИО”, “пол”, “дата рождения” и “место рождения”.

Smart PassportReader распознавал третью страницу паспорта на сканах, ксерокопиях и фотографиях, а также в видеопотоке камеры мобильного устройства или вебкамеры в режиме реального времени. Распознавание документа в видеопотоке стало нашим уникальным преимуществом. Решение работало на iPhone 4S, Samsung Galaxy S3 и других моделях. 

Качество распознавания серии и номера паспорта для отсканированных изображений уже в первой версии Smart PassportReader составляло более 99%, ФИО – 95%.

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

Этапы большого пути: развитие системы распознавания паспорта Smart Engines

Мы остановимся на нескольких этапах развития нашей системы распознавания паспорта. Каждый из них был своеобразным восхождением на Эльбрус.

Распознавание рукописного паспорта РФ

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

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

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

Такие паспорта заполняются аккуратным каллиграфическим – хотя бы по мнению паспортиста – почерком. С одной стороны, это облегчает задачу: нам не придется распознавать «врачебные каракули» (оставим эту проблему Google) и прочие слабо читаемые тексты. Но, с другой стороны, нам предстояло столкнуться со всей вариативностью каллиграфических начертаний кириллических букв. Уже на тот момент мы сделали вывод, что это скорее серьезный вызов, чем непреодолимая проблема.

Задачу распознавания рукописного текста в паспорте мы разбили на четыре этапа:

  1. Подготовка датасетов;

  1. Детекция наличия рукописи в паспорте;

  1. Сегментация рукописной строки на символы;

  1. Распознавание символов и постобработка; 

На решение этих подзадач ушел год. Для того, чтобы создать датасет рукописи, мы раздали всем нашим программистам тетрадки “в линеечку” и попросили их переписать заранее приготовленные тексты. Тут мы столкнулись с первым разочарованием.

Как бы это грустно ни звучало, но оказалось, что наши программисты совсем разучились писать. И нельзя сказать, что они не старались. Нет, они просто забыли как пишутся буквы от руки. Вот пример того, что получалось:

Наши программисты пишут (ДО)
Наши программисты пишут (ДО)

Буквы пляшут, размеры не соблюдены… Пришлось искать в интернете прописи и, как в первом классе, сажать всех за прописи в прямом смысле этого слова! За пару дней мы, набив руку, были готовы повторить попытку сбора «сырых» данных для датасета рукописного текста. Буквы стали ровнее, слова — читабельнее. А некоторые умудрялись даже привносить какие-то элементы каллиграфии. Вот, посмотрите сами на новые образцы:

Наши программисты пишут (ПОСЛЕ)
Наши программисты пишут (ПОСЛЕ)

В результате таких заготовок с разными текстами и почерками мы собрали около 1000 штук, аккуратно оцифровали и разметили на строчки и символы. Таким образом, мы и сделали датасет рукописи. Затем уже мы принялись решать другие подзадачи – детекция наличия рукописи в паспорте, сегментация рукописной строки на символы, распознавание символов и постобработка.

И вот что получили:

Проверка паспорта на подлинность

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

В 2019 году мы – первыми в России – совместно с нашим партнером, отечественным производителем продукции в сфере биометрии, RFID и паспортных систем «Интек», создали программно-аппаратное решение для автоматического считывания данных из документов и проверки их подлинности.

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

Программно-аппаратный комплекс, предназначенный для распознавания и проверки подлинности защищенных от подделки документов

Этот ПАК сегодня установлен в нескольких банках и успешно помогает им бороться с мошенничествами.

В 2022 году социальная значимость программного продукта Smart ID Engine была признана государством. Smart Engines получила грант Российского фонда развития информационных технологий (РФРИТ). На эти средства наша команда разработала модуль выявления признаков фальсификации документов и атак на предъявление документов в оптическом диапазоне.
 
Разработчики реализовали в Smart ID Engine несколько десятков новых функций. Вот лишь несколько из них:

  • верификация параметров шрифта, которыми выполнены документы;

  • выявление физических и цифровых аномалий фотографии лица, нанесенной на документ;

  • выявление разногласий в данных (например, отличаются данные в полях и в машиночитаемой зоне);

  • поиск, локализация и идентификация элементов защиты типа голограмм;

  • детекция оптически-переменной краски.

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

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

Распознавание паспорта в виде книжки

Последней фундаментальной проблемой при распознавании паспорта РФ, которую оставалось решить, стал режим распознавания “книжки” паспорта. В чем сложность этой задачи?

Дело в том, что скан-копия паспорта при распознавании за счет прижатия документа к рабочей поверхности сканера фактически превращается в плоский объект. А вот распознавание паспорта по фотографии или в видеопотоке требует учета всех геометрических особенностей “книжки” документа. Другими словами, ИИ нужно определить и восстановить геометрию документа в исходном пространстве по его проекции на плоскость изображения.

Наши исследователи, чтобы решить эту задачу, создали новые энергоэффективные архитектуры малобитных нейронных сетей с повторяющими Радоновскими слоями. Заложенная в них эквивариантность к проективным преобразованиям позволяет исправлять перспективные искажения паспорта РФ как в режиме реального времени в процессе распознавания видеопотока, так и на отдельных фотографиях.

Вот как описывает суть этой задачи и способ ее решения технический директор Smart Engines кандидат физико-математических наук Дмитрий Николаев:

“Человеческий мозг способен распознавать объекты с почти произвольных ракурсов, не тратя на это значительных ресурсов. Когда мы берем в руки паспорт, то мы не разворачиваем его полностью перед тем, как прочитать. Мы просто приоткрываем паспорт до тех пор, пока не начнем отчетливо видеть буквы. При этом угол между плоскостями страниц может быть все еще острым, а образ текста на сетчатке существенно искажен перспективой. В восприятии же человека эти искажения отсутствуют. Реализовать такой же принцип работы распознающей программы на базе ИИ было для нас вызовом с того времени, как в 2015 году мы показали первую версию системы распознавания паспорта в видеопотоке и на фотографиях. Решить проблему распознавания «книжки» мы смогли благодаря созданию модели ИИ, способной точно и быстро локализовать и нормализовать плоские фрагменты сложных трехмерных объектов на изображениях с учетом законов перспективы физического мира»

Вывод: задача распознавания паспорта РФ полностью решена

Сегодня Smart ID Engine – мощнейшее решение, которое распознает не только паспорт РФ, но и огромный  перечень других ID-документов.

Smart ID Engine распознает разворот паспорта РФ за 0,15 секунды. Полный цикл распознавания паспорта в видеопотоке, начиная от показа камере и заканчивая получением результата, составляет 0,75–1 секунду.

Для нас важно, что Smart ID Engine базируется на фирменной технологии распознавания GreenOCR®, которая создает минимальный углеродный след. Количество энергии, которая выделяется на каждое распознавание, эквивалентно 0,0001 гр. CO2. Но мы с лихвой компенсировали все распознавания, высадив в лесу 7,5 тысяч сеянцев дуба черешчатого.

Сейчас Smart ID Engine используется 9-ю из 13-ти системообразующих банков РФ. Программный продукт применяют Газпромбанк, Совкомбанк, Альфа-Банк, МКБ, “Открытие”, Росбанк, Тинькофф Банк, Райффайзенбанк, Кредит Европа Банк, МТС-Банк, Банк Синара, Банк Хоум Кредит, банк “Санкт-Петербург”, “Металлинвестбанк” и другие.

Благодаря решению Smart ID Engine банк “Кубань Кредит” ускорил обслуживание плательщиков в 2 раза, “Банк Мир Привилегий” – в 10 раз.

Smart ID Engine также позволила усовершенствовать внутренние процедуры у наших клиентов. Поскольку Smart ID Engine обеспечивает автоматическое распознавание паспорта с меньшей долей ошибок, чем у человека, некоторые наши клиенты отказались от ручного ввода персональных данных паспорта. Теперь эта задача выполняется исключительно Smart ID Enginе. Человек не может вмешаться в ее работу. При этом сотрудник получает другие задачи, сохраняя рабочее место. В то же время использование технологии искусственного интеллекта Smart Engines при распознавании паспорта РФ вместо ручного труда операторов  минимизирует риск утечки персональных данных через сотрудников.

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


  1. datacompboy
    25.05.2023 09:41

    А как работает корректировка при ошибке распознавания? "Гааля, у нас отмеена"?


    1. SmartEngines Автор
      25.05.2023 09:41

      В нашей системе есть несколько уровней самоконтроля. Система сообщает, когда не уверена в результате.


      1. datacompboy
        25.05.2023 09:41
        +3

        Человек не может вмешаться в ее работу.

        Мой вопрос касательно ^^ вот этого в статье


        1. SmartEngines Автор
          25.05.2023 09:41

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


      1. senglory
        25.05.2023 09:41

        А еслу уверена, но ей скормили лажу, что тогда?


        1. SmartEngines Автор
          25.05.2023 09:41

          Если система уверена, что ей скормили лажу, то она дает отказ


  1. Zara6502
    25.05.2023 09:41
    +3

    я обычно пессимист-теоретик, поэтому не воспринимайте мои слова как наезд.

    1) у вас какие-то ограничения на использование конкретных мобильных устройств? Просто у меня уже было два смартфона средней цены после Lumia 640XL и все они по камерам хуже и хуже хотя и в мегапикселях больше, а вся беда в том что сейчас любимый формат съемки это "рыбий глаз" и куча постобработок для себяшек. Я банально не могу нормально сделать фото описания товара на упаковке чтобы прочитать состав или производителя, поэтому как там ваше ПО умудряется разглядеть что-то в паспорте?

    2) Не рождает ли это проблему другого уровня - когда паспорт делается не под ввод руками, а под ваше ПО, которое (я гарантирую) имеет уязвимости.

    3) Последний раз в банке был в декабре 2022 года, в сбере, но они никогда до этого и сейчас не сканировали паспорта, причем они даже не делают поиск по базе по номеру или снилс и не используют введенное ранее повторно, они тупо ВСЕГДА вбивают руками все данные из паспорта, а после этого прикрепляют сканы нужных страниц. И если не сбер, то кто без вас что-то сканировал из паспортов (никогда такое не видел) и кто те компании которые делают это силами вашей программы?


    1. Ivnika
      25.05.2023 09:41
      +1

      Хорошие вопросы — где гарантия что, грубо говоря, алгоритм определения подделок не утечет на сторону? Различного рода защиты программ говорят об обратном, даже страшно представит себе возможные последствия. Какая защита от подобного есть?
      p.s. А так история разработки как хорошая книга, прочитал с удовольствием, очень интересно.


      1. Hardcoin
        25.05.2023 09:41

        Гарантий нет, но к чему вопрос? Мол, не разрабатываете алгоритм определения подделок, а то утечёт? Подобный призыв нигде и никогда не сработал.


        1. Ivnika
          25.05.2023 09:41

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


    1. APXEOLOG
      25.05.2023 09:41

      Я знаю, что как минимум Тинькоф просто фоткает документы (ну и причина понятна - не будет же их курьев со сканером ездить по домам). Не знаю используют они это решение, или какое-то другое


      1. SmartEngines Автор
        25.05.2023 09:41
        +1

        Тинькофф - наш клиент с 2016 года.


    1. SmartEngines Автор
      25.05.2023 09:41

      Добрый день! Ниже ответы по порядку.

      1. Мы работаем на аппаратах из широкого ценового диапазона, например на INOY. Для нормального результата требуется камера не менее 5 МП, наличие автофокуса.

      2. Классическая проблема щита и меча. Конечно, все можно сломать. Мы постоянно совершенствуем наше решение.

      3. Сбер не наш клиент, за таким комментарием не к нам.


      1. Didimus
        25.05.2023 09:41

        У Сбера домклик тоже быстро распознаёт паспорта, даже рукописные калографическим шрифтом с вензелями


  1. EvgeniyIvanovhabr
    25.05.2023 09:41

    Разработка очень крутая. действительно полезная. Недавно обновлял онлайн паспортные данные в Тинькофф и Хоум Кредит и очень удивился тому как легко и быстро всё проходит. И отдельный искренний плюс вам в карму за посадку дубов!


    1. SmartEngines Автор
      25.05.2023 09:41

      Спасибо, приятно такое слышать от нашего пользователя!


      1. Didimus
        25.05.2023 09:41

        А почему именно дубы? Они же очень медленно растут


        1. SmartEngines Автор
          25.05.2023 09:41
          +2

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

          P.S. Дуб черешчатый живет 400 лет. Мы смотрим далеко в будущее!


          1. Didimus
            25.05.2023 09:41

            Посмотрите через несколько лет, там все зарастёт осинами, берёзами и тп


        1. EvgeniyIvanovhabr
          25.05.2023 09:41

          Зато очень качественное дерево. Одно из лучших среди листопадных.

          Живет, при хороших условиях, столетиями (есть множество рекордсменов живущих более тысячи лет), мощная корневая система, благодаря которой они не ветровальные, хорошо возобновляются при повреждениях, их желуди – отличная пища для птиц, которые в ответ помогают в размножении дубов (сойка делает большие запасы и часть из них прорастает). И они растут медленно только в первые годы, далее прирост может быть и до метра в год.


          1. Didimus
            25.05.2023 09:41

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


            1. EvgeniyIvanovhabr
              25.05.2023 09:41

              Будем надеяться, ребята из SmartEngine за ними присмотрят :-) Я, после того как сажаю дерево, обязательно пару раз в сезон приезжаю посмотреть, как оно, убрать сорняки и добавить долгоиграющих удобрений.

              Хобби такое.


              1. Didimus
                25.05.2023 09:41

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


  1. Haud
    25.05.2023 09:41
    +1

    Причина, по которой увеличилось количество дропов.


  1. Mishootk
    25.05.2023 09:41
    +1

    Жизнеспособен ли вариант сканирования только серийника и отправки запроса в паспортную базу данных? Ответ с полными данными только уполномоченному аккаунту. Для простых "проверяльщиков" отправляются распознанные данные и возвращается подтверждение корректности. Для предотвращения подбора брутфорсом отдельные меры (начиная с таймаутов).


  1. heiheshang
    25.05.2023 09:41
    +1

    А после распознования на телефоне куда данные отправляются ? или вы библиотеку предоставляете ?


    1. SmartEngines Автор
      25.05.2023 09:41

      Да, все верно. Наш продукт - это SDK, который встраивается уже в клиентское приложение банка и т.п.


  1. lleo_aha
    25.05.2023 09:41
    +1

    Молодцы! Единственное что озадачивает в статье - начали с "можете себе представить менеджера с ноутбуком и сканером? конечно же нет" - закончили "программно-аппаратным решением", т.е. в общем то менеджером с ноутбуком и сканером :)


    1. SmartEngines Автор
      25.05.2023 09:41

      Фактически мы прошли весь путь: АРМа с планшетным сканером до сотрудника с планшетом. А специальный сканер - это о задаче проверки подлинности, которая сильно отличается от распознавания


  1. fire_engel
    25.05.2023 09:41
    -6

    а в чём, собственно, сложность разработки? любой студент второго курса информационного направления, хоть немного знакомый с МЛ, может создать подобную систему, имея достаточно данных для обучения и времени


    1. gxcreator
      25.05.2023 09:41
      +16

      Разговаривать - не перемещать грузы.


    1. SmartEngines Автор
      25.05.2023 09:41

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

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


    1. thevlad
      25.05.2023 09:41

      Подобную это какую? Распознавание машинописного паспорта? Возможно.

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


    1. gleb_l
      25.05.2023 09:41
      +1

      Дьявол в деталях. Сделать 80% можно из коробки. 90% - через год, обвесив коробочное решение костылями. 95% и выше - может вообще никогда не получиться, или.. туда нужно будет влить десятки человеко-лет, получив попутно уникальную экспертизу.

      Кроме того, между in vitro и in vivo - огромная разница!


  1. Krey
    25.05.2023 09:41
    +1

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


    1. Ilusha
      25.05.2023 09:41

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


    1. Protos
      25.05.2023 09:41
      +1

      Чипы кончились в стране говорят.

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


      1. Krey
        25.05.2023 09:41

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


  1. 1001
    25.05.2023 09:41

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


    1. SmartEngines Автор
      25.05.2023 09:41

      Муляж на видео взят из Википедии.


      1. 1001
        25.05.2023 09:41

        С такой качественной полиграфией? Удивительно. А вообще как вы выясняли какие наиболее частые механизмы подделки используются? Достаточно ли анализировать только "характерные особенности оформления документа и анализ результатов распознавания"? Или для ваших клиентов это избыточно?


  1. KOTangens
    25.05.2023 09:41

    Для Альфы ваша система у меня не сработала, не смогла распознать новый машинописный паспорт. Затык на странице с данными о предыдущих паспортах. Пришлось идти в офис банка.


    1. SmartEngines Автор
      25.05.2023 09:41

      Спасибо за фидбек, разберемся с интеграцией