Коррекция ошибок QR-кодов: почему повреждённые коды всё ещё работают
Как QR-коды переживают царапины, логотипы и грязь. Подробный разбор уровней коррекции L, M, Q и H.
Ты видел QR-коды с логотипом компании, прилепленным прямо посередине. Часть кода буквально закрыта. И всё же, когда сканируешь — работает идеально.
Это не везение. Это коррекция ошибок делает своё дело.
Как QR-коды обрабатывают повреждения
QR-коды используют коррекцию ошибок Рида-Соломона — ту же математику, что применяется в CD, DVD и космической связи. Идея: хранить дополнительные избыточные данные, чтобы исходное сообщение можно было восстановить, даже если части отсутствуют или повреждены.
При генерации QR-кода данные кодируются вместе с кодовыми словами коррекции ошибок. Эти слова содержат достаточно информации для восстановления исходных данных, даже когда часть кода нечитаема.
Четыре уровня коррекции ошибок
Каждый QR-код использует один из четырёх уровней коррекции:
| Уровень | Способность восстановления | Лучше всего для | |---------|--------------------------|----------------| | L (Низкий) | ~7% повреждений | Цифровые экраны, чистые условия | | M (Средний) | ~15% повреждений | Общее использование, выбор по умолчанию | | Q (Четвертичный) | ~25% повреждений | Печатные материалы, умеренный износ | | H (Высокий) | ~30% повреждений | Суровые условия, наложение логотипа |
«Повреждения» здесь означают процент кодовых слов, которые могут быть нечитаемыми, пока код всё ещё успешно сканируется.
Компромисс: коррекция vs размер
Больше коррекции ошибок — больше избыточных данных. Больше данных — более сложный (крупный) QR-код. На практике это выглядит так:
Для того же содержимого QR-код с уровнем H будет заметно содержать больше модулей (маленьких квадратов), чем с уровнем L. Код становится плотнее и сложнее сканируется на расстоянии.
Уровень L: Самый маленький и простой QR-код. Легче всего сканировать издалека. Минимальная защита.
Уровень M: Хороший баланс. Значение по умолчанию в большинстве генераторов. Справляется с обычным износом.
Уровень Q: Значительно плотнее. Хорош для печатных материалов, которые могут складываться, пачкаться или частично закрываться.
Уровень H: Максимальная плотность. Выдерживает серьёзные повреждения. Обязателен для размещения логотипа в центре.
Почему логотипы в QR-кодах работают
Когда размещаешь логотип в центре QR-кода, ты фактически «повреждаешь» код — делаешь эти модули нечитаемыми. Алгоритм коррекции ошибок обрабатывает логотип как повреждённые данные и восстанавливает недостающую информацию из оставшихся модулей.
Это надёжно работает только на уровне H (иногда Q). На уровне L закрытие даже 8% кода может сделать его нечитаемым.
Рекомендации по размещению логотипа:
- Использовать уровень коррекции H
- Ограничить логотип примерно 15-20% площади QR-кода
- Разместить логотип по центру (QR-коды имеют важные позиционные паттерны в углах)
- Использовать простой, контрастный логотип
- Всегда тестировать итоговый код несколькими сканерами
Какой уровень выбрать?
Цифровые дисплеи (сайты, приложения, экраны): Уровень L или M. Код не получит физических повреждений, а меньшие коды легче сканировать.
Визитки и листовки: Уровень M. Стандартная защита от лёгкого износа.
Упаковка продукции: Уровень Q. Продукцию берут в руки, царапают, подвергают воздействию среды.
Уличные вывески и суровые условия: Уровень H. Максимальная устойчивость к погоде, грязи и физическим повреждениям.
QR-коды с логотипами: Уровень H. Без вопросов. Нужна дополнительная избыточность для компенсации закрытой области.
Тихая зона тоже важна
Коррекция ошибок обрабатывает повреждения самого кода, но QR-кодам также нужна «тихая зона» — пустой отступ вокруг кода. Без неё сканеры не могут определить, где код начинается и заканчивается.
Стандарт требует тихую зону шириной 4 модуля. Пропуск этого — самая частая причина, по которой QR-коды не работают, и никакая коррекция ошибок этого не исправит.
Коррекция ошибок — это то, что делает QR-коды практичными в реальном мире. Выбирай правильный уровень для своего случая — уровень M для большинства ситуаций, уровень H когда нужны логотипы или максимальная долговечность — и всегда тестируй настоящими сканерами перед печатью.