еан 128 штрих код

Как устроен штрихкод?

Со штрихкодами современный человек сталкивается каждый день, даже не задумываясь об этом. Когда мы покупаем в супермаркете продукты, их коды считываются именно с помощью штрихкода. Также посылки, товары на складах, и прочее и прочее. Однако, мало кто знает, как же реально это работает.

Как устроен баркод, и что закодировано на этой картинке?

еан 128 штрих код

Попробуем разобраться, заодно напишем декодер таких кодов.

Введение

Использование штрихкодов имеет давнюю историю. Первые попытки автоматизации начинались еще в 50х, патент на устройство считывания кодов был получен в 1952г. Инженер, занимавшийся сортировкой вагонов на железной дороге, захотел упростить процесс. Идея была очевидной — кодировать номер с помощью полос и считывать их с помощью фотоэлементов. В 1962г коды стали официально использоваться для идентификации вагонов на американской железной дороге (система KarTrak), в 1968 прожектор заменили лазерным лучом, что позволило повысить точность и уменьшить размер считывателя. В 1973г появился формат «универсального кода продукта» (Universal Product Code), и в 1974 с использованием сканера кодов был продан первый продукт (жевательная резинка Wrigley’s — это же США;) в супермаркете. В 1984 треть магазинов использовали штриходы, в России же они начали использоваться примерно с 90х годов.

Разных кодов под разные задачи сейчас используется довольно много, к примеру, последовательность «12345678» может быть представлена такими способами (и это еще не все):

еан 128 штрих код

Приступим к побитовому разбору. Далее, все ниженаписанное будет относиться к виду «Code-128» — просто потому, что его формат довольно простой и понятный. Желающие поэкспериментировать с другими видами, могут открыть онлайн-генератор и посмотреть самостоятельно.

На первый взгляд штрихкод кажется просто беспорядочной последовательностью линий, на самом деле, его структура четко фиксирована:

еан 128 штрих код

1 — Пустое место, нужное для четкого определения начала кода
2 — Стартовый символ. Для Code-128 возможны 3 варианта (называемых А, В и С): 11010000100, 11010010000 или 11010011100, им соответствуют разные кодовые таблицы (подробнее в Википедии).
3 — Собственно код, содержащий нужные нам данные
4 — Контрольная сумма
5 — Стоп символ. Для Code-128 это 1100011101011.
6(1) — Пустое место.

Теперь о том, как кодируются биты. Тут все очень просто — если взять ширину самой тонкой линии за «1», то линия двойной ширины даст код «11», тройная «111», и так далее. Пустое место будет «0» или «00» или «000» по тому же самому принципу. Желающие могут сравнить стартовый код на картинке, чтобы убедиться что правило выполняется.

Теперь можно начинать программировать.

Получаем битовую последовательность

В принципе, это самая сложная часть, и разумеется, алгоритмически ее можно реализовать по-разному. Не уверен, что приведенный ниже алгоритм оптимальный, но для учебного примера его вполне достаточно.

Для начала загрузим изображение, растянем его по ширине, возьмем из середины изображения горизонтальную линию, преобразуем ее в ч/б и загрузим в виде массива.

На штрихкоде черному соответствует «1», а в RGB наоборот, 0, так что массив нужно инвертировать. Заодно вычислим среднее значение.

Запускаем программу, чтобы убедиться, что баркод загружен корректно:

еан 128 штрих код

Теперь нужно определить ширину одного «бита». Для этого мы выделим начало стартовой последовательности «1101», записывая моменты перехода графика через среднюю линию.

Мы записываем только переходы через середину, так что код «1101» будет записан как «101», но нам этого достаточно чтобы узнать его ширину в пикселах.

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

Не уверен что это оптимальный вариант, возможно, есть способ лучше, желающие могут написать в комментариях.

Если все было сделано правильно, то мы получаем на выходе примерно такую последовательность:

11010010000110001010001000110100010001101110100011011101000111011011
01100110011000101000101000110001000101100011000101110110011011001111
00010101100011101011

Декодирование

Здесь никаких сложностей в принципе, нет. Символы в Code-128 кодируются 11-битным кодом, который имеет 3 разновидности (А, В и С) и может хранить либо разные кодировки символов, либо цифры от 00 до 99.

