Штрихкод – выбор формата

Маша! Почему эти кретины прислали штрихкоды в 12 символов, а печатают 13? 
хроники концертного агенства Х ]

В предыдущей статье был сделан безапелляционный вывод – использовать только Code 128 C или QR. Почему? Казалось бы, принцип один и тот же – графическое кодирование информации. Сначала немного истории и как это в принципе работает.

В википедии можно прочесть про замечательных парней, которые с 1948 года стали исследовать проблему машинного чтения для маркировки товаров на кассе. Один из них, Norman Joseph Woodland, продолжил исследования и вдохновленный азбукой Морзе создал первый линейный штрихкод. Фактически Норман просто вытянул тире и точки азбуки Морзе в линии и для чтения приспособил механизм для оптического чтения саундтреков к фильмам. Дальше штриховое кодирование улучшали, создавали новые варианты, но основной смысл “графической азбуки Морзе” остался неизменным.

Сейчас принято делить штрихкоды на линейные (одномерные) и матричные (двумерные).

К линейным относятся:

  • EAN
  • UPC
  • Code56
  • Code128
  • Codabar
  • Interleaved 2 of 5

Линейные коды это просто набор полосок

 

К двумерным:

  • Aztec Code
  • Data Matrix
  • MaxiCode
  • PDF417
  • QR код
  • Microsoft Tag

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

Большинство штрихкодов создано для маркировки товаров. Например все разновидности EAN кодов создавались для товаров. Задача такого кодирования – отличить один товар от другого. Задача ШК на электронном билете – не просто отличать билеты друг от друга, но и присвоить каждому билету никому неизвестный, случайный код, проверяемый на входе.

Форматы товарных, почтовых и книжных кодов включают в себя логистическую информацию, страну производитель, код товарной группы и прочее. Хотите ли вы кодировать страну производителя билета?) Разумеется, можно принебречь этими условностями, но на этом сложности только начинаются.

Некоторые из типов ШК требуют наличие лидирующего нуля, если код короче чем нужно. Некоторые, например EAN13, используют дополнительные проверки и контроль четности внутри самого кода. EAN13 позволяет закодировать только 12 символов, почему 13 в названии? 13ая цифра будет вычисляться перед печатью и добавляться в конец кода.

Угадайте – какой штрихкод перед вами?

Допустим – билет был постиран или замят, как его прочесть? Правильно! Нужно в программе ввести эти циферки внизу, человек читает в разы лучше машины! Однако, введя 1234567890138 вы не найдете ШК, и даже введя 234567890138 вы его не найдете! Потому что надо ввести 123456789013. 

Вывод прост – продуктовые коды это потенциальные проблемы на входе при контроле.

Самый простой и надежный вариант среди линейных – Code 128.

Пытливый читатель заметит в рекомендациях указана конкретная модификация Code 128 C. Модификация C позволяет кодировать цифры без букв. В чем тонкость? Чем больше алфавит формата штрихкода, тем большее изображение вам надо напечатать. Говоря другим языком, если кодировать только цифры ширина минимальной полоски будет в разы толще, чем при кодировании ещё и букв при той же ширине линейного штрихкода.

Считываемость лучше, когда в коде только цифры.

Например закодируем последовательность 123456 с помощью Code 128 C

а теперь ровно то же 123456 , только с помощью Code 128 A

однако при печати их ширина будет одинакова и получится примерно вот что:

На той же прощади линии получились тоньше, линий больше, принтер будет печатать тонкие линии хуже и читать это на входе будет сложнее.

И это всего 6 цифр.

Двумерные коды

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

Рекомендуем самый популярный QR Code

Итог

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

Code 128 C и QR

Следующая статья будет про уникальность и длину штрихкода.

Комментарии

Другие публикации