Универсальный код продукта ( UPC или код UPC ) — это символика штрих-кода , которая широко используется во всем мире для отслеживания товаров в магазинах.
Выбранная символика имеет полосы (или пробелы) шириной ровно 1, 2, 3 или 4 единицы каждая; каждая десятичная цифра, подлежащая кодированию, состоит из двух полос и двух пробелов, выбранных так, чтобы иметь общую ширину 7 единиц, как в «четной», так и в «нечетной» форме четности, что позволяет сканировать в любом направлении. Специальные «защитные шаблоны» (шириной 3 или 5 единиц, не кодирующие цифру) смешиваются, чтобы облегчить декодирование.
UPC (технически UPC-A) состоит из 12 цифр, которые уникально присвоены каждому предмету торговли. Международная организация GS1 назначает цифры, используемые как для UPC, так и для соответствующего штрих-кода международного номера товара (EAN) . [1] Структуры данных UPC являются компонентом глобальных номеров торговых позиций (GTIN) и соответствуют глобальной спецификации GS1, основанной на международных стандартах. Но некоторые розничные торговцы, например, продавцы одежды и мебели, не используют систему GS1, а используют другие символы штрих-кодов или системы нумерации товаров. Некоторые розничные продавцы используют символику штрих-кода EAN/UPC, но не используют GTIN для продуктов, продаваемых только в их собственных магазинах.
Исследования показывают, что внедрение и распространение UPC стимулировали инновации и способствовали росту международных розничных цепочек поставок. [2]
Уоллес Флинт предложил в 1932 году автоматизированную кассовую систему с использованием перфокарт . Бернард Сильвер и Норман Джозеф Вудленд , аспирант Технологического института Дрекселя , разработали код в виде «яблоня» и подали заявку на патент в 1949 году. [3] [4]
В 1960-х и начале 1970-х годов железные дороги Северной Америки экспериментировали с многоцветными штрих-кодами для отслеживания вагонов , но от этой системы в конечном итоге отказались [5] и заменили ее радиосистемой под названием «Автоматическая идентификация оборудования» (AEI) .
В 1973 году группа торговых ассоциаций бакалейной отрасли сформировала Совет по единообразным кодам продуктов (UPCC), который с помощью консультантов Ларри Рассела и Тома Уилсона из McKinsey & Company определил числовой формат, легший в основу Единого кода продуктов. Код. [6] Технологические фирмы, в том числе Charegon, IBM , Litton-Zellweger, Pitney Bowes-Alpex, Plessey-Anker, RCA , Scanner Inc., Singer и Dymo Industries /Data General, выдвинули совету альтернативные предложения по представлению символов. [ нужна цитация ] Комитет по выбору символов, наконец, решил реализовать предложение IBM, разработанное Джорджем Дж. Лорером , но с небольшим изменением шрифта в удобочитаемой области. [ нужна цитата ]
Первым предметом с маркировкой UPC, который когда-либо сканировался на кассе розничной торговли, была упаковка из 10 (50 палочек) жевательной резинки Wrigley's Juicy Fruit , купленная в супермаркете Marsh в Трое, штат Огайо , в 8:01 утра 26 июня 1974 года. [7] В кассовом аппарате NCR цена выросла на 67 центов. [8] В тележке для покупок были и другие товары со штрих-кодом, но жевательная резинка была первой, которую взяли на кассе. Факсимиле упаковки жевательной резинки было выставлено в Музее американской истории Смитсоновского института в Вашингтоне, округ Колумбия [9] [10]
Мюррей Иден был консультантом команды, создавшей штрих-код универсального кода продукта. [11] [12] Будучи председателем комитета ученых Массачусетского технологического института , он помог «выбрать символ, который выдержит неизбежный натиск технологий, которые ждут впереди». [13] Он выбрал шрифт, и ему пришла в голову идея добавить цифры внизу, что является отказоустойчивой системой на случай, если считыватель штрих-кода работает неправильно. [14] [15]
Примерно в конце 1969 года компания IBM в Research Triangle Park (RTP) в Северной Каролине поручила Джорджу Лореру определить, как создать сканер и этикетку для супермаркетов. В конце 1970 года Херд Баумайстер представил уравнения для расчета количества символов на дюйм, достижимого с помощью двух штрих-кодов IBM, Delta A и Delta B. В феврале 1971 года Баумайстер присоединился к Лауреру.
Дельта B сравнивала ширину полоски с шириной пробела и битами кода. Это было чрезвычайно чувствительно к растеканию чернил: неправильный уровень чернил или давление приводили к тому, что оба края полосы растекались наружу или сжимались.
В середине 1971 года Уильям «Билл» Крауз изобрел новый штрих-код под названием Delta C. [4] Он содержал в четыре раза больше символов на дюйм, чем Delta B.
Delta C достигла более высокой производительности за счет использования только ведущей к передней или задней к задней кромке, на что не повлияло равномерное распределение чернил. Код обеспечивал наилучшую производительность, когда у него был определенный набор символов с фиксированным опорным расстоянием, охватывающим большую часть или, предпочтительно, весь символ.
В августе 1971 года к работе над сканером присоединился Крауз. Спустя несколько месяцев они не добились никакого прогресса. Они знали о этикетке RCA «бычий глаз», которую можно было сканировать с помощью простого лазерного сканера с прямой линией, но читаемая этикетка была слишком большой.
Хотя Litton Industries предложила разрезать символ бычьего глаза пополам, чтобы уменьшить площадь, он все равно был слишком большим и создавал те же проблемы с размазыванием чернил при печати, что и символ RCA. Избыточность и возможность проверки были полностью удалены. Они также знали о многочисленных предложениях со всего мира, ни одно из которых не было осуществимо.
Весной 1972 года Баумайстер объявил о прорыве. Он предложил метку со столбиками, длина которых немного превышала расстояние между всеми столбцами, которое нужно было прочитать за один проход. Эту этикетку можно сканировать с помощью простого X-сканера, лишь немного более сложного, чем прямой лазерный сканер. На следующий день Баумейстер предположил, что если разделить этикетку на две половины, длину стержней можно будет сократить почти вдвое.
Эти два предложения уменьшили площадь от яблочка на одну треть, а затем на одну шестую. На изображении справа показана этикетка, предложенная Баумайстером. Он не уточнил какой-либо конкретный штрих-код, поскольку это было хорошо понятно. За исключением штрих-кода и десяти цифр, сегодняшняя этикетка UPC — это его предложение. Вскоре после этого Баумайстер перешел в другой отдел РТП.
Лаурер приступил к определению деталей этикетки и написанию предложения. Нью-Джерси Вудленд был назначен планировщиком проекта и помог Лореру написать его предложение.
В первой попытке Лаурера использовать штрих-код использовалась Delta B. В результате размер этикетки составил примерно шесть на три дюйма, что было слишком большим. Крауз предложил Лореру использовать свой штрих-код Delta C и предоставил копию своего патента, в котором содержался образец буквенно-цифрового набора символов и правила для создания алфавитов другого размера. Это уменьшило размер этикетки примерно до 1,5 x 0,9 дюйма.
Позже Лаурер обратился к Краузу за помощью в том, как сканер может обнаружить этикетку. Вместе они определили защитные полосы и определили, как обнаружить метку. Защитные полосы также обеспечивают идентификацию половины метки и обучающие полосы для пороговых схем сканера. У Лаурера было полное определение ярлыка, и он приступил к написанию своего предложения. [16]
Раньше у Крауза была идея простой палочки, которую можно было бы носить как кольцо и браслет. Он решил разработать эту палочку, чтобы продемонстрировать этикетку. [ нужна цитата ]
1 декабря 1972 года IBM представила предложение Лорера Комитету супермаркетов в Рочестере, штат Миннесота , месте, где IBM будет разрабатывать сканер. Во время презентации Крауз провел лабораторную демонстрацию, где он читал этикетки в стиле UPC с помощью кольцевой палочки. Помимо чтения обычных этикеток, он прочитал большую двухстраничную этикетку на развороте в буклете с предложениями. Затем он открыл страницу с фотографией предметов с маркировкой, лежащих на столе. Этикетки были маленькими и некачественными из-за разрешения напечатанной фотографии, но палочка прочитала многие из них. Эта демонстрация показала надежность чистого кода Delta C. Предложение было принято.
Месяц спустя, 1 января 1973 года, Крауз снова перешел в группу передовых технологий IBM, и Лаурер остался с полной ответственностью за лейбл.
Dymo Industries , производитель портативных печатающих устройств, настаивал на том, чтобы код был независимым от символов, [ необходимы разъяснения ] , чтобы портативные печатающие устройства могли создавать штрих-код в магазине, если на товарах не был нанесен штрих-код производителями. Предложение Даймо было принято IBM и включено в последнее предложение IBM.
Было решено, что две половины этикетки должны иметь разный набор цифровых символов. В наборе символов, полученном Лаурером на основе патента Delta C, использовалось семь печатных приращений или единиц, в которых печатались две полосы и два пробела. Это дало двадцать комбинаций символов, но были две пары, которые при чтении по правилам Delta C давали один и тот же код для пары.
Поскольку восемнадцати символов было недостаточно, Лаурер попытался добавить к набору символов одну единицу. Это дало двадцать шесть символов Delta C, которые могли обеспечить два набора десятичных символов, но также добавили четырнадцать процентов к ширине метки и, следовательно, к высоте. Это будет тридцатипроцентное увеличение площади или метка 1,7 x 1,03 дюйма. Лаурер считал это неприемлемым.
Лаурер вернулся к исходному набору символов с двадцатью символами, но четыре из них были двумя парами с одинаковым чтением Delta C. Он решил использовать их все. Чтобы различать пары, он измерял ширину одной полоски в каждой паре, чтобы отличить их друг от друга. Для каждой пары эти столбцы будут иметь ширину в одну или две единицы.
Лаурер не применил к этому набору уравнения Баумайстера. Он чувствовал, что измерение ширины всего лишь одного стержня не будет слишком серьезным. Как оказалось, для увеличения площади более чем вдвое потребовалось бы увеличение ширины и высоты более чем на пятьдесят процентов. Позже Лаурер признал, что эти четыре символа в каждом наборе были причиной большинства ошибок чтения сканера.
Дэвиду Савиру, математику, было поручено доказать, что символ можно напечатать и он будет соответствовать требованиям надежности, и, скорее всего, он не знал об уравнениях Баумайстера. Он и Лорер добавили к десяти еще две цифры для обнаружения и исправления ошибок .
Тогда они решили добавить четность нечет/чет к количеству ячеек, заполненных стержнями с каждой стороны. Паритет четности/нечетности — это метод, используемый для обнаружения любого нечетного количества битовых ошибок в битовом потоке. Они решили использовать нечетную на одной половине и четную на другой. Это обеспечит дополнительную индикацию того, какая половина билета читается. Это означало, что для обеспечения хороших показаний необходимо было точно считывать каждую ширину столбца. Это также означало, что каждое пространство также будет известно.
Требование точного считывания каждой разрядности фактически сводило на нет преимущество Delta C, за исключением эталонного измерения Delta C. Лишь странный набор символов и размер метки остаются тенью кода Delta C. Размер по-прежнему соответствовал расчетному для чистой Delta C. Если бы размер этикетки был правильно пересчитан с учетом требуемых размеров ширины полосы, этикетка была бы слишком большой, чтобы ее можно было принять.
Машиностроение и проектирование электронных схем обычно требуют проектирования наихудшего случая с использованием известных допусков. Многие инженеры, работающие со штрих-кодами, имели мало опыта в таких вещах и использовали несколько интуитивные методы. Это стало причиной плохой работы кода Delta B и, вполне вероятно, отказа сканера «яблочко» RCA.
В следующей таблице показаны работоспособные этикетки, доступные в начале 1970-х годов, с указанием их размеров.
Это предполагает попадание в яблочко с той же информацией и надежной читаемостью.
Каждый штрих-код UPC-A состоит из сканируемой полосы черных полос и пробелов над последовательностью из 12 цифровых цифр. Никакие буквы , символы или другой контент любого рода не могут присутствовать на штрих-коде UPC-A. Между 12-значным числом и полосой черных полос и пробелов существует взаимно однозначное соответствие, т.е. существует только один способ визуального представления каждого 12-значного числа и только один способ представления каждой полосы черных полос. и пробелы численно.
Сканируемая область каждого штрих-кода UPC-A соответствует шаблону S L LLLLLMRRRRR R E, где защитные шаблоны S (начало), M (середина) и E (конец) представлены одинаково на каждом штрих-коде UPC-A, а L Секции (слева) и R (справа) вместе представляют собой 12 числовых цифр, которые делают каждый UPC-A уникальным. Первая цифра L указывает конкретную систему счисления, которая будет использоваться следующими цифрами. Последняя цифра R — это контрольная цифра обнаружения ошибок , которая позволяет обнаружить некоторые ошибки при сканировании или вводе вручную. Защитные шаблоны разделяют две группы по шесть цифр и устанавливают время.
UPC-A 042100005264 эквивалентен UPC-E 425261 с шаблоном четности «EOEEOO», который определяется системой счисления UPC-A 0 и контрольной цифрой UPC-A 4.
Штрих-коды UPC-A можно печатать с различной плотностью, что позволяет использовать их в различных процессах печати и сканирования. Важный размерный параметр называется x-размером (ширина отдельного элемента модуля). Ширина каждой полосы (пробела) определяется путем умножения размера x на ширину модуля (1, 2, 3 или 4 единицы) каждой полосы (пробела). Поскольку каждый из защитных шаблонов включает в себя по две полосы, а каждая из 12 цифр штрих-кода UPC-A состоит из двух полос и двух пробелов, все штрих-коды UPC-A состоят ровно из (3 × 2) + (12 × 2) = 30. полоски, из которых 6 представляют собой защитные шаблоны, а 24 представляют собой числовые цифры.
Размер X для UPC-A при номинальном размере составляет 0,33 мм (0,013 дюйма). Номинальная высота символа для UPC-A составляет 25,9 мм (1,02 дюйма). Полосы, образующие защитные узоры S (начало), M (среднее) и E (конец), удлиняются вниз в 5 раз по оси X, в результате чего номинальная высота символа составляет 27,55 мм (1,08 дюйма). Это также относится к полосы первой и последней цифр штрих-кода UPC-A. UPC-A можно уменьшать или увеличивать в пределах от 80% до 200%.
Спокойная зона шириной как минимум в 9 раз больше размера X должна присутствовать на каждой стороне сканируемой области штрих-кода UPC-A. [17] [18] Для номера GTIN-12, закодированного в штрих-коде UPC-A, первая и последняя цифры удобочитаемой интерпретации всегда размещаются за пределами символа, чтобы указать зоны молчания, необходимые для штрих-кода UPC. сканеры работают корректно.
Штрих-код UPC-A визуально представлен полосами полос и пробелов, которые кодируют 12-значный номер UPC-A. Каждая цифра представлена уникальным узором из 2 полосок и 2 пробелов. Полосы и пробелы имеют переменную ширину, т.е. ширину 1, 2, 3 или 4 модуля. Общая ширина цифры всегда равна 7 модулям; следовательно, для 12-значного номера UPC-A требуется в общей сложности 7×12 = 84 модуля .
Полный UPC-A имеет ширину 95 модулей: 84 модуля для цифр (секции L и R) в сочетании с 11 модулями для защитных шаблонов S (начало), M (среднее) и E (конец). Шаблоны защиты S (начало) и E (конец) имеют ширину 3 модуля и используют шаблон bar-space-bar , где каждая полоса и пробел имеют ширину в один модуль. Шаблон защиты M (средний) имеет ширину 5 модулей и использует шаблон пробел-пробел-пробел , где каждая полоса и пробел также имеют ширину в один модуль. Кроме того, для символа UPC-A требуется тихая зона (дополнительное пространство шириной 9 модулей) перед S (начало) и после E (конец) защитных шаблонов.
Цифры левой стороны UPC-A (цифры слева от защитного шаблона M (среднего)) имеют нечетную четность, что означает, что общая ширина черных полос представляет собой нечетное количество модулей. Напротив, правые цифры имеют четность. Следовательно, сканер UPC может определить, сканирует ли он символ слева направо или справа налево (символ перевернут). После просмотра защитного шаблона S (начало) или E (конец) (они одинаковы, bar-space-bar , в каком бы направлении они ни читались), сканер сначала увидит нечетные цифры четности, если сканировать слева направо, или даже цифры четности, если сканировать справа налево. Благодаря информации о четности/направлении перевернутый символ не сбивает сканер с толку. Столкнувшись с перевернутым символом, сканер может просто проигнорировать его (многие сканеры чередуют сканирование слева направо и справа налево, поэтому они будут читать символ при последующем проходе) или распознать цифры и положить их в правильном порядке. Есть еще одно свойство кодировки цифр. Правые цифры являются оптической инверсией левых цифр, т.е. черные полосы превращаются в белые пробелы и наоборот. Например, левая часть «4» — это пробел×1 — полоска×1 — пробел×3 — полоска×2 , а правая часть «4» — это полоска×1 — пробел×1 — полоска×3 — пространство×2 .
Количество штрих-кодов UPC-A и UPC-E ограничено стандартами, используемыми для их создания.
Ниже приведено описание всех возможных систем счисления с соответствующей 12-значной схемой нумерации UPC-A L LLLLLRRRRR R , где L обозначает цифру системы счисления и R контрольную цифру.
UPC включает контрольную цифру для обнаружения распространенных ошибок при вводе данных. Например, коды UPC-A выбирают контрольную цифру в соответствии с уравнением контрольной цифры :
Если введенный код не удовлетворяет уравнению, то это недействительный UPC-A.
Контрольная цифра UPC-A может быть рассчитана следующим образом:
Например, в штрих-коде UPC-A «03600029145 x 12 », где x 12 — неизвестная контрольная цифра, x 12 можно рассчитать следующим образом:
Таким образом, контрольная цифра x 12 равна 2.
Уравнение контрольной цифры выбирается так, чтобы оно имело разумные свойства обнаружения ошибок (см. Алгоритм Луна ).
UPC в наиболее распространенном использовании технически относится к UPC-A.
Существуют и другие варианты БКП:
Чтобы разрешить использование штрих-кодов UPC на упаковках меньшего размера, где полный 12-значный штрих-код может не поместиться, была разработана версия UPC с подавлением нулей, называемая UPC-E, в которой цифра системы счисления, все конечные нули указаны производителем. код и все ведущие нули в коде продукта подавляются (опускаются). [23] Эта символика отличается от UPC-A тем, что она использует только 6-значный код, не использует защитный шаблон M (средний), а защитный шаблон E (конечный) формируется как пробел-пробел-бар- пробел , т. е. штрих-код UPC-E соответствует шаблону SDDDDDDE. То, как 6-значный UPC-E соотносится с 12-значным UPC-A, определяется числовым шаблоном UPC-E и шаблоном четности UPC-E. Он может соответствовать только системе счисления UPC-A 0 или 1, значение которой вместе с контрольной цифрой UPC-A определяет шаблон четности UPC-E кодировки. Если цифры кода производителя представлены буквами M, а цифры кода продукта буквами P, то:
Например, UPC-E 654321 может соответствовать UPC-A 065100004327 или 165100004324, в зависимости от шаблона четности UPC-E закодированных цифр, как описано ниже:
UPC-E 654321 с шаблоном четности «EOEOEO» (UPC-A 065100004327) будет закодирован как
Штрих-код будет выглядеть так:
EAN -13 был разработан как расширенная версия UPC-A, в которой в начале каждого номера UPC-A добавлялась дополнительная цифра. Это увеличило количество теоретически возможных уникальных значений в десять раз до 1 триллиона. Штрих-коды EAN-13 также указывают страну, в которой находится компания, продающая продукт (которая может совпадать, а может и не совпадать со страной, в которой производится товар). Это определяют три ведущие цифры кода, согласно кодам стран GS1 . Каждый код UPC-A можно легко преобразовать в эквивалентный код EAN-13, добавив к коду UPC-A цифру 0. Это не меняет контрольную цифру . Все системы торговых точек теперь могут одинаково понимать и то, и другое.
EAN-8 — это 8-значный вариант штрих-кода EAN.
Примечания по использованию UPC:
После окончания Мэриленда в 1951 году Джордж Лаурер присоединился к IBM в качестве младшего инженера и дослужился до старшего инженера.
В 1969 году он вернулся к технической стороне разработки, и позже ему была поручена монументальная задача по разработке кода и символа для идентификации продукта для Совета по единообразным кодам продуктов питания.
Его решение — Универсальный код продукта — радикально изменило мир розничной торговли.
С тех пор он усовершенствовал код, добавив 13-ю цифру.
{{cite web}}
: CS1 maint: числовые имена: список авторов ( ссылка )