как кодируется штрих код

РОСПОТРЕБНАДЗОР ПО АК

РОСПОТРЕБНАДЗОР ПО АК

Как читать штриховой код

Как читать штриховой код

Штрихи истории

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

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

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

Параллельно над похожей идеей работали Бернард Сильвер и Джозеф Вудланд. С самого начала они понимали, с каким эффектом такую технологию можно применить в торговле. Поэтому в 1949 году подали заявку на изобретение и 7 октября 1952 получили патент. Эта дата и считается официальным днем рождения штрихового кода.

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

Штриховой код – это знак, предназначенный для автоматизированных идентификации и учета информации о товаре, закодированной в виде цифр и штрихов.

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

После вступления в EAN неевропейских государств система получила международный статус и широко используется в настоящее время во всем мире. Ее применение координирует Международная ассоциация EAN.

Классификация и сферы применения штрих-кодов

Различные штриховые коды имеют различное применение.

Используется для маркировки упаковки и/или товаров небольшого размера

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

Наносится на любые упаковки и/или товары, если позволяет площадь.

Если товар продается вместе с упаковкой, то применяются только коды EAN-13

применяется только для транспортной упаковки.

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

Что означают цифры штрих-кода

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

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

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

Каждой стране Ассоциации EAN централизованно вы­даются диапазоны кодов. Коды чаще всего двузначные (Фран­ция — 30-37, США и Канада — 00-09, Япония — 45-49), но могут быть и трехзначные (Россия — 460-469) за счет уменьшения кода изготовителя на один знак.

Штрих-коды некоторых стран:

20-29 Резервные номера (EAN)

Обратите внимание: нередко на товаре можно увидеть надпись, например, «Сделано в Голландии», а код, нанесенный на этикетку, этой стране не соответствует. Причин может быть несколько. Первая: фирма была зарегистрирована и получила код не в своей стране, а в той, куда направлен основной экспорт ее продукции. Вторая: товар был изготовлен на дочернем предприятии. Третья: возможно, товар был изготовлен в одной стране, но по лицензии фирмы из другой страны. И, наконец, четвертая, когда учредителями предприятия становятся несколько фирм из различных государств.

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

Итак, обобщив все сведения о штрих-кодах развенчаем несколько мифов:

Миф 1. Наличие штрих кода свидетельствует о качестве товара

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

Миф 2. Штриховой код на упаковку может наносить только изготовитель товара

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

Миф 3. В штриховом коде есть скрытая информация о потребительских свойствах товара: изготовителе, фасоне, цвете модели, сроке годности и так далее

На самом деле: Штриховой код – это всего лишь уникальный номер, по которому в электронном каталоге организации-изготовителя можно отыскать данные об указанной продукции. Без доступа к этому каталогу ничего узнать нельзя. Однако по штрих-коду можно узнать производителя товара. В 1999 году была образована единая информационная система глобального регистра GEPIR, которая позволяет через Интернет получить информацию о принадлежности штриховых кодов. Для этого необходимо только зайти на российскую или главную страницу GEPIR в интернете и ввести интересующий вас код.

Миф 4. Если кода интересующего товара нет в регистре GEPIR, то товар поддельный

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

Источник

Штрих-код и его расшифровка

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

Вопрос: Можно ли внести в форму товарной накладной N ТОРГ-12 такой дополнительный реквизит, как штрихкод?
Посмотреть ответ

Расшифровка и структура

как кодируется штрих код. shtrih kod rasshifrovka. как кодируется штрих код фото. как кодируется штрих код-shtrih kod rasshifrovka. картинка как кодируется штрих код. картинка shtrih kod rasshifrovka. Штрихи истории

Тринадцатизначный код EAN разделяется на отдельные структурные зоны:

Расчёт контрольной цифры в штрих-коде

Воспользуйтесь приведённым ниже алгоритмом:

Полученная цифра и есть контрольная. Если не совпала — товар может быть произведён незаконно.

Штрих-коды стран производителей

Код производителяСтранаНациональная организация EAN/UCC
00-13США и КанадаUCC (U.S.A. & Canada)
30-37ФранцияGENCOD-EAN France
380БолгарияBCCI (Bulgaria)
383СловенияEAN Slovenia
385ХорватияEAN Croatia
387Босния и ГерцеговинаEAN-BIH (Bosnia-Herzegovina)
400-440ГерманияCCG (Germany)
45-49ЯпонияDistribution Code Center — DCC (Japan)
460-469РоссияUNISCAN / EAN RUSSIA (Russian Federation)
471ТайваньEAN Taiwan
474ЭстонияEAN Eesti (Estonia)
475ЛатвияEAN Latvia
476АзербайджанEAN Azerbaijan
477ЛитваEAN Lithuania
478УзбекистанEAN Uzbekistan
479Шри-ЛанкаEAN Sri Lanka
480ФилиппиныPANC (Philippines)
481БеларусьEAN Belarus
482УкраинаEAN Ukraine
484МолдоваEAN Moldova
485АрменияEAN Armenia
486ГрузияEAN Georgia
487КазахстанEAN Kazakhstan
489ГонконгHKANA (Hong Kong)
50ВеликобританияE Centre UK
520ГрецияHELLCAN — EAN HELLAS (Greece)
528ЛиванEAN Lebanon
529КипрEAN Cyprus
531МакедонияEAN-MAC (FYR Macedonia)
535МальтаEAN Malta
539ИрландияEAN Ireland
54Бельгия, ЛюксембургICODIF/EAN Belgium.Luxembourg
560ПортугалияCODIPOR (Portugal)
569ИсландияEAN Iceland
57ДанияEAN Danmark
590ПольшаEAN Poland
594РумынияEAN Romania
599ВенгрияEAN Hungary
600-601Южная АфрикаEAN South Africa
609МаврикийEAN Mauritius
611МароккоEAN Maroc (Marocco)
613АлжирEAN Algeria
616КенияEAN Kenya
619ТунисTUNICODE (Tunisia)
621СирияEAN Syria
622ЕгипетEAN Egypt
624ЛивияEAN Libya
625ИорданияEAN Jordan
626ИранEAN Iran
627КувейтEAN Kuwait
628Саудовская АравияEAN Saudi Arabia
629Объединенные Арабские ЭмиратыEAN Emirates
64ФинляндияEAN Finland
690-693КитайArticle Numbering Centre of China — ANCC (China)
70НорвегияEAN Norge (Norway)
729ИзраильIsraeli Bar Code Association — EAN Israel
73ШвецияEAN Sweden
740ГватемалаEAN Guatemala
741СальвадорEAN El Salvador
742ГондурасEAN Honduras
743НикарагуаEAN Nikaragua
744Коста-РикаEAN Costa Rica
745ПанамаEAN Panama
746Доминиканская РеспубликаEAN Republica Dominicana
750МексикаAMECE (Mexico)
759ВенесуэлаEAN Venezuela
76ШвейцарияEAN (Schweiz, Suisse, Svizzera)
770КолумбияIAC (Colombia)
773УругвайEAN Uruguay
775ПеруEAN Peru
777БоливияEAN Bolivia
779АргентинаCODIGO — EAN Argentina
780ЧилиEAN Chile
784ПарагвайEAN Paraguay
786ЭквадорECOP (Ecuador)
789БразилияEAN Brazil
80-83ИталияINDICOD (Italy)
84ИспанияAECOC (Spain)
850КубаCamera de Comercio de la Republica de Cuba (Cuba)
858СловакияEAN Slovakia
859ЧехияEAN Czech
860ЮгославияEAN YU (Yugoslavia)
867Северная КореяEAN DPR Korea (North Korea)
869ТурцияUnion of Chambers of Commerce of Turkey (Turkey)
87НидерландыEAN Nederland (Netherlands)
880Южная КореяEAN Korea (South Korea)
885ТаиландEAN Thailand
888СингапурSANC (Singapore)
890ИндияEAN India
893ВьетнамEAN Vietnam
899ИндонезияEAN Indonesia
90-91АвстрияEAN Austria
93АвстралияEAN Australia
94Новая ЗеландияEAN New Zealand
955МалайзияMalaysian Article Numbering Council (MANC)
958МакаоEAN Macau

Назначение штрих-кода

Введение в действие штрихового кода имело место в 1974 году, хоть патент на его изобретение был выдан в 1962 году.

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

В настоящее время штриховой код имеет и иные функции, а именно:

Местом нанесения штрихового кода является упаковка товара, а способом его нанесения – приклеивание ярлыков с нанесенными на них печатными штрих-кодами.

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

Существует два вида штриховых кодов, дифференцируемых по типу наносимых на товар графических изображений: линейный и двумерный. Различие состоит в способе кодирования информации и в способе ее считывания.

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

Однако по сравнению с двумерными кодами все линейные штриховые коды обладают относительно малой информативной емкостью.

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

Дополнительно двумерные штриховые коды дифференцируются на:

Современные двумерные штриховые коды могут вмещать в себя, в зависимости от количества слоев, от 7 до 1900 байт информации о товаре.

Применение в штрих-кодов в РФ

В Российской Федерации наиболее распространенным видом штриховых кодов являются линейный 13-значный и линейный 8-значный.

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

Считывание

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

В настоящее время существуют два вида сканеров – стационарные, то есть кассовые, и портативные, чаще всего выглядящие как небольшая трубка с читающим устройством на одном из ее концов.

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

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

Что касается EAN-8:
По сути это младший собрат EAN-13, был введён для малоразмерных упаковок, для таких, где нет достаточно места для нанесения символики EAN-13.

Источник

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

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

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

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

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

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

Загадочные цифры под штрихкодом

как кодируется штрих код. image loader. как кодируется штрих код фото. как кодируется штрих код-image loader. картинка как кодируется штрих код. картинка image loader. Штрихи истории

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

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

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

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

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

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

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

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

как кодируется штрих код. image loader. как кодируется штрих код фото. как кодируется штрих код-image loader. картинка как кодируется штрих код. картинка image loader. Штрихи историикак кодируется штрих код. image loader. как кодируется штрих код фото. как кодируется штрих код-image loader. картинка как кодируется штрих код. картинка image loader. Штрихи истории

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

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

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

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

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

как кодируется штрих код. image loader. как кодируется штрих код фото. как кодируется штрих код-image loader. картинка как кодируется штрих код. картинка image loader. Штрихи истории

Первым товаром, приобретенным по штрих-коду на этикетке, стал блок из 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. Тем не менее, люди делают следующие ошибки:

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

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

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

GS1 DataMatrix

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

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

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

как кодируется штрих код. image loader. как кодируется штрих код фото. как кодируется штрих код-image loader. картинка как кодируется штрих код. картинка image loader. Штрихи истории

В этом штрихкоде “внутри” нет ни скобок, ни символа «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 начинается с пары цифр из этой вот таблицы:

как кодируется штрих код. image loader. как кодируется штрих код фото. как кодируется штрих код-image loader. картинка как кодируется штрих код. картинка image loader. Штрихи истории

Для всех остальных полей 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 для хранения кода маркировки обуви и легпрома.

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

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

как кодируется штрих код. image loader. как кодируется штрих код фото. как кодируется штрих код-image loader. картинка как кодируется штрих код. картинка image loader. Штрихи истории
Таблица codeword для DataMatrix

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

ЧтоФорматCodewordsСколько байтВсего байт, минимумВсего байт, максимум
Codeword [232]111
AI (00)Codeword [130]122
GTIN14 цифрCodeword со [130] по [229]799
AI (21)Codeword [141]11010
s/n13 знаков ASCIICodewords с [1] по [128] и со [130] по [229]от 7 до 13*1723
Codeword 3011824
AI (91)Codeword 22111925
Ключ проверки4 цифрыCodeword с 130 по 22942329
AI (92)Codeword 22212430
Код проверки88 знаков ASCIICodewords с [1] по [128] и со [130] по [229]от 44 до 88*28118

* если в данных для штрихкода есть пары подряд идущих цифр, то они будут кодироваться одним байтом, а не двумя (Codewords со [130] по [229]), и это экономит байты.

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

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

как кодируется штрих код. image loader. как кодируется штрих код фото. как кодируется штрих код-image loader. картинка как кодируется штрих код. картинка image loader. Штрихи истории
Таблица из GS1 DataMatrix Guideline

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

Источник

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

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