Анатомия QR-кодов: как устроены загадочные черно-белые квадраты
Как и развитие многих технологий, создание QR-кодов было вынужденной мерой. Так, в 1960-х годах в Японии наблюдался резкий скачок экономического роста. В супермаркетах стали продаваться не только продукты питания, но и одежда, и аксессуары, и косметика... Естественно, спрос на все был огромный, однако существующая в то время техника не была к нему готова, и продавцам приходилось вручную вводить в компьютеры стоимость каждого товара. Только представьте: 8 часов с одним перерывом на обед стоять на кассе и печатать суммы. Немудрено, что многие торговцы поувольнялись из-за развившегося у них синдрома запястного канала — неврологического заболевания, проявляющееся ноющей болью в запястьях и онемением пальцев рук.
Вскоре для облегчения жизни сотрудников в каждый магазин установили POS-системы, состоящие из кассового и чекового аппаратов, дисплея для покупателя и сканера. При помощи оптического датчика продавец мог отсканировать штрих-код, после чего на экране компьютера высвечивалась цена и краткая информация о товаре.
Казалось бы, проблема решена, но впоследствии супермаркеты столкнулись с другой трудностью: штрих-коды могли хранить информацию максимум из 20 буквенно-цифровых символов и функционировать в пределах одного измерения (одного направления кодирования). И здесь в игру вступает компания DENSO WAVE, а именно ее ведущий разработчик Масахиро Хара. В 1994 году он предложил разработать 2D-код для хранения большего количества информации, выполненного в форме квадрата.
QR-код VS штрих-код
На практике оба этих шифра чем-то схожи, но QR-коды содержат в себе гораздо больше информации, поскольку они способны удерживать ее как по горизонтали, так и по вертикали. В штрих-кодах используется только горизонтальная информация, что существенно ограничивает их возможности.
Из чего состоят QR-коды
Первое, что бросается в глаза в каждом коде, — три больших квадрата и один поменьше, расставленные по разным углам. Они ориентируют сканер и помогают ему правильно считать код для дальнейшей обработки информации.
Вокруг этих квадратов есть области (черточки и точечки, отделенные от блоков пробелом), содержащие информацию о том, что именно здесь зашифровано: текст, фото, аудиоматериал, видео или URL-адрес. Они получили название «шаблоны формата».
По внешним углам от квадратов проходят линии — так называемые схемы синхронизации. Они представляют собой серию чередующихся светлых и темных модулей, расположенных вертикально и горизонтально между двумя позиционными маркерами. Они также необходимы сканеру для определения размеров модулей в QR-кодах.
Последняя — область данных. Это все, что находится в центре кода, за исключением перечисленных ваше частей. В ней хранятся модули данных, содержащие фактическую закодированную информацию, и коды Рида-Соломона для функций исправления ошибок.
Кстати, об этих кодах. Разработчики наделили квадратные шифры поистине важной суперспособностью — автоматическое исправление ошибок. Допустим, на бумажном носителе какая-то область кода стерлась или заляпалась чернилами ручки. В таком случае алгоритм все равно сможет восстановить данные и полностью расшифровать код, но только если оказались повреждены не более 30% картинки.
Как правило, QR-код считывается «змейкой» из нижнего правого угла вверх, затем вниз. В последнюю очередь сканер считывает модули сведений об ошибках, где хранятся резервные данные.
Как генерировать QR-коды
QR-коды являются технологией общественного достояния — да, Масахиро Хара и его компания не подавали патент. По этой причине в интернете развелось целое множество сервисов для бесплатной генерации квадратных шифров. Использовать можно любой, какой больше заинтересует вас в предоставленном поисковике списке — работают они практически аналогично.