ГОСТ ISO/IEC 15438-2018. Межгосударственный стандарт. Информационные технологии. Технологии автоматической идентификации и сбора данных. Спецификация символики штрихового кода PDF417
Приложение H
(обязательное)
МАКРО PDF417
H.1 Обзор Макро PDF417
Макро PDF417 предусматривает стандартный механизм создания распределенного представления файлов, размеры которых слишком велики для того, чтобы быть представленными в отдельном символе PDF417. Символы Макро PDF417 отличаются от обычных символов PDF417 тем, что они содержат дополнительную управляющую информацию в управляющем блоке Макро PDF417.
При использовании Макро PDF417 большие файлы данных разделяются на несколько сегментов файла и каждый кодируется в отдельных символах. Управляющий блок определяет идентификацию файла, последовательность соединения, а также иную нестандартную информацию о файле. Декодер Макро PDF417 использует информацию управляющего блока для точного восстановления файла независимо от того, в каком порядке были отсканированы символы.
H.2 Синтаксис Макро PDF417
Каждый символ Макро PDF417 должен кодировать управляющий блок Макро PDF417, в котором содержится управляющая информация. Управляющий блок начинается с кодового слова Макро маркера (Macro marker) (значение 928). Управляющий блок следует за блоком данных, с которым он связан; число кодовых слов в управляющем блоке Макро PDF417 учитывают как данные и включают в значение дескриптора длины символа. Окончание управляющего блока Макро PDF417 идентифицируется началом кодовых слов коррекции ошибки.
Примечание - Символ, не содержащий данных пользователя, отличных от управляющего блока Макро PDF417, является действительным символом.
Управляющий блок Макро PDF417 должен содержать не менее двух обязательных полей: индекса сегмента (segment index) и идентификации файла (file ID). Он также может содержать ряд необязательных полей (см. H.2.3).
На рисунке H.1 показано расположение управляющего блока в символе Макро PDF417.
Схема стандартного символа PDF417
Схема символа Макро PDF417
Рисунок H.1 - Схемы символов PDF417
H.2.1 Индекс сегмента
В Макро PDF417 каждый символ представляет сегмент целого файла. Для восстановления целого файла сегменты необходимо разместить в определенном порядке. Этот процесс облегчает управляющая информация, содержащаяся в управляющем блоке Макро PDF417. Для файла, разделенного на множество j символов Макро PDF417, поле индекса сегмента (segment index) в каждом управляющем блоке Макро PDF417 символа содержит значения от 0 до j - 1, соответствующие относительной позиции содержимого этого символа внутри распределенного представления.
Поле индекса сегмента состоит из поля длиной в два кодовых слова и кодируется с помощью режима цифрового уплотнения в соответствии с 5.4.4. При кодировании значение индекса сегмента должно быть дополнено начальными нулями до пяти разрядов до применения режима цифрового уплотнения, и это переключение в режим цифрового уплотнения не требует явной фиксации режима (кодового слова 902). Самое большое допустимое значение в поле индекса сегмента равно 99 998. Таким образом, распределенное представление файла данных может содержать до 99 999 символов Макро PDF417.
Примечание - При переводе в объем информации 99 999 символов составят примерно 110 млн байтов данных в режиме байтового уплотнения, или 184 млн. знаков в режиме текстового уплотнения, или около 300 млн знаков в режиме цифрового уплотнения.
H.2.2 Поле идентификатора файла
Для каждого связанного символа Макро PDF417 поле идентификации файла (file ID) должно содержать одно и то же значение, которое обеспечивает соответствие всех воссоединенных данных символов одному распределенному представлению файла. Идентификация файла представляет собой поле переменной длины, которое начинается с первого кодового слова, следующего за индексом сегмента, и продолжается до начала необязательных полей (если таковые присутствуют) или до окончания управляющего блока 0Макро PDF417 (в случае отсутствия необязательных полей).
Каждое кодовое слово в идентификации файла может иметь значение от 0 до 899, эффективно создавая серии идентификации файла для номеров базы 900. Каждое кодовое слово серии передается в качестве 3-разрядного десятичного значения представления ASCII (версия КОИ-7).
Примечание - На эффективность схемы идентификации файла влияет длина поля идентификации файла и соответствие алгоритма, используемого для генерирования значения идентификации файла.
H.2.3 Необязательные поля
Необязательные поля (optional field) могут следовать после идентификации файла. Каждое необязательное поле начинается со специальной последовательности-указателя (tag sequence) и продолжается до начала следующего необязательного поля (если оно присутствует) или окончания управляющего блока (если отсутствует следующее необязательное поле). Последовательность-указатель состоит из кодового слова 923, за которым следует отдельное кодовое слово указателя поля (field designator). В каждом необязательном поле данные, следующие за последовательностью-указателем, имеют интерпретацию, обусловленную спецификой поля. Не следует использовать пустые необязательные поля. В таблице H.1 представлено соответствие между текущими заданными указателями полей и необязательным содержимым полей. Каждое необязательное поле начинается с подразумеваемого возврата к режиму уплотнения, представленному в таблице H.1 и с подразумеваемого возвращения к ECI 000002 (или GLI 0 для кодирующих устройств, соответствующих ранее опубликованным стандартам PDF417). Также могут быть использованы управляющая последовательность ECI и функции фиксации режима и регистра режима, но только в необязательных полях, изначально находящихся в режиме текстового уплотнения.
Таблица H.1
Указатели необязательных полей Макро PDF417
Указатель поля (Field Designator) | Переданное байтовое значение | Содержимое | Исходный режим уплотнения | Фиксированный режим уплотнения <a> | Общее число кодовых слов <b> |
0 | 48 | Имя файла (File Name) | Текстовое уплотнение | Нет | Переменное |
1 | 49 | Число сегментов (Segment Count) | Цифровое уплотнение | Да | 4 |
2 | 50 | Отметка времени (Time Stamp) | Цифровое уплотнение | Да | 6 |
3 | 51 | Отправитель (Sender) | Цифровое уплотнение | Нет | Переменное |
4 | 52 | Получатель (Addressee) | Цифровое уплотнение | Нет | Переменное |
5 | 53 | Размер файла (File Size) | Цифровое уплотнение | Да | Переменное |
6 | 54 | Контрольная сумма (Checksum) | Цифровое уплотнение | Да | 4 |
<a> "Да" в графе "Фиксированный режим уплотнения" означает, что в этом поле не допускается использовать никакие функции фиксации режима и регистра режима. <b> В последней графе "Общее число кодовых слов" учитывают последовательность-указатель из двух кодовых слов. |
Эти поля всегда представляют параметры глобального файла и поэтому не нуждаются в представлении в управляющем блоке более чем в одном символе Макро PDF417 в пределах распределенного представления файла, за исключением поля числа сегментов (segment count), в соответствии с представленным ниже. Сегмент, который содержит эти поля, задается специальной реализацией кодирующего устройства. Если особое поле подлежит появлению более чем в одном сегменте, оно должно идентично появиться в каждом сегменте. Для необязательных полей не существует определенного порядка.
В соответствии с таблицей H.1 все необязательные поля используют стандарт высокоуровневого кодирования PDF417. Действующий режим по умолчанию в начале каждого поля должен быть задан как в таблице H.1 безотносительно к функциям фиксации режима и регистра режима, ранее присутствующим в символе.
Особое построение необязательного поля должно соответствовать нижеследующему:
- поле числа сегментов (Segment Count) (идентифицирующее общее количество символов PDF417 в распределенном файле) может содержать значения от 1 до 99 999 и должно быть закодировано как два кодовых слова. Если используют необязательное поле числа сегментов, то оно должно быть представлено в каждом сегменте;
- поле отметки времени (Time Stamp) подлежит интерпретации в режиме цифрового уплотнения. Оно указывает отметку времени в исходном файле, и выглядит как астрономическое время в секундах, начиная с 1970:01:01:00:00:00 (т.е. 00:00:00 по Гринвичу на 1 января 1970 г.). Используя данный формат, четыре кодовых слова могут закодировать любую дату в пределах следующих 200 столетий;
- поле размера файла (File Size) содержит размер в байтах исходного единого файла;
- поле контрольной суммы (Checksum) содержит значение контрольной суммы 16-битового (2 байта) циклически избыточного кода (CRC), использующей полином CCITT-16x16 + x12 + x5 + 1, вычисленный по всему исходному единому файлу.
Размер файла и контрольную сумму следует вычислять из исходного файла до прибавления любых управляющих последовательностей ECI, используемых для кодирования интерпретаций в расширенном канале. Имеется в виду, что если приемное устройство проверяет контрольную сумму после осуществления приема, исходный файл должен быть дословно восстановлен. Это требуется для проверки данной необязательной контрольной суммы, чтобы не проводились никакие задаваемые пользователем или необязательные преобразования потока байтов даже в том случае, когда проверка может быть выполнена в процессе декодирования ECI.
Если используют CRC, вычисление может быть выполнено до отправки данных к принтеру или в самом принтере на основе возможностей принтера.
Значения указателя поля больше шести в настоящее время не заданы. Однако, оборудование, декодирующее PDF417, должно декодировать и передавать любые встречающиеся необязательные поля со значением указателя поля от 7 до 9 (значение байта от 55 до 57) или от A до Z (значения байта от 65 до 90) путем обработки данных поля в качестве данных, исходно находящихся в режиме текстового уплотнения и имеющих переменную длину.
H.2.4 Ограничитель Макро PDF417
Управляющий блок в символе, представляющем последний сегмент файла Макро PDF417, содержит особый маркер (называемый ограничителем Макро PDF417 - Macro PDF417 terminator), состоящий из кодового слова 922 в конце управляющего блока. Управляющий блок любого иного символа должен оканчиваться после любых необязательных полей, не имеющих специального ограничителя.
H.3 Рассмотрение высокоуровневого кодирования
Несмотря на то, что Макро PDF417 подразумевает механизм логического связывания множества символов, при высокоуровневом кодировании PDF417, каждый символ должен оставаться как отдельный объект. Таким образом, сфера действия переключения режима должна ограничиваться рамками символа, в котором она возникла. Каждый символ должен начинаться в подрежиме прописных букв режима текстового уплотнения.
Два обязательных поля должны быть закодированы следующим образом: поле индекса сегмента закодировано в режиме цифрового уплотнения; а поле идентификации файла кодируется как последовательность чисел базы 900.
В контексте необязательного поля управляющего блока режимы уплотнения, указанные в таблице H.1, должны замещать текущие режимы, заданные кодовыми словами идентификатора режима в пределах области кодовых слов данных символа. Однако сфера действия текущей интерпретации в расширенном канале переходит через управляющий блок Макро PDF417 к началу следующего символа Макро PDF417. Каждое поле управляющего блока Макро начинается с подразумеваемого возврата к ECI 000002 (или GLI 0 для кодирующих устройств, совместимых с исходными стандартами PDF417). Также должна быть возможность установить другую ECI внутри необязательного поля управляющего блока в режиме текстового уплотнения (например, для правильного представления греческого имени получателя). Управляющую последовательность ECI можно разместить в любой допустимой позиции (5.5.3) после кодового слова 923.
H.4 Пример кодирования
Приведенный пример показывает кодирование управляющего блока Макро PDF417:
Комплект Макро PDF417 кодирует в общей сложности 4 567 байт, заданных пользователем данных в четырех символах PDF417 (или сегментах файлов). Другие "заголовки" данных, подлежащие кодированию:
- идентификатор файла = 17base 900 53base 900;
- число сегментов, подлежащих использованию;
- отправитель: CEN BE;
- получатель: ISO CH.
Примечание - Поля: число сегментов, отправитель и получатель - являются тремя необязательными полями, выбираемыми пользователем.
При условии, что кодирующее устройство располагает необязательные поля в первом символе, кодирование управляющего блока Макро PDF417 в этом символе должно соответствовать приведенному ниже:
... [последнее кодовое слово данных] [928]A [111] [100]B [017] [053]C [923] [001]D
[111] [104]E [923] [003]F [064] [416] [034]G [923] [004]H [258] [446] [067]I
[первое кодовое слово коррекции ошибки]...
В последнем из четырех символов будет следующий управляющий блок Макро PDF417:
[последнее кодовое слово данных] [928]A [111] [103]B [017] [053]C
[923] [001]D [111] [104]E [922]J [первое кодовое слово коррекции ошибки],
где A - кодовое слово маркера макро (Macro marker);
B - идентификация сегмента файла (File Segment ID).
Сегменты файла пронумерованы от 0 до j - 1 и закодированы с использованием режима цифрового уплотнения:
Первый сегмент = 00000 = кодовые слова со значениями 111, 100;
Четвертый сегмент = 00003 = кодовые слова со значениями 111, 103;
C - идентификация файла по базе 900;
D - признак поля числа сегментов;
E - число сегментов;
F - признак поля отправителя;
G - поле отправителя, кодирующее CEN BE;
H - признак поля получателя;
I - поле получатель, кодирующее ISO CH;
J - ограничитель Макро PDF417.
H.5 Макро PDF417 и протокол интерпретации в расширенном канале
Независимый от символики протокол интерпретации в расширенном канале (протокол ECI) был разработан после того, как PDF417 был регламентирован как символика. PDF417 поддерживал собственную систему идентификаторов глобальной метки (GLI), предшественницу и основу протокола ECI, с самой первой публикации спецификаций символики в 1994 г. ([3] и [4]). Поэтому следует принять во внимание ранние внедрения GLI. Существуют два обстоятельства, которые следует учитывать:
- GLI 0 и GLI 1 (равнозначные ECI 000000 и ECI 000001) были только интерпретациями, установленными в исходных спецификациях PDF417. Они эквивалентны ECI 000000 и ECI 000001. Прежние правила для Макро PDF417 приведены в H.5.1;
- иные назначения ECI, используемые совместно с Макро PDF417, приведены в H.5.2.
H.5.1 Макро PDF417 с интерпретациями в расширенном канале 000000 и 000001 (GLI 0 и GLI 1)
Так как GLI были действительной частью исходной спецификации PDF417, является логичным наличие кодирующих устройств GLI и Макро PDF417, объединенных в одну единицу. Исходная спецификация символики PDF417 вызывала обязательную логическую схему "возврат к GLI 0" в начале второго и последующего символов Макро PDF417, поэтому каждый символ должен начинаться с интерпретации по умолчанию. Для GLI 0 и GL 1 (эквивалентным ECI 000000 и ECI 000001) это не оказывает никакого внутреннего воздействия на кодирование. Однако для некоторых сложных интерпретаций в расширенном канале логическую схему "возврат к GLI 0" трудно реализовать независимым от символики способом.
Кодирующее программное обеспечение, соответствующее исходной спецификации для Макро PDF417 и GLI 0 и GLI 1, полностью подходит для ранее существовавших применений, а также применений GLI, задаваемых пользователем (теперь именуемых ECI), так как сфера действия системы по определению является ограниченной.
Все ECI, имеющие нумерацию 000002 или выше, не должны быть заданы логической схемой с возвратом к GLI 0. Следовательно, символы PDF417 не должны смешивать ECI 000000 и ECI 000001 с интерпретациями в расширенном канале, имеющими более высокую нумерацию (за исключением закрытых систем).
H.5.2 Макро PDF417 и прочие интерпретации в расширенном канале
Кодирующее устройство ECI может быть независимым от символики и генерировать поток байтов для ввода данных в кодирующее устройство символики PDF417. Кодирующее устройство ECI должно работать так, как если бы имелся отдельный поток данных независимо от размера файла. Таким образом, после вызова ECI должна сохраняться через сегменты до появления другой ECI или окончания закодированных данных. Это необходимо, например, в случае, где назначение ECI представляет схему шифрования, в которой не приемлем возврат в GLI 0.
Кодирующим устройствам Макро PDF417, соответствующим настоящему стандарту, нет необходимости кодировать преобладающую ECI в начале следующих символов Макро PDF417.
Примечание - Может потребоваться проведение нескольких итераций для генерации логической схемы кодирования окончания символа, например режим цифрового уплотнения не должен растягиваться на два сегмента, но два отдельных блока режима цифрового уплотнения могут быть закодированы в окончании одного символа и в начале следующего. Эти условия относятся к Макро PDF417 и высокоуровневому кодированию (в соответствии с H.3), а не относятся к Макро PDF417 и ECI.
H.6 Передача данных Макро PDF417
Передача информации управляющего блока Макро PDF417 должна трактоваться так же, как интерпретируемые ECI. Независимый от символики протокол ECI приведен ниже; исходный протокол PDF417 приведен в приложении M. Несмотря на то, что управляющий блок Макро PDF417 кодируется в конце данных символа, при использовании протокола ECI он передается перед данными символа.
Три кодовых слова (922, 923 и 928) отмечают кодирование управляющего блока Макро PDF417 или одной из его составных частей. Декодирование происходит следующим образом:
a) если последовательность начинается с кодового слова 928 (макро-маркер):
1) кодовое слово 928 передается как управляющая последовательность 92, 77, 73, которую представляет \MI в интерпретации по умолчанию;
2) следующие два кодовых слова идентифицируют индекс сегмента. Они закодированы в режиме цифрового уплотнения и декодируются как 5-разрядное число в диапазоне от 00000 до 99998;
3) следующие кодовые слова кодируют поле идентификации файла, которое должно быть одинаковым для всех связанных символов Макро PDF417. Поле идентификации файла оканчивается кодовым словом 922 или 923, или завершается с окончанием закодированных данных в символе. Каждое кодовое слово преобразуется в 3-разрядное число в диапазоне от 000 до 899 (т.е. номер кодового слова) и передается как три значения байтов (с десятичными значениями в диапазоне от 48 до 57) после управляющего заголовка: 92, 77, 70, который представлен \MF в интерпретации по умолчанию.
b) если последовательность начинается с кодового слова 923:
1) кодовое слово 923 передается как управляющая последовательность 92, 77, 79, которая представлена \MO в интерпретации по умолчанию;
2) следующее кодовое слово, представляющее один из указателей необязательного поля (field designator), приведенных в таблице H.1, передается как отдельный байт, представляющий значение знака ASCII (версия КОИ-7) для указателя;
3) следующие кодовые слова несут содержимое данных указателя необязательного поля. Необязательное поле оканчивается кодовым словом 922 или 923, или с окончанием закодированных данных в символе. Промежуточные кодовые слова следует преобразовывать в соответствии с правилами декодирования соответствующего режима уплотнения, приведенными в таблице H.1. Полученные в результате данные могут иметь переменную длину;
c) при идентификации ограничителя Макро PDF417 (кодовое слово 922) следует передать управляющую последовательность 92, 77, 90, которая представлена \MZ в интерпретации по умолчанию;
d) в конце управляющего блока Макро PDF417, как определено для окончания кодируемых данных в символе, следует передать управляющую последовательность 92, 77, 89, которая представлена \MY в интерпретации по умолчанию.
Примечание - Эта управляющая последовательность явно в символе не закодирована.
Все поля управляющего блока Макро PDF417 для символа (сегмента) должны быть переданы как единый блок, начинающийся с \MI и оканчивающийся \MY. Передача управляющего блока Макро PDF417 должна предварять передачу остатка закодированного сегмента файла даже в том случае, если управляющий блок Макро PDF417 закодирован в конце символа.
Пример - Управляющий блок Макро PDF417 для первого символа, индекс сегмента = 0 и идентификация файла (100, 200, 300) будут закодированы в символе как последовательность кодовых слов:
[928] [111] [100] [100] [200] [300]
Она будет передаваться следующим образом:
передача данных (байты):
92, 77, 73, 48, 48, 48, 48, 48, 92, 77, 70, 49, 48, 48, 50,
48, 48, 51, 48, 48, 92, 77, 89
интерпретация в знаках ASCII (версия КОИ-7):
\MI00000\MF100200300\MY
После сканирования символов Макро PDF417 функция депакетирования восстановит исходное сообщение с учетом того, что символы могли быть сканированы не по порядку. Если система работает в буферизованном режиме, функция депакетирования находится в декодере; при работе в небуферизованном режиме эта функция находится в системе приема.
Декодеры должны предусматривать специфичный для каждого декодера метод, посредством которого обработка заданной идентификации файла Макро PDF417 (Macro PDF417) может быть отменена таким образом, чтобы позволить декодеру начать обработку новой идентификации файла. Это необходимо для предотвращения условий блокировки, которая может возникнуть при потере или невозможности декодирования одного или более символов заданной идентификации файла.
H.6.1 Работа в буферизованном режиме
При работе в буферизованном режиме (buffered mode) депакетизация должна выполняться в декодере/считывающем устройстве. В зависимости от конфигурации оборудования, декодер будет отправлять:
- восстановленные данные, без управляющего блока Макро PDF417
или
- один управляющий блок Макро PDF417 (который сам по себе может быть восстановлен путем включения всех необязательных полей, присутствующих в любых символах) для нахождения в начале всего закодированного сообщения. Полученный в результате управляющий блок Макро PDF417 должен иметь свое поле индекса Макро (Macro Index) со значением, равным 0, и должен включать в себя поле окончания файла Макро (Macro end-of-file) (в сущности, для обозначения всего восстановленного сообщения как первый и единственный Макро сегмент псевдосерии).
H.6.2 Работа в небуферизованном режиме
В небуферизованном режиме (unbuffered mode) депакетирование должно быть выполнено в системе приема. Каждый переданный управляющий блок Макро PDF417 должен представлять все обязательные и необязательные поля, которые в действительности закодированы в символе.
При конфигурировании в небуферизованном режиме декодер может иметь необязательную конфигурацию, допускающую, чтобы последовательные символы имели одну идентификацию файла (File ID). Эта процедура может быть целесообразной только в том случае, если декодер сконфигурирован для передачи управляющего блока Макро PDF417 в систему приема, и эта система приема разработана для отслеживания идентификации файла управляющего блока Макро PDF417 с целью определения когда был обработан весь файл. Символы с разной идентификацией файлов или без нее (например, отдельный символ, не являющийся частью комплекта символов Макро PDF417) должны рассматриваться в соответствии с установками системы приема.
Для облегчения контроля получения всех символов набора символов Макро PDF417 (Macro PDF417) в небуферизованном режиме, следует по возможности использовать необязательное поле числа сегментов как часть закодированного управляющего блока Макро PDF417.
H.6.3 Передача с возвратом к нулю
Поскольку в исходной спецификации ([3] и [4]) символики PDF417 определены правила для GLI 0 и GLI 1, которые незначительно отличаются от правил для ECI, считывающее устройство, соответствующее настоящему стандарту, должно добавлять особые управляющие последовательности при передаче символов, содержащие явные вызовы GLI 1, в следующих двух случаях:
a) декодер должен передавать управляющую последовательность GLI 0 или управляющую последовательность ECI 000000 (в зависимости от того, какой протокол передачи запрограммирован для использования) после передачи данных каждого символа Макро PDF417, данные которого заканчиваются в интерпретации GLI 1 (ECI 000001);
b) декодер должен передавать GLI 1 (ECI 000001) в начале каждого необязательного поля переменной длины, закодированного в режиме текстового уплотнения в управляющем блоке Макро PDF417, если данные, предваряющие это поле, заканчиваются в интерпретации GLI 1 (ECI 000001).
Это требование применяется вне зависимости от режима (буферизованного или небуферизованного) и вне зависимости от программирования декодера на передачу с использованием одного из двух протоколов (протокола ECI или исходного протокола PDF417).
