ГОСТ ISO/IEC 15438-2018. Межгосударственный стандарт. Информационные технологии. Технологии автоматической идентификации и сбора данных. Спецификация символики штрихового кода PDF417
5.11 Низкоуровневое кодирование
Низкоуровневое кодирование необходимо для преобразования значений кодовых слов в соответствующие знаки символа (последовательности штрихов и пробелов), при этом матрица символа должна быть фиксированной.
На рисунке 8 схематично представлены соответствующие позиции каждого кодового слова данных, кодового слова коррекции ошибок и индикаторов строк для символа PDF417.
Lr - левый индикатор строки; Rr - правый индикатор строки;
затененная область - область кодовых слов данных;
незатененная область под областью кодовых слов данных -
предназначена для кодовых слов коррекции ошибок
Рисунок 8 - Схема размещения кодовых слов
типового символа PDF417
5.11.1 Кластеры
В PDF417 используют систему распознавания локальной строки для определения перехода от строки к строке.
Наборы кодовых слов представлены в каждом из трех кластеров. Кластеры имеют номера 0, 3 и 6. В приложении A приведены соответствующие последовательности штрихов и пробелов для каждого знака символа, представляющие каждое кодовое слово и кластер.
Для кодирования индикаторов строк и других кодовых слов каждая строка должна содержать знаки символа (комбинации в виде штрихов и пробелов) только одного кластера. В первой строке используют знаки символа из кластера 0, во второй строке - из кластера 3, в третьей строке - из кластера 6, в четвертой строке - из кластера 0 и так далее. Последовательность кластеров 0, 3, 6 должна постоянно повторяться. Номер кластера K для любой строки вычисляют по формуле:
K = [(номер строки - 1) mod 3]·3,
где все строки пронумерованы от 1 до r (в соответствии с 4.1)
Так как любые две смежные строки имеют разные кластеры, во время декодирования символа PDF417 декодер может использовать пути сканирования, которые пересекают строки.
5.11.2 Определение матрицы символа
Матрицу строк и столбцов символа окончательно определяют в соответствии с процедурами, приведенными в 5.9.2. Они обеспечивают получение значений r и c.
5.11.3 Определение значений левого и правого индикаторов строк
Индикаторы строк в символе PDF417 - кодовые слова, которые должны кодировать несколько основных параметров: номер строки (F), число строк (r), число столбцов (c) и уровень коррекции ошибки (s). Эта информация должна быть отнесена к трем строкам, и цикл должен повторяться непрерывно. Номер строки (F) должен быть закодирован в каждой строке.
5.11.3.1 Левый индикатор строк
Левый индикатор строк вычисляют по формулам:
при KF = 0; LF = 30·((F - 1) div 3) + (r - 1) div 3;
при KF = 3; LF = 30·((F - 1) div 3) + (s x 3) + (r - 1) mod 3;
при KF = 6; LF = 30·((F - 1) div 3) + (c - 1),
где c, F, r, s и K соответствуют определениям, приведенным в 4.1
5.11.3.2 Правый индикатор строк
Правый индикатор строк вычисляют по формулам:
при KF = 0; RF = 30·((F - 1) div 3) + (c - 1);
при KF = 3; RF = 30·((F - 1) div 3) + (r - 1) div 3;
при KF = 6; RF = 30·((F - 1) div 3) + (s x 3) + (r - 1) mod 3,
где c, F, r, s и K соответствуют определениям, приведенным в 4.1
5.11.4 Кодирование строки
В каждой строке должны быть согласованы с номером кластера следующие знаки символа:
- левый индикатор строки;
- знаки символа, представляющие кодовые слова данных и (или) коррекции ошибок, в количестве, равном числу столбцов;
- правый индикатор строки.
Знаки СТАРТ и СТОП должны быть одинаковы для всех строк.
Символ должен кодироваться строка за строкой, с включением c (числа столбцов) кодовых слов в каждой строке. Первая строка должна включать дескриптор длины символа в первом столбце. Последняя строка должна включать частично или полностью кодовые слова коррекции ошибок.
