Коррекция ошибок QR-кода — это встроенная избыточность, благодаря которой код сканируется, даже если часть его загрязнена, повреждена или закрыта. Уровней четыре: L восстанавливает около 7% данных, M — около 15%, Q — около 25% и H — около 30%. Чем выше уровень, тем надёжнее код, но тем он плотнее.
Как работает коррекция ошибок QR-кода
QR-код не просто хранит ваш текст один раз в надежде, что всё обойдётся. При создании кода данные разбиваются на блоки байтов — кодовые слова, — и к ним вычисляются и добавляются дополнительные кодовые слова для коррекции ошибок. Для этого используется математический метод — коды Рида — Соломона, то же семейство методов, которое десятилетиями применяется в CD, DVD и при передаче данных.
Когда телефон сканирует код, он считывает все кодовые слова. Если часть из них не читается или искажена из-за царапины, пятна или логотипа сверху, сканер по дополнительным кодовым словам вычисляет, какими должны быть недостающие части. Пока повреждение не превышает возможностей уровня, сканирование проходит успешно, и вы даже не замечаете, что что-то было не так.
Уровень коррекции ошибок записан в небольшой области кода — информации о формате, — и хранится там дважды, чтобы сканер мог надёжно его прочитать.
Четыре уровня: L, M, Q и H
Каждый уровень — это компромисс между объёмом хранения и надёжностью. Проценты ниже — приблизительная доля данных кода, которую можно восстановить.
- Уровень L (Low, низкий), около 7%. Максимум данных в минимальном коде. Подходит для чистых условий, помещений и показа на экране, где повреждения маловероятны.
- Уровень M (Medium, средний), около 15%. Сбалансированный и распространённый вариант по умолчанию. Годится для большинства печатных материалов — флаеров, меню, визиток.
- Уровень Q (Quartile, четверть), около 25%. Дополнительная защита для кодов, которые могут испачкаться или истереться: на упаковке, этикетках, в мастерских.
- Уровень H (High, высокий), около 30%. Максимальная надёжность. Его часто выбирают для уличных вывесок, сложных условий или кодов с логотипом в центре.
Эти цифры описывают восстанавливаемые данные, а не «можно закрыть 30% картинки». Повреждение в неудачном месте, особенно поверх трёх больших угловых квадратов, может сделать код нечитаемым, даже если затронута небольшая площадь.
Компромисс: надёжность против плотности
Коррекция ошибок не бесплатна. Дополнительные кодовые слова занимают место внутри кода. При том же содержимом более высокий уровень означает:
- Больше модулей — маленьких чёрных и белых квадратиков
- Более крупную «версию» QR-кода: от 21 × 21 модуля у версии 1 до 177 × 177 у версии 40
- Более мелкие квадратики при печати в том же физическом размере
Мелкие квадратики камере труднее различить, особенно издалека, при слабом освещении или на старых телефонах. Поэтому уровень H для длинного веб-адреса на крошечной этикетке может сделать код не надёжнее, а наоборот.
Решение обычно в том, чтобы сократить данные. Короткая ссылка — например, ссылки qr-th.com/r/ в динамических кодах QR-TH — сохраняет содержимое компактным. Это оставляет место для более высокого уровня коррекции ошибок без чрезмерной плотности. Как работают короткие ссылки, объясняет наше руководство о статических и динамических QR-кодах.
Какой уровень выбрать?
Воспользуйтесь простой подсказкой:
- Показ на экране или чистая печать в помещении? Достаточно уровня L или M.
- Обычные печатные рекламные материалы — меню, флаеры, плакаты? Надёжный вариант по умолчанию — M.
- Код может поцарапаться, намокнуть, испачкаться или оказаться частично закрытым? Выбирайте Q.
- Логотип в центре, уличная вывеска или тяжёлые условия? Выбирайте H и сокращайте данные.
- Что бы вы ни выбрали, проверьте напечатанный код на нескольких телефонах на реальном расстоянии и при реальном освещении.
Многие генераторы QR-кодов выбирают разумный уровень автоматически и часто повышают его, когда вы добавляете логотип. Если ваш инструмент позволяет выбирать, думайте о том, где будет размещён код, а не ставьте всегда максимум.
Коррекция ошибок и логотипы
Логотип в центре QR-кода работает именно благодаря коррекции ошибок: он скрывает часть модулей, а сканер восстанавливает их по избыточным данным. Чтобы это было надёжно:
- Используйте уровень H или хотя бы Q, если добавляете логотип.
- Делайте логотип умеренно маленьким и размещайте по центру. Оставляйте большой запас до максимального уровня восстановления: реальные повреждения, блики и размытость тоже расходуют этот «бюджет» ошибок.
- Никогда не закрывайте три больших поисковых квадрата в углах и свободное поле вокруг кода.
- Сохраняйте сильный контраст между кодом и фоном.
Больше советов по оформлению — в нашей статье о дизайне QR-кода.
Что коррекция ошибок не исправит
Коррекция ошибок — мощный механизм, но у неё есть пределы. Она не спасёт код, у которого:
- Слабый контраст — светло-серый на белом или тёмное на тёмном
- Нет свободного поля, потому что код напечатан вплотную к другой графике
- Повреждены поисковые узоры в углах
- Квадратики слишком мелкие для расстояния сканирования
- Сильные искажения — например, на сильно изогнутой поверхности
- Блики от глянцевой ламинации, засвечивающие большие участки
Коррекция ошибок также не делает код безопаснее. QR-код с уровнем H всё равно может вести на опасный сайт, а мошенническая наклейка поверх настоящего кода отлично сканируется. Если сомневаетесь в коде, сначала отсканируйте QR-код онлайн с помощью QR-TH, чтобы увидеть адрес назначения до того, как что-то откроется.
FAQ
Какой уровень коррекции ошибок QR-кода лучший?
Единственного лучшего уровня нет. M — хороший вариант по умолчанию для большинства печатных задач, а H подходит для логотипов, улицы и тяжёлых условий. Выбирайте исходя из того, где будет использоваться код.
Делает ли более высокий уровень коррекции ошибок QR-код больше?
При тех же данных — да. Добавляется больше модулей, поэтому либо напечатанный код становится крупнее, либо отдельные квадратики — мельче.
Можно ли поставить логотип на любой QR-код?
Только если коррекции ошибок хватает, чтобы покрыть закрытую область, поэтому используйте Q или H. Делайте логотип небольшим, не закрывайте угловые квадраты и всегда проверяйте код перед печатью.
Можно ли изменить уровень коррекции ошибок после печати?
Нет. Уровень — часть напечатанного узора. Чтобы его изменить, нужно создать и напечатать новый код.
Нужен код, который остаётся читаемым в реальных условиях? Создайте его в бесплатном генераторе QR-кодов QR-TH, держите содержимое коротким и проверьте код на паре телефонов перед печатью.