Код
#статьи

Что такое QR-код, зачем он нужен и как работает

Разбираем пиксельный узор, способный зашифровать любую информацию.

Иллюстрация: Оля Ежак для Skillbox Media

Вы наверняка не раз сканировали 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 не единственный стандарт, позволяющий кодировать информацию в изображении. Вот некоторые другие виды двумерных штрихкодов:

  • Data Matrix — часто используется в промышленности и медицине. Например, для маркировки небольших медицинских инструментов. Отличается компактным размером при высокой плотности данных.
  • Aztec Code — применяется в транспортной отрасли для быстрого считывания информации с электронных билетов. Эти коды устойчивы к повреждениям и позволяют считывать данные с мятых поверхностей.
  • MaxiCode — специальный формат для логистической сферы, отличающийся возможностью сверхбыстрого считывания в движении. Например, он нужен для маркировки посылок на сортировочных линиях.
  • PDF417 — это штрихкод, встречающийся в государственных документах. Например, в паспортах или водительских удостоверениях. Его главное преимущество в высокой отказоустойчивости и надёжной защите данных.
  • JAB Code — это современный цветной формат штрихкода, используемый для защищённой маркировки премиальных товаров, таких как дорогие часы или парфюмерия. Благодаря задействованию множества цветов такой код сложнее подделать, что эффективно защищает от контрафакта.

Несмотря на множество альтернативных стандартов, QR-код остаётся самой массовой технологией. Этому способствовал его открытый формат — компания Denso Wave хотя и оформила ряд патентов, но никогда не требовала лицензирования или отчислений от пользователей технологии.

Если вы хотите узнать больше о применении QR-кодов, рекомендуем посетить сайты qrcode.com и denso-wave.com. Там подробно описаны различные сценарии использования этой технологии в разных отраслях.

Пример из производственной сферы: оператор сборочной линии сканирует QR-код на каждой детали, отслеживая процесс сборки в реальном времени. Такой подход позволяет быстро выявлять ошибки и автоматизировать учёт
Скриншот: Denso Wave / Skillbox Media

Из чего состоит QR-код

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

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

Поисковые узоры. Это три больших квадрата, расположенные в углах QR-кода — во всех, кроме правого нижнего. Они помогают сканеру правильно считывать код, даже если он повёрнут на 180 градусов или наклонён.

Выравнивающие узоры. Это небольшие квадраты, распределённые по всей площади кода. Они помогают исправлять искажения, возникающие при сканировании под углом или на неровной поверхности.

Количество выравнивающих узоров зависит от версии QR-кода. В версии 1 (21×21 пиксель) их нет, а в версии 2 (25×25 пикселей) появляется первый выравнивающий узор. С каждой следующей версией их число увеличивается — например, в версии 7 (45×45 пикселей) содержится шесть узоров, а в максимальной 40-й версии (177×177 пикселей) 46 выравнивающих узоров.

Синхронизирующие полосы. Это пунктирные линии между поисковыми узорами. Они помогают определить размер ячеек данных и корректировать искажения. Например, если код напечатан на упаковке продукта в магазине, эти полосы позволяют сканеру точно определить размер каждой ячейки данных даже при неровном положении телефона или плохом освещении.

Информация о версии. Указывает версию QR-кода (от 1 до 40), которая определяет его размер и объём хранимых данных. При сканировании устройство сначала определяет версию кода, чтобы правильно интерпретировать расположение и количество модулей данных.

Информация о версии находится в двух прямоугольных блоках (6×3 модуля), рядом с верхним правым и нижним левым поисковыми узорами. Эти блоки есть в версиях 7 и выше. В версиях 1–6 версия определяется по размеру кода.

Информация о формате. Это горизонтальные и вертикальные полосы, которые содержат данные об уровне коррекции ошибок и маске шаблона.

Информация о формате расположена в двух местах:

  • Вокруг левого верхнего поискового узора.
  • По краям правого верхнего и левого нижнего поисковых узоров.

Такое дублирование выполнено намеренно для большей надёжности: если одна часть информации окажется повреждённой, сканер использует другую.

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

Структура типичного QR-кода с основными функциональными элементами
Изображение: Bobmath / Wikimedia Commons

Как работает QR-код

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

Захват изображения. Камера устройства фиксирует изображение QR-кода. Здесь важны чёткость снимка и равномерное освещение — это позволит избежать бликов и размытия, затрудняющих распознавание элементов.

