История вопроса. Как работает QR-код?
В 2020 году многие россияне впервые столкнулись с QR-кодами — сначала они были нужны для регистрации выхода из дома, затем для входа в бар или клуб. Технология проста в использовании, но сложна и интересна изнутри, а придумали её совсем не для контроля и изоляции. «Код быстрого реагирования» появился как альтернатива штрихкоду, он может передавать до 4296 букв и цифр и при желании принимает форму можжевеловой изгороди. Представляем исчерпывающий гид по QR-кодам.
Как придумали?
Идея передавать информацию с помощью графических элементов, которые будут распознаваться автоматически, появилась еще в середине XX века. Филадельфийским торговцам продуктами очень не хватало удобной системы контроля и учета товаров, и они обратились в Дрексельский университет с просьбой разработать ее.
Cоздателя первого штрихового кода Нормана Вудланда вдохновила азбука Морзе: он объяснял, что просто расширил точки и тире, превратив их в широкие и узкие штрихи. Для их считывания предполагалось использовать технологию оптической звукозаписи. Из-за технических трудностей реализация замысла заняла двадцать лет: первый товар со штрихкодом (пачка жевательной резинки Wrigley) был продан в 1974.
Штрихкоды быстро нашли применение в промышленности: ими удобно было маркировать детали и комплектующие. Но не для всех компаний этого было достаточно. В японской Denso Wave, производящей запчасти для автомобилей, работники просили руководство разработать более эффективную систему, и в 1994 она появилась — в виде матричного (двумерного) кода. Его назвали Quick Response Code — код быстрого реагирования или QR-код.
Преимущества QR-кода:
- Позволяет кодировать больше информации, чем линейные штрихкоды;
- Легко распознается сканирующим оборудованием;
- Может быть прочитан, даже если поврежден.
Хотя компания Denso зарегистрировала термин «QR-код» как товарный знак, исходный код самой системы открыт, а за использование кодов не нужно платить лицензионные отчисления. Все это позволило QR-кодам захватить мир.
Где используется?
Для использования QR-кода не нужно ничего, кроме смартфона с камерой и приложения (оно обычно установлено по умолчанию), поэтому черно-белые квадратики заметно облегчают жизнь там, где нужно перевести действие из офлайна в онлайн: например, быстро привести человека, увидевшего интересную вещь в реальном магазине, на сайт. Или дать ссылку на скачивание подробной инструкции прямо на коробке с товаром. А может, показать свой интернет-проект человеку, в руках у которого оказалась ваша визитка. А еще QR-коды позволяют подтвердить оригинальность электронных билетов, право на скидку или кэшбек в магазине. Музеи шифруют в QR-коды информацию, организаторы викторин и квестов прячут в них подсказки. Всё чаще QR-коды используются для онлайн-оплаты —, но пока это не совсем привычно для большинства покупателей.
Сейчас о QR-кодах знают даже те, кто никогда активно не использовал онлайн-сервисы: весной в Москве они нужны были для того, чтобы выйти из дома и не заработать штраф, а сейчас, согласно указу мэра Москвы, — для регистрации посетителей ночных клубов. Каждый должен отсканировать такой код (или отправить смс, но это дольше и не так удобно), оставив таким образом свой номер телефона. Если выяснится, что кто-то из посетителей являлся носителем коронавируса, все остальные посетители постфактум получат предупреждение о возможном контакте.
Почему так выглядит и как шифрует?
У всех QR-кодов есть кое-что общее: белая рамка, три одинаковых черных квадрата по углам (каждый в двойной рамке), еще один черный квадрат (поменьше, но тоже в рамке), полосочки из черно-белых модулей. Это техническая часть кода, которая позволяет камере точно определить его расположение и оценить размер модулей. Также код содержит информацию, необходимую для его правильного распознавания: о маске, уровне коррекции и версии. Все оставшиеся поля можно использовать для передачи информации.
Каждый QR-код может содержать:
- 7089 цифр;
- 4296 букв и цифр латиницей;
- 1817 иероглифов;
- 2953 байт двоичного кода (то есть около 2953 букв кириллицей в кодировке windows-1251 или 1450 в utf-8).
Если у вас меньше информации — не беда, в коде просто останутся пустые модули. Вот, например, закодированная фраза из 178 знаков:
Если вы наведете на код камеру, то, скорее всего, ваш браузер откроет страницу поиска. В поисковой строке вы найдете наше послание.
Большинство популярных приложений для QR-кодов позволяет распознавать буквы, цифры и спецсимволы. Чисто технически с помощью QR-кодов можно передавать изображения и звуки, но такие форматы используются редко: и данные придется сильно сжимать, и приложения, способные их распознать, не получили большого распространения. Дать с помощью QR-кода ссылку на картинку или песню гораздо проще.
Составление QR-кода проходит в несколько этапов:
- Информация кодируется одним из способов (цифровым, буквенно-цифровым, байтовым или кандзи), превращаясь в поток битов — последовательность нулей и единиц;
- Формируется служебная информация, определяющая версию кода и кодировки;
- Полученные потоки разбивается на блоки;
- К каждому блоку добавляются байты коррекции в зависимости от выбранной версии кода;
- Два блока (исходных данных и коррекции) объединяются в один поток, чтобы получилась последовательность данных.
- Данные заносятся в поле кода. Для этого пространство, оставшееся после введения обязательных элементов, делится на столбики шириной в два модуля. Они заполняются «змейкой», ноль — белый модуль, единица — черный.
Все это не делается вручную: есть программы и сервисы для кодирования информации. Компания Denso Wave, где были созданы QR-коды, предлагает использовать QRdraw Ad и QR Maker Ad. Для тех, кто не хочет заниматься кодированием «с нуля» есть бесплатные и платные сервисы, в том числе с шаблонами, например: QR coder, QR Code generator, Генератор QR онлайн — да тысячи, тысячи их.
Как распознается?
Для пользователя все просто: навел камеру смартфона, получил уведомление о том, что код распознан, нажал на него —, а дальше по ситуации: читаешь текст, переходишь по ссылке, добавляешь новый контакт в адресную книгу, регистрируешься в системе.
Для приложения в большинстве случаев тоже больших сложностей нет: черные и белые поля легко распознаются, квадраты в углах подсказывают, что именно нужно читать и где расположена системная информация. Затем в основной части кода белые поля превращаются в нули, черные — в единицы. Получается поток данных, из которых потом восстанавливается исходная информация.
В чём проблема?
Не всегда QR-код удается правильно распознать. Denso Wave предупреждает, что QR-код может не читаться, если был уменьшен или увеличен, если белое поле по краям заполнено буквами или изображениями, если для создания кода использованы недостаточно контрастные цвета или код нанесен на рисунок-подложку, если код нанесен на полупрозрачную или прозрачную поверхность (например, клейкую ленту). Несмотря на то, что экспериментировать с внешним видом кода можно, самым надежным остается обыкновенный черно-белый вариант.
QR-код как искусствоХотя Denso Wave и предупреждает о том, что цветные двумерные коды, коды с картинками и прочие творческие находки не соответствуют стандартам, это не мешает ими пользоваться — или, по крайней мере, «рисовать их». Тут фантазии есть, где развернуться: от цветной ёлочки Лебедева и генераторов, которые позволяют вставить в QR-код текст или картинку, сохранив читаемость, до кодов, выложенных цветами в британских магазинах Marks&Spencer или высаженных можжевельником в Китае.
Альтернативы
При всех своих достоинствах, QR-код — не единственный. Та же Denso Wave разработала Micro QR для передачи меньшего объема информации (вот тут сравнение), SQRC (код, часть информации которого доступна всем, а часть — только пользователям, у которых есть специальный ключ для расшифровки), IQR Code (может иметь разный размер и форму), Frame QR (внутрь можно вставлять изображения). Сравните их все.
Используются и коды, которые не имеют отношения к Denso Wave. Это, например, Aztec Code (его легко узнать по квадрату в центре) на авиа- и железнодорожных билетах, MaxiCode в грузоперевозках, DataMatrix в промышленности, прямоугольный PDF417 для документов.
Российская национальная система маркировки «Честный знак» использует DataMatrix. Индивидуальный код позволяет отслеживать перемещение всех товаров от поставщика к покупателю и исключает возможность появления подделок в торговых сетях. Кроме того, специальное мобильное приложение позволяет любому покупателю убедиться в подлинности товара.
QR-коды сейчас где только не встретишь: на городских достопримечательностях, футболках, в извещениях об уплате налогов. И даже на надгробиях — на случай, если кому-то захочется узнать больше об умершем человеке. Самой же технологии, несмотря на приличный по меркам IT возраст, на кладбище истории пока рано: она явно в самом расцвете сил.
Линейные штрихкоды, кстати, тоже еще вполне живы. Они используются там, где не нужно передавать большой объем информации или переводить пользователя в онлайн. В торговых сетях, библиотеках и на складах вполне достаточно кодирования 20–30 символов. Часто преимуществом линейного штрихкода становится компактность: его можно нанести и на пачку жевательной резинки, и на плату компьютера. Но дело еще и в том, что GS1, международная организация, которая занимается созданием и внедрением стандартов для бизнеса, выделяет именно линейные коды EAN для основной информации, а QR-коды — для дополнительной. Поэтому наличие зарегистрированного штрихокда EAN необходимо для работы со всеми крупными торговыми сетями.
Эта и другие статьи раньше всего выходят в блоге на нашем сайте. А на тот случай если вы задумали сменить сферу или повысить свою квалификацию — промокод HABR даст вам дополнительные 10% к скидке указанной на баннере.