Гайд

Хаотичный QR-код не так прост. Рассказываем, как он работает

Автор: Наталья Ражкова. Фото: архив Onlíner
10 359
13 октября 2025 в 8:00
Выиграй модный аэрогриль! Покупай в приложении с доставкой Príme и получай шанс выиграть аэрогриль Roome

Когда мы забираем посылку по QR-коду, сканируем товар или дисконтную карту, протягиваем кому-то свою инстаграм-визитку, происходит маленькая математическая магия. В свое время QR-коды решили важную производственную проблему: дали пространство для того, чтобы компактно записывать всю нужную информацию о товаре. У этого хаотичного квадрата, больше похожего на принт, на самом деле, интересная конструкция и история создания — расскажем ее вам.

О чем пойдет речь в статье

Как придумали QR-код

QR-код — это не изобретение последних 10 или 15 лет, он ровесник 30-летних. Его главным предшественником был штрихкод, который также позволяет закодировать некоторый объем информации. Но нужды производства и торговли росли. В то время в разных компаниях разрабатывали двухмерные коды, которые кодируют информацию в вертикальном и горизонтальном направлениях — они могли бы шифровать больше информации и стать ответом на запросы отраслей.

В японской компании Denso, которая выпускает автомобильные запчасти, такой запрос был особенно острым: на каждой коробке с запчастями приходилось размещать чуть ли не десяток разных штрихкодов. Людям, которые работали с этими деталями, приходилось по очереди сканировать каждый. Это было медленно и утомительно.

Onlíner рекомендует
смартфон, Android, экран 6.67" AMOLED (1220x2712) 120 Гц, Mediatek Dimensity 8400 Ultra, ОЗУ 12 ГБ, память 512 ГБ, камера 50 Мп, аккумулятор 6000 мАч, моноблок, влагозащита IP68
Onlíner рекомендует
смартфон, Android, экран 6.67" AMOLED (1080x2400) 120 Гц, Mediatek Helio G99-Ultra, ОЗУ 6 ГБ, память 128 ГБ, поддержка карт памяти, камера 108 Мп, аккумулятор 5500 мАч, моноблок, влагозащита IP54
Onlíner рекомендует
смартфон, Apple iOS, экран 6.5" OLED (1260x2736) 120 Гц, Apple A19 Pro, ОЗУ 12 ГБ, память 256 ГБ, камера 48 Мп, аккумулятор 3149 мАч, моноблок, влагозащита IP68

Задачу разработать двухмерный код, который заменит штрихкоды, поставили перед командой инженеров, среди которых был Масахиро Хара.

Как сделать так, чтобы код считывался максимально быстро? Это был главный вопрос, над которым думали инженеры. Вдохновением для рабочего решения стала японская игра го, в которую Масахиро играл в перерывах. Он заметил, что расположение черных и белых камней складывается в матрицу, и так можно шифровать одновременно много информации. А ответом на вопрос скорости стало добавление позиционных меток — это квадраты по краям QR-кода. С ними сканер распознает код под любым углом — не нужно тратить время на то, чтобы правильно поднести его.

Вся разработка заняла полтора года. Это был путь множества проб и ошибок. В итоге в 1994 году компания Denso Wave анонсировала изобретение: в QR-код не просто можно было заложить много информации, но и считывался он в 10 раз быстрее, чем альтернативы. Отсюда, кстати, и название: QR расшифровывается как Quick Response — дословно «быстрый ответ», то есть быстрое считывание.

Как устроен QR-код

Принципы шифрования информации объяснял научпоп-блог Veritasium. В матрице есть два цвета: черный и белый. Если провести аналогию с двоичным кодом, белый — это 0, а черный — 1. Допустим, нам нужно заложить в QR-код ссылку. Сперва ее нужно представить в виде единиц и нулей. Каждый символ переводится в формулу двоичного кода — получается длинная последовательность из нулей и единиц. Теперь нужно расположить ее в квадрате.

Вокруг QR-кода сохраняется рамка одного цвета, отделяющая его в пространстве от других символов и рисунков. В классическом QR-коде (позже появились и другие его конфигурации, например микро-QR-код или QR-код в виде рамки) по углам есть три квадрата — они нужны для того, чтобы сканер понимал ориентацию кода в пространстве. От всей остальной информации внутри они отделяются белыми полосами по периметру. В QR-кодах есть и четвертый квадратик размером поменьше, который не так бросается в глаза, — он нужен для выравнивания: если сканер направляется на код под углом, он понимает ровный вид кода по расстоянию между этим квадратиком и тремя большими. Квадраты по углам соединены между собой полосами синхронизации — они подсказывают сканеру, какая версия кода перед ним. Рядом с угловыми квадратами есть полосы с информацией о том, как считывать код.

А дальше внутренняя часть заполняется нужными данными. Информация всегда начинается с нижнего правого угла. Сначала прописывается тип кодирования — так сканер понимает, что будет дальше: цифры, буквы или иероглифы. Потом дается указание, сколько символов будет в кодируемом сообщении — тоже через двоичный код, черными и белыми «точками».

Дальше блоками в рисунке QR-кода прописываются сами данные — они идут справа налево и снизу вверх. Квадраты при этом остаются на своих местах, информация размещается вокруг них.

