Общее описание структуры UPC
Примітка: При зображенні кодового слова у штриховому коді, згідно табл. 1, подають: 0 – одним, 00 – двома, 000 – трьома і 0000 – чотирма інтервалами, а 1 – одинарним штрихом,11 – подвоєним штрихом, 111 – потроєним штрихом і 1111 – почетвереним штрихом.
Приклад зображення цифри 4 набором С – 1011100 на штрих-коді (рис. 3):
Рис. 3.
Таблиця 2
Знак СТАРТ | Кодове слово | Знак СТОП |
Н1(101) | 0 . . . . . . . . . . 0 | Н1(101) |
Н3(101010) | 1 . . . . . . . . . . .1 | Н2(010101) |
Н1(101) | 0 . . . . . . . . . . .1 | Н2(010101) |
Н3(101010) | 1 . . . . . . . . . . .0 | Н1(101) |
У штрихових кодах EAN довжиною 4, 5, 6, 7 знаків для кодування цифр використовується набір А (табл. 1), а обмежувальних знаків – Н1 (СТАРТ) та Н2 (СТОП).
У ШК довжиною 8, 10, 12 і 14 знаків кодові слова діляться на дві частини з однаковим числом знаків у кожній, які розділяються розділовим знаком Н4(01010). Для зображення знаків лівої частини кодового слова використовуються набори А і В, а правої – С (див. табл. 1). Такі кодові слова мають обмежувальні знаки СТАРТ і СТОП типу Н1(101).
У коді EAN-13 штрихове зображення складається з двох частин по шість знаків у кожній, які розділені знаком Н4(01010), і має зліва та справа обмежувальні знаки Н1(101) (СТАРТ і СТОП).
Кодировка цифр
Кодировка цифр для правых и левых частей кода | |||
Цифра | Левый код | Правый код | Ширина линий |
3-2-1-1 | |||
2-2-2-1 | |||
2-1-2-2 | |||
1-4-1-1 | |||
1-1-3-2 | |||
1-2-3-1 | |||
1-1-1-4 | |||
1-3-1-2 | |||
1-2-1-3 | |||
3-1-1-2 |
Кодировка защитных шаблонов | |||
Шаблон | Слева | По центру | Справа |
Левый защитный шаблон | |||
Средний защитный шаблон | |||
Правый защитный шаблон |
При проектировании структуры кода, в условиях ещё не слишком развитой электроники, было важным сделать его как можно более простым для считывания сканером и упростить аппаратную часть самого сканера. Одной из сложностей была проблема вероятного считывания кода в обратном направлении, то есть считывания кода на товаре, который кассир поднёс к сканеру «вверх ногами». Поэтому очень важно было, чтобы чередование полос было одинаковым в обоих направлениях — сначала тёмный штрих, потом белый, потом опять тёмный и так далее. Да, и ещё было бы неплохо, чтобы положение защитных шаблонов было всегда на одном и том же месте.
Решение было найдено. Можно обратить внимание, что код выглядит очень симметрично, то есть количество штрихов справа и слева от центра всегда равно, а ширина правой и левой части штрихкода одинаковы. То есть механизм считывания штрихкода всегда одинаков, как этот код ни поверни.
Что касается одинаковой последовательности чередования светлых и тёмных штрихов при прямом и обратном чтении, то разработчики добились этого тем, что кодировка правой и левой групп цифр немного отличается — правые символы имеют фотографически негативное начертание относительно левых. То есть шаблоны штрихов для одной и той же цифры идентичны, но позитивны или негативны. Иначе говоря, отличие только в том, что если для левой части кода это светлый штрих, то для правой — тёмный.
Проблема распознавания прямого или обратного считывания точно так же легко разрешается логически. Например, если сканер считывает цифру с толщиной штрихов 3-2-1-1, то он понимает, что это цифра «ноль» и её прямое считывание, а если он считывает штрихи толщиной 1-1-2-3, то он понимает, что это тот же «ноль», но считанный в обратном направлении. Считывая числа, закодированные зеркально относительно обычной кодировки, сканер понимает, что весь штрихкод считывается в обратном направлении, следовательно, и всю полученную последовательность из 12 цифр нужно передать компьютеру в обратном порядке.
Всё это было определённой перестраховкой, и по современным меркам излишеством, но и год был 1973.
Першу зліва цифру (12-а цифра) товарного номера не кодують у вигляді штрихів і пробілів, а тільки пишуть зліва внизу. Ця цифра визначає спосіб кодування цифр, які розташовані у лівій частині кодового слова між знаками Н1 та Н4 (табл. 3). Літерами А і В у табл. 3 позначені набори з табл.1, якими кодують відповідні знаки лівої частини кодового слова. Цифри, які розташовані у правій частині кодового слова між знаками Н4 і Н1, кодують набором С (див. табл. 1). Обмежувальні і розділовий знаки зображають більш довшими по висоті штрихами.
Таблиця 3
u12 | u11 u10 u9 u8 u7 u6 |
А А А А А А | |
А А В А В В | |
А А В В А В | |
А А В В В А | |
А В А А В В | |
А В В А А В | |
А В В В А А | |
А В А В А А | |
А В А В В А | |
А В В А В А |
Деякі товари можуть мати короткий номер, що має 7 цифр. Після доповнення його контрольною цифрою, що виконується за наведеним вище алгоритмом для коду EAN-13, одержують 8 цифр, які кодують кодом EAN-8. Кодове слово EAN-8 складається зі знака СТАРТ – Н1, чотирьох знаків набору А, розділового знака Н4, трьох знаків набору С, знака контрольної цифри у наборі С, а також знака СТОП – Н1. У коді EAN-8 перша цифра u7 не визначає неявне кодування, а кодується як і наступні цифри u6, u5, u4 набором А ( див. табл. 1 ).
Штрихові коди UPC (Universal Product Code) використовуються у США та Канаді для ідентифікації товарів і також призначені для кодування 10 цифр та п’яти додаткових знаків. Коди UPC сумісні з кодами EAN з огляду на те, що використовують одну і ту ж таблицю наборів знаків ( табл.6.1 ).
Існує декілька різновидів ШК UPC, з яких найбільше поширення набули коди:
· UPC-A(повний) - кодується 12 цифр;
· UPC-E(скорочений) - кодується 8 цифр.
Кодове слово ШК UPC-А має 12 цифр (12-а – контрольна), тобто на одну цифру менше ніж у EAN-13. Це викликано тим, що код країни (США і Канада) має тільки дві цифри. Відмінними ознаками коду UPC-А від коду EAN-13 є:
· старша цифра (u11) товарного номера у штриховому зображенні кодується явно (рис. 3);
· штрихове зображення кодового слова у коді UPC-А містить знак СТАРТ (Н1-101), 6 знаків набору А, розділовий знак (Н4 - 01010), 5 знаків набору С, знак контрольної суми набору С і знак СТОП ( Н1 ) ( див. табл.6.1 );
· у штриховому зображенні знаки цифр u11 і uК можуть виконуються висотою, однаковою з висотою зображення знаків Н1 і Н4, причому значення цифр під цими знаками не позначають;
Контрольна цифра визначається за тим же алгоритмом, що використовується і у коді EAN-13.
Товарний номер у коді UPC-Е містить 6 цифр і також поділяється на дві частини по 3 цифри у кожній. Перша частина ( ліва ) кодується набором А, а друга ( права ) – набором С ( у тому числі і контрольний знак ) ( див. табл.6.1 ).
При декодуванні ШК EAN та UPC перш за все визначається контрольний знак, який повинен співпадати з переданим. Крім того, сума всіх цифр кодового слова, що подається на приймальний пристрій, повинна бути кратною 10. У цьому разі помилки нема. Якщо ж сума буде не кратною 10, це вказує на наявність помилки. Помилка виявляється і при неправильному прийомі знаків, що не відповідають наборам, встановленим неявним кодуванням по старшому знаку в ШК EAN-13 цифр лівої половини кодового слова, тому що набори А і В (див. табл.6.1) не збігаються.
Код UPC — простой и практически симметричный линейный штрихкод. Эта простота, симметричность и высокая помехозащищённость обусловлена недостаточно развитой техникой времён создания этих кодов. Код состоит из 2 групп цифр, по 6 цифр в каждой группе — левой и правой. Группы цифр окаймляются так называемыми защитными, или ограждающими, штрих-шаблонами (Guard Patterns), которые выделены на рисунке для наглядности зелёным цветом. Эти шаблоны содержат штрихи единичной ширины, которые служат для синхронизации сканера штрихкода. Наличие именно трёх таких полей обусловлено в первую очередь возможным нанесением штрихкода на закруглённую поверхность. И если сейчас это не является особой проблемой, то во времена создания этого кода сканеру требовалось знать ширину единичного штриха в начале, середине и конце кода. Левые и правые защитные шаблоны состоят из 3 штрихов единичной ширины — двух тёмных и одного светлого между ними. Средний защитный шаблон состоит из 5 штрихов — трёх светлых и двух тёмных. Всё остальное — цифры.
Каждая цифра левой или правой группы кодируется с помощью четырёх штрихов: двух светлых и двух тёмных. Каждый штрих может иметь относительную ширину в одну, две, три или четыре единицы. Общая ширина штрихов для одной цифры всегда составляет семь единиц. Битовая комбинация для каждой цифры разработана таким образом, чтобы цифры, насколько это возможно, отличались друг от друга. Максимальная длина тёмного или светлого участка не может превышать четырёх единиц. Общая ширина всего кода всегда равна 95 единицам. В любом коде 29 светлых и 30 тёмных штрихов. Все эти технические решения очень важны для надёжности и простоты сканирования этого кода.
Первая цифра кода — это так называемый префикс — имеет некоторое логическое значение, но не столь важна с технической точки зрения. Последняя цифра — контрольное число, служит для выявления возможной ошибки при чтении кода сканером или ручного ввода цифр кода с клавиатуры.
Направление чтения комбинации штрихов значения не имеет, код специально разрабатывался так, чтобы он одинаково просто считывался как в прямом, так и обратном направлении (если товар перевёрнут). Также не имеет значения то, какое исполнение имеет весь штрихкод — фотографически позитивное или негативное. То есть штрихкод, нанесённый светлыми полосками по тёмному фону читается абсолютно так же, как и тёмными полосками по светлому фону. Мало того, цвета штрихов и фона не обязательно должны быть белыми и чёрными, возможны и другие цветовые комбинации.