В нашем случае, начало последовательности 11010010000, что соответствует «Code B». Было жутко влом вбивать вручную все коды из Википедии, поэтому таблица была просто скопирована из браузера и ее парсинг был тоже сделан на Python (hint: на продакшене так делать не надо).

Теперь осталось самое простое. Разбиваем нашу битовую последовательность на 11-символьные блоки:

Наконец, формируем строку и выводим ее на экран:

Ответ на то, что закодировано в таблице, приводить не буду, пусть это будет домашним заданием для читателей (использование готовых программ для смартфонов будет считаться читерством:).

В коде также не реализована проверка CRC, желающие могут сделать это самостоятельно.

Разумеется, алгоритм неидеален, и был написан за полчаса. Для более профессиональных целей есть готовые библиотеки, например pyzbar. Код с использованием такой библиотеки займет всего 4 строчки:

(предварительно нужно установить библиотеку, введя команду «pip install pyzbar»)

Дополнение: о подсчете CRC написал в комментариях пользователь vinograd19:

Интересна история контрольной цифры. Она возникла эволюционно.
Контрольная цифра нужна для того, чтобы избежать неправильного декодирования. Если штрихкод был 1234, а его распознали как 7234, то нужна валидация, которая предупредит замену 1 на 7. Валидация может быть неточная, чтобы хотя бы в 90% невалидные номера определялись заранее.

1-й подход: Давайте просто возьмем сумму. Чтобы в остатке от деления на 10 был 0. Ну то есть первые 12 символов несут информационную нагрузку, а последняя цифры подбирается так, чтобы сумма цифр делилась на 10. Декодируем последовательность, если сумма не делится на десять — значит декодировали с багом и нужно сделать это еще раз. Например, код 1234 — валидный. 1+2+3+4 = 10. Код 1216 — тоже валидный, а вот 1218 — нет.

Это позволяет избежать проблем с автоматикой. Однако в момент создания штрихкодов был фоллбек в виде набивания номер на клавишах. И там есть плохой кейс: если поменять порядок следования двух цифр, то контрольная сумма не меняется, и это плохо. То есть если штрихкод 1234 был вбит как 2134, контрольная сумма сойдется, а вот номер мы вбили неправильный. Оказывается, неправильный порядок цифр — это распространенный кейс, если стучать по клавишам быстро.

2-й подход. Хорошо, давайте сумму сделаем чуть сложнее. Чтобы цифры на четных местах учитывались дважды. Тогда при изменении порядка, сумма точно не сойдется к нужной. Например код 2364 валидный (2 + 3+3 + 6 + 4+4 = 20), а код 3264 — невалидный (3+ 2+2 + 6 + 4+4 = 19). Но тут оказался еще один плохой пример вбития. Некоторые клавиатуры такие, что десять цифр располагаются в два ряда. первый ряд 12345 и под ним второй второй ряд 67890. Если вместо клавишы «1» нажать правее клавишу «2», то контрольная сумма предупредит неправильный ввод. А вот если вместо клавишу «1» нажать ниже клавишу «6» — то может не предупредить. Ведь 6=1+5, и в случае когда эта цифра стоит на четном месте при вычислении контрольной суммы, мы имеем 2*6 = 2*1 + 2*5. То есть контрольная сумму увеличилась ровно на 10, поэтому ее последняя цифра не изменилась. Например контрольные суммы кодв 2134 и 2634 одинаковые. Та же ошибка будет, если мы вместо 2 нажмем 7, вместо 3 нажмем 8 и тд.

3-й подход. Ок, давайте что ли возьмем опять сумму, только цифры, стоящие на четных местах будем учитывать… трижды. То есть код 1234565 — валидный, потому как 1 + 2*3 + 3 + 4*3 + 5 + 6*3 +5 = 50.

Описанный способ стал стандартом вычисления контрольной суммы EAN13 за небольшими правками: число цифр стало фиксированным и равно 13, где 13-ая — это та самая контрольная цифра. Цифры на нечетных местах считаются трижды, на четных — один раз.

Заключение

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

Как подсказали в комментариях, наиболее популярным в торговле является код EAN-13, битовое кодирование там такое же, а структуру символов желающие могут посмотреть самостоятельно.

Если у читателей не пропал интерес, отдельно можно рассмотреть QR-коды.

Источник

Список идентификаторов EAN-128

Группы цифр в скобках под кодом, такие как (02), (15), (3303) и т.д., называются AI (Application Identifiers) идентификаторы применения и объясняют, как интерпретировать цифры, идущие следом.

Уникальный код большого контейнера в формате SSCC-18

Глобальный номер товарной продукции.

GTIN-13 может быть закодирована в EAN-13 (ноль и 13 цифр)

GTIN of Contained Trade Items

GTIN единицы груза, для которого в AI37 указано, сколько таких единиц находится в контейнере

Номер партии поставки

От 1 до 20 буквы/цифры

две цифры года, две месяца и две дня)

Sell by Date (Quality Control)

Срок годности (контроль качества)

Подвариант товара (дополнительно к GTIN)

От 1 до 20 буквы/цифры

Secondary Data Fields

Вторичные поля данных

От 1 до 29 буквы/цифры

От 1 до 19 буквы/цифры

Additional Product Identification

Дополнительное поле для более точной идентификации продукта

От 1 до 30 буквы/цифры

Customer Part Number

От 1 до 30 буквы/цифры

Made-to-Order Variation Number

Сделанный на заказ номер вариации

От 1 до 6 буквы/цифры

Secondary Serial Number

Второй серийный номер

От 1 до 30 буквы/цифры

Reference to Source Entity

Ссылка на исходный объект

От 1 до 30 буквы/цифры

Global Document Type Identifier

Глобальный идентификатор типа документа

От 13 до 17 буквы/цифры

GLN Extension Component

GLN компонент расширения

От 1 до 20 буквы/цифры

От 1 до 8 буквы/цифры

Product Net Weight in kg

Продукт Вес нетто в кг

Product Length/1st Dimension, in meters

Длина (высота, любой 1й размер) товара в метрах

Product Width/Diameter/2nd Dimension, in meters

Ширина (диаметр, любой 2й размер) товара в метрах

Product Depth/Thickness/Height/3rd Dimension, in meters

Глубина (толщина, любой 3й размер) товара в метрах

Product Area, in square meters

Площадь товара в квадратных метрах

Product Net Volume, in liters

Объем товара в литрах

Product Net Volume, in cubic meters

Объем товара в кубических метрах

Product Net Weight, in pounds

Вес нетто товара в фунтах

Product Length/1st Dimension, in inches

Длина (высота, любой 1й размер) товара в дюймах

Product Length/1st Dimension, in feet

Длина (высота, любой 1й размер) товара в футах

Product Length/1st Dimension, in yards

Длина (высота, любой 1й размер) товара в ярдах

Product Width/Diameter/2nd Dimension, in inches

Ширина (диаметр, любой 2й размер) товара в дюймах

Product Width/Diameter/2nd Dimension, in feet

Ширина (диаметр, любой 2й размер) товара в футах

Product Width/Diameter/2nd Dimension, in yards

Ширина (диаметр, любой 2й размер) товара в ярдах

Product Depth/Thickness/Height/3rd Dimension, in inches

Глубина (толщина, любой 3й размер) товара в дюймах

Product Depth/Thickness/Height/3rd Dimension, in feet

Глубина (толщина, любой 3й размер) товара в футах

Product Depth/Thickness/3rd Dimension, in yards

Глубина (толщина, любой 3й размер) товара в ярдах

Container Gross Weight (kg)

Вес брутто контейнера в кг

Container Length/1st Dimension (Meters)

Длина (высота) контейнера в метрах

Container Width/Diameter/2nd Dimension (Meters)

Ширина (диаметр) контейнера в метрах

Container Depth/Thickness/3rd Dimension (Meters)

Глубина (высота, толщина) контейнера в метрах

Container Area (Square Meters)

Площадь контейнера в кв.м.

Container Gross Volume (Liters)

Общий объем контейнера в литрах

Container Gross Volume (Cubic Meters)

Общий объем контейнера в кубических метрах

Container Gross Weight (Pounds)

Общий вес контейнера в фунтах

Container Length/1st Dimension, in inches

Длина (высота) контейнера в дюймах

Container Length/1st Dimension, in feet

Длина (высота) контейнера в футах

Container Length/1st Dimension in, in yards

Длина (высота) контейнера в ярдах

Container Width/Diameter/2nd Dimension, in inches

Ширина (диаметр) контейнера в дюймах

Container Width/Diameter/2nd Dimension, in feet

Ширина (диаметр) контейнера в футах

Container Width/Diameter/2nd Dimension, in yards

Ширина (диаметр) контейнера в ярдах

Container Depth/Thickness/Height/3rd Dimension, in inches

Глубина (высота, толщина) контейнера в дюймах

Container Depth/Thickness/Height/3rd Dimension, in feet

Глубина (высота, толщина) контейнера в футах

Container Depth/Thickness/Height/3rd Dimension, in yards

Глубина (высота, толщина) контейнера в ярдах

Product Area (Square Inches)

Площадь товара в квадратных дюймах

Product Area (Square Feet)

Площадь товара в квадратных футах

Product Area (Square Yards)

Площадь товара в квадратных ярдах

Container Area (Square Inches)

Площадь контейнера в квадратных дюймах

Container Area (Square Feet)

Площадь контейнера в квадратных футах

Container Area (Square Yards)

Площадь контейнера в квадратных ярдах

Net Weight (Troy Ounces)

Вес нетто в тройских унциях

Net Weight/Volume (Ounces)

Вес нетто / объем в унциях

Product Volume (Quarts)

Объем товара в квартах

Product Volume (Gallons)

Объем товара в галлонах

Container Gross Volume (Quarts)

Общий объем контейнера в квартах

Container Gross Volume (U.S. Gallons)

Общий объем контейнера в галлонах (США)

Product Volume (Cubic Inches)

Объем товара в кубических дюймах

Product Volume (Cubic Feet)

Объем товара в кубических футах

Product Volume (Cubic Yards)

Объем товара в кубических ярдах

Container Gross Volume (Cubic Inches)

Общий объем контейнера в кубических дюймах

Container Gross Volume (Cubic Feet)

Общий объем контейнера в кубических футах

Container Gross Volume (Cubic Yards)

Общий объем контейнера в кубических ярдах

Number of Units Contained

Количество единиц товара в контейнере

От 1 до 8 буквы/цифры

Amount payable (local currency)

Сумма, подлежащая выплате (местная валюта)

От 1 до 15 буквы/цифры

Amount payable (with ISO currency code)

Сумма, подлежащая выплате (с кодом валюты ISO )

От 3 до 18 буквы/цифры

Amount payable per single item (local currency)

Цена (местная валюта)

От 1 до 15 буквы/цифры

Amount payable per single item (with ISO currency code)

Цена (с кодом валюты ISO )

От 3 до 18 буквы/цифры

Customer Purchase Order Number

Соответствующий номер заказа покупателя

От 1 до 30 буквы/цифры

От 1 до 30 буквы/цифры

Bill of Lading number

Номер отгрузки, присвоенный продавцом (отправителем) товаров

Код маршрута, определяется транспортной компанией (перевозчиком).

От 1 до 30 буквы/цифры

Ship To/Deliver To Location Code (Global Location Number)

Куда доставить в виде кода EAN13 или DUNS

Bill To/Invoice Location Code (Global Location Number)

Кому выставлять счет в виде кода EAN13 или DUNS

Purchase From Location Code (Global Location Number)

Где было куплено в виде кода EAN13 или DUNS

Ship for, Deliver for, or Forward to Location Code (Global Location Number)

Кому доставить или переслать в виде кода EAN13 или DUNS

Identification of a physical location (Global Location Number)

Адрес доставки в виде кода EAN13 или DUNS

Ship To/Deliver To Postal Code (Single Postal Authority)

Почтовый индекс доставки

От 1 до 20 буквы/цифры

Ship To/Deliver To Postal Code (with ISO country code)

Почтовый индекс (с указанием кода страны ISO)

От 3 до 15 буквы/цифры

Country of Origin (ISO country code)

Страна происхождения (ISO код страны)

Country or countries of initial processing

Страна или страны производства

От 3 до 15 буквы/цифры

Country of processing

Country of disassembly

Country of full process chain

Страна полной технологической цепочки производства

UN/ECE Meat Carcasses and cuts classification

UN/ECE мясных туш и кусков

От 1 до 30 буквы/цифры

expiration date and time

Дата/время срока годности

10 цифр ГГММДДЧЧММ

Активная сила некоторых продуктов здравоохранения

От 1 до 4 буквы/цифры

