Привет, Хабр! Раньше мы уже рассказывали о распознавании документов прямо в браузере и технологии WebAssembly (или WASM), которая позволяет это делать. Теперь давайте разберем, как и где это работает в реальной жизни.

В последнее время многим российским компаниям пришлось несладко. По мере того, как санкционные компании и банки получили стимул развивать новые продукты, все чаще начал подниматься вопрос разработки модных progressive web applications (PWA) для удобства клиентов. В разное время им уделяли внимание Apple, Firefox и другие компании, в частности — потому что постоянные усовершенствования HTML, CSS и JavaScript открывали перед пользователями таких приложений более высокий уровень интерактивности и делали нативный опыт возможным на обычном сайте.

Да, HTML5 позволяет создавать красивые и довольно функциональные веб-страницы, но на пути к упрощению жизни прогресс сделал несколько шагов вперед, а пользователи российских банковских приложений в свою очередь привыкли к более технологически продвинутым функциям. Среди таких, к примеру, распознавание документов, сканирование QR- и других баркодов для совершения ежедневных платежей. И никто не хочет возвращаться в прошлое, в котором вершиной прогресса считался обычный мобильный перевод средств со счета на счет. Но что делать, если мобильные браузеры, будь то стандартные Safari или Chrome, к примеру, изначально не запрограммированы распознавать видео?

Согласно свежим данным компании Markswebb такая проблема действительно существует. Интернет-банки пока не умеют использовать возможности смартфона клиента по максимуму, в отличие от тех же удаленных приложений банков. Сами по себе браузеры действительно не обучены обращаться к камере или использовать другие решения для реализаци привычных финансовых функций. Markswebb также напоминает, что онлайн-версии не умеют распознавать реквизиты по фотографии, а делать это в реальном времени — тем более. Но есть одно “но”, которое способно позволить российским банкам продолжить обеспечивать своим клиентам качественный и современный сервис. С такой задачей поможет справиться WASM.

