• Мнения
  • |
  • Обсуждения
Марк Блау Грандмастер

Штрих-коды. Как они устроены? Часть 1

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

Фото: Depositphotos

Перейти к предыдущей части статьи

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

Алгоритм превращения алфавитно-цифровой информации в последовательность штрихов называется «символогией» («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-кодом.

Кодировки системы EAN-13
Кодировки системы EAN-13
Фото: Марк Блау, личный архив

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

Код должен читаться как в прямом, так и в перевернутом виде
Код должен читаться как в прямом, так и в перевернутом виде
Фото: Марк Блау, личный архив

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

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

Продолжение следует

Статья опубликована в выпуске 15.12.2017
Обновлено 22.07.2020

Комментарии (0):

Чтобы оставить комментарий зарегистрируйтесь или войдите на сайт

Войти через социальные сети:

Мы собираем файлы cookie и применяем Яндекс.Метрику.Подробнее×

Этот сайт использует сервис веб-аналитики Яндекс Метрика, предоставляемый компанией ООО «ЯНДЕКС», 119021, Россия, Москва, ул. Л. Толстого, 16 (далее — Яндекс)

Сервис Яндекс Метрика использует технологию «cookie».

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

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