марчелла

Простыми словами · технологии

Как работает QR-код

Разбираем по клеткам настоящий QR-код: в нем записана ссылка на эту страницу — можно навести камеру и проверить. Девять шагов: как камера находит код, где лежат данные и почему он читается, даже если часть закрыта.

Ссылка: 37 символов

Шаг 01 / 09

Что внутри

QR-код — это текст, записанный картинкой. В этом коде — ссылка на эту страницу: https://marcella.solutions/explain/qr, 37 символов.

Технически: черный модуль — единица, белый — ноль. Сетка 29×29 модулей — это «версия 3».

Модуль — одна клетка кода. Версия — размер сетки: от 1 (21×21) до 40 (177×177).

Словарик · нажмите — схема покажет

Проверьте сами: наведите камеру телефона на код — откроется эта же страница. Код настоящий, его можно распечатать.

Коротко

QR-код — это текст, записанный картинкой. Чаще всего внутри ссылка, но может быть что угодно: номер телефона, данные для входа в Wi-Fi, реквизиты для оплаты. Название — от английского Quick Response, «быстрый отклик». Код придумали в 1994 году в японской компании Denso Wave, чтобы считывать маркировку автодеталей на заводах Toyota, и сделали свободным для всех.

Код — это сетка из черных и белых клеток, их называют модулями. Черный модуль — единица, белый — ноль. Часть модулей служебная: три больших квадрата в углах помогают камере найти код и понять, как он повернут, пунктирные полосы задают размер сетки, маленький квадрат исправляет перекос. Остальное — данные и запас на ошибки: дополнительные байты, по которым телефон восстанавливает поцарапанные или закрытые места.

Размер сетки зависит от того, сколько записано: от 21×21 модуля до 177×177. В самый большой код помещается 2953 байта — около страницы текста. В нашем коде 29×29 модулей: ссылка из 37 символов с запасом, которого хватает, чтобы прочитать код с закрытым куском — это показано на шаге 8.

Сам по себе QR-код безопасен: это просто текст. Опасным бывает адрес, на который он ведет, поэтому перед переходом стоит посмотреть, что показал телефон. По QR-коду работает и оплата через СБП — внутри кода лежит ссылка на счет в Системе быстрых платежей.

Вопросы и ответы

Что такое QR-код простыми словами?
Это текст, записанный в виде квадратной картинки из черных и белых клеток. Камера телефона читает клетки как единицы и нули и собирает из них текст — чаще всего ссылку. Название — от Quick Response, «быстрый отклик»: код придумали в 1994 году в Denso Wave для учета автодеталей.
Как телефон читает QR-код?
Сначала находит три больших квадрата в углах и по ним понимает, где код и как он повернут. По пунктирным линиям считает размер сетки, по маленькому квадрату поправляет наклон. Потом читает служебные полоски (уровень коррекции и маску), снимает маску, проходит данные змейкой и исправляет ошибки. Все это занимает доли секунды.
Сколько информации помещается в QR-код?
В самый большой код (177×177 модулей) — до 7089 цифр, или 4296 букв и цифр, или 2953 байта, это около страницы текста. Но чем больше записано, тем мельче клетки и тем труднее код прочитать, поэтому для ссылок лучше короткие адреса.
Почему код читается, если он поцарапан или в середине логотип?
В код заранее добавляют запасные байты — коды Рида — Соломона. По ним телефон восстанавливает испорченные места: на уровне L — до 7 % кода, M — 15 %, Q — 25 %, H — 30 %. Логотип в центре съедает часть этого запаса, поэтому для кодов с логотипом берут уровень Q или H.
Безопасно ли сканировать QR-коды?
Сам код безопасен — это просто текст, сканирование ничего не запускает. Риск в ссылке: мошенники клеят свои коды поверх настоящих — на парковках, в ресторанах, на квитанциях — и ведут на поддельные сайты оплаты. Это называют квишингом. Перед переходом смотрите адрес, который показал телефон, и не вводите данные карты на незнакомых сайтах.
Чем QR-код отличается от штрихкода?
Обычный штрихкод — одна строка полосок, в нем помещается номер товара, около 13 цифр. QR-код двумерный: данные записаны и по горизонтали, и по вертикали, поэтому в него влезает в сотни раз больше, и он читается под любым углом и с частью повреждений.
Что такое динамический QR-код?
Это код, в котором записана короткая ссылка на сервис-посредник, а уже он перенаправляет на нужный адрес. Адрес можно менять, не перепечатывая код, и считать сканирования. Минус — код работает, пока работает сервис и оплачена подписка. Обычный, статический код с прямой ссылкой работает всегда.
Как сделать QR-код для оплаты?
Для оплаты в России обычно используют QR-коды СБП: их выдает банк или платежный сервис, внутри — ссылка на счет на qr.nspk.ru. Код бывает статическим (одна наклейка на кассе, сумму вводит покупатель) и динамическим (на каждый заказ свой код с суммой). На сайте и в Telegram-боте его можно создавать автоматически — это я и делаю, см. ниже.

Оплата по QR-коду на вашем сайте

Подключу оплату через СБП: QR-код на компьютере, переход в приложение банка на телефоне. Или сделаю Telegram-бота, который сам выставляет счет и присылает QR.