Определение границ и ориентации. Сканер находит три поисковых узора, которые позволяют определить его ориентацию и примерные границы. Дополнительную точность обеспечивает «тихая зона» — она помогает отделить код от фона и предотвратить ошибки распознавания.

Анализ версии и формата. Устройство определяет размер матрицы данных, уровень коррекции ошибок и используемую маску шаблона.

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

Удаление маски. Программа анализирует тип маски шаблона на основе информации о формате и убирает её из матрицы данных. Это позволяет восстановить исходное распределение чёрных и белых модулей, обеспечивая правильную интерпретацию закодированной информации.

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

Преобразование в конечный формат. После декодирования данные преобразуются в формат, соответствующий типу закодированной информации. Это может быть текст, URL-адрес и прочие сведения.

Как шифруется информация

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

Анализ данных. На первом этапе специальное программное обеспечение анализирует тип вводимой информации и подбирает способ её кодирования.

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

Добавление служебной информации. На этом этапе программа добавляет технические данные, которые необходимы для корректной работы QR-кода. Это включает информацию о режиме кодирования (например, цифровой или текстовый), количестве закодированных данных и прочие служебные поля, обеспечивающие правильное считывание кода.

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

Генерация кодов коррекции. Программа генерирует дополнительные байты данных, которые помогают восстановить информацию при частичном повреждении кода.

Формирование матрицы. На этом этапе создаётся квадратная сетка определённого размера, где каждая ячейка будет чёрной или белой. В эту матрицу записываются закодированные данные и служебные элементы в строгом порядке, установленном стандартом QR-кода.

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

Добавление служебных узоров. На завершающем этапе добавляются поисковые и выравнивающие узоры, а также синхронизирующие полосы. По ним сканер определяет положение, ориентацию и размер элементов кода.

Виды QR-кодов

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

Помимо QR-code Model 2, существуют другие форматы со своими уникальными характеристиками. Перечислим основные из них:

  • Micro QR Code — миниатюрная версия QR-кода с одним поисковым узором, предназначенная для кодирования небольших объёмов информации в ограниченном пространстве. Этот формат используется для маркировки мелких товаров: косметики, электронных компонентов, ювелирных изделий, миниатюрных датчиков и прочей продукции.
  • iQR Code — улучшенный формат QR-кода, способный хранить на 80% больше информации на той же площади. Применяется в промышленной маркировке, где нужно размещать большой объём данных на ограниченном пространстве. Например, на мелких компонентах.
  • SQRC — защищённая версия QR-кода, которая внешне не отличается от стандартного, но может считываться только специальными сканерами. Этот формат используется для защиты конфиденциальной информации.
  • Frame QR — специальный формат с пустым пространством в центре квадрата, предназначенный для размещения логотипа или изображения. Популярен в маркетинге благодаря своей визуальной привлекательности.
  • Colored QR Code — многоцветная версия стандартного QR-кода, которая хранит больше информации благодаря использованию разных цветов вместо чёрно-белой схемы. Применяется в дизайне, а также в системах с повышенными требованиями к плотности хранения данных. Например, в розничных сетях цветные коды встречаются на ценниках: красный может означать скидку, синий — новинку и так далее.

Как сканировать QR-код

Чтобы отсканировать QR-код, нужно открыть приложение на смартфоне и навести камеру на код. Если на устройстве нет встроенного сканера, его можно скачать из AppStore или Google Play. Для этого откройте магазин приложений и выполните поиск по запросу «qr сканер» или «qr scanner».

В процессе сканирования иногда могут возникать ошибки:

  • Камера не распознаёт код. Убедитесь, что объектив камеры чистый и на экране нет бликов.
  • Код не считывается. Попробуйте изменить угол или расстояние до кода при сканировании.
  • Приложение зависает. Перезапустите приложение камеры и проверьте наличие обновлений.
  • Ошибка при открытии ссылки. Проверьте подключение к интернету, и если проблема не исчезнет, попробуйте использовать другой браузер.

Также QR-код можно считать с ПК через онлайн-сервисы, например эти:

Если у вас установлен Chrome, можно обойтись без сторонних сервисов — просто нажмите правой кнопкой мыши на код, выберите «Открыть изображение в Google Lens», и браузер расшифрует содержимое.

Больше интересного про код — в нашем телеграм-канале. Подписывайтесь!

Изучайте IT на практике — бесплатно

Курсы за 2990 0 р.

Я не знаю, с чего начать
Научитесь: Профессия Python-разработчик Узнать больше
Понравилась статья?
Да

Пользуясь нашим сайтом, вы соглашаетесь с тем, что мы используем cookies 🍪

Ссылка скопирована