Гибкость + мобильность + производительность = WASM 
(источник: https://medium.com/globant/step-up-your-game-with-web-assembly-3f787fe6e95)
Гибкость + мобильность + производительность = WASM (источник: https://medium.com/globant/step-up-your-game-with-web-assembly-3f787fe6e95)

Сама технология достаточно новая и была анонсирована в 2015 году, а спустя всего 4 года — была признана официальным веб-стандартом и четвертым языком веб-программирования после HTML, CSS и JavaScript.

WASM позволяет компилировать код, написанный на различных популярных языках программирования, в исполняемый движком браузера модуль. С его помощью вместе с остальной веб-страницей с сервера загружается скомпилированный модуль, который далее используется внутри браузера. Многие технологические компании, которым нужна скорость работы и кросс-платформенность, прибегают к помощи WASM — допустим, компания Zoom использует именно эту технологию, чтобы видеоконференции, запускаемые из браузера, работали быстро и стабильно.

Мы создали технологии распознавания, основанные на собственных разработках в сфере искусственного интеллекта и способные считывать разные данные с камеры смартфона непосредственно в браузере с помощью WebAssembly (WASM). Именно он предлагает исключительную для веб-задач производительность, открывает возможности легкого интегрирования нативно исполняемых функций в веб-версии приложений и позволяет значительно упростить решение технически сложных задач — к примеру, распознавание данных с камеры прямо в браузере. Стандартные же веб-приложения без дополнений в виде модулей WASM не умеют получать и обрабатывать такие данные с камеры смартфона.

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

Посмотрите как легко распознаются любые виды баркодов в нашем приложении:

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

Сегодня «прокачанное» веб-приложение (PWA), которое дает клиентам возможность использовать версию, более близкую к нативной в обход привычных магазинов для пользователей iOS и Android, активно использует Альфа-Банк. Недавно наша команда благодаря внедрению WASM сделала возможным запуск сканера QR-кодов в Альфа-Онлайн, а Альфа-Банк вышел на новый уровень обслуживания клиентов и стал первым российским банком, запустившим сервис с широким функционалом, включающий оплату товаров и услуг по QR через систему быстрых платежей (СБП) в интернет-банке.

Для совершения оплаты клиенту банка достаточно открыть веб-страницу Альфа-Онлайн, нажать на значок QR-кода в правом верхнем углу и отсканировать имеющийся баркод с помощью камеры на устройстве. После этого остается только проверить появившиеся на экране данные и подтвердить платёж. QR-код можно также «сканировать из файла» — с фотографии или же платежки, имеющейся в электронном виде. Все процессы выполняются непосредственно в браузере на веб-странице банка. Это максимально безопасно, так как изображения с устройства клиента вообще никуда не передаются.

При нажатии на значок QR-кода пользователю становится доступна функция распознавания. Сканирование можно проводить на любом современном устройстве во всех основных браузерах: Mozilla Firefox, Google Chrome, Chromium, Microsoft Edge и Apple Safari. Технология также может работать на умных телевизорах и приставках без разработки специальных приложений или установки отдельных плагинов. Мы разработали алгоритмы, устойчивые к перепаду освещения и ракурсу съемки. Они обеспечивают высокое качество чтения даже поврежденных QR-кодов, в том числе, у пользователей бюджетных моделей телефонов.

Чтобы выйти из трудного положения — нужно быть омниканальным. И это касается не только банков, но и других российcких компаний, которые попали или могут потенциально оказаться под ограничениями.

Спасибо, что читаете блог Smart Engines! Подпишитесь, чтобы получать новые заметки!

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


  1. oficsu
    05.09.2022 22:36
    +2

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

    Меня очень радует итоговый отказ от нативных приложений в пользу веб-версий (пусть и вынужденный), но, как пользователя, всё ещё удручает закрытость решения


    1. ermouth
      06.09.2022 05:32
      +1

      Самым поверхностным поиском находится достаточно решений, (например) которые даже умеют стучаться в Barcode Detection API, встроенный в Chromium-based браузеры. Для Сафари и ФФ вместо вызовов Barcode Detection API подставляется JS-код.

      5 лет назад этого API ещё не было нигде, и по опыту решения проблемы распознавания задача распадается на три части:

      1. Чтение с камеры и подготовка картинки (ч/б невысокого разрешения, правильное приведение контраста, sharpen), это очень быстро даже просто на js.

      2. Опознание типа кода (отличить например QR от EAN-13) – можно делать 2D Фурье разложение и по коэффициентам догадываться, можно скармливать картинку нейросети нужным образом надрессированной, есть ещё всякие трюки. Это может быть небыстро, если нужно всякие очень похожие друг на друга коды дифференцировать, но обычно быстро.

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

      Это всё уже 5 лет назад вполне ворочалось в браузерах даже на бюджетных Андроидах, со скоростью 10+ fps причём, если только QR читать.

      То-есть тут всякие красивые слова типа ИИ и WASM ну так. Красиво, конечно, но всё и без них работает. И вполне себе опенсорц )


    1. namikiri
      06.09.2022 12:16

      Меня очень радует итоговый отказ от нативных приложений в пользу веб-версий

      Чем радует-то? Ещё более низкой производительностью, нагревом батарей у пользователей? Да, я понимаю что в данном случае это вынужденная мера, но, если я правильно понял формулировку выше, лучше чтобы всё ушло в веб. Нет, спасибо.


      1. oficsu
        06.09.2022 18:58
        +1

        В вопросах безопасности своего устройства, я скорее доверюсь веб-страничке, чем локально установленному приложению, ибо песочница андроида – совсем не идеал


  1. 20912
    06.09.2022 07:09
    +1

    Если ты в Риме, то веди себя как римлянин :)

    https://github.com/mebjas/html5-qrcode

    Демо https://blog.minhazav.dev/research/html5-qrcode.html


  1. KrillDes
    08.09.2022 02:06

    А ведь интересно наблюдать за тем, как в нашей стране IT теперь работает)