Перейти к содержимому

Structured Append (составной QR-код)

Structured Append — режим ISO/IEC 18004, при котором одно сообщение разбивается на цепочку до 16 QR-кодов с индикатором позиции и контрольной суммой, а сканер собирает их обратно в единые данные.

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

Как работает Structured Append

Сообщение делится на части, и каждая записывается в отдельный символ. В служебной области кода появляется заголовок Structured Append: индикатор режима (двоичное 0011), затем номер символа m и общее число символов n — по 4 бита на каждое поле, поэтому в наборе не больше 16 кодов. Следом идёт байт контрольной суммы (parity).

Parity одинаков во всех кодах набора. Его получают побитовым XOR всех байтов исходного сообщения — ещё до разбиения на части. Собрав коды, сканер пересчитывает это значение и сверяет: совпало — символы из одного набора, нет — среди них затесался чужой код. Пара m из n задаёт порядок, поэтому части можно подносить в любой последовательности — данные соберутся верно.

Когда применяют

Основной сценарий — данные не влезают в один код разумной версии. Ёмкость QR конечна: даже версия 40 держит ограниченный объём, а высокий уровень коррекции ошибок его ещё урезает. Второй случай — мало места: на мелкой детали или узкой упаковке крупный код не напечатать, зато несколько маленьких помещаются. В промышленной маркировке так дробят длинные строки с датой, партией и серийным номером.

Чем это отличается от набора отдельных кодов

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

Ограничение одно, зато весомое: режим должен поддерживать сканер. Многие камеры смартфонов и простые приложения игнорируют заголовок Structured Append и показывают каждый код по отдельности. Для массовой аудитории надёжнее уместить данные в один QR-код, а составной набор оставить для сценариев с контролируемым оборудованием.