Исправление ошибок, тихие зоны, контрастность и размер печати: четыре фактора, которые определяют, будет ли QR-код работать на бумаге или незаметно выйдет из строя.
Сканер не «читает» QR-код так, как человек читает текст. Он преобразует изображение с камеры в черно-белые пиксели, находит три больших квадрата по углам, обрабатывает сетку, а затем считывает каждую ячейку. Все, что помогает или вредит QR-коду, сводится к этому процессу: углы должны быть находимыми, сетка должна быть регулярной, а каждая ячейка должна быть однозначно светлой или темной.
Вот почему код может выглядеть идеально на экране и полностью провалиться после печати в меню, и почему «сделать его меньше, чтобы он поместился» — самый распространенный способ его взломать.
QR-коды содержат избыточные данные, поэтому они все равно декодируются, даже если часть изображения повреждена. Существует четыре уровня: L восстанавливает около 7% символа, M около 15%, Q около 25% и H около 30%.
Компромисс — размер. Более высокая избыточность означает больше модулей для одного и того же содержимого, а большее количество модулей означает, что каждый из них физически меньше при заданном размере печати, что может усложнить сканирование, а не облегчить его. Повышение уровня не становится автоматически безопаснее.
Пустое поле вокруг QR-кода не является украшением. Спецификация требует как минимум четырех модулей свободного пространства с каждой стороны, и сканеры действительно полагаются на него при обнаружении краев символа.
Это наиболее часто игнорируемое требование при разработке QR-кодов. Код, упирающийся в рамку, фотография или блок текста теряют зону молчания и могут вообще перестать работать — и сбой выглядит случайным, поскольку зависит от того, что уловит камера.
По умолчанию этот инструмент использует четыре модуля и предупреждает вас, если вы его уменьшите. Если в макете нет места для полей, уменьшите размер кода, а не обрезайте поля.
Сканеры бинаризируют изображение, поэтому важна разница в светлоте кода и его фона, а не то, кажутся ли вам цвета приятными. Два цвета могут быть явно различимы для глаза и почти идентичны после преобразования в оттенки серого.
Черное на белом дает коэффициент контрастности 21:1. Стремитесь как минимум к 7:1; Коды 4:1, приведенные ниже, начинают давать сбой на бумаге и при плохом освещении, и этот инструмент предупредит вас. Рисунок живого контраста рядом с изображением предварительного просмотра обновляется по мере изменения цвета.
Пусть код будет темнее фона. Многие сканеры ищут только «темное на светлом», а инвертированный код — светлые модули на темном поле — это подбрасывание монеты между устройствами. Если вам нужен код на темном дизайне, поместите его внутри светлой панели.
Избегайте градиентов в коде и будьте осторожны с прозрачным фоном: все, что находится за ним, должно удовлетворять тем же требованиям контрастности.
Широко используемое эмпирическое правило заключается в том, что ширина кода должна составлять примерно десятую часть расстояния, с которого он будет сканироваться. Код, читаемый на расстоянии вытянутой руки — скажем, 30 см — должен иметь ширину около 3 см. Плакат, отсканированный с трех метров, требует около 30 см.
Другая половина проблемы — размер модуля. Ниже примерно 0.4 мм на модуль обычные телефонные камеры начинают работать плохо, а дешевые термопринтеры смазывают соседние модули вместе. Более короткий контент означает меньшее количество модулей, а это означает, что каждый модуль больше при одинаковом общем размере — поэтому сохранение короткой полезной нагрузки помогает больше, чем любое другое отдельное изменение.
Экспортируйте SVG для всего, что будет напечатано. Это вектор, поэтому он масштабируется до любого размера с идеально четкими краями, и это то, что нужно дизайнеру или печатнику.
Экспортировать PNG для экранов, документов и любого другого растрового изображения проще. Выберите большой размер пикселя: этот инструмент округляет размер модуля до целого числа пикселей, чтобы каждый модуль был идентичен, что позволяет избежать неравномерности модулей, которые появляются при дробном масштабировании кода.
Никогда не масштабируйте QR-код PNG после экспорта. Вместо этого повторно экспортируйте его в большем размере — интерполяция размывает края модуля, а это именно то, что сканеру нужно, чтобы он был четким.
Распечатайте его в реальном размере, на реальном материале и отсканируйте его с помощью нескольких телефонов — в идеале, старого Android, а также нового iPhone, при свете, при котором код действительно будет жить. Код, который работает на вашем столе под лампой, может потерпеть неудачу на столе у окна.
Если вы размещаете логотип в центре, делайте его небольшим, держите его подальше от трех угловых квадратов и проверяйте результат, а не предполагайте, что исправление ошибок закроет его.