Типы кодирования штрих-кодов в поле "barcode" для реестра билетов по Пушкинской карте

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

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

Aztec Code

Двумерный матричный штрихкод. Разработан в 1995 году доктором Andrew Longacre, Jr., исследователем из фирмы Welch Allyn Inc. (позже Hand Held Products Inc., сейчас Honeywell Imaging and Mobility). Код был опубликован фирмой AIM International в 1997 году, и хотя на код был получен патент, он был передан в общественное достояние.

Кодирование

Области полной версии Aztec Code. Чёрным и красным обозначены элементы навигации, зелёным — область служебной информации, синим и голубым — слои хранения данных
Ядро компактной версии Aztec Code: центральная мишень, четыре маркера ориентации и пространство в 28 бит (по семь на каждой стороне) для описания параметров кодирования. Первое кольцо информации следует прямо за ядром.

Построение происходит на квадратной регулярной сетке.

На иллюстрации показаны области полной версии Aztec Code.

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

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

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

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

Размер кода может варьироваться от квадрата 15x15 до квадрата 151x151. Наименьший может содержать в себе до 13 цифр или 12 букв английского алфавита, а наибольший — 3832 цифр или 3067 букв английского алфавита или 1914 байт данных. При этом не требуется пустого пространства вокруг рисунка кода.

Набор символов

  1. Данные кодируются побайтно и по умолчанию интерпретируются следующим образом:
  2. для 0 — 127, ANSI X3.4 (то есть ASCII)
  3. для 128—255, ISO 8859-1 (алфавит для западноевропейских языков)
    Это относится к ECI 000003.
  4. Для совместимости с существующими системами могут быть добавлены два служебных символа, FNC1 и ECI

Особенности

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

Происхождение названия

Название «Aztec Code» схема получила на ранних этапах разработки из-за внешнего сходства с классической символикой в искусстве коренных жителей Центральной Америки.

Использование

Онлайновый железнодорожный билет на Deutsche Bahn

Транспорт

Железные дороги

  • Штрихкоды Aztec Code используются железнодорожными операторами Deutsche Bahn, Trenitalia, Nederlandse Spoorwegen и Swiss Federal Railways для билетов, продаваемых онлайн и распечатываемых клиентами. Штрихкоды Aztec Code используются железнодорожными операторами Heathrow Express и National Express East Coast, в качестве электронных билетов, которые доставляются на мобильные телефоны и показываются с их экранов, а также для самостоятельного распечатывания.
  • Штрихкоды сканируются ручным сканером при проверке билетов контролёром.
  • Штрихкоды Aztec Code с 2016 года начало использовать на одноразовых билетах ОАО «Центральная ППК», осуществляющее пригородное железнодорожное сообщение в московском регионе.
Разовый билет пригородного железнодорожного сообщения ОАО «ЦППК» на Московско-Казанском направлении Московской ж.д. (Московская область)

Авиалинии

  • Aztec Code был выбран международной ассоциацией воздушного транспорта для электронных билетов (стандарт BCBP IATA).
  • Некоторые авиакомпании (в частности, российская S7 Airlines) отправляют штрихкоды Aztec Code на мобильные телефоны пассажиров в качестве электронных (или безбумажных) билетов.
  • Авиакомпания Air New Zealand будет использовать Aztec Code для билетов внутри страны, но внедрение этой системы ещё в процессе.

Правительственные документы

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

PDF417

PDF417 (англ. Portable Data File — переносимый файл данных) — двумерный штрихкод, поддерживающий кодирование до 2710 знаков. PDF417 был разработан и введён в 1991 году фирмой Symbol Technologies. В настоящее время PDF417 широко применяется в идентификации личности, учёте товаров, при сдаче отчётности в контролирующие органы и других областях. Формат PDF417 открыт для общего использования.

Формат

PDF417 может содержать до 90 строк. Каждая строка состоит из:

  • стартового и стопового шаблона. Они характеризуют штрихкод как PDF417.
  • набора ключевых слов (КС):
  • левый и правый индикаторы — содержат информацию о номере строки, количестве строк и столбцов, уровне коррекции ошибок;
  • до 30 КС данных, содержащих как непосредственно данные, так и информацию для восстановления повреждённых КС.

Каждое КС состоит из 4 штрихов и 4 пробелов, ширина КС в 17 раз больше минимального штриха или пробела — отсюда числовой суффикс в обозначении формата PDF417.

PDF417 поддерживает три типа данных: текст (ASCII), байты и числа.

PDF417 предусматривает полиномиальное кодирование Рида-Соломона дополнительных данных для восстановления информации. Количество дополнительных КС зависит от уровня коррекции ошибок.

Фармакод

Пример фармакода

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

Кодирование

Фармакод может представляться только одним целым числом от 1 до 131 070. В отличие от других широко используемых линейных штриховых кодов, фармакод не хранит данные в виде, соответствующем возможности понимания человеком цифр, число кодируется в двоичном формате. Фармакод читается сканером справа налево и слева направо (если сканер всенаправленный): каждая узкая полоса обозначает ноль в двоичном коде и каждая широкая полоса обозначает единицу. Минимальная длина штрихкода — 1 узкая полоса и максимальная — 16 широких, так что наименьшее число, которое может быть закодировано — это 1 (1 узкая полоса) и самое большое — 131070 (16 широких полос). Фармакоды представляются цветами, которые доминируют на упаковке.

Алгоритм кодирования

  1. К числу, необходимому для кодирования, необходимо прибавить единицу (пример: 69 + 1 = 70)
  2. Необходимо перевести число в двоичный формат (7010 = 10001102)
  3. «Вычеркнуть» единицу, стоящую впереди всех остальных чисел (1000110 → 000110)
  4. Преобразовать число в линейный код, заменяя нули узкими полосками, а единицы — широкими (000110 → IIIIII)

Алгоритм декодирования

  1. Заменить узкие и широкие полоски числами (IIIIIII → 0110010)
  2. Поставить единицу спереди этого числа (10110010)
  3. Выполнить перевод этого двоичного числа в десятичное (101100102 → 17810)
  4. Вычесть из полученного числа единицу (178 — 1 = 177)

Источник:
https://ru.wikipedia.org/