Ученые российской компании Smart Engines нашли способ считывания обрезанных платежных QR-кодов. С его помощью можно успешно декодировать QR, даже если у кода по краям отсутствуют до 30% площади в зависимости от плотности размещения информации. Ноу-хау уже интегрировано в программный продукт Smart Code Engine, который используют 9 из 13 системно значимых банков РФ по версии ЦБ.
Разработка позволяет решить крайне важную проблему – считывать обрезанные QR-коды, которые размещаются на платежках, счетах, квитанциях. На таких документах есть четко ограниченная область для нанесения баркода. Даже небольшой сдвиг при печати кода приводит к его обрезке. Такие коды содержат ключевую информацию, такую как имя получателя, номер счета, ИНН, БИК и т.д. Таким образом, корректное декодирование QR-кода и в этом случае позволяет отказаться от ручного ввода при совершении платежа.
Метод, разработанный учеными Smart Engines, принципиально отличается от классического подхода. Типовая система для успешного определения и дальнейшего считывания QR требует, чтобы в поле видимости находились 4 объекта: три шаблона поиска и один шаблон наведения. Шаблоны поиска — это сравнительно большие квадраты в трех углах кода, шаблон наведения – маленький квадрат, расположенный в правом нижнем углу кода. Однако на некоторых изображениях часть кода, содержащая шаблоны поиска, может отсутствовать в виду заслона (например, пальцем) или ошибки печати. В таком случае типовая система не сможет корректно распознать код.
Ученые Smart Engines предлагают совершенно иную схему чтения QR-кода на изображениях, полученных с камеры, — она ориентируется не только на шаблоны поиска, но и структуру самого кода. Команда создала алгоритм на основе искусственного интеллекта, который восстанавливает утраченную информацию. Например, если отсутствует один или два из шаблонов поиска, то на основе внутренней структуры кода предсказываются их координаты даже в случае проективного искажения кода.
Ноу-хау уже используется в программном продукте компании для считывания QR — Smart Code Engine. Он справляется с задачей считывания кода за 0,035 секунды, даже если код поврежден или обрезан. Решение работает на бюджетных смартфонах, планшетах, десктопах и других слабопроизводительных системах.