Почему QR-код читается с оторванным углом, а ваш в меню - нет
QR-код придумали в 1994 году в подразделении японской Denso - поставщика автокомпонентов. Сейчас это отдельная компания Denso Wave. Штрих-коды к тому времени стояли повсюду, но вмещали около 20 символов, а производству нужно было больше данных и быстрое считывание. Нужен был код, который сканер найдёт сам, в любом повороте, и прочитает, даже если тот запачкан.
Получилось настолько хорошо, что теперь этим кодом платят за кофе и открывают меню. И ровно поэтому все видели обратную картину: код напечатан, а телефон его не берёт. Разберём, за счёт чего он обычно читается - и что ломает его в частных случаях.
Три квадрата вместо четырёх
Первое, что видно в QR, - большие квадраты в трёх углах. Это не украшение и не рамка: по ним сканер находит код на снимке и понимает, как тот повёрнут. Поэтому код можно снимать вверх ногами или под углом - три квадрата задают систему координат, остальное выправляет математика.
У квадратов подобран рисунок: полосы чёрного и белого идут в соотношении 1:1:3:1:1. По истории, которую рассказывает сама Denso Wave, его выбрали после перебора печатных материалов - такое сочетание реже всего встречается в документах и на бланках. Поэтому сканер не путает эти метки с текстом или картинкой вокруг кода.
Четвёртый угол пустой не случайно: именно асимметрия даёт однозначную ориентацию. И если пострадал именно он, опоры, по которым сканер находит код, остаются на месте.
Почему работает с дыркой
Вторая часть ответа - избыточность. Данные в QR записаны с кодами Рида-Соломона: часть символов нужна не для информации, а для её восстановления. Стандарт ISO/IEC 18004 задаёт четыре уровня коррекции: код восстанавливается, если испорчено примерно до 7%, 15%, 25% или 30% его кодовых слов.
На картинке в начале статьи оба кода сделаны для этого текста и записаны с максимальным уровнем. У второго срезана примерно десятая часть площади - и он читается. Проверьте телефоном прямо с экрана.
Отсюда растёт привычка ставить логотип в центр кода. Отсюда же главная ошибка дизайнера - логотип, который закрывает больше, чем выдерживает выбранный уровень коррекции. Код при этом выглядит нормально, но читается через раз: одному телефону хватит кадра, другому нет.
Длина ссылки решает больше, чем кажется
QR-код - это сетка модулей, чёрных и белых квадратиков. В первой версии их 21 на 21, в сороковой - 177 на 177. Чем больше данных вы кладёте внутрь, тем гуще сетка и тем мельче каждый модуль при том же размере наклейки.
Практический вывод: ссылка с несколькими параметрами и длинным хвостом превращает код в мелкую рябь. На экране макета она выглядит отлично, на наклейке в 3 сантиметра - уже нет, а с полуметра её возьмёт не каждый телефон. Короткий адрес - это не эстетика, это читаемость.
Четыре причины, по которым код не сканируется
- Слишком длинная ссылка при маленьком размере. Сначала сокращаем адрес, потом печатаем. Если адрес сократить нельзя, увеличиваем физический размер кода.
- Нет тихой зоны. По стандарту вокруг кода должно оставаться пустое поле шириной в четыре модуля. Код, прижатый к тексту, к краю листа или к рамке, сканер может просто не выделить.
- Инверсия. Светлый код на тёмном фоне - частое решение в дизайне и частая проблема на практике: часть сканеров ожидает тёмные модули на светлом фоне. Проверять нужно на нескольких телефонах, а не на одном.
- Глянец и изгиб. Код на глянцевой ламинации ловит блик, код на бутылке или стакане искривлён. Оба случая лечатся размером и матовой поверхностью, а не уровнем коррекции.
Как проверить за минуту
Напечатайте код в том размере, в котором он пойдёт в работу, и отсканируйте с того расстояния, с которого его будут снимать люди: меню - с вытянутой руки, вывеску - с тротуара. Проверьте на двух-трёх разных телефонах, в том числе в полутьме. Если код читается не сразу, а после подстройки, он не готов: в жизни человек не станет искать ракурс, он просто закроет камеру.
Источники: стандарт ISO/IEC 18004 (в России действует ГОСТ Р ИСО/МЭК 18004-2015), история кода - на сайте Denso Wave, qrcode.com.