Как работают QR-коды: технический углублённый разбор
Как работают QR-коды: технический углублённый разбор
QR-коды (Quick Response codes) — это двумерные матричные штрихкоды, изобретённые в 1994 году компанией Denso Wave, дочерним предприятием Toyota. Разработанные для высокоскоростного декодирования, QR-коды хранят данные в сетке из чёрных и белых квадратов (модулей), используя четыре стандартизированных режима кодирования и коррекцию ошибок Рида-Соломона. В отличие от линейных штрихкодов, кодирующих данные в одном измерении, QR-коды упаковывают информацию как по горизонтали, так и по вертикали, достигая до 7 089 цифровых символов в одном символе.
Анатомия QR-кода
Каждый QR-код состоит из нескольких функциональных зон. Понимание этих компонентов помогает создавать коды, которые надёжно сканируются и максимизируют ёмкость данных.
Поисковые узоры
Три одинаковых квадратных узора, расположенных в верхнем левом, верхнем правом и нижнем левом углах. Каждый поисковый узор состоит из чёрного квадрата 7x7, белого квадрата 5x5 и чёрного квадрата 3x3 в центре. Эти узоры позволяют программному обеспечению сканирования быстро определить положение, ориентацию и угол QR-кода независимо от поворота.
Выравнивающие узоры
Более мелкие регистрационные метки (обычно 5x5 модулей), встроенные по всему коду. Выравнивающие узоры помогают сканерам корректировать искажения, когда код напечатан на изогнутых поверхностях, таких как упаковка товаров или банки для напитков. Коды версии 2 и выше имеют как минимум один выравнивающий узор; их количество увеличивается с размером кода.
Синхронизирующие узоры
Чередующиеся чёрные и белые линии, проходящие между поисковыми узорами как по горизонтали, так и по вертикали. Эти модули определяют позиции строк и столбцов сетки данных, помогая сканеру определить размер каждого модуля.
Информация о формате
Специальная область рядом с поисковыми узорами, которая кодирует уровень коррекции ошибок и шаблон маскирования. Сканер считывает это в первую очередь, чтобы знать, как правильно декодировать остальные данные.
Области данных и коррекции ошибок
Оставшиеся модули образуют две чередующиеся области: кодовые слова данных (закодированная полезная нагрузка) и кодовые слова коррекции ошибок (избыточные данные для восстановления при повреждении). Они расположены в определённом битовом порядке, который зависит от версии QR-кода.
Свободная зона
Обязательная чистая рамка шириной не менее четырёх модулей, окружающая весь QR-код. Без этой свободной зоны сканеры не могут надёжно отличить код от окружения. Это одна из наиболее распространённых причин сбоя сканирования в дизайнерских кодах.
Методы кодирования данных
QR-коды поддерживают четыре различных режима кодирования, каждый из которых оптимизирован для определённого типа данных. Кодировщик автоматически выбирает наиболее эффективный режим на основе вашего ввода.
Числовой режим
Оптимизирован исключительно для цифр от 0 до 9. Это наиболее экономный по пространству режим, упаковывающий три цифры в 10 бит (против 8 бит на байт в стандартном двоичном коде). Максимальная ёмкость при версии 40-L: 7 089 символов. Идеально подходит для номеров телефонов, идентификаторов товаров и числовых кодов.
Буквенно-цифровой режим
Кодирует цифры (0-9), заглавные буквы (A-Z) и девять специальных символов: пробел, $, %, *, +, -, ., / и :. Каждая пара символов сжимается в 11 бит. Максимальная ёмкость: 4 296 символов. Лучше всего для URL, избегающих строчных букв, и коротких текстовых кодов.
Байтовый режим
Кодирует любые 8-битные символы с использованием кодировки ISO-8859-1 (Latin-1). Когда содержимое содержит строчные буквы, смешанный регистр или символы UTF-8, кодировщик переключается на байтовый режим. Максимальная ёмкость: 2 953 символа. Это наиболее гибкий режим, покрывающий большинство распространённых случаев, таких как полные URL и смешанный текст.
Режим кандзи
Специализированный режим для двухбайтовых японских иероглифов (кодировка Shift JIS). Каждый иероглиф кандзи сжимается в 13 бит вместо 16 бит. Максимальная ёмкость: 1 817 символов. Реже используется за пределами Японии, но демонстрирует происхождение формата.
Процесс кодирования по шагам
- Анализ данных — Кодировщик анализирует входное содержимое и выбирает наиболее эффективный режим
- Индикатор режима — 4-битный код сигнализирует, какой режим кодирования был выбран
- Количество символов — Битовая последовательность записывает длину данных
- Кодирование данных — Содержимое преобразуется в битовый поток с использованием выбранного режима
- Терминатор — Короткая заполняющая последовательность отмечает конец данных
- Битовое заполнение — Оставшаяся ёмкость заполняется чередующимися битами 0 и 1 для достижения полной границы кодового слова
- Генерация коррекции ошибок — Кодовые слова Рида-Соломона вычисляются и добавляются
Версии и размеры QR-кодов
QR-коды определены в 40 версиях, от версии 1 (21x21 модуль) до версии 40 (177x177 модулей). Каждая последующая версия добавляет 4 модуля на сторону.
| Версия | Размеры | Числовая ёмкость (L) | Типичное использование | |---------|-----------|---------------------|-------------| | 1 | 21x21 | 41 | Простые URL | | 2 | 25x25 | 77 | Короткие ссылки | | 4 | 33x33 | 187 | vCard, URL | | 6 | 41x41 | 322 | Конфигурации WiFi | | 10 | 57x57 | 652 | Средний текст | | 20 | 97x97 | 1 746 | Документы | | 40 | 177x177 | 7 089 | Максимум данных |
Большинство потребительских QR-кодов используют версии от 2 до 10. Более высокие версии содержат более мелкие модули, требующие печати с более высоким разрешением и более точного сканирования.
Коррекция ошибок Рида-Соломона
QR-коды используют коррекцию ошибок Рида-Соломона, разделяя данные на блоки и генерируя избыточные кодовые слова для каждого блока. Существует четыре уровня:
- Level L — Восстанавливает 7% повреждённых данных. Максимальная ёмкость данных, минимальная защита.
- Level M — Восстанавливает 15%. Стандартный выбор для общего использования. Большинство генераторов QR-кодов по умолчанию используют этот уровень.
- Level Q — Восстанавливает 25%. Надёжная защита для кодов на упакованных товарах или часто обрабатываемых предметах.
- Level H — Восстанавливает 30%. Максимальная защита для уличных или промышленных сред.
Система коррекции ошибок также позволяет популярную практику встраивания логотипов и элементов оформления в QR-коды. Перекрытые модули восстанавливаются из избыточных данных при условии, что перекрытие не превышает ёмкость коррекции ошибок.
Как работает сканирование
Современное сканирование QR-кодов включает сложный конвейер, работающий за миллисекунды:
- Обнаружение — Камера захватывает изображение, и программное обеспечение находит поисковые узоры для определения границ кода
- Коррекция перспективы — Сканер применяет геометрические преобразования для исправления углового обзора и изогнутых поверхностей
- Бинаризация — Изображение преобразуется в чисто чёрно-белое с использованием адаптивной пороговой обработки для обработки различного освещения
- Считывание модулей — Сканер считывает цвет каждого модуля в точках пересечения сетки
- Декодирование формата — Уровень коррекции ошибок и шаблон маскирования извлекаются из областей формата
- Извлечение данных — Маскирование обращается, и битовый поток данных считывается в указанном порядке
- Проверка ошибок — Вычисление синдрома Рида-Соломона обнаруживает и исправляет ошибки
- Декодирование — Очищенный битовый поток преобразуется обратно в исходное содержимое с использованием объявленного режима кодирования
Шаблоны маскирования
QR-коды применяют один из восьми шаблонов маскирования (пронумерованных от 0 до 7) к области данных перед окончательным рендерингом. Маскирование обеспечивает сбалансированное распределение чёрных и белых модулей, предотвращая большие пустые области, которые могли бы сбить сканеры с толку. Сканер считывает ссылку на маску из информации о формате и обращает маскирование во время декодирования.
Микро QR-коды
Вариант под названием Micro QR Code использует один поисковый узор (вместо трёх) и выпускается в четырёх меньших версиях. Микро QR-коды полезны для очень маленьких пространств, таких как электронные компоненты и медицинские устройства, с максимальной ёмкостью 355 цифровых символов.
Создавайте QR-коды с уверенностью
Понимание лежащей в основе технологии помогает создавать QR-коды, которые надёжно сканируются в любых условиях. Наш бесплатный онлайн-генератор QR-кодов автоматизирует все технические решения — выбор версии, оптимизацию режима, коррекцию ошибок и маскирование — так что вы получаете готовый к использованию код за секунды. Выбирайте из форматов URL, текст, vCard, WiFi и других с полными возможностями настройки.