Матричный код
Матричный код — двумерный штрих-код, где данные записаны в прямоугольной сетке модулей (ячеек): QR, Data Matrix, Aztec, MaxiCode.
Определение матричного кода
Матричный код (matrix code) — разновидность двумерного штрих-кода, в которой данные закодированы в прямоугольной или квадратной сетке из чёрных и белых модулей (ячеек). Каждый модуль — это один бит: чёрный обычно означает «1», белый — «0». Информация читается по обеим осям сразу, поэтому такой код называют матричным, а сканером выступает камера (imager), а не лазер.
К матричным кодам относятся QR-код (ISO/IEC 18004), Data Matrix (ISO/IEC 16022), Aztec (ISO/IEC 24778), MaxiCode (ISO/IEC 16023) и китайский Han Xin (ISO/IEC 20830, 2017). Их противоположность — стековые (stacked) коды вроде PDF417, где 2D-структура собирается из нескольких строк обычного линейного штрих-кода, наложенных друг на друга.
Как устроен матричный код
У любого матричного кода есть три группы элементов. Первая — финдер-паттерны (finder patterns): фиксированные метки, по которым камера находит код в кадре и определяет его ориентацию. У QR это три квадрата в углах, у Data Matrix — L-образная сплошная рамка, у Aztec и MaxiCode — концентрическая мишень (bullseye) в центре. Вторая — тайминг-паттерны, задающие координатную сетку и размер матрицы. Третья — область данных с полезной нагрузкой и байтами избыточности.
Избыточность обеспечивает алгоритм коррекции ошибок Reed-Solomon: даже при повреждении части поверхности (у QR — до 30%) код декодируется полностью. Именно матричная структура плюс двумерные финдеры позволяют считывать код под наклоном, с поворотом и с зеркальным отражением — то, что недоступно линейным штрих-кодам.
Связанные концепции
- Двумерный код — надкатегория: включает и матричные, и стековые форматы.
- Стековые коды (PDF417) — 2D из наложенных линейных строк, читаются лазером.
- Финдер-паттерн — метка поиска и ориентации, ключевой признак матричного кода.
- Reed-Solomon — алгоритм коррекции ошибок во всех матричных форматах.
Создать матричный QR-код можно в нашем генераторе QR-кодов.
Частые вопросы
Чем матричный код отличается от стекового?
В матричном коде (QR, Data Matrix, Aztec) данные лежат в единой двумерной сетке модулей и читаются по обеим осям камерой. Стековый код (PDF417, MicroPDF417) — это несколько строк обычного линейного штрих-кода, наложенных друг на друга; его можно сканировать даже лазером построчно. Матричные форматы компактнее и вмещают больше данных на единицу площади.
Какие коды считаются матричными?
К матричным относят QR-код (ISO/IEC 18004), Data Matrix (ISO/IEC 16022), Aztec (ISO/IEC 24778), MaxiCode (ISO/IEC 16023) и китайский Han Xin (ISO/IEC 20830). Все они кодируют данные в квадратной или прямоугольной сетке ячеек и требуют камерного сканера. PDF417 в эту группу не входит — это стековый формат.
Зачем матричному коду финдер-паттерны?
Финдер-паттерны — фиксированные метки, по которым камера мгновенно находит код в кадре и вычисляет его ориентацию и масштаб. У QR это три угловых квадрата, у Data Matrix — L-образная рамка, у Aztec и MaxiCode — центральная мишень. Без них сканер не смог бы прочитать код под наклоном или поворотом.
Какой матричный код самый распространённый?
QR-код — безусловный лидер по массовости: он вмещает до 7089 цифр, читается любым смартфоном и применяется в платежах, маркетинге и билетах. Data Matrix доминирует в маркировке товаров (в России — «Честный знак») благодаря компактности. MaxiCode используется в логистике UPS, Aztec — в транспортных билетах и посадочных талонах.
Как сканируется матричный код?
Только камерным сканером (imager) или камерой смартфона: устройство захватывает всё изображение целиком, находит финдер-паттерны, восстанавливает сетку модулей и декодирует данные с коррекцией Reed-Solomon. Лазерный сканер, читающий линию, для матричных кодов не подходит — исключение составляют стековые PDF417, но они не относятся к матричным.