28. Технология штрихового кодирования. Типы штрих-кодов. штрих-код (ean

EAN128
является, по-видимому, вторым по
распространенности кодом на планете,
и  вот почему: это код для обмена
информацией о товарах и грузах между
производственными,
транспортными и торговыми компаниями.
Это высокоплотный буквенно-цифровой
код, который использует полный набор
символов из 128 ASCII. Количество символов
ограничено лишь возможностями сканеров.
Код 128 чрезвычайно гибкий. В данной
маркировке можно поставить не только
Глобальный номер торговой единицы
(GTIN), но и дополнительные сведения о
товаре: дату изготовления, массу нетто,
вес изделия, серийный номер, срок
годности. Поэтому он широко используется
в международной логистике.

28. Технология штрихового кодирования. Типы штрих-кодов. штрих-код (ean

28. Технология штрихового кодирования. Типы штрих-кодов. штрих-код (ean

Рис.7.
Примеры
штрихового кода EAN128

28. Технология штрихового кодирования. Типы штрих-кодов. штрих-код (ean

Рис.8.
Пример
транспортной этикетки с кодом EAN128

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

Содержание
  1. Что такое штрихкод
  2. Введение
  3. Радиочастотная идентификация. Типы радиочастотных меток. Достоинства и недостатки использования rfid-технологии в автоматизированных системах учета и контроля.
  4. Штриховой код на этикетке — история создания, виды, расшифровка и использование.
  5. История изобретения.
  6. Виды штриховых кодов.
  7. Штриховой код EAN-13.
  8. Штриховой код ITF-14.
  9. Технические требования к нанесению штрих-кодов.
  10. Рекомендуемые (номинальные) размеры штрихового кода EAN-13
  11. Рекомендуемые (номинальные) размеры штрихового кода ITF-14.
  12. Сочетания цветов при нанесении штрих-кода.
  13. Как получить штриховой код EAN?
  14. Штриховой код itf-14 (2 of 5 standard)
  15. Штриховой код “ code 39 ”.
  16. Декодирование
  17. Получаем битовую последовательность
  18. Целесообразность внедрения штрих-кодов
  19. Малоизвестные факты о штрихкодах — загадочные цифры под штрихкодом
  20. Кассовый штрихкод
  21. GS1 DataMatrix
  22. Как устроен штрихкод?
  23. Заключение
Про мини ПК:  Лучшие смартфоны до 40000 рублей 2020: топ рейтинг

Что такое штрихкод

Штрихкод — это всего лишь один из способов машинного считывания информации. Если бы компьютеры ценой $50 умели быстро читать текст с коробок, как это делает человек, никаких штрихкодов не понадобилось бы. Штрих коды бывают линейные (1D) и двумерные (2D). Линейный код можно увидеть на пачке сока или сигарет, а двумерный — на алкогольной акцизной марке. Сам по себе любой линейный штриховой код — это своеобразная азбука Морзе из точек и тире в виде полосок разной ширины с одним важным дополнением: буквы штрихкода сильно отличаются друг от друга, а используемые «правила письма» и «знаки препинания» позволяют нелишний раз проверить правильность прочитанного. Известно, что в штрихкоде не спрятано ничего интересного кроме тех самых цифр, что уже написаны под ним:

28. Технология штрихового кодирования. Типы штрих-кодов. штрих-код (ean

Пример кода EAN13

Т.е. «закодировано» в данном случае не значит «зашифровано и спрятано». Возникает вопрос: почему так много полосок и так мало информации? В цифрах снизу это занимает намного меньше места! Мы привыкли, что при компьютерном кодировании целые энциклопедии умещаются на одной пылинке, а тут такой расход бумаги. Этому есть сразу несколько причин. Причина №1 — чтобы кассиру было легче найти штрихкод. Причина №2 — чтобы мелкие повреждения не смогли исказить информацию. Причина №3 — уже упомянутые буквы и правила письма; чтобы трижды себя перепроверить, черточек не жалеют. И причина №4 — компьютеры за $50 не умеют (когда-то не умели) читать слишком мелкий «текст».

Вопрос: правда ли, что в штрихкоде «зашита» информация о цвете, размере или цене товара? Ответ на него требует объяснений и позволяет понять, что представляют из себя штрих-коды с точки зрения бизнеса.

Штрихкоды были изобретены в США в конце 1940х двумя студентами Норманом Вудлендом и Бернардом Сильвером как средство автоматизированной обработки информации о товарах (патент #2612994 от 1952 года). Существует известная легенда о том, что первым в мире товаром со штрихкодом была жевательная резинка Wrigley. На самом деле Wrigley была первым товаром из продовольственной тележки, с которого был считан штрихкод при проведении демонстрации новой технологии в магазине сети Marsh в городе Трой, Огайо. Помимо Wrigley в тележке были и другие товары со штрихкодом, но кассир выбрал первыми 10 пачек именно этой знаменитой жевательной резинки.

Тот факт, что часто пишут «жевательная резинка Wrigley была первым товаром со штрихкодом», уже сам по себе говорит о плохом понимании что тут к чему. Ну представьте себе: какой смысл тратиться на печать штрихкода, если его негде и нечем считать? Кто станет оснащать магазин сканерами ради жевательной резинки? Внедрение подобных технологий требует создания огромной инфраструктуры и изменения бизнес-процессов множества торговых и производственных компаний. Только положение крупного закупщика могло сподвигнуть производителей на технологическое изменение упаковки и окупить вложенные инвестиции.

Настоящий прорыв в распространении штрихкодирования случился 1 сентября 1981 года с решением министерства обороны США использовать код на основе кодировки CODE39 для маркировки всего товара, закупаемого министерством на военные нужды. Точно так же сейчас локомотивами внедрения штрихкодов на вторичной упаковке (т.е. на коробках и ящиках) в России являются такие компании как Ашан и Мега, которые «вежливо намекают» на это производителям.

Введение

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

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

28. Технология штрихового кодирования. Типы штрих-кодов. штрих-код (ean

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

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

28. Технология штрихового кодирования. Типы штрих-кодов. штрих-код (ean

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

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

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

Радиочастотная идентификация. Типы радиочастотных меток. Достоинства и недостатки использования rfid-технологии в автоматизированных системах учета и контроля.

RFID
–технология радиочастотной идентификации.
Основана на размещении на объекте
радиочастотной метки (тег), которая
несет информацию на объекте с помощью
считывающего устройства, производится
обработка на постустройство данных.
Для обеспечения возможности идентификации
объекта применяются мультивитные
транспордеры, представляющие собой
пассивные передатчики с элементом
памяти. Метка попадая в поле считывателя
получает энергию, ток, проведенный в
антенне транспордера, выпрямляется и
поступает на схему метки, которая
начинает излучать колебания которые
моделируются данными из памяти,
выполняется передача. Наличие
энергонезависимой памяти и микропроцессора
позволяют производить необходимые
вычисления и выполнение алгоритмов.

— Read
only
(только на считывание информации)

— WORM
(для однократной записи и многократного
считывания информации)

— R/W
(для многократной записи и многократного
считывания информации)

Достоинства и
недостатки (активные и пассивные
радиочастотные метки (пассивные метки:
не имеют встроенного источника питания)):

— пассивные метки:
дальность чтения зависит от энергии
считывателя

+ активной метки:
высокая скорость движения метки
относительно считывателя

+ пассивной метки:
срок службы не ограничен

— активной метки:
наличие источника питания

Низкие: от 100 до
500 кГц (малая дальность считывания,
низкая стоимость меток)

Промежуточные
точные: от 10 до 15 мГц (средняя дальность
считывания)

Высокие: 850-950 мГц;
2,4-5,0 гГц (большая дальность считывания)

— идентификационные
метки могут дополняться

— на метку можно
записать гораздо больше информации

— могут быть
засекречены

— расположение
метки не имеет особого значения для
считывателя

— лучше защищены
от воздействия среды

— относительно
высокая стоимость

— невозможность
размещения под металлическими
электропроводными поверхностями

— взаимные коллизии
(идет наложение, мешают друг другу)

— подверженность
помехам в виде электромагнитных полей.

— влияние на здоровье
человека

Штриховой код на этикетке — история создания, виды, расшифровка и использование.

Все мы уже дано привыкли к «таинству», происходящему на кассе магазина, куда мы принесли выбранный нами товар: контролер-кассир проводит по этикетке сканером и на экране его компьютера, а также на табло кассового аппарата «волшебным» образом возникают основные параметры нашей покупки.

28. Технология штрихового кодирования. Типы штрих-кодов. штрих-код (ean

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

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

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

История изобретения.

В далёком 1948 году аспирант «Университета Дрекселя» в Филадельфии Бернард Сильвер случайно услышал разговор одного из деканов университета с владельцем крупной торговой розничной сети. Последний просил ученого заняться проблемой создания системы автоматизированного считывания информации о товаре при его обработке.

28. Технология штрихового кодирования. Типы штрих-кодов. штрих-код (ean

Сильвер поделился этим вопросом со своими друзьями — Норманом Джозефом Вудландом и Джордином Джохэнсоном. Втроём они разработали систему маркировки продукции, основанную на использовании ультрафиолетовых чернил. Однако она оказалась не очень удачной, так как чернила были достаточно дороги и кроме того быстро выцветали на этикетке.

Озарение пришло к Сильверу, как это нередко бывает с изобретателями долго и упорно размышляющими о проблеме, в самом неожиданном месте — на пляже. Он сформировал свой первый штриховой код начертив на песке несколько символов азбуки Морзе: «Я только расширил точки и тире вниз и сделал из них узкие и широкие линии». Для считывания штрих-кода Сильвер приспособил технологию оптического саундтрека (звуковой дорожки), используемую для записи звука к кинофильмам.

В 1949 году Сильвер и Вудланд подали заявку в Патентное ведомство США на признание системы идентификации товаров с использованием штрих-кодов изобретением, а в 1951 году попытались привлечь к реализации своей идеи компанию IBM. Эксперты IBM, хотя и признали перспективность данной технологии, но сочли, что её воплощение в жизнь будет чрезмерно технически сложным и отвергли её, сославшись на то, что на данный момент компания не располагает достаточными временными ресурсами для проведения всех необходимых работ. В 1952 году изобретатели получили Патент и продали его компании Филко (в дальнейшем известную как Гелиос Электрик Компани), которая в том же году перепродала его компании RCA.

Первой покупкой с использованием штрих-кода, нанесённого на этикетку, стала упаковка жевательной резинки Wrigley. Она была совершена в супермаркете «Марш» города Трой в штате Огайо 26 июня 1974 года в 8 часов 01 минуту утра. В настоящее время эта упаковка «жвачки» вместе с чеком хранятся в музее американской истории Смитсоновского института.

Виды штриховых кодов.

Изобретение Сильвера и Вудланда стало основой для разработки целой серии систем, использующих так называемые линейные (или «полосковые) штрих-коды. Такие коды считываются сканером при его горизонтальном перемещении над изображением штрих-кода.
Наиболее распространенным стандартом штрихового кодирования продукции и товаров является в настоящее время система EAN (European Article Number — Европейский Номер Товара), разработанная на основе американской системы UPC (Universal Product Code — Универсальный Код Товаров).

Номера продукции по классификации EAN присваиваются региональными (национальными) представительствами международной организации, ведающей вопросами стандартизации учёта и штрихового кодирования логистических единиц — GS1.

Существует три разновидности кода EAN
  • EAN-13 — полный код, содержащий 13 цифр.
  • EAN-8 — сокращенный код, содержащий 8 цифр.
  • EAN-128 — расширенный код, содержащий любое количество цифр и букв, объединенных в регламентируемые группы.

Коды EAN-8 и EAN-13 содержат исключительно цифры и никаких букв или других символов. Например, 46028500032632.
Кодом EAN-128 шифруется любое количество букв и цифр по алфавиту Code-128. Например, (00)353912345678(01)053987(15)161230, где (15) группа обозначает срок годности 30 декабря 2016.

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

Формат EAN-128 предназначен для передачи информации о товаре не потребителям, а другим промышленными предприятиями. Число 128 в названии кода означает не его длину, как в кодах EAN-8 и EAN-13, а то, что в нем используется словарь Code-128 и группы кодов, а сама длина не регламентирована. Код может содержать разнообразную информацию, например, код товара, сроки годности, размеры, объём, код партии производителя и т.д.

В данной статье мы подробно рассмотрим код EAN-13, так как именно он массово используется для маркировки продукции легкой промышленности.

Штриховой код EAN-13.

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

Штрих-код ограничен двумя краевыми знаками — удлиненными тонкими штрихами, а также разделён удлинёнными штрихами на две части — левую и правую. Разделение штрих-кода на части предназначено для дополнительной проверки корректности считывания кода специальным алгоритмом, в который мы не будем углубляться.

Номер товара по системе EAN-13 имеет следующую структуру:

  • первые 2-3 цифры — региональный код (префикс) страны, где зарегистрирован данный номер;
  • следующие 4-5 цифр — регистрационный номер предприятия в данной стране;
  • следующие 3-5 цифр — порядковый номер продукции внутри предприятия;
  • последняя 13-я цифра — контрольное число, вычисляется из предыдущих двенадцати.

28. Технология штрихового кодирования. Типы штрих-кодов. штрих-код (ean

Следует отметить, что код страны, указанный в штрих-коде EAN-13, совсем не обязательно совпадает с кодом страны происхождения. Дело в том, что получение штрих-кода дело добровольное и производитель может получить его в любом национальном подразделении GS1. Например, самоклеящаяся этикетка напитка Кока-Кола, производимого в Москве, несёт на себе код Бельгии (54), так как европейское подразделение компании The Coca-Cola Company зарегистрировало штрих-код в Брюсселе.

В таблице приведены префиксы некоторых стран, входящих в систему EAN.

Версия для печати.

Обратите внимание, что коды, начинающиеся с цифры «2» не входят в систему EAN, а предназначены для внутреннего использования отдельными предприятиями. Так, магазин или склад может использовать их для внутреннего пользования при маркировке товаров, не имеющих кода EAN-13. Разумеется, такие коды могут быть не уникальными.

Национальные представительства GS1 имеют право корректировать количество цифр, отводимое на номер предприятие и номер продукции. Главное, чтобы общее количество цифр было равно двенадцати, а полученный штрих-код был уникальным в глобальном масштабе.

Контрольное число (13-я цифра в коде) служит для проверки корректности считывания кода сканером.

28. Технология штрихового кодирования. Типы штрих-кодов. штрих-код (ean

Алгоритм вычисления контрольного числа следующий:

  • Складываются цифры, находящихся на четных позициях: 6+3+2+7+7+7 = 32.
  • Полученный результат умножается на три: 32*3 = 96
  • Складываются цифры, находящиеся на нечётных позициях: 4+0+7+0+0+0 = 11
  • Складываются результаты по п.п. 2 и 3: 96+11 = 107
  • Определяется разность между результатами по п.п. 5 и 4: 110-107 = 3

Контрольное число равно «3», что мы и видим на штрих-коде.

После сканирования этикетки компьютер вычисляет контрольное цисло и сравнивает его с последней цифрой штрихового кода. Если результаты совпадают, то считывание признаётся успешным.

Штриховой код ITF-14.

Для автоматизации складского учета товаров, помещенных в индивидуальную или групповую транспортную упаковку применяется штриховой код ITF-14 (от английского Interleaved Two of Five). По штрих–коду ITF-14 компьютерная система учета определяет не только вид товара, помешенный в упаковку, но и его количество, которое однозначно соответствует виду упаковки. Другими словами, группа кодов ITF-14 является надмножеством кодов EAN-13 и отличается от них добавлением первой дополнительной цифры, обозначающий вид транспортной упаковки (например, 1 — коробка, 2 — ящик и т.д.).

28. Технология штрихового кодирования. Типы штрих-кодов. штрих-код (ean

Как и в коде EAN-13, последняя цифра в коде ITF-14 является контрольной, но определяется она не по всем предыдущим цифрам, а только по 12 из них, следующим за первой.

Обычно код ITF-14 наносится на упаковку в виде наклейки, но в виду того, что он значительно крупнее кода EAN-13, возможно его нанесение непосредственно на поверхность упаковки с использованием трафарета. На упаковки размером до 40х30х20 см и весом до 5 кг, штриховой код ITF-14 наносится только на одну сторону упаковки, а при размерах и весе, превышающих вышеуказанные — на три стороны (боковые и верхнюю плоскости).

Технические требования к нанесению штрих-кодов.

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

Рекомендуемые (номинальные) размеры штрихового кода EAN-13

  • ширина символа – 37,29 мм;
  • высота символа – 25,93 мм;
  • высота штриха – 22,85 мм;
  • левая свободная зона – 3,63 мм;
  • правая свободная зона – 2,31 мм;
  • штрихи, образующие левый и правый знаки-ограничители, а также центральный знак-ограничитель должны быть удлинены вниз на 1,65 мм;
  • высота цифр в символе номинального размера — 2,75 мм;
  • минимальное расстояние от верхнего края цифр до нижнего края штрихов — 0,165 мм (рекомендуемое — 0,33 мм).

28. Технология штрихового кодирования. Типы штрих-кодов. штрих-код (ean

Допускается пропорциональное увеличение символа EAN-13 на 100% от номинальных размеров и уменьшение его не более, чем на 20%:

  • Номинальный размер (со свободными зонами): 37,29х25,93 мм (100%).
  • Минимальный размер (со свободными зонами): 29,83х20,74 мм (80%).
  • Максимальный размер (со свободными зонами): 74,58х51,86 мм (200%).

Рекомендуемые (номинальные) размеры штрихового кода ITF-14.

Ввиду того, что штриховой код ITF-14 имеет ограничительную рамку, описание его номинальных размеров существенно проще по сравнению с кодом EAN-13:

  • внешний размер с рамкой: 152.40×41.40 мм;
  • толщина рамки: 4,8 мм;
  • левое и правое свободные поля: 10,16 мм.

28. Технология штрихового кодирования. Типы штрих-кодов. штрих-код (ean

Не допускается увеличение размеров ITF-14 более, чем 100% и уменьшение не более, чем на 75%.

Соблюдение вышеописанных требований к размером штриховых кодов обязательно, если Вы хотите самостоятельно изготовить макет этикетки.

Сочетания цветов при нанесении штрих-кода.

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

Как получить штриховой код EAN?

Для того, чтобы получить коды EAN на свою продукцию, предприятию-производителю необходимо вступить в Национальную организацию товарной нумерации — Ассоциацию автоматической идентификации GS1 RUS (ГС1 РУС).

Кроме того, вы можете получить штрих-коды у уполномоченных представителей ГС1 РУС:

По состоянию на июль 2016 г. первоначальный платёж, в который входит оформление штриховых кодов на неограниченное количество товаров, составляет 15 000 руб. В эту же цену включена поддержка целостности базы данных штрих-кодов за первый год. В дальнейшем поддержка будет стоить 5000 руб. в год.

Штриховой код itf-14 (2 of 5 standard)

Это
высокоплотный, с изменяемой длиной,
только цифровой (кодируются только
десять арабских цифр) штрих код. В отличие
от EAN-13 штрих-код
ITF-14
(Interleaved Two of Five — чередующийся 2 из 5) имеет
большие размеры и не требует
высококачественной печати при нанесении.
Этот код имеет строго фиксированную
длину. Его обычно применяют в логистике
промышленности,
для складских систем сортировки, для
идентификации авиабилетов (сквозная
нумерация билетов авиакомпании), на
наружных упаковках громоздких розничных
товаров, где для логистических операций
требуются очень большие номера и
уникально обозначенные упаковки.

28. Технология штрихового кодирования. Типы штрих-кодов. штрих-код (ean

28. Технология штрихового кодирования. Типы штрих-кодов. штрих-код (ean

Рис.11.
Примеры
вариантов штрихового кода ITF-14
(2 of
5 standard)

Код
начинается и заканчивается специальным
«стартовым» и «стоповым»
символом. ITF-14 уникален, т.к. ширина как
штрихов, так и пробелов варьируется.
Штрихи и пробелы чередуются.

Современные
сканеры штрих-кодов, применяемые для
считывания, позволяют сканировать как
EAN-13, так и ITF-14.

По
14-разрядному номеру ITF-14 можно определить
EAN/UCC-13 продукции, которая находится
внутри транспортной упаковки. Код имеет
в своем составе 12 информационных разрядов
EAN/UCC-13 (кроме контрольного), которые
указывают на упакованную продукцию:

Например, если внутрь транспортной
упаковки помещены изделия в единичных
упаковках, в ITF-14 включается номер
EAN/UCC-13 единичной упаковки.

Если
же внутрь транспортной упаковки помещены
изделия в ГРУППОВЫХ упаковках, то в
ITF-14 включается EAN/UCC-13 групповой упаковки.

Штриховой код “ code 39 ”.

Стандарт
штрих кода Code
39
предназначен для кодирования символов
латинского алфавита и цифр. В отличии
от штриховых кодов стандарта EAN
или Code
128,
знак контрольной суммы для него не
является обязательным,
то есть символ штрих кода в формате
Code
39
может не содержать в себе знака контрольной
суммы. Длина символа ограничена 48
знаками. Недостаток стандарта Code
39
заключается в невысокой плотности –
при кодировании цифр (именно цифр, а не
букв алфавита) он существенно уступает
стандарту Code
128,
который поддерживает двойную плотность
записи цифровых символов.

Популярность формата CODE 39 объясняется
несколькими факторами: легкость
применения, возможность одновременного
кодирования букв, цифр и некоторых
знаков препинания (заглавные буквы A-Z,
строчные буквы a-z,
цифры 0-9, символ пробела, и символы:-,+,/,$,%,),
изменяемая длина слов, возможность быть
считанным сканирующим оборудованием
любого производителя.

28. Технология штрихового кодирования. Типы штрих-кодов. штрих-код (ean

28. Технология штрихового кодирования. Типы штрих-кодов. штрих-код (ean

Обратите
внимание, что каждый символ штрих-кода
CODE
39
состоит из пяти черных линий и четырех
внутренних промежутков — всего 9
«элементов». Из элементов, один
белый промежуток и две черных линии
двойной толщины — всего три толстых
элемента. Отсюда произошло название
штрих кода — Код 3 из 9, теперь обычно
сокращаемое до Код 39. Сближая линии на
верхнем рисунке, мы получаем более
привычный вид:

28. Технология штрихового кодирования. Типы штрих-кодов. штрих-код (ean

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

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

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

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

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

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

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

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

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

from pyzbar.pyzbar import decode

img = Image.open(image_path)
decode = decode(img)
print(decode)

(предварительно нужно установить библиотеку, введя команду «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 и тд.

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

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

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

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

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

hor_data = 255 — hor_data
avg = np.average(hor_data)

plt.plot(hor_data)
plt.show()

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

28. Технология штрихового кодирования. Типы штрих-кодов. штрих-код (ean

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

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

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

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

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

Целесообразность внедрения штрих-кодов

Как и всё остальное, технологии окупаются только там, где их применение целесообразно. Все технологии в бизнесе можно условно разделить на 2 группы: 1) инвестиционно-затратные, которые уменьшают себестоимость единицы продукции или услуги, и 2) увеличивающие себестоимость, но приносящие выгоду в чем-то другом. Например, покупка компьютера ускоряет набор и правку документов, а пастеризация молока уменьшает потери.

  • Необходимость пешком относить/приносить бумажные документы;
  • Ручной подсчет и суммирование количества;
  • Согласование бумажных поручений, их перепроверка и расшифровка почерков.

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

Штрихкоды сами по себе никого не дисциплинируют и ничью работу на себя не берут. Они не дают гарантий отсутствия ошибок и вообще каких-либо гарантий. Это принципиально невозможно. Работу после внедрения штрихкодов можно сравнить с грамотностью документов после установки Microsoft Word с проверкой орфографии. Формально набираемые на компьютере письма не стали более понятными и «правильными». Однако добрые 99% ошибок в орфографии и 50% в пунктуации исчезнут. Можно, конечно, продолжать писать «инвентаризация» и не обращать внимание на красную волнистую линию. То же самое может делать и рабочий склада, сканируя один товар, а отгружая другой, или сканируя одну ячейку, а беря из другой. Потому как, вообще говоря, он может вместо исполнения документа взять под мышку коробку с товаром и пойти домой.

Технология рассчитана на добросовестных работников, которые не хотят злонамеренно отгрузить не то, принять на склад лом по цене запчастей или «потерять»/»забыть» на складе пару тонн мороженных котлет. Не хотят, но из-за спешки, большого объема работы или большого количества похожих товаров, допускают ошибки.

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

Резюмируя, повторим еще раз: штрих-коды позволяют справиться с повальным количеством ошибок при увеличении нагрузки на склад, росте числа поставок и номенклатурного ряда. Если же товаров два, клиент один, а складские работники все равно заблудятся в трех соснах, никакие штрих-коды не спасут.

Малоизвестные факты о штрихкодах — загадочные цифры под штрихкодом

Время на прочтение

Число зверя, штрихи смерти — насколько все это реально? Можно ли зашить в штрихкод видеоролик или фото голой Эммы Уотсон? Бывают ли “неправильные штрихкоды”, и что вообще значит “неправильный штрихкод”?

В “Клеверенсе” мы разрабатываем платформу Mobile SMARTS для создания мобильных решений по учету маркированного товара и постоянно сталкиваемся с детскими ошибками в маркировке. Обычно они вызваны простым нежеланием людей хоть немного разбираться в теме.

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

Сначала для затравки расскажем про кассовый штрихкод, а затем про загадочный GS1 DataMatrix, который используется в проекте тотальной маркировки товаров.

Сама статья больше развлекательная, всё изложенное при желании легко гуглится, но может и побудить кого-то изучить тему глубже.

28. Технология штрихового кодирования. Типы штрих-кодов. штрих-код (ean

Цифры под штрихкодом — что это такое? Знающие люди говорят, что тут всё просто: именно эти цифры “зашиты” в штрихкод. Девушка на кассе вбивает в программу цифры под штрихкодом — и вуаля — товар найден.

К сожалению, это заблуждение. Цифры под штрихкодом не “зашиты” в штрихкод. Для разговоров у камина сойдет, а для айтишника беда.

Надписи под штрихкодом называются Human readable interpretation (HRI). Одно только название уже должно наводить на мысль, что тут не всё в порядке.

В самом мягком варианте вера в то, что цифры под штрихкодом повторяют содержимое штрихкода — это примерно как верить в то, что название файла определяет его содержимое. Типа: “Переименовала ваш файл в .doc, но он всё равно не открывается”.

Рассмотрим подробнее, где тут собака зарыта.

Кассовый штрихкод

Пример про кассовый штрихкод — для затравки. Он на самом деле не вызывает никаких проблем, потому что за 50 лет использования в софте и оборудовании были вставлены 1000 костылей, чтобы обойти все проблемы (ну почти). Зато он хорошо иллюстрирует вопрос.

Вот в этих двух штрихкодах (EAN-13) ниже, под которыми написано “4601200000003” и “0123456789128”, в обоих нет штрихов для первой цифры. В первом штрихкоде нет штрихов для “4” (она закодирована другим способом), а во втором штрихкоде вообще в принципе нет лидирующего нуля, хотя он и напечатан под штрихкодом.

28. Технология штрихового кодирования. Типы штрих-кодов. штрих-код (ean

28. Технология штрихового кодирования. Типы штрих-кодов. штрих-код (ean

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

Рассмотрим поближе, что тут происходит.

В первом приведенном штрихкоде (“4601200000003”) в начале идут две длинные полосочки, они кодируют “начало штрихкода”, далее идут штрихи и пропуски для цифры “6”, затем про цифры “0”, “1”, “2”, “0” и “0”, две длинные полосочки в центре говорят про середину, затем пять одинаковых групп штрихов и пропусков кодируют “00000”, далее идут штрихи и пропуски для цифры “3” и завершающие две длинные полоски про конец штрихкода. Итого, в штрихкоде есть штрихи только про “601200000003”. Цифра “3” (последняя) в полосках штрихкода есть, а первой “4” нет! Откуда же взялась “4”?

Дело в том, что “4” закодирована грязным хаком. Для неё не хватает места, и вообще всё это большой исторический казус.

Изначально такие кассовые штрихкоды появились в США, там они состоят из 12 цифр и называются UPC (Universal Product Code). Для переноса технологии в Европу и адаптации стандарта Европе нужны были дополнительные цифры, потому что американские 12 все уже были заняты.

28. Технология штрихового кодирования. Типы штрих-кодов. штрих-код (ean

Первым товаром, приобретенным по штрих-коду на этикетке, стал блок из 10 жевательных резинок Wrigley Juicy Fruit. Это произошло в супермаркете Marsh города Трой (Огайо) в четверг, 26 июня 1974 года в 8.01 утра. В историю вошли и имя покупателя, и имя кассира, открывших новую страницу розничной торговли. Теперь упаковка жвачки, которая тогда обошлась в 67 центов, вместе с чеком хранятся в музее американской истории Смитсоновского института.

Чтобы расширить емкость, можно было бы просто добавить еще немного штрихов и пропусков, но в те времена это серьезно ухудшало считываемость. Поэтому вместо того, чтобы просто увеличить штрихкод в ширину, был применен “хак”.

По американскому стандарту любая из цифр штрихкода может быть записана: а) обычными штрихами и пропусками; б) их зеркальным отражением; в) инверсией черного и белого; г) зеркальной инверсией. Всё это нужно для того, чтобы можно было печатать инверсные штрихкоды (белым по черному) и сканировать штрихкод вверх ногами (зеркальное отражение в случае штрихкода — то же самое, что и поворот на 180°).

В “американском” штрихкоде (который на 12 цифр) первые 6 цифр кодируются обычными штрихами, а вторые 6 цифр инвертированными штрихами (где черные штрихи заменены на белые полоски и наоборот). Это сделано для того, чтобы понимать, перевернут штрихкод или нет, нормально я его сканирую или вверх ногами (и затем декодировать цифры в правильном порядке, а не задом наперед).

В новом “европейском” штрихкоде (который на 13 цифр), первая цифра (например, “4”) кодируется не штрихами, а путем «перетасовывания» способов кодирования следующих за ней 6 цифр из первого блока (второй блок из 6 оставили в покое).

Например, следующая за четверкой “6” выводится как обычно, штрихи следующего за ней “0” выводятся в обратном порядке (зеркально), следующие за ней “1” и “2” выводится снова в обычном виде, следующие два “0” снова зеркально. Общая длина штрихкода и число штрихов в результате этого трюка не меняется.

Для “американского сканера” такая белиберда не имеет смысла, а для Европы это тайный знак того, что в штрихкоде закодирована еще одна цифра! (да, мы всегда знали, что европейцы извращенцы).

Для всех цифр от “1” до “9” были придуманы такие правила тасовки способов кодирования. Для “0” ничего нет, т.е. 13-значный штрихкод с лидирующим нулем визуально ничем не отличается от 12-значного штрихкода без этого лишнего ноля (EAN-13 с лидирующим нулем эквивалентен UPC-А).

Из этого получается первый прикол, что если перед нами “американский” штрихкод (в котором варианты кодирования не “перетасованы”), то “американский сканер” читает 12 цифр, а условный “европейский сканер” может считать, что в нем есть лидирующий «0», и считывать лишний ноль (т.к. для кодирования ноля не предусмотрено никакой “перетасовки”, этого “лидирующего нуля” очевидно в принципе нигде нет в штрихкоде).

Конечно, мир давно глобализован, поэтому “американский” сканер и “европейский” сканер — это просто условности. Сканер один и тот же, но у него есть настройка: нужно ли ему в принципе считывать EAN-13 (Европа) или читать только UPC-А (США), а если считывать EAN-13, то надо ли добавлять лишний ноль к американским штрихкодам UPC-А.

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

Казалось бы, сложно накосячить в использовании EAN-13/UPC. Тем не менее, люди делают следующие ошибки:

  • Сохраняют штрихкод в учетной системе без чексуммы (последнего знака).
  • Забывают обрабатывать присутствие/отсутствие лидирующего нуля при разработке алгоритма поиска по штрихкоду.
  • Требуют ввода 13 символов, а потом приходят сигареты с EAN-8 (с вводом маркировки табака станет неактуально, но пока так).
  • Не оставляют положенных широких белых полей справа и слева от штрихкода.

В наших программных продуктах, таких как “Магазин 15” или “Склад 15”, построенных на платформе Mobile SMARTS, мы решаем эту проблему очень просто: сканер устройства всегда автоматически настраивается на возврат ноля, а поиск товара по базе данных производится два раза: и с нолем, и без ноля (чтобы уж точно найти товар).

Сканер мы стараемся настраивать программно, без участия человека. Если сканер нельзя настроить программно — то это всегда проблема, потому что по умолчанию сканером может обрезаться не только 0 (который в начале), но еще и чексумма (которая в конце), тогда в программу придут не 13, а уже 11 символов, зачастую даже без указания типа штрихкода (такие замечательные сканеры тоже бывают).

В этом случае мы бессильны улучшить результат. 11 символов могли прийти от сканирования любого другого типа штрихкода, мы не можем считать все штрихкоды как EAN-13. Чтобы настроить сканер, человеку придется сканировать с листа настроечные штрихкоды или заходить в какие-нибудь меню, а всё это — источники ошибок.

GS1 DataMatrix

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

Ну ладно, допустим с EAN-13 можно придраться и сказать, что первая цифра всё-таки есть в штрихкоде, просто она закодирована не совсем штрихами (хотя для лидирующего “0” это и не так).

Возьмем тогда другой пример, штрихкод GS1 DataMatrix «(21)abba01(01)04601200000003»:

28. Технология штрихового кодирования. Типы штрих-кодов. штрих-код (ean

В этом штрихкоде “внутри” нет ни скобок, ни символа «0», ни буквы «a», ни переноса строки.

Что тут происходит?

Во-первых, никакие скобки в штрихкод не кодируются, они печатаются только для удобства прочтения человеком. Это снова называется Human readable interpretation (HRI), привет, кожаный мешок.

Во-вторых, в штрихкоде есть специальные управляющие символы, которые должна расставить та программа, которая формирует данные для штрихкода. Не какая-то бесплатная opensource программа, написанная умными очкариками, а ваша программа, та самая, которую пишете Вы, мой друг. В этот раз символы, которые нужно вставить, не имеют отношения к “коррекции” и т.п., а размечают данные, которые нужно закодировать в штрихкод.

В самом начале в штрихкод вставляется управляющий символ, который называется FNC1 и имеет код 232, что соответствует либо странному печатаемому символу «Þ» (ANSI), либо русской букве “и” (Windows-1251), смотря какую кодировку использовать. Этот символ говорит, что у нас не просто абы какой DataMatrix, а именно GS1 DataMatrix, данные в котором имеют определенный формат: массив данных из пар (“код поля”, “значение поля”).

Этот управляющий символ FNC1 попадает в самое начало штрихкода, но его нельзя “передать” в штрихкод в составе данных.

Кроме того, непечатаемые символы, вполне очевидно, нельзя копипастить в составе строки, хаха! Страдай, кожаный мешок!

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

Далее, поскольку в штрихкоде внутри нет скобок, то уже непонятно, где кончается одно поле и начинается другое, где тут номера полей. Без скобок получается “21abba010104601200000003” (тут “01” встречается три раза, ха-ха).

Где заканчивается “01” из значения поля (21) и начинается настоящее (01)?

Это решается следующим способом:

По стандарту GS1 поля имеют формат. Не абы что, а формат значения. Например, значение для (01) должно состоять из 14 цифр и баста (нельзя 13 цифр, нельзя 12 цифр, нельзя не цифры). А поле (21), наоборот, имеет переменную длину, разрешены цифры, латинские буквы обоих регистров, знаки препинания и даже (опачки!) скобки.

Если после значения для (21) штрихкод не закончился, и там еще что-то есть, то в данные вставляется разделитель (это может быть снова или FNC1, или непечатаемый символ GS с кодом 29).

А общее правило звучит так: спецсимвол GS не вставляется, только в случае если AI начинается с пары цифр из этой вот таблицы:

28. Технология штрихового кодирования. Типы штрих-кодов. штрих-код (ean

Для всех остальных полей GS1 (не из этой таблицы) в конце значения нужно вставлять GS.

Т.е., мы получим “FNC121abba01GS0104601200000003” (только помним, что первый FNC1 мы не будем передавать в программу формирования штрихкода, а второй GS — это не строка “GS”, а один символ с кодом 29).

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

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

И наконец. То, как это будет напечатано и то, как это будет отсканировано, — две большие разницы. То, как данные печатаются под штрихкодом, и как они передаются сканером — это в чистом виде настройки принтера и сканера.

В нашем примере мы закодировали в штрихкод поля порядке: сначала (21), потом (01), а на изображении под штрихкодом распечаталось сначала (01), потом (21). Это снова называется Human readable interpretation (HRI), и порядок вывода в подписи соответствует правилу “потому что так принято”.

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

В большинстве случаев сканер прочитает наш штрихкод как “21abba01GS0104601200000003”. Никакого лидирующего FNC1, никаких скобок, GS не печатаемый и не виден в “Блокноте” (нужно использовать хотя бы Notepad+).

И принтер, и сканер могут делать со штрихкодами что хотят: добавлять и убирать символы, менять их местами — ради соответствия гайдлайну или для совместимости со сторонней программой.

Что еще интересно: в этом штрихкоде только 16 байт данных (на 24 символа без скобок).

Вот что тут происходит:

Т.е. чтобы закодировать “a”, нужно записать в штрихкод “b”, чтобы закодировать “1”, нужно записать “2” и т.д., именно поэтому прямо в самом штрихкоде нет байта 97 (значение буквы “a” в ASCII).

Итого, в приведенном штрихкоде “закодировано” в байтах 232, 151, 98, 99, 99, 98, 131, 232, 131, 134, 190, 142, 130, 130, 130, 133. И это еще до кодов коррекции и паддинга!

Непонимание процесса кодирования приводит к тому, что, например, для начавшейся обязательной маркировки обуви люди печатают на принтер неправильно сформированные данные и получают неправильные штрихкоды, которые выглядят вполне нормально, читаются приложением “Честный знак”, но данные в них неверные, как минимум это не GS1 DataMatrix.

Штрихкоды неправильно напечатаны, неправильно читаются, и такая обувь не считается правильно промаркированной.

В своем софте “Кировка” мы боремся с этим следующим образом: для печати принимаем в качестве исходных данных любой мусор, пытаемся распарсить его как GS1 DataMatrix, разбираем на косточки. Если всё прошло удачно, то конвертируем в правильный формат, чтобы принтер это понял; а при сканировании перепроверяем данные от сканера, делая таким образом вывод о правильности печати.

Для этого нам, конечно, приходится работать на нативном уровне и со сканером мобильных устройств, и с принтерами, чтобы всё это было правильно ими интерпретировано, а мы собирали максимально полную информацию.

Выполним еще одно упражнение: посмотрим, какого размера должен быть штрихкод GS1 DataMatrix для хранения кода маркировки обуви и легпрома.

На сайте «Честного знака» написано, что код маркировки обуви должен содержать следующие поля (для легпрома те же требования):

  • Кода товара, 14 цифровых символов (GTIN).
  • Индивидуального серийного номера единицы товара, который генерируется оператором системы или участником оборота товаров, 13 символов (s/n).
  • Ключ проверки, предоставляемый оператором системы, 4 символа.
  • Код проверки, предоставляемый оператором системы, 88 символов.

Для каждого из этих полей в данных для штрихкода должен быть указан идентификатор применения GS1 (AI, application identifier).

28. Технология штрихового кодирования. Типы штрих-кодов. штрих-код (ean

Таблица codeword для DataMatrix

Таблица, объясняющая кодирование КМ обуви в DataMatrix:

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

Согласно GS1 DataMatrix Guideline, такие данные укладываются в штрихкоды размером от 36х36 до 44х44 (колонок и строк битов, не миллиметров). В миллиметрах размер будет зависеть от разрешающей способности принтера (обычно это 203-600 dpi).

28. Технология штрихового кодирования. Типы штрих-кодов. штрих-код (ean

Таблица из GS1 DataMatrix Guideline

А как же голая Эмма Уотсон? Рассмотрим в следующей статье.

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

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

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

28. Технология штрихового кодирования. Типы штрих-кодов. штрих-код (ean

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

Заключение

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

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

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

Спасибо за внимание.

Оцените статью
Карман PC
Добавить комментарий