Почему QR-код читается с оторванным углом, а ваш в меню - нет

QR-код придумали в 1994 году в подразделении японской Denso - поставщика автокомпонентов. Сейчас это отдельная компания Denso Wave. Штрих-коды к тому времени стояли повсюду, но вмещали около 20 символов, а производству нужно было больше данных и быстрое считывание. Нужен был код, который сканер найдёт сам, в любом повороте, и прочитает, даже если тот запачкан.

Почему QR-код читается с оторванным углом, а ваш в меню - нет

Получилось настолько хорошо, что теперь этим кодом платят за кофе и открывают меню. И ровно поэтому все видели обратную картину: код напечатан, а телефон его не берёт. Разберём, за счёт чего он обычно читается - и что ломает его в частных случаях.

Три квадрата вместо четырёх

Первое, что видно в QR, - большие квадраты в трёх углах. Это не украшение и не рамка: по ним сканер находит код на снимке и понимает, как тот повёрнут. Поэтому код можно снимать вверх ногами или под углом - три квадрата задают систему координат, остальное выправляет математика.

У квадратов подобран рисунок: полосы чёрного и белого идут в соотношении 1:1:3:1:1. По истории, которую рассказывает сама Denso Wave, его выбрали после перебора печатных материалов - такое сочетание реже всего встречается в документах и на бланках. Поэтому сканер не путает эти метки с текстом или картинкой вокруг кода.

Четвёртый угол пустой не случайно: именно асимметрия даёт однозначную ориентацию. И если пострадал именно он, опоры, по которым сканер находит код, остаются на месте.

Почему работает с дыркой

Вторая часть ответа - избыточность. Данные в QR записаны с кодами Рида-Соломона: часть символов нужна не для информации, а для её восстановления. Стандарт ISO/IEC 18004 задаёт четыре уровня коррекции: код восстанавливается, если испорчено примерно до 7%, 15%, 25% или 30% его кодовых слов.

На картинке в начале статьи оба кода сделаны для этого текста и записаны с максимальным уровнем. У второго срезана примерно десятая часть площади - и он читается. Проверьте телефоном прямо с экрана.

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

Длина ссылки решает больше, чем кажется

QR-код - это сетка модулей, чёрных и белых квадратиков. В первой версии их 21 на 21, в сороковой - 177 на 177. Чем больше данных вы кладёте внутрь, тем гуще сетка и тем мельче каждый модуль при том же размере наклейки.

Практический вывод: ссылка с несколькими параметрами и длинным хвостом превращает код в мелкую рябь. На экране макета она выглядит отлично, на наклейке в 3 сантиметра - уже нет, а с полуметра её возьмёт не каждый телефон. Короткий адрес - это не эстетика, это читаемость.

Четыре причины, по которым код не сканируется

  1. Слишком длинная ссылка при маленьком размере. Сначала сокращаем адрес, потом печатаем. Если адрес сократить нельзя, увеличиваем физический размер кода.
  2. Нет тихой зоны. По стандарту вокруг кода должно оставаться пустое поле шириной в четыре модуля. Код, прижатый к тексту, к краю листа или к рамке, сканер может просто не выделить.
  3. Инверсия. Светлый код на тёмном фоне - частое решение в дизайне и частая проблема на практике: часть сканеров ожидает тёмные модули на светлом фоне. Проверять нужно на нескольких телефонах, а не на одном.
  4. Глянец и изгиб. Код на глянцевой ламинации ловит блик, код на бутылке или стакане искривлён. Оба случая лечатся размером и матовой поверхностью, а не уровнем коррекции.

Как проверить за минуту

Напечатайте код в том размере, в котором он пойдёт в работу, и отсканируйте с того расстояния, с которого его будут снимать люди: меню - с вытянутой руки, вывеску - с тротуара. Проверьте на двух-трёх разных телефонах, в том числе в полутьме. Если код читается не сразу, а после подстройки, он не готов: в жизни человек не станет искать ракурс, он просто закроет камеру.

Источники: стандарт ISO/IEC 18004 (в России действует ГОСТ Р ИСО/МЭК 18004-2015), история кода - на сайте Denso Wave, qrcode.com.

11