Почему это так?
Главная › Как устроены вещи

Почему поцарапанный QR-код читается — и где заканчивается запас прочности

Как устроены вещи · 22.10.2026 · 3 мин чтения
Почему поцарапанный QR-код читается — и где заканчивается запас прочности
Коротко
  • Камера сначала находит ориентиры и сетку, и только потом декодер исправляет данные
  • Коррекция ограничена числом кодовых символов, восстановимых в блоках данных
  • Видимая площадь повреждения не показывает напрямую, сколько данных удастся вернуть
  • Повреждение углового узора может помешать камере даже при маленькой царапине
  • Запас прочности конечен и зависит от уровня коррекции, выбранного при создании

Пятно пересекает чёрно-белые квадраты QR-кода, а камера всё равно открывает ссылку — почему повреждение не мешает ей прочитать сообщение?

Вы поймёте, какие повреждения мешают сканированию и на что смотреть, если код не читается.

Кажется, всё зависит от размера пятна. Но тогда почему крупное пятно не всегда губит код, а маленькая царапина не всегда безобидна?

Механизм

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

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

Сначала нужно увидеть саму сетку.

Когда сетка считана, помогает код Рида — Соломона. При создании QR-кода к исходным данным добавляют вычисленные проверочные символы. При считывании декодер пересчитывает проверки, определяет позиции ошибочных символов и математически восстанавливает исходные значения.

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

Почему важна не площадь пятна

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

Размер пятна ещё не даёт ответа.

Крупное пятно может закрыть участок данных, который удастся восстановить. А маленькая царапина — повредить важный угловой узор, и тогда камера вообще не найдёт код. В одном случае декодер получает сетку с ошибками и может их исправить. В другом он не добирается до этого этапа. Важно, куда пришлось повреждение и какие символы оно затронуло.

Картинка должна оставаться достаточно чёткой. Модули — чёрные и белые квадраты кода — должны различаться камерой. Если они сливаются, смазаны или бликуют, сетку можно прочитать неверно. Свободное поле вокруг QR-кода называют «тихой зоной»: оно помогает отличить границы кода от соседней печати или рисунка. Загрязнение этого поля тоже может помешать распознаванию, хотя сами квадраты остаются целыми.

Где заканчивается запас прочности

Устойчивость QR-кода задают при создании: для него выбирают уровень коррекции. Чем выше избыточность, то есть чем больше добавлено проверочных символов, тем больше пропущенных или неверно прочитанных данных можно восстановить. Но тем меньше места остаётся для самого сообщения. Запас прочности требует места внутри кода.

Этот запас тоже конечен.

Он заканчивается, когда повреждение затрагивает слишком много кодовых символов для выбранного уровня коррекции. А иногда чтение прекращается раньше: если повреждены служебные узоры, сетка неразличима или камере мешает окружение. Поэтому по одному виду пятна нельзя уверенно сказать, откроется ли ссылка. Нужно учитывать и место повреждения, и возможность распознать код.

Камера открывает ссылку сквозь пятно, потому что ещё распознаёт сетку, а проверочные символы позволяют восстановить повреждённые данные. Это работает лишь до тех пор, пока ошибки укладываются в заложенный запас коррекции.

Какой элемент QR-кода, по-вашему, легче всего принять за обычную часть рисунка?

Читайте также

Хотите продолжение? Поставьте лайк и напишите в комментариях, какую тему разобрать следующей. Читаем все сообщения, самые интересные предложения попадут в новые статьи.

Подпишитесь на «Почему это так?» — разбираем привычные явления простым языком, без выдуманных сенсаций.

#какэторабатает #устройствовещей #почемуэтотак #наукапростымисловами #интересныефакты

Полный разбор — на Дзене

Продолжение, новые материалы и обсуждение в комментариях — на нашем канале «Почему это так?».

Читать на Дзене → Подписаться