Открыть сервисСервис

QR-код: структура, формирование и стандарты

QR-код (англ. Quick Response code, «быстрый ответ») — это двухмерный (матричный) штрихкод, представляющий собой квадратную матрицу из чёрных и белых модулей, хранящую цифровую информацию. Код разработан в 1994 году японской компанией Denso Wave для автоматической идентификации деталей на автомобильных конвейерах. Благодаря высокой ёмкости данных, устойчивости к повреждениям и возможности быстрого сканирования QR-код получил широкое распространение в логистике, маркетинге, платежах и документообороте.

История создания

QR-код был изобретён в 1994 году инженерами компании Denso Wave — подразделения корпорации Denso, связанной с Toyota. Руководителем проекта был Масахиро Хара. Исходная задача состояла в том, чтобы создать штрихкод, способный хранить значительно больше информации, чем линейные штрихкоды, и при этом считываться с высокой скоростью на конвейерном производстве.

Первый стандарт QR-кода — JIS X 0510 — был утверждён в Японии в 1999 году, а в 2000 году код был принят в качестве международного стандарта ISO/IEC 18004. Denso Wave владеет патентами на технологию, но сознательно отказалась от их монополизации, разрешив свободное использование QR-кода без лицензионных платежей.

Принцип записи данных

Данные в QR-коде кодируются с помощью расположения модулей — чёрных и белых квадратов — на квадратной сетке. Каждый модуль несёт один бит информации. Размер матрицы измеряется в модулях и обозначается версией кода: от версии 1 (21×21 модуль) до версии 40 (177×177 модулей). Чем выше версия, тем больше данных может быть закодировано — от 7 байтов в версии 1 до 2953 байтов в версии 40 в байтовом режиме.

Режимы кодирования

QR-код поддерживает несколько режимов записи данных, которые могут комбинироваться внутри одного кода:

  • Цифровой режим — числовые данные, до 7089 цифр в максимальной версии. Каждые три цифры упаковываются в 10 бит.
  • Алфавитно-цифровой режим — символы набора 0-9, A-Z, пробел, знаки $%*+-./:, до 4296 символов. Пары символов упаковываются в 11 бит.
  • Байтовый режим — произвольные данные в кодировке ISO-8859-1 или UTF-8, до 2953 байтов. Используется для URL, текста на кириллице и других языках.
  • Кандзи-режим — японские иероглифы в кодировке Shift JIS, до 1817 символов.

Коррекция ошибок

Важной особенностью QR-кода является встроенная коррекция ошибок на основе кодов Рида — Соломона. Доступны четыре уровня коррекции: L (7 %), M (15 %), Q (25 %) и H (30 %). Это означает, что код может быть восстановлен даже при повреждении или загрязнении до 30 % его площади. Более высокий уровень коррекции увеличивает размер кода, но повышает устойчивость к дефектам печати и загрязнению.

Структура матрицы

Помимо модулей с данными, QR-код содержит служебные элементы, необходимые для распознавания сканером:

  • Поисковые узоры — три квадратных паттерна в углах (кроме нижнего правого), позволяющие определить положение, масштаб и ориентацию кода.
  • Узоры выравнивания — малые квадраты, помогающие скорректировать искажения при сканировании с наклоном. Их количество зависит от версии.
  • Тайминговые узоры — чередующиеся модули между поисковыми узорами, задающие координатную сетку.
  • Тёмный модуль — один фиксированный модуль, служащий ориентиром.
  • Форматная информация — данные об уровне коррекции и маске, размещённые рядом с поисковыми узорами.
  • Версионная информация — присутствует в версиях 7 и выше.

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

Стандарты и версии

Основной стандарт — ISO/IEC 18004:2015 «Information technology — Automatic identification and data capture techniques — Code 128 bar code symbology specification» (актуальная редакция). В России QR-код применяется в соответствии с международными стандартами, а также в рамках национальных систем маркировки, например, «Честный знак» и маркировка лекарственных средств.

Применение

QR-коды используются в широком спектре областей:

  • Логистика и производство — маркировка деталей и упаковок, отслеживание перемещений.
  • Платежи и финансы — оплата по QR-коду в розничной торговле, в том числе через систему СБП (Система быстрых платежей) в России.
  • Маркетинг — размещение ссылок на рекламных материалах, витринах, упаковках.
  • Транспорт — билеты на поезда, самолёты, общественный транспорт.
  • Документооборот — электронные документы, включая чеки и счета.
  • Медицина — идентификация пациентов и препаратов.

Генерация QR-кода

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

Ограничения и безопасность

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

Источники:

  • ISO/IEC 18004:2015. Information technology — Automatic identification and data capture techniques — QR Code bar code symbology specification
  • Denso Wave Incorporated. Официальный сайт разработчика технологии QR-кода
  • JIS X 0510:1999. Японский промышленный стандарт на QR-код
  • Хара М. Оригинальная технология QR-кода // Denso Technical Review, 1999
Заметили ошибку или не согласны с информацией в статье? Напишите нам support@bfometr.ru