Почему QR-код работает даже если его часть оторвана

В него «встроена» система восстановления части информации — успешно отсканировать можно даже те коды, где оторвана или чем-то залита почти треть всего черно-белого рисунка. У QR-кодов бывает четыре уровня коррекции ошибок: самый меньший может восстановить до 7% «оторванной» информации, самый большой — до 30%. В каждом конкретном коде прописывается, какой уровень коррекции ошибок использован — для этого есть специальное место возле двух разных больших квадратов. В этом и есть задумка: если один уголок оторвется, сканер возьмет информацию из «дубля».

Тот же принцип, по сути, применяется и ко всем данным внутри QR-кода. Когда основное сообщение записано, следом за ним прописываются сведения о всем содержимом в коде, только чуть иначе — это и «страхует» информацию. Получается, если вы неаккуратно разорвали пакет, на который наклеен QR-код, то разрыв не помешает работе метки: сканер математически поймет, что там было.

Почему QR-коды выглядят так хаотично

После того как в код записана основная и страхующая информация, он выглядит довольно стройно — с ровными и понятными блоками. Но если вспомнить реальные QR-коды, они выглядят скорее как принты, на вид довольно хаотичные. Все дело в маскировании. Это следующий этап: в почти готовом коде «пиксели» перемешиваются одним из восьми способов. Это нужно, чтобы сканер точно понимал: о, это QR, а не плитка на стене дома.

То, какой способ маскировки взяли для конкретного кода, тоже прописывается возле больших позиционных квадратов. И маскировка — это причина того, почему разные генераторы могут выдать не похожие друг на друга QR-коды с одинаковой информацией.

Эта ситуация показала необходимость маркировки пищи

Серьезной проблемой, после которой у пищевой промышленности появилась необходимость отслеживать компоненты продуктов и помечать партию информацией о ее происхождении, стала вспышка коровьего бешенства. На научном медицинском языке болезнь называется «губчатая энцефалопатия крупного рогатого скота». Впервые ее зафиксировали в Великобритании в 1986 году. Вплоть до середины 1990-х вспышка заболевания у коров нанесла сокрушительный удар по британской индустрии говядины и была связана с 232 смертями людей, пишет портал History.com.

Это заболевание разрушает мозг, а вызывают его прионы — дефектные белки. В составе кормов были мясо и костная мука — так происходило заражение. Протестировать живое животное на это заболевание нельзя. Вспышка болезни и паника привели к профилактическому убийству более 4,5 млн голов крупного рогатого скота, и британская экономика потеряла примерно $4,6 млрд.

Тогда у пищевой промышленности возникла острая необходимость прослеживать продукцию на всех этапах начиная от партии сырья. Позже для этих целей стали применять QR-коды, которые изначально появились в автопроме.

На кассах супермаркетов мы «пикаем» не QR-коды

В Беларуси для маркировки прослеживаемости товаров используются не QR-коды, а Data Matrix. Они похожи, тоже матричные.

Отличие, которое первым бросается в глаза визуально, — это что у Data Matrix нет таких позиционных квадратов по периметру, как у QR-кода. Кстати, к матричным относится еще один код, которые многие видели, но едва ли знали его название, — PDF417. Его можно встретить на посадочных талонах в самолет.

Как создать свой QR-код

Можно воспользоваться специальным сервисом — например, одним из этих вариантов:

Думать о том, какую кодировку выбирать, не нужно: программа сама автоматически определяет это исходя из типа данных, которые вы хотите зашифровать. Переводить в такую форму можно ссылку на сайт, PDF-файл, свою электронную почту, ссылку на аккаунт в соцсети, текст.

Когда закончатся QR-коды

Вероятность того, что QR-коды когда-либо закончатся, крайне мала. Например, для небольшого кода с низким уровнем коррекции ошибок, по прикидкам ChatGPT, число возможных комбинаций может исчисляться квадриллионами (10 в пятнадцатой степени)  или квинтиллионами (10 в восемнадцатой степени). Поэтому если нарисовать рандомный QR-код и попробовать считать его сканером, то шансов «попасть» в какой-то из существующих практически нет.

Onlíner рекомендует
смартфон, Android, экран 6.9" AMOLED (1440x3120) 120 Гц, Qualcomm Snapdragon 8 Elite, ОЗУ 12 ГБ, память 256 ГБ, камера 200 Мп, аккумулятор 5000 мАч, моноблок, влагозащита IP68
Onlíner рекомендует
смартфон, Android, экран 6.67" AMOLED (1220x2712) 120 Гц, Mediatek Dimensity 7300 Ultra, ОЗУ 8 ГБ, память 256 ГБ, камера 50 Мп, аккумулятор 5110 мАч, моноблок, влагозащита IP68
Onlíner рекомендует
смартфон, Android, экран 6.67" AMOLED (1080x2400) 120 Гц, Mediatek Dimensity 7300, ОЗУ 8 ГБ, память 256 ГБ, поддержка карт памяти, камера 50 Мп, аккумулятор 5000 мАч, моноблок, влагозащита IP52

Читайте также:

Есть о чем рассказать? Пишите в наш телеграм-бот. Это анонимно и быстро

Перепечатка текста и фотографий Onlíner без разрешения редакции запрещена. ga@onliner.by