Генератор QR-кода
QR-код — квадратная решётка с тремя крупными квадратами по углам: по ним камера находит символ и понимает, как он повёрнут. Но всё решает не картинка, а строка, которую в неё положили. Два одинаковых на вид квадрата ведут себя совершенно по-разному: один откроет сайт, другой наберёт номер, третий подключит телефон к Wi-Fi, четвёртый подставит реквизиты в банковское приложение — разница только в том, с чего строка начинается. Поэтому главный вопрос здесь не «как сделать QR-код», а «что написать в поле».
Оформление
264 × 264 px в PNG
Спецификация
- Набор символов
- любые данные
- Длина
- от 1 до 2953 символов
- Контрольная цифра
- в этой символике не используется
Сгенерировать QR Code списком
Кодов нужно много, а не один? Сгенерировать QR Code списком
Где применяется
- Платёжные квитанции: QR-код по ГОСТ Р 56042 несёт реквизиты получателя прямо в себе, и плательщику не приходится вбивать двадцатизначный счёт вручную
- Меню, прайсы и каталоги: код на столе или на ценнике ведёт на страницу, которую правят без перепечатки всего тиража
- Пропуска, электронные билеты и талоны, которые сканирует турникет на входе или сотрудник ручным считывателем
Чем отличается
Ближайший родственник — Data Matrix, и в России граница между ними проведена на редкость чётко. Всё, что сканирует человек телефоном, делают на QR: платежи, меню, билеты, ссылки на упаковке. Всё, что сканирует оборудование на мелкой упаковке, делают на Data Matrix — обязательная маркировка построена именно на нём. Причина не в объёме данных, а в геометрии. QR тратит на служебную часть три угловых квадрата с белыми разделителями и требует четыре модуля зоны молчания по периметру; Data Matrix обходится рамкой-уголком и одним модулем. На пачке лекарства это разница между «влезло» и «не влезло». Зато угловые квадраты, за которые QR платит площадью, камера телефона ловит мгновенно и под любым наклоном — за это его и выбрали для всего, что показывают людям.
Типичные ошибки
- Кириллица без проверки на реальном считывателе. Русский текст уходит в код как UTF-8, по два байта на букву, поэтому символ выходит заметно крупнее, чем от той же фразы латиницей. Часть старого оборудования трактует эти байты как однобайтовую кодировку и выдаёт кракозябры. Если кириллица обязательна, проверяйте код на том сканере, где он будет работать, а не на своём телефоне.
- Код на глянце, под ламинатом или за стеклом витрины. Камера ловит отражение лампы ровно в центре символа, и распознавание не срабатывает. Матовая ламинация или разворот носителя от источника света помогают надёжнее, чем увеличение размера кода.
- Код на плакате, рассчитанном на взгляд с нескольких метров. Практическое правило: код читается примерно с десяти собственных ширин. Значит, для съёмки с трёх метров нужен квадрат около тридцати сантиметров, а не пять, как обычно ставят в макете.
- Код, положенный прямо поверх фотографии или градиента. Вокруг символа нужно четыре модуля зоны молчания, и «зона» значит именно пустое однородное поле, а не прозрачный фон, сквозь который просвечивает картинка. Камера принимает пятна подложки за модули и не находит границу сетки. Спасает белая плашка с запасом в те же четыре модуля, а не увеличение самого кода.
- Динамический код через сторонний сервис на печатной продукции с долгим сроком жизни. Такая ссылка ведёт не на ваш адрес, а на редирект посредника: закончилась подписка или сервис закрылся — и весь напечатанный тираж перестал работать разом.
Вопросы и ответы
- Что писать в поле, чтобы код открывал сайт, а не показывал текст?
- Адрес нужно писать вместе со схемой: https://example.com. Если написать просто example.com, большинство камер покажет это как обычную строку и предложит скопировать. По той же логике работают остальные типы: tel:+70000000000 предлагает позвонить, mailto: открывает письмо, а блок WIFI:T:WPA;S:имя-сети;P:пароль;; подключает телефон к сети без диктовки пароля вслух.
- Можно ли сгенерировать здесь код для оплаты?
- Платёжный QR по ГОСТ Р 56042 — можно, это обычная текстовая строка без всякой криптографии. Формат целиком: ST0001, следом одна цифра кодировки (1 — Windows-1251, 2 — UTF-8, 3 — KOI8-R), дальше поля вида Имя=Значение через вертикальную черту. Пять реквизитов обязательны: Name, PersonalAcc, BankName, BIC, CorrespAcc — получатель, его расчётный счёт, банк, БИК и корреспондентский счёт. Целиком это выглядит так: ST00012|Name=получатель|PersonalAcc=расчётный счёт|BankName=банк|BIC=БИК|CorrespAcc=корсчёт. Остальное — сумму, назначение платежа, ИНН — дописывают следом теми же парами через черту. Цифра кодировки должна совпадать с тем, в чём строка реально закодирована: браузер работает с UTF-8, поэтому здесь ставится 2. А вот код Системы быстрых платежей так не собрать: внутри него ссылка, которую выпускает банк под конкретного получателя.
- Почему код с русским текстом получается крупнее и хуже читается?
- Латинская буква занимает один байт, кириллическая в UTF-8 — два. Ёмкость QR-кода считается в байтах, поэтому та же фраза по-русски требует примерно вдвое больше места, символ переходит на следующую версию, а каждая версия добавляет по четыре модуля на сторону. Печатаете вы его при этом в тот же квадрат макета — значит, каждый модуль становится физически мельче.
- Какой уровень коррекции ошибок ставить?
- Уровней четыре. L восстанавливает около 7 % площади символа, M — около 15 %, Q — около 25 %, H — около 30 %. Для кода, который печатают на чистой бумаге и снимают в помещении, достаточно M. Поднимать уровень стоит, когда на код ляжет логотип, когда его гнут по бутылке или наносят туда, где он затрётся. Плата прямая: избыточность занимает модули, сетка густеет, и при том же размере на макете каждый модуль становится мельче — так что ставить H по умолчанию, «чтобы наверняка», обычно означает сделать хуже.
- Сколько данных вообще влезает в QR-код?
- Потолок — 7089 цифр, 4296 символов алфавитно-цифрового режима (только заглавная латиница, цифры и несколько знаков) или 2953 байта. Это на самой крупной, сороковой версии размером 177 на 177 модулей и при самом слабом уровне коррекции L; поднимете уровень — потолок опустится. До него на практике не доходят: чем больше данных, тем гуще сетка, а место на макете фиксировано, и предел наступает по размеру модуля задолго до предела по ёмкости.