Разбираем пиксельный узор, способный зашифровать любую информацию.
Вы наверняка не раз сканировали QR-код и через мгновение переходили на нужный сайт. Это кажется привычным, но за такой простотой скрывается сложная технология. В этой статье вы узнаете, как работают QR-коды, зачем их изобрели, где они используются и какую информацию способны хранить.
Что такое QR-код
QR-код — это двумерный штрихкод, который легко считывается смартфонами и другими устройствами. Благодаря своей структуре он хранит информацию по горизонтали и по вертикали, что позволяет разместить больше данных на меньшей площади в сравнении с линейным штрихкодом.
Аббревиатура QR расшифровывается как quick response, что в переводе с английского означает «быстрый отклик». Это подчёркивает главное преимущество QR-кодов — мгновенное считывание информации. Вместо ввода длинного URL-адреса вручную, вам достаточно отсканировать изображение камерой телефона, чтобы сразу попасть на нужную страницу.
QR-код может хранить не только URL, но и другие данные:
- Текст — от кратких сообщений до небольших статей.
- Ссылки на приложения в App Store и Google Play для быстрой установки.
- Платёжную информацию с реквизитами для переводов и оплаты.
- Wi-Fi-настройки для быстрого подключения к сети.
- Геолокации с координатами определённой точки на карте.
Данные в QR-коде хранятся в виде специального расположения точек и квадратов. При сканировании устройство расшифровывает эту информацию и преобразует её в читаемый формат. В зависимости от типа данных это может быть переход по URL-адресу или другое действие.
Кодировка QR-кода не только поддерживает разные типы данных, но и делает их устойчивыми к повреждениям — информация остаётся доступной даже при частичном повреждении изображения. Это достигается благодаря встроенной системе исправления ошибок Рида — Соломона, математическому методу, способному восстанавливать от 7 до 30% искажённых данных в зависимости от выбранного уровня защиты.
Чем выше уровень коррекции ошибок, тем больше места занимает код, но тем выше его устойчивость к повреждениям. Например, для визитки достаточно базового уровня защиты, так как она хранится в безопасных условиях — в портмоне или визитнице. А вот для QR-кода на уличном рекламном баннере требуется максимальная защита, поскольку он подвергается воздействию погодных условий и может быть скрыт грязью.
Этот QR-код ведёт на главную страницу англоязычной «Википедии» и сохраняет работоспособность, несмотря на повреждение
Фото: Dicklyon / Wikimedia Commons
История создания QR-кода
В начале 1980-х годов в Японии повсеместно использовались штрихкоды, которые имели два существенных недостатка. Первый был связан с японским языком, включающим три системы письма: кандзи (иероглифы), хирагану и катакану. Штрихкоды кодировали латинские буквы и цифры, тогда как многие японские символы искажались или вовсе не считывались.
Второй недостаток проявился в автомобильной промышленности, где возникла необходимость кодировать всё больше данных о деталях: номера партий, артикулы, технические характеристики, даты производства и информацию о поставщиках. Из-за ограниченной ёмкости традиционные штрихкоды не могли справляться с такими объёмами информации.
Японские инженеры приступили к разработке двумерных кодов и создали несколько прототипов. В 1988 году была представлена технология PDF417, а в 1989-м — Code 49. Однако оба формата оказались непрактичными: их было сложно производить, они плохо считывались при повреждениях и не обеспечивали достаточной ёмкости для кодирования японских символов.
В начале 1990-х годов созданием двумерного кода занялась компания Denso Wave, специализировавшаяся на производстве сканеров штрихкодов. Проект возглавил инженер Масахиро Хара, руководивший небольшой командой разработчиков. Перед ними стояли следующие задачи:
- Создать код, способный хранить примерно в 100 раз больше информации по сравнению со стандартным штрихкодом.
- Обеспечить быстрое считывание данных при любом положении кода.
- Реализовать поддержку всех японских систем письма.
- Гарантировать читаемость кода даже при его частичном повреждении.
- Получить простую в изготовлении технологию, которую можно печатать на разных поверхностях и быстро внедрять в производство.
Первоначально команда Хары исследовала различные формы для кода, включая шестиугольники и круги. Эксперименты показали, что шестиугольная структура обеспечивала более плотную упаковку данных, однако от неё пришлось отказаться из-за сложностей при сканировании и печати — такая геометрия требовала чрезмерного выравнивания углов.
После серии экспериментов разработчики остановились на квадратной форме с особыми маркерами в углах для определения положения кода при сканировании. Масахиро Хару вдохновила древняя китайская игра го — его сильно впечатлило, как на поле размером 19×19 линий можно представить огромное количество комбинаций, используя лишь чёрные и белые камни.
Традиционная доска для игры в го (гобан) с сеткой 19×19 линий. Расположение чёрно-белых камней на её поле наглядно демонстрирует принцип двумерной матрицы, который вдохновил Масахиро Хару применить эту структуру для хранения данных в QR-коде
Фото: Goban1 / Wikimedia Commons
Разработка QR-кода велась около двух лет: в начале 1994 года команда инженеров создала первый рабочий прототип, а уже в июне того же года официально представила технологию. Финальная версия QR-кода была способна хранить до 7089 цифр или 4296 буквенно-цифровых символов — это более чем в 100 раз превышало ёмкость традиционных штрихкодов.
Название технологии тоже выбирали тщательно. Рассматривались варианты 2D code и matrix code, но маркетинговая команда настояла на QR, чтобы подчеркнуть главное преимущество — быстрое считывание данных.
Масахиро Хара — инженер и руководитель команды разработчиков в Denso Wave, создатель QR-кода
Фото: Denso Wave
Где и для чего используют QR-коды
Первые промышленные испытания QR-кода проводились в условиях строжайшей секретности на заводе Toyota. Инженеры скрывали сканеры в корпусах стандартного производственного оборудования, чтобы не раскрывать разработку конкурентам до получения официального патента. К концу 1994 года QR-код успешно использовался на нескольких производственных линиях Toyota для маркировки автомобильных деталей.
После успешного внедрения в автомобильной промышленности технология получила широкое распространение и в других отраслях. Согласно Отчёту о глобальных тенденциях и статистике QR-кодов за 2024 год, сегодня QR-коды наиболее активно применяются в следующих пяти сферах: маркетинге и рекламе, розничной торговле, логистике, здравоохранении и транспорте.
QR не единственный стандарт, позволяющий кодировать информацию в изображении. Вот некоторые другие виды двумерных штрихкодов:
Несмотря на множество альтернативных стандартов, QR-код остаётся самой массовой технологией. Этому способствовал его открытый формат — компания Denso Wave хотя и оформила ряд патентов, но никогда не требовала лицензирования или отчислений от пользователей технологии.
Если вы хотите узнать больше о применении QR-кодов, рекомендуем посетить сайты qrcode.com и denso-wave.com. Там подробно описаны различные сценарии использования этой технологии в разных отраслях.
Пример из производственной сферы: оператор сборочной линии сканирует QR-код на каждой детали, отслеживая процесс сборки в реальном времени. Такой подход позволяет быстро выявлять ошибки и автоматизировать учёт
Скриншот: Denso Wave / Skillbox Media
Из чего состоит QR-код
Большую часть QR-кода занимает матрица из чёрных и белых модулей (пикселей), которая хранит закодированную информацию. Остальные элементы выполняют вспомогательные функции — они помогают сканеру определить положение кода и обеспечить корректное считывание данных.
Внешний вид и расположение вспомогательных элементов зависят от версии QR-кода, уровня коррекции ошибок и объёма закодированной информации. В простых версиях некоторые элементы могут отсутствовать, а в более сложных их может быть больше. Рассмотрим основные элементы.
Количество выравнивающих узоров зависит от версии QR-кода. В версии 1 (21×21 пиксель) их нет, а в версии 2 (25×25 пикселей) появляется первый выравнивающий узор. С каждой следующей версией их число увеличивается — например, в версии 7 (45×45 пикселей) содержится шесть узоров, а в максимальной 40-й версии (177×177 пикселей) 46 выравнивающих узоров.
Информация о версии находится в двух прямоугольных блоках (6×3 модуля), рядом с верхним правым и нижним левым поисковыми узорами. Эти блоки есть в версиях 7 и выше. В версиях 1–6 версия определяется по размеру кода.
Информация о формате расположена в двух местах:
- Вокруг левого верхнего поискового узора.
- По краям правого верхнего и левого нижнего поисковых узоров.
Такое дублирование выполнено намеренно для большей надёжности: если одна часть информации окажется повреждённой, сканер использует другую.
Структура типичного QR-кода с основными функциональными элементами
Изображение: Bobmath / Wikimedia Commons
Как работает QR-код
QR-код предназначен для кодирования и сохранения информации для её последующего считывания. Современные алгоритмы обработки изображений и декодирования данных выполняют этот процесс за доли секунды, последовательно проходя через несколько этапов. Давайте рассмотрим, что происходит на каждом из них.
Как шифруется информация
В предыдущем разделе мы описали процесс декодирования данных: как после сканирования QR-код преобразуется в информацию на экране. Теперь давайте выясним, как эта информация изначально кодируется в QR-код.
Виды QR-кодов
Первая версия QR-кода называлась Model 1. В 1999 году её сменила Model 2 — современный стандартный формат с улучшенными характеристиками: большей ёмкостью хранения данных, повышенной устойчивостью к повреждениям и более эффективной системой коррекции ошибок.
Помимо QR-code Model 2, существуют другие форматы со своими уникальными характеристиками. Перечислим основные из них:
Как сканировать QR-код
Чтобы отсканировать QR-код, нужно открыть приложение на смартфоне и навести камеру на код. Если на устройстве нет встроенного сканера, его можно скачать из AppStore или Google Play. Для этого откройте магазин приложений и выполните поиск по запросу «qr сканер» или «qr scanner».
В процессе сканирования иногда могут возникать ошибки:
- Камера не распознаёт код. Убедитесь, что объектив камеры чистый и на экране нет бликов.
- Код не считывается. Попробуйте изменить угол или расстояние до кода при сканировании.
- Приложение зависает. Перезапустите приложение камеры и проверьте наличие обновлений.
- Ошибка при открытии ссылки. Проверьте подключение к интернету, и если проблема не исчезнет, попробуйте использовать другой браузер.
Также QR-код можно считать с ПК через онлайн-сервисы, например эти:
Если у вас установлен Chrome, можно обойтись без сторонних сервисов — просто нажмите правой кнопкой мыши на код, выберите «Открыть изображение в Google Lens», и браузер расшифрует содержимое.
QR-коды можно считывать не только смартфонами, но и планшетами, специальными сканерами, некоторыми моделями цифровых камер и ноутбуков со встроенными камерами, а также POS-терминалами в магазинах. Все эти устройства оснащены камерой или специальным сканером для распознавания и декодирования информации из QR-кодов.
Линейный штрихкод — это одномерный код, состоящий из полосок разной ширины, который можно увидеть на упаковках товаров в магазине.
URL (uniform resource locator) — это адрес в интернете. Он указывает, где находится ресурс и как получить к нему доступ. Например, https://skillbox.ru/ — это URL-адрес, который ведёт на сайт skillbox.ru через протокол HTTPS.
Система исправления ошибок Рида — Соломона добавляет к основной информации дополнительные контрольные данные, которые помогают обнаруживать и исправлять ошибки при считывании QR-кода.
Процесс восстановления происходит в несколько этапов:
— сначала система обнаруживает повреждения в коде;
— после этого определяет их точное расположение и тип;
— в завершение применяет математические алгоритмы для восстановления потерянной информации.
Система исправляет не только физические повреждения QR-кода, но и компенсирует ошибки при сканировании, связанные с недостаточным освещением, искажённым углом обзора или загрязнением поверхности.
Уровень L: восстанавливает до 7% повреждённых данных.
Уровень M: восстанавливает до 15% повреждённых данных.
Уровень Q: восстанавливает до 25% повреждённых данных.
Уровень H: восстанавливает до 30% повреждённых данных.
Для точного выравнивания шестиугольные элементы должны идеально совмещаться под определёнными углами при печати и сканировании. Добиться этого можно только с помощью специального оборудования и сложных производственных процессов. Поэтому массовое производство подобных кодов оказалось экономически и технически нецелесообразным.
В игре го каждая точка пересечения линий может содержать чёрный камень, белый камень или оставаться пустой. На стандартной доске 19×19 находится 361 точка пересечения. Если рассматривать каждую точку как элемент с тремя возможными состояниями, то можно закодировать 3^361 различных комбинаций.
Для сравнения: во Вселенной насчитывается примерно 10^80 атомов (единица с 80 нулями). Число возможных комбинаций в го (3^361) составляет около 3^361 ≈ 1,7 × 10^173 (единица с 173 нулями).
Таким образом, количество комбинаций в го превышает число атомов во Вселенной примерно в 10^93 раз — это настолько колоссальное число, что его практически невозможно осмыслить. Для наглядности его можно сравнить с произведением количества песчинок во всех пустынях Земли на число звёзд в нашей галактике.
Важно отметить, что это лишь простой подсчёт всех возможных комбинаций трёх состояний. По правилам го многие из этих комбинаций на практике невозможны. Более точную оценку числа возможных позиций в го дал учёный Джон Тромп в своём исследовании 2016 года. По его расчётам, это число составляет около 2,1 × 10^170 (единица со 170 нулями). Это меньше наших теоретических расчётов, но всё равно невероятный показатель, значительно превышающий количество атомов во Вселенной.
Версия QR-кода определяет размер матрицы в пикселях и объём информации, которую можно закодировать. У версии 1 размер матрицы составляет 21×21 пиксель, у версии 2 — 25×25 пикселей, а у максимальной версии 40 — 177×177 пикселей.
Чем выше версия QR-кода, тем больше информации он может вмещать. Однако более сложные версии труднее сканировать, особенно на маленьких поверхностях или при плохом освещении.
При создании QR-кода система автоматически выбирает оптимальную версию в зависимости от объёма кодируемых данных. Это помогает сбалансировать размер кода и его читаемость в процессе сканирования.
Маска шаблона — это специальный узор, накладываемый на данные QR-кода для улучшения считываемости. Например, если в коде много чёрных или белых областей расположенных подряд, правильно подобранная маска помогает распределить их более равномерно. Благодаря этому повышается контраст и код легче считывается при плохом освещении или под углом.
Речь идёт о приложениях и сервисах для генерации QR-кодов, которые автоматизируют весь процесс и гарантируют корректность результата.
Создать QR-код вручную практически невозможно из-за сложных математических операций и необходимости точных расчётов. Малейшая ошибка в размещении элементов или битов данных сделает код нечитаемым. Кроме того, кодирование простого текста вручную может занять несколько часов, тогда как специальный сервис выполняет эту задачу за доли секунды.
Основные способы кодирования в QR-кодах:
— Цифровой режим — используется для кодирования цифр от 0 до 9.
— Алфавитно-цифровой режим — поддерживает цифры, заглавные буквы латинского алфавита и некоторые специальные символы.
— Байтовый режим — позволяет кодировать любые символы, включая кириллицу, иероглифы и другие специальные знаки.
— Кандзи-режим — предназначен для кодирования японских иероглифов.
Model 1 хранил максимум 1167 цифр или 707 символов, тогда как Model 2 вмещает до 7089 цифр или 4296 символов. Model 2 также превосходит предшественника по устойчивости к повреждениям — он восстанавливает до 30% повреждённых данных, в то время как Model 1 справлялся только с 15%.