Почему QR-код не сканируется с бумаги: разбор причин
Код с экрана читается, а с бумаги нет: пять причин брака печати и порядок их проверки.
Знакомая ситуация: на экране QR-код сканируется мгновенно, а распечатанный не читается или читается через раз. Это не каприз камеры. Печать добавляет свои искажения (потерю резкости, съеденные поля, блики), и каждый из этих факторов бьет по считываемости.
Причин конечное число, и проверяются они по очереди за несколько минут. Ниже все пять в порядке частоты, от почти гарантированных виновников к редким.
Причина 1. Растровый исходник и размытые границы
Сканер читает код по резким границам темных и светлых модулей. Если печатался PNG или скриншот, при масштабировании границы размылись, и для камеры это шум. Диагноз ставится лупой или макрофото: у здорового оттиска края квадратов четкие, у больного серые и зубчатые.
Лечится перегенерацией кода в векторном формате и печатью PDF или SVG без промежуточных пересохранений. Почему вектор снимает проблему в принципе, разобрано в статье QR-код в SVG. Если исходной ссылки нет, отсканируйте код с экрана или уцелевшего оттиска: камера отдаст содержимое, и его можно закодировать заново.
Причина 2. Слишком мелкий размер
Код 1×1 см на плакате, который сканируют с двух метров, не прочитает ни одна камера, тут физика оптики. Держите размер кода не меньше одной десятой дистанции сканирования, а абсолютный минимум для сканирования «с руки» 2×2 см. Учтите и длину ссылки: чем она длиннее, тем плотнее матрица и тем крупнее нужен код при той же дистанции.
Если код на макете мельче, не пытайтесь «улучшить резкость», просто увеличьте его. Таблица размеров под дистанции в статье оптимальный размер QR-кода для печати.
Причина 3. Съеденная свободная зона
Вокруг матрицы обязана оставаться пустая светлая полоса, quiet zone, минимум четыре модуля по периметру. Дизайнеры срезают ее ради компактности, верстальщики придвигают текст и рамки вплотную, а иногда поля съедает сам принтер в режиме «подогнать под страницу». Без этой зоны сканер не может отделить код от окружения.
Проверьте макет и настройки печати: масштаб строго 100%. Нормы полей в материале поля и отступы QR-кода.
Неочевидный частный случай: код впритык к краю наклейки после резки. На макете зона была, а нож ее срезал. Закладывайте запас между рамкой реза и кодом уже на этапе макета.
Причина 4. Контраст и цвет
Надежно работает одно сочетание: темный код на светлом фоне. Серый на белом, желтый на белом, темно-синий на черном, все это снижает контраст ниже порога уверенного распознавания. Инверсия (светлый код на темном) формально допустима, но часть камер ее не понимает.
Если код цветной по брендбуку, проверьте пару «код-фон» на контраст заранее: генератор с проверкой контраста не даст выбрать нечитаемое сочетание. И помните, что струйный принтер с заканчивающимися чернилами печатает «черный» бледно-серым, это тоже про контраст.
Причина 5. Поверхность и свет
Глянцевая бумага, ламинация и пленка бликуют: под лампой на коде появляется белое пятно, в котором камера теряет часть матрицы. Решения: матовая поверхность, матовая ламинация или перевес кода в место без прямого света. Фактурная бумага с выраженным зерном тоже вредит, мелкие модули «рвутся» на волокнах.
Быстрый способ отличить блик от брака: если код читается под одним углом и не читается под другим, виноват почти всегда свет, а не сам код.
Про запас прочности: в стандарт QR встроена коррекция ошибок, и код с уровнем коррекции повыше переживает царапины, грязь и частичное выцветание. Но это страховка от повреждений в эксплуатации, а не от брака печати. Размытые границы или съеденные поля коррекция не компенсирует. Для кодов в жестких условиях (улица, склад, кухня) закладывайте и коррекцию, и запас по размеру одновременно.
- Размытые границы: перегенерировать в векторе.
- Мелкий код: увеличить до 1/10 дистанции.
- Нет свободной зоны: вернуть поля, масштаб 100%.
- Слабый контраст: темный код на светлом фоне.
- Блики: матовая поверхность или другое место.
FAQ
Как понять, какая именно причина у меня? Идите по списку сверху вниз и меняйте по одному фактору за итерацию: сначала исходник, потом размер, потом поля. Если менять все сразу, не узнаете, что помогло.
Код читался месяц, а потом перестал. Почему? Смотрите на физику: выцветание на солнце, царапины, грязь. Код с запасом контраста и коррекцией ошибок переживает частичные повреждения, но не бесконечно. Переклейте оттиск.
Может ли быть виновата сама ссылка? Если камера видит код, но страница не открывается, код исправен, умерла ссылка. Это отдельная проблема, решается проверкой адресов до печати. Чек-лист есть в базе знаний.
Следующий шаг
Возьмите проблемный оттиск и пройдите пять причин по порядку. В девяти случаях из десяти виноваты первые три, и лечатся они перегенерацией в векторе с правильным размером.
Перегенерируйте код правильно в генераторе QR-кодов: вектор, настройка размера и полей, проверка контраста цветов, бесплатно.