Сегодня мы, Smart Engines, расскажем историю, как работали в пандемию и что у нас из этого получилось. Расскажем, когда и для кого размер приложения имеет значение, что такое живость документов и куда катится этот дивный мир распознавания.
История о том, как мы фактически перезапустили Smart Engines в продуктовом плане. И этот рассказ будет совсем не про то, как мы привлекли миллиардные инвестиции за счет «копеечного» ребрендинга или удачно на дистанционке ухватили государственных субсидий для поддержания бизнеса. Нет, мы по натуре не из тех, кто, как говорится, «и рыбку съесть, и в пруд не лезть». Причиной многомесячных упорных работ было полное переосмысление концепции, архитектуры и назначения наших движков распознавания. Но обо всем по порядку.
Пять лет назад мы вышли на рынок с простым продуктом – движок распознавания паспорта на мобильных устройствах. Функциональность была крайне проста: вы показываете движку паспорт в видеопотоке, а он возвращает в текстовом виде атрибуты документа (причем делал он это без какой-либо связи с внешними серверами, непосредственно все распознавание осуществлялось на устройстве). Никаких сверок с базами валидных паспортов, никаких запросов автоматических в МВД на предмет мошенничества, никаких других сервисов KYC. Только быстрое и качественное распознавание, которое, по нашим представлениям, должно было отчасти перевернуть цифровой мир.
Получилось. В марте 2015 года мы представили первую версию продукта – Smart PassportReader, о чем «трубили» на всех ресурсах (чего только стоит наша статья на Хабре, где мы во всех красках рассказываем об особенностях поставленной задачи и о способах применения технологии в бизнесе). Хотя первоначально рынок вяло отреагировал на нашу инновацию, сегодня же только отдельные банки не используют эту технологию в мобильных приложениях.
С ростом количества клиентов росло и количество запросов на добавление новых функций и возможностей. Расширялась база поддерживаемых типов документов, увеличивался список поддерживаемых языков, количество используемых, раздувалась кодовая база (несмотря на то, что за прошедшие пять лет отдельные подсистемы были переписаны несколько раз «с нуля», чтобы не утонуть в будущем в поддержке легаси кода). Конечно, это все сказывалось на финальном объеме SDK – объем Smart IDReader в «полной комплектации» под iOS стал весить больше 200 Мб. Много? Да, безумно много! Однако в глаза скорее бросался огромный список возможностей ПО, чем какие-то мегабайты.
Дистанционная работа с ее размеренностью и однообразностью дала нам возможность детально проанализировать наш продукт и пообщаться с клиентами, как они используют наше SDK. Оказалось, что многие клиенты используют функционал распознавания платежных карт и штрихкодов отдельно от паспортов (фактически, в разных бизнес-кейсах и приложениях), что дало нам осознание необходимости продукта распознавания таких объектов. Назвали мы этот продукт Smart Code Engine. Само собой, мы не только выделили ограниченную функциональность из предыдущего SDK, сформировали отдельную команду мощных ребят, которые существенно расширили возможности движка в части распознавания кодифицированных объектов. А главное, сформировали ключевые требования к продукту: работать быстро, работать при любых условиях, работать точно.
В результате Smart Code Engine обеспечивает автоматическое считывание данных банковских карт, машиночитаемой зоны и баркодов в широком классе условий захвата изображений. Система устойчива к перепадам освещения, ракурсу съемки, перекосам, углу поворота, избыточному и недостаточному освещению. Система работает в реальном времени и способна на современных устройствах распознавать банковские карты и другие объекты со скоростью 25 кадров в секунду.
Smart Code Engine позволяет сканировать и распознавать банковские дебетовые и кредитные карты платежных систем «Мир», Visa, Mastercard, American Express, JCB, MIR, Maestro, Unionpay и Diners Club, выпущенные различными странами мира, обеспечивая извлечение не только номера (12-19 цифр), но и срока действия и имени владельца. Поддерживается распознавание любых видов банковских карт: с нанесением данных выдавливанием (embossed), гравировкой (indent) и плоской печатью (flat printed), с горизонтальным и вертикальным расположением идентификационных данных, и тех карт, на которых данные расположены как на лицевой, так и на обратной стороне. В новом продукте пользователям стало доступно распознавание банковских карт с номером IBAN, которые широко распространены в странах Евросоюза. Модуль чтения баркодов поддерживает распознавание QR Code (включая различные дизайнерские версии), AZTEC, PDF 417, Data Matrix, CODABAR, CODE_39, CODE_93, CODE_128, EAN_8, EAN_13, ITF, UPC_A, UPC_E. Модуль распознавания данных машиночитаемых зон документов (MRZ) помимо международного стандарта ISO/ICAO (IEC 7501-1/ICAO Document 9303 ISO), учитывает локальные нормативные акты (Россия, Франция, Швейцария, Болгария, Эквадор).
Второе «переосмысление» относится к нашему флагманскому решению – движку распознавания ID-документов. Хотя в самом начале мы позиционировали наш продукт для решения целого спектра задач, начиная от СКУД и заканчивая сложными системами искусственного интеллекта, автономно обслуживающих людей, основное применение Smart IDReader нашел в задачах удаленной идентификации и аутентификации личности. Вот лишь несколько «живых» кейсов: регистрация самозанятых в сервисе «Мой Налог», приобретение и активация сим-карты, регистрация в мобильном клиенте Тинькофф.
Для решения таких задач требуется больше, чем просто распознавание текстовых реквизитов. Так мы создали новый продукт Smart ID Engine, который помимо распознавания данных обеспечивает многофакторную аутентификацию за счет встроенного механизма проверки лиц, анализа «живости» (liveness) предъявляемого документа, а также выделения признаков компрометации.
Помимо анализа отдельных текстовых и графических элементов (в том числе элементов, изменяющихся во времени при изменении окружающих условий, как например, голограмм), Smart ID Engine содержит коллекцию методов, предупреждающих «физическое» вмешательство в целостность документа (например, детекцию подмены фотографии).
Такой вектор в создание комплексной системы идентификации и аутентификации личности открывает перед нами новые рубежи и новые рынки сбыта, во всех смыслах расширяя географию применимости системы. И тут мы тоже решили «выстрелить»: сделали распознавания арабской письменности и языков индоиранской группы. На минуточку, речь идет о 21 юрисдикциях с общим населением 500 млн человек, которые не используют надписи на латинице в национальных документах. Распознавание арабского языка внедрено для 73 типов документов, включая паспорта, ID-карты и водительские удостоверения следующих государств: Алжир, Бахрейн, Государство Палестина, Египет, Иордания, Ирак, Иран, Йемен, Катар, Коморы, Кувейт, Ливан, Ливия, Мавритания, Марокко, ОАЭ, Оман, Саудовская Аравия, Сирия, Судан, Тунис. Итого, на сегодняшний день мы поддерживаем 99 языков мира, а начинали 5 лет назад с двух – русского и английского.
Наконец, последнее третье «переосмысление» действительности и представление нового продукта, который так оперативно родился за время острой фазы пандемии – Smart Document Engine. Этот движок решает задачи автоматического извлечения данных из типовых форм документов, форм строгой отчетности, первичных бухгалтерских, финансовых, налоговых, юридических, нотариальных и других документов. Так же, как и все остальные движки распознавания Smart Engines, строго на устройстве, без использования внешний высокопроизводительных серверов. Плюс множество вспомогательных функций, таких как проверка наличия подписи и печати, распознавание рукописного заполнения, контроль топологической целостности документа и т. п.
Конечно, скептики могут махнуть рукой и сказать, что тема совершенно бессмысленная и бестолковая, ибо кому может понадобиться распознавать документы на мобильники или планшете. На это у меня готов ответ. Во-первых, оптимизация алгоритмов под слабые вычислительные архитектуры позволяет сделать нам решение, работающее с непревзойденной скоростью на рабочих станциях и серверах (время обработки 1 страницы документа А4 на AMD Ryzen 7 3700X составляет порядка 2 секунд). А во-вторых, ровно такие скептические прогнозы мы уже встречали, 5 лет назад, когда выпускали продукт распознавания паспорта.
А что же дальше? Выход на западные рынки? Развитие продаж? PR и маркетинг и прочее бла-бла-бла? Конечно же нет. На Западе, как и на Востоке, мы и так есть. Продажи развиваются. PR и маркетинг уже настроен (раз вы дочитали эту статью до конца). Поэтому сосредоточимся на деле:
- добавление новых кодифицированных объектов: распознавание отдельных текстовых строк, распознавание VIN номеров, распознавание показаний приборов учета и другие;
- добавление новых языков и письменностей, например в Индии используется более 20 языков;
- повышение скорости распознавания;
- расширение списка поддерживаемых типов документов;
- много другой интересной работы.