7 gs1 qr code: различия между версиями

Материал из База знаний АО АСП
Перейти к навигации Перейти к поиску
Новая страница: «======= GS1 QR Code ======= Символы символики GS1 QR Code являются подмножеством символики QR Code по ISO/IEC 18004. Символика QR Code поддерживает структуры данных Системы GS1. Внедрение GS1 QR Code должно соответствовать стандартам по применению Системы GS1. Символы QR Code применяют для...»
 
Нет описания правки
Строка 58: Строка 58:


[[https///habr.com/ru/post/172525/Подробнее]]
[[https///habr.com/ru/post/172525/Подробнее]]
[[Category:3 сбор данных]]

Версия от 23:10, 24 февраля 2025

= GS1 QR Code =

Символы символики GS1 QR Code являются подмножеством символики QR Code по ISO/IEC 18004. Символика QR Code поддерживает структуры данных Системы GS1. Внедрение GS1 QR Code должно соответствовать стандартам по применению Системы GS1. Символы QR Code применяют для кодирования дополнительной информации к информации на упаковке. Кодируется алфавитно-цифровая информация, байтовая информация в соответствии с ISO/IEC 8859-1.

'Алгоритм генерации QR-кода

'

__QR код__ — это монохромная картинка, на которой некоторые устройства (например смартфон со специальным приложением) распознают текст. Этим текстом может быть не только простая фраза, но и, хоть это и не входит в официальную спецификацию, ссылка, номер телефона или визитная карточка. Такие коды чаще всего используют, чтобы закодировать ссылку и распечатать её на плакате или визитке.

Эта статья — подробная инструкция по созданию QR кода с примерами на каждом шаге, которая требует от вас только базового умения работать с бинарными данными и владения любым языком программирования (если вы хотите создать автоматический генератор QR кода).

За основу этой статьи взят цикл статей «QR Code Demystified» Джейсона Брауна (Jason Brown). В этих статьях опущено много нюансов, что вызвало у меня некоторые проблемы. Все эти нюансы учтены и упомянуты здесь.

Процесс генерации QR кода делится на несколько чётких шагов:

 - Кодирование данных.
 - Добавление служебной информации и заполнения.
 - Разделение информации на блоки.
 - Создание байтов коррекции.
 - Объединение блоков.
 - Размещение информации на QR коде.
'Кодирование данных

'

QR код поддерживает несколько способов кодирования данных, в зависимости от того, какие символы используются: цифровое, буквенно-цифровое, кандзи (китайско-японские иероглифы) и побайтовое кодирование. Цифровое кодирование подразумевает использования только цифр от 0 до 9, буквенно цифровое — прописные буквы латинского алфавита, цифры и символы $%*+-./: и пробел, кандзи я рассматривать не буду, а байты кодирования не требуют вообще. Сначала вам надо создать пустую последовательность бит, которая дальше будет заполняться.

'Цифровое кодирование

'

Этот тип кодирования требует 10 бит на 3 символа. Вся последовательность символов разбивается на группы по 3 цифры, и каждая группа (трёхзначное число) переводится в 10-битное двоичное число и добавляется к последовательности бит. Если общее количество символов не кратно 3, то если в конце остаётся 2 символа, полученное двузначное число кодируется 7 битами, а если 1 символ, то 4 битами.

Например, есть строка «12345678», которую надо закодировать. Мы разбиваем её на числа: 123, 456 и 78, затем переводим каждое из них в двоичный вид: 0001111011, 0111001000 и 1001110, и объединяем это в один поток: 000111101101110010001001110.

'Буквенно-цифровое кодирование

'

В этом случае на 2 символа требуется 11 бит информации. Входной поток символов разделяется на группы по 2, в группе каждый символ кодируется согласно таблице внизу, значение первого символа в группе умножается на 45 и прибавляется к значение второго символа. Полученное число переводится в 11-битное двоичное число и добавляется к последовательности бит. Если в последней группе 1 символ, то его значение сразу кодируется 6-битным числом и добавляется к последовательности бит.

Значения символов в буквенно-цифровом кодировании.

Например, строка «HELLO» кодируется следующим образом. Разбиваем на группы: HE, LL, O; находим соответствующее значение символам в каждой группе: (17, 14), (21, 21), (24); находим значение для каждой группы: 17 * 45 + 14 = 779, 21 * 45 + 21 = 966, 24 = 24; переводим каждое значение в двоичный вид: 779 = 01100001011, 966 = 01111000110, 24 = 011000; и объединяем всё это в одну последовательность бит: 0110000101101111000110011000.

'Побайтовое кодирование

'

Это универсальный способ кодирования, которым можно закодировать любые символы. Единственным недостатком метода является относительно низкая плотность информации. В этом случае текст кодируется в любой кодировке (рекомендуемо в UTF-8) и полученная последовательность байт берётся в неизменном виде.

Например, строка «Хабр», закодированния кодировкой UTF-8, состоит из следующих байт: 11010000, 10100101, 11010000, 10110000, 11010000, 10110001, 11010001 и 10000000. Их надо просто объединить в один поток бит: 1101000010100101110100001011000011010000101100011101000110000000.

https///habr.com/ru/post/172525/Подробнее