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