Processor approval (with ISO country code); n indicates sequence number of several processors

От 3 до 30 буквы/цифры

Roll Products: Width/Length/Core Diameter/Direction/Splices

Длина, ширина или диаметр центрального ролика для товаров в рулонах

Mobile phone identifier

ESN мобильного телефона, если груз — мобильный телефон

От 1 до 20 буквы/цифры

GTIN и серийный номер той части груза, которую после доставки требуется вернуть назад (упаковка, документы).

От 14 до 30 буквы/цифры

GIAI используется для идентификации основных средств.

От 1 до 30 буквы/цифры

Price per Unit of Measure

Цена за единицу измерения

identification of the components of an item

Комплектующие одного товара

Порядковый номер компонента – 2 цифры

Международный номер банковского счета (IBAN)

От 1 до 30 буквы/цифры

Date/time of production

Дата / время производства

От 8 до 12 буквы/цифры

Глобальный номер услуг (GSRN) используется для определения отношений между поставщиком услуг и их получателем.

Mutually Agreed Between Trading Partners

Может использоваться по договоренности между поставщиком, экспедитором и покупателем

От 1 до 30 буквы/цифры

Internal Company Codes

Для внутреннего использования

От 1 до 30 буквы/цифры

«n» — цифра, обозначающая длину поля. Например, AI 23x = 237 будет означать, что серийный номер состоит из 7 цифр, и в коде это будет выглядеть как «(237)1234567».

«y» — цифра, обозначающая точность после запятой. Например, AI 330y = 3304 будет означать, что в шести цифрах веса четыре их них будут стоять после запятой и «(3304)123456» будет равно 12,3456 кг.

Источник

КОД EAN/UCC-128

Носители данных в системе GS1 в лице кодов EAN-8 и EAN-13 признаны во всем мире. Она предоставляют пользователю поистине безграничные возможности по организации учета и контроля, продаж и прослеживаемости. Но в то же самое время не могут выполнить самых простых вещей: представить в символе штрихового кода дополнительную информацию, не цифровую, а алфавитно-цифровую, или иные широко используемые знаки. Часто требуется, чтобы вместе с информацией о предприятии и уникальном идентификаторе предмета торговли была доступна и информация, помогающая проведению различных логистических операций, например, складированию или транспортным перевозкам. А в этом случае возможностей стандартного кода EAN-13 явно недостаточно. При современном уровне оснащения складов, терминалов, перевозчиков для поддержания соответствующего уровня, скорости, достоверности и качества обработки операций требуется информационный носитель, объединяющий все преимущества кодов GS1 и имеющий возможность кодировать дополнительную информацию для всех сторон цепи поставок.

Система идентификации на основе Глобального номера предмета торговли (GTIN) является незначащей системой. Она используется для идентификации предметов торговли, но не для их классификации или представления информации о них. Фиксированная информация о товарах вводится пользователем в свои компьютерные файлы и извлекается из них по номеру изделия. Этот подход является логичным и эффективным, поскольку коды при этом не становятся чрезмерно громоздкими, «набитыми» различной информацией, которая может (а, может, и нет) пригодиться конкретному пользователю, и позволяет удовлетворять растущие потребности в информации и классификации, невзирая на ограничения, налагаемые самой структурой кода. Успех этой системы привел на практике к растущему спросу на отображение все большего объема информации символами штриховых кодов. И выход был найден в применении уже хорошо зарекомендовавшей себя символики штрихового кодирования Code 128.

Символика UCC/EAN-128 является подмножеством символики Code 128. Ее использование лицензировано исключительно для целей GS1. До недавнего времени область применения символов UCC/EAN-128 ограничивалась только логистикой и не предназначалась для считывания с изделий, проходящих через розничные точки расчета. Однако в настоящее время в связи с повышенным вниманием к безопасности пищевых продуктов и в соответствии с этим внедрением процедур прослеживаемости использование UCC/EAN-128 становится возможным и даже необходимым на потребительской упаковке.

Идентификаторы применения (ИП) GS1 могут использоваться для более эффективного движения товаров по цепи поставок. Информация, содержащаяся в кодах с ИП, применяется для организации перемещения товарной продукции как внутри предприятия, так и вне его. Она может быть использована во всем мире и независимо от отраслевой принадлежности предприятия.

ИП разработаны для обеспечения максимальной гибкости, чтобы с высокой стоимостной эффективностью разрешать разнообразные ситуации, возникающие в сфере распределения, в рамках международной торговли. Использование ИП очень похоже на универсальный язык, где используются типовые идентификаторы. «Слова» установлены в соответствии со стандартизированной «орфографией» и «определениями». Эти «слова» могут использоваться при необходимости для создания «сообщения», которое требуется для определенного типа товаров и сферы распределения. «Сообщения», переданные при помощи этого языка, понятны всем и везде.

Идентификаторы применения также дополняют (а не заменяют) другие идентификаторы ресурсов GS1, которые были разработаны, в первую очередь, для идентификации товаров. Промышленность выразила заинтересованность в систематизации идентификации не только товара. ИП предоставляют такую возможность. В дополнение к первоначальной идентификации товара ИП добавляют необходимую гибкость обмену информацией между предприятиями. В сообщения, кодируемые в символах штрихового кода, могут быть теперь включены номер серии/партии, уникальная идентификация транспортной упаковки, количество и величина предметов торговли в соответствующих единицах и другие атрибуты, характеризующие товар и логистическую единицу. Символика UCC/EAN-128 предлагает альтернативный метод представления некоторых символов штрихового кода в системе GS1, находящихся в обращении, другими символами. Однако эта особенность вводится лишь с тем, чтобы расширить возможности эффективного конструирования сообщений. Идентификаторы применения позволяют закодировать в символах UCC/EAN-128 значительно больший объем информации, чем это может быть сделано с применением неструктурированных данных в символах штрихового кода. Это интегральный коммуникационный инструмент, обладающий способностью объединять информацию и товары. Он дополняет имеющиеся процессы идентификации, в которых использовались структуры данных системы GS1. Он как бы подсоединяет физические товары к информации, передаваемой через каналы электронного обмена данными. Стандарт может эффективно использоваться для облегчения перестройки управления информационными процессами бизнеса.

еан 128 штрих код

Пример символа UCC/EAN-128.

Таблица 1. Примеры идентификаторов применения и описываемых форматов данных

* Описание формата символа:
n = числовые знаки
an = алфавитно-цифровые знаки
.. = поле переменной длины
цифра = количество знаков

** X показывает положение десятичной точки

еан 128 штрих код

Пример символа UCC/ EAN-128, представляющего Глобальный номер предмета торговли GTIN, дату реализации и номер партии.

Строка элемента – порция данных определенной структуры и значения, включающая в себя идентификационную и информационную части и представленная на носителе данных, установленном в системе GS1. Идентификатор применения – поле из двух и более знаков, расположенное в начале строки элемента, которое однозначно определяет ее формат и значение.

Каждый ИП содержит от двух до четырех знаков, за которыми следуют поля данных, которые он идентифицирует. Для того чтобы сократить запись, более широко используются ИП только из двух цифр.

За ИП следуют данные, которые в целом могут быть буквенными и/или цифровыми знаками, количество которых может достигать 30. Поля данных имеют либо фиксированную, либо переменную длину. Поле фиксированной длины всегда должно равняться соответствующей ему длине данных. Максимальная длина поля данных определена для каждого поля переменной длины. Этот максимум определен для облегчения программирования пользовательских систем. Кодируемые данные, используемая структура и ограничения по кодируемым знакам в дальнейшем будут описываться для каждого ИП.

ИП и их поля данных кодируются в символах штрихового кода в соответствии со спецификацией UCC/EAN-128, подмножеством Code 128. Символ UCC/EAN-128 содержит специальный знак – ФУНКЦИОНАЛЬНЫЙ ЗНАК 1 (FNС 1), который является первым знаком после знака СТАРТ. Эта комбинация зарезервирована исключительно для использования GS1.

Указанное сочетание типовых форматов данных и уникальной структуры символа штрихового кода обеспечивает совместимость кодирования между различными компаниями, позволяя в то же время компаниям, которые не заинтересованы в каких-либо особенных типах данных, программировать свое оборудование так, чтобы игнорировать эти данные.

Символика UCC/EAN-128 является чрезвычайно гибкой. Она позволяет представлять несколько строк элементов в одном символе штрихового кода. Такой подход называется соединением.

Несколько ИП и их поля данных могут быть эффективно объединены в один символ штрихового кода. В том случае, когда два первых знака ИП соответствуют определенной длине индикатора, разделитель поля не требуется. Следующий ИП идет сразу после последнего знака в поле данных предыдущего ИП. За полем переменной длины должен непосредственно следовать знак разделителя поля, если только это не последнее поле в символе штрихового кода. В качестве разделителя используется FNC 1.

еан 128 штрих код
еан 128 штрих код
еан 128 штрих код

Примечание
Когда требуется объединить несколько ИП и поля их данных, где только одно из полей имеет переменную длину, рекомендуется разместить его в конце символа. В этом случае не требуется знак разделителя.

Для определения максимальной длины символа EAN/UCC-128 необходимо рассмотреть два параметра: физическую длину, которая зависит от количества закодированных знаков и используемого фактора увеличения, и количество закодированных знаков данных, исключая вспомогательные знаки.

Максимальная длина любого символа EAN/UCC-128 может быть в следующих пределах:

Физическая длина символа EAN/UCC-128, включая светлые поля, не должна превышать 16,5 см.

Максимальное количество закодированных знаков данных, включая ИП и FNC 1, если он используется как разделительный знак, но исключая вспомогательные знаки и контрольный знак символа, составляет 48.

Там, где это возможно, ИП и поля данных фиксированной длины должны состоять из четного числа знаков. Это уменьшает длину символа, т. к. символика EAN/UCC-128 может упаковывать пару цифр в один знак символа. Хотя символика EAN/UCC-128 может кодировать алфавитно-цифровые поля любой длины, поля данных будут занимать меньше места, если они состоят только из чисел и имеют четное число знаков. Например, когда присваивается номер партии, он должен иметь четное число цифр, чтобы получился наикратчайший символ штрихового кода. Отметим, что ИП, состоящие из трех цифр, такие как «номер заказа на товар», будут требовать нечетного количество цифр данных, чтобы получить поле четной длины.

Символ UCC/EAN-128 имеет переменную длину, зависящую от числа и вида кодируемых знаков, а также от качества печати. Для заданной длины данных размер символа варьируется в установленных пределах с учетом разного качества печати, достигаемого используемым способом печати. Символ предназначен для двунаправленного сканирования стационарным или переносным сканером.

Символы UCC/EAN-128 могут печататься с коэффициентом увеличения от 25 % до 100 %. Для обеспечения эффективного сканирования в любой среде, включая конвейерное сканирование, должен использоваться минимальный коэффициент увеличения 50 %.

Только символика UCC/EAN-128 позволяет кодировать помимо идентификационных данных дополнительную информацию. Символ UCC/EAN-128 может использоваться с идентификатором применения 01 для кодирования номеров GTIN-12, GTIN-13 или GTIN-14.

Если возникает необходимость напечатать дополнительную, помимо идентификационной (серийный номер и т. п.), информацию на предмете торговли, который уже маркирован символом EAN-13 или EAN-14 (ITF-14), можно выбрать один из следующих вариантов:

Нанести этикетку с дополнительной информацией в символе UCC/EAN-128 в дополнение к ранее нанесенному символу EAN-13 или ITF-14. Все символы должны быть выровнены по горизонтали. Этот вариант должен использоваться, если у клиентов еще нет возможности считывать символы UCC/EAN-128.

Нанести этикетку, закрывающую существующие символы. В этом случае идентификационный номер, представленный в первоначальном символе, должен быть напечатан на новой этикетке вместе с выбранными дополнительными данными, предпочтительно в символике UCC/EAN-128.

Использование ИП регламентировано установленными правилами. Некоторые ИП всегда должны использоваться вместе с другими ИП, например, за ИП 02 всегда должен следовать ИП 37. Некоторые ИП никогда не должны использоваться вместе, например, ИП 01 и ИП 02. Предприятия не могут произвольно выбирать ИП из списка, они должны соблюдать установленные правила.

Контрольный знак символа должен присутствовать в символе как последний, перед знаком СТОП. Кроме того, отдельные ИП могут требовать использования контрольного знака данных, и это определяется, соответственно, в описаниях индивидуального формата данных. Отдельные пользователи могут также выбрать вариант использования контрольных чисел для собственных целей, в каком-либо участке данных, выбранном на их собственное усмотрение (например, в используемых ими номерах партии).

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *