eponim2008 (eponim2008) wrote,
eponim2008
eponim2008

Categories:

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



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

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

Для начала рассмотрим, как устроена штрих-кодовая метка. Собственно код размещается в пространстве, которое слева и справа окаймляют  так называемые ограждающие штрих-кодовые  полосы (guard bars). Эти полосы содержат штрихи единичной ширины, два темных и один светлый между ними. Если темные штрихи обозначать цифрой 1, а светлые – цифрой 0, то ограждающие полосы будут иметь код 101. Ограждающие полосы служат для синхронизации работы сканера, поэтому их иногда называют старт-стоповыми полосами (start and stop sentinel).

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

Пространство, занятое самим штрих-кодом, делится на две группы, левую и правую, по 6 цифр в каждой. Эти группы разделяются специальной средней кодовой полосой, которая состоит из 5 штрихов, трех светлых и двух темных (код 01010). Средняя кодовая полоса, также как и ограждающие полосы, является управляющим элементом. Управляющие элементы содержат 11 модулей. Таким образом, суммарная ширина штрих-кода всегда равна 95 модулям.

Чем меньше ширина модуля, тем компактнее штрих-код. С другой стороны, слишком тонкий штрих трудно четко напечатать и трудно без ошибок прочесть. Стандартная ширина модуля, обеспечивающая наилучшее считывание при минимальном размере, имеет значение 0.33 мм. Таким образом, ширина полосы штрих-кода обычно равна 0.33х95=31.35 мм

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

Как уже было сказано, каждая цифра кодируется 7 модулями, темного или светлого цвета или, что то же самое, 7 двоичными разрядами. Пробелов между штрихами нет. Поэтому несколько рядом стоящих темных или светлых штрихов сливаются в более толстые штрихи того или иного цвета. Система кодировки сделана так, чтобы каждая цифра изображалась только 4 утолщенными штрихами.  Благодаря этому вся метка штрих-кода будет состоять из 29 светлых и 30 тёмных штрихов, включая штрихи ограждающих полос и средней «разделительной» полосы.

Разделительная полоса – хорошее название. Сразу возникает ассоциация с шоссе, где по одну сторону от разделительной полосы машины движутся в одну сторону, а по другую сторону – в противоположную. Так вот, главный сюрприз кодовой системы EAN-13 – это то, что одни и те же цифры в левой части штрих-кода и в правой его части кодируются по-разному. Эти кодировки называются соответственно L-кодом и R-кодом.

Для каждой кодируемой цифры L-код является фотографически негативным исполнением R-кода. Там, где у L-кода стоит 0, в R-коде стоит 1. Если суммировать L-код и R-код получится число, состоящее из семи 1. Все L-коды начинаются с 0, в то время как все R-коды начинаются с 1. Кроме того, сумма единиц в L-коде всегда нечетная, а в R-коде – всегда четная.

Почему нельзя было обойтись одной кодировкой? Потому что на практике часто приходится сканировать штрих-код, перевернутый «вверх тормашками». Как при этом определить, в каком положении находится читаемый штрих-код, в прямом или в перевернутом? Схема сканера определяет это довольно просто. Если первая из прочтенных групп (левая) начинается с 0, а вторая с 1, то штрих-код при чтении находился в прямом положении. Если же первая группа начинается с 1, а вторая с 0, произошло чтение штрих-кода, повернутого на 180 градусов. В первом случае расшифровка происходит с помощью таблицы прямой кодировки, а во втором – с помощью таблицы обратной кодировки, коды в которой являются зеркальным отражением кодов таблицы прямой кодировки.

Что же получается? В символогии штрих-кода EAN-13 одна цифра должна кодироваться четырьмя способами: L-код и R-код для прямого чтения и для чтения обратного еще одна пара, тоже состоящая из L-кода и R-кода? Как говорила (правда по другому поводу) юная Гюльчатай из «Белого солнца пустыни», тяжело. В самом деле, не легко. Но необходимо.

Но сложности кода EAN-13 на этом не заканчиваются.

Самое время задуматься: почему в его названии фигурирует цифра 13? Потому что он состоит из 13 цифр, 12 из которых закодированы в виде штрихов, а вот самая первая цифра кода не считывается, а вычисляется в процессе сканирования. Именно поэтому в распечатке эта цифра занимает особое место. Она размещена вне пространства штрих-кода.

Эта сложность связана с процессом развития кода. Дело в том, что системе кодирования EAN-13 предшествовала система, которая первоначально была разработана в США под названием UPC-A. UPC – это сокращение слов «Universal Product Code» («Универсальный продуктовый код»). Система UPC-A предназначалась для управления товарооборотом на территории США и Канады. Все товары в этой системе можно было закодировать 12 цифрами. Несколько цифр из этих 12 кодировали компании-производители, несколько – код продукта. Последняя цифра из дюжины была контрольной и вычислялась по сложному алгоритму. Контрольная цифра подтверждала (или не подтверждала) правильность прочтения кода.

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

Чтобы интернационализировать систему UPC-A, было решено выделить еще несколько цифр для кодировки страны производителя. Две требуемые цифры смогли «оторвать» от кода производителя и от кода товара. Но все равно для кодировки всех стран на планете двух цифр не хватало. Пришлось  дополнить уже существовавший в Америке код еще одной цифрой. Для американских товаров эта цифра была равна 0.  Благодаря этому американская система становилась подмножеством всемирной.

Однако прочитать добавленную цифру оказывалось невозможно, поскольку все старые приборы были рассчитаны на чтение только 12 цифр, а не 13.

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

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

Для вычисления первой цифры в систему кодировки левой группы цифр были внесены изменения. Эта группа состоит из 6 цифр. 3 из них по-прежнему кодировали в прямой кодировке L-кодом. А вот 3 другие стали кодировать R-кодом в обратной кодировке. (Этот код в документации иногда называют G-кодом). Первая цифра кода вычислялась по тому, какие из цифр были закодированы «неправильно». Для американских товаров все цифры в левой группе штрих-кода EAN-13 зашифрованы «правильно», поэтому первая цифра для американских товаров всегда будет 0.

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

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

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


Статья опубликована на сайте Школа жизни
Статья опубликована на сайте Школа жизниПолезные ссылки:

  1. Barcode scanning

  2. Barcode в Википедии

  3. Методы расшифровки штрих-кода

  4. Дизайнерские штрих-коды талант и восхищение

  5. Симвология

  6. Что надо знать о сканерах штрих-кодов

  7. Двумерный штрих-код: сам себе база данных

  8. Штрих-код и его разновидности

  9. Бесплатный генератор штрих-кодов онлайн

  10. Top Barcode Scanner Apps (for iOS and Android): The 36 Best Apps for Scanning and Reading Inventory Barcodes

  11. Типы штрихкодов, выбор правильного штрихкода

  12. Штриховые коды EAN

  13. How Barcodes Work

  14. Исследование штрих-кода на наличие в нем числа 666

  15. Barcodes

Tags: #barcode, #штрихкод, криптология, школа жизни, штрих-код
Subscribe

promo eponim2008 september 21, 2020 12:37 3
Buy for 10 tokens
Женщинам дозволено кокетство. Скрывать свой возраст у прелестных дам стало общепринятой причудой. Даже если и скрывать особенно нечего. Потому я в начале моего рассказа тоже пококетничаю немного и своего возраста сразу не назову. Скажу только, что нахожусь я на том отрезке женской жизни,…
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 0 comments