Подавляющее большинство людей знает про QR благодаря недавней заразе, которая постигла целый мир. Помните, что для посещения общественных мест нужно было предоставить QR-код, который являлся доказательством вакцинации? Но на самом деле QR-код был придуман очень давно.
Идея кодирования информации через графические элементы, распознаваемые автоматически, зародилась в середине прошлого столетия. Прообразом QR-кода стал линейный штрихкод, созданный под влиянием азбуки Морзе. Но традиционные штрихкоды обладали существенным минусом — очень ограниченным количеством информации, которую можно было передать.
В начале 1990-х годов японская компания Denso Wave, осуществлявшая поставки автокомпонентов для концерна Toyota, столкнулась с производственной проблемой: использование множества различных штрихкодов значительно замедляло технологические процессы. Только представим, что сотруднику нужно было отсканировать сразу несколько кодов, что занимало много времени.
Инженеру Масахиро Хара было поручено создать принципиально новую систему. Как отмечал сам разработчик, решающую роль сыграла настольная игра «Go»: расположение фишек на игровом поле позволяло мгновенно считывать информацию визуально.
Помимо увеличения объема данных, ключевыми требованиями стали высокая скорость распознавания и устойчивость к различного рода загрязнениям, которые могут быть на производстве.
Первый QR-код был представлен в 1994 году после двухлетних исследований.
Несмотря на регистрацию товарного знака, компания Denso Wave сознательно отказалась от монетизации патента, сделав технологию общедоступной. Этот стратегический шаг предопределил мировое распространение двухмерных кодов.
Структура QR-кода
Если смотреть на QR-код, то кажется, что он какой-то хаотичный, случайный, рандомный. Но это далеко не так. Буквально каждый символ что-то да значит в итоговом построении информации — каждый символ выполняет определенную роль.
Структура QR-кода достаточно интересна:
- Три крупных квадрата в углах кода выполняют роль ориентиров, позволяя сканирующему устройству определить пространственное положение, масштаб и угол разворота изображения. Они носят название позиционных маркеров;
- Расположенная в форме буквы L последовательность чередующихся модулей обеспечивает корректное распознавание плотности данных даже при незначительных искажениях. Это синхронизационные линии;
- Дополнительный квадратный паттерн (присутствующий в кодах больших версий) компенсирует геометрические искажения, возникающие при сканировании под углом. Квадрат носит название калибровочной метки;
- Служебные зоны — специализированный области содержат метаданные о версии кода и параметрах коррекции ошибок;
- И самое интересное: информационная матрица: Основное пространство заполнено миниатюрными модулями-квадратами — ячейками данных, где черный цвет кодирует единицу, а белый — ноль. Это и есть простая двоичная система счисления, которая используется во всей цифровой технике.
Стандарт предусматривает 40 модификации. Минимальная версия 1 имеет размер 21 на 21 модуль, тогда как версия 40 достигает 177 на 177 модулей, что напрямую определяет информационную емкость. Чем больше размер QR-кода, тем больше информации поместится — здесь все просто.
Фундаментальное преимущество технологии заключается в сохранении функциональности при частичном повреждении, что обеспечивается алгоритмами Рида-Соломона. Уровень коррекции ошибок L (низкий) компенсирует до 7% повреждений. Наиболее распространенный вариант — уровень M (средний), который исправляет до 15% поврежденной поверхности. Более высокий уровень Q позволяет восстановить до 25% данных, а уровень H (высокий) — до 30%.
Код Рида-Соломона в QR — это умный трюк, позволяющий восстановить испорченную часть кода.
Он добавляет к данным «запасные» блоки, которые работают как дублеры в спектакле: даже если несколько основных актеров (пикселей в QR-коде) пропадут, то «спектакль» все равно будет продолжен.
Процедура сканирования для конечного пользователя предельно упрощена: камера смартфона фиксирует изображение, а специализированное приложение выполняет сложную последовательность операций: идентифицирует позиционные маркеры для определения пространственной ориентации.
Далее преобразуется графическую матрицу в бинарный код — также идет применяет алгоритмы коррекции для компенсации возможных повреждений. На завершающем этапе осуществляет обратную конвертацию битовой последовательности в исходные данные. Кстати, создается QR-код также с помощью специальных алгоритмов — его может создать каждый, достаточно ввести в поисковую систему фразу «Создать QR-код».
И что видит конечный пользователь?
Условно QR-коды можно делить на два типа: статические и динамические. Статический QR-код содержит какую-либо информацию и ничего содержать более не может. Например, текст, пропуск, идентификатор доступа к Wi-Fi и многое другое. Динамический QR содержит гиперссылку — при сканирований браузер смартфона сразу переходит по ссылке и здесь в чем динамика? В том, что содержимое ссылки может меняться владельцем QR-кода, показывая ту или иную информацию. Кстати, этим могут воспользоваться мошенники, поэтому не стоит сканировать какой попало QR-код, особенно если у вас при сканировании открылось банковское предложение с оплатой на какую-либо сумму.
Количество данных, которые можно закодировать в QR-код, зависит от его версии (от 1 до 40) и типа информации. Максимальный объем составляет около 7 тысяч цифр, 4 тысяч буквенно-цифровых символов или 2.9 килобайт произвольных данных. Для текста на русском языке это примерно 1 500 символов, так как кириллица кодируется в UTF-8.
Сферы применения QR-кодов стремительно развиваются, проникая в самые разные области. В ресторанах они заменяют бумажные меню и ускоряют расчет, в торговле — защищают от подделок (например, маркировка молочной и алкогольной продукции) и упрощают учет товаров. Также сейчас многие пользуются оплатой по QR-коду — это удобно.
Маркетологи используют их для мгновенного перехода на сайты и акции, а в быту коды стали стандартом для подключения к Wi-Fi, получения посадочных талонов и даже цифровых медицинских карт. В некоторые страны (например, Японии) их можно встретить даже на мемориальных табличках, открывающих доступ к биографиям усопших.
Стандарт QR-кода допускает определенную свободу дизайна, хотя разработчики предупреждают о потенциальном снижении надежности распознавания. Современные генераторы поддерживают создание цветных кодов, скругление углов, кастомизацию позиционных маркеров и интеграцию логотипов в какую то часть кода. Критически важным остается сохранение максимального контраста между элементами кода и фоном для того, чтобы алгоритм точно определил, где условная «единица», а где «ноль». Наиболее эффективной остается классическая схема с темными модулями на световой подложке — максимальный процент распознавания.
Несмотря на технологическую надежность, QR-коды могут утрачивать читаемость. Распространенные причины: некорректное масштабирование, отсутствие защитной рамки, низкое качество печати, недостаточный контраст и физические повреждения. Наверное у многих бывало, когда продавец не может считать сканером QR-код с бутылки молока. 🙂