Универсальный код продукта ( 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]
Мюррей Иден был консультантом в команде, которая создала штрих-код Universal Product Code. [11] [12] Будучи председателем комитета ученых Массачусетского технологического института , он помог «выбрать символ, который выдержит неизбежный натиск технологий, который ждал нас впереди». [13] Он выбрал шрифт и придумал идею добавить цифры внизу, что является отказоустойчивой системой, на случай, если считыватель штрих-кода будет работать неправильно. [14] [15]
Примерно в конце 1969 года IBM в Research Triangle Park (RTP) в Северной Каролине поручила Джорджу Лореру определить, как сделать сканер и этикетку для супермаркета. В конце 1970 года Херд Баумайстер предоставил уравнения для расчета количества символов на дюйм, достижимого двумя штрихкодами IBM, Delta A и Delta B. В феврале 1971 года Баумайстер присоединился к Лореру.
Delta B сравнивала ширину штрихов с шириной пробела для кодовых битов. Это было чрезвычайно чувствительно к распространению чернил, где неправильные уровни чернил или давления могли привести к тому, что оба края штриха расползались наружу или сжимались.
В середине 1971 года Уильям «Билл» Крауз изобрел новый штрих-код под названием Delta C. [4] Он обеспечивал в четыре раза больше символов на дюйм, чем Delta B.
Delta C достигла более высокой производительности, используя только передний к переднему или задний к заднему краям, на что не влияло равномерное распределение чернил. Код обеспечивал наилучшую производительность, когда у него был определенный набор символов с фиксированным опорным расстоянием, которое охватывало большую часть или, предпочтительно, весь символ.
В августе 1971 года Крауз присоединился к работе над сканером. Спустя несколько месяцев они не добились никакого прогресса. Они знали о этикетке RCA Bull's Eye, которую можно было сканировать простым лазерным сканером прямой линии, но читаемая этикетка была слишком большой.
Хотя Litton Industries предложила символ «бычий глаз», разрезанный пополам, чтобы уменьшить площадь, он все равно был слишком большим и представлял те же проблемы с размазыванием чернил, что и символ RCA. Избыточность и возможность проверки были полностью удалены. Они также знали о многочисленных предложениях со всего мира, ни одно из которых не было осуществимо.
Весной 1972 года Баумайстер объявил о прорыве. Он предложил этикетку со штрихами, которые были немного длиннее расстояния по всем штрихам, которое нужно было считать за один проход. Эту этикетку можно было сканировать простым сканером "X", который был лишь немного сложнее лазерного сканера с прямой линией. На следующий день Баумайстер предположил, что если разделить этикетку на две половины, то длину штрихов можно было бы сократить почти вдвое.
Эти два предложения сократили область от яблочка на одну треть, а затем на одну шестую. Изображение справа показывает этикетку, предложенную Баумайстером. Он не указал какой-либо конкретный штрих-код, поскольку это было хорошо понятно. За исключением штрих-кода и десяти цифр, этикетка UPC сегодня является его предложением. Вскоре после этого Баумайстер перешел в другую область RTP.
Лорер приступил к определению деталей этикетки и написанию предложения. NJ Woodland был назначен планировщиком проекта и помог Лореру с написанием предложения.
Первая попытка Лорера со штрих-кодом использовала Delta B. Полученный размер этикетки составил около шести дюймов на три дюйма, что было слишком большим. Крауз предложил Лореру использовать его штрих-код Delta C и предоставил копию своего патента, в котором был образец набора буквенно-цифровых символов и правила для создания алфавитов других размеров. Это уменьшило размер этикетки до примерно 1,5 дюйма × 0,9 дюйма (38 мм × 23 мм).
Позже Лорер попросил Крауза помочь в том, как сканер мог бы обнаружить метку. Вместе они определили защитные полосы и определение того, как обнаружить метку. Защитные полосы также обеспечивали идентификацию для дискриминации половины метки и обучающие полосы для пороговых схем сканера. Лорер имел полное определение метки и приступил к написанию своего предложения. [16]
Ранее у Крауза была идея простой палочки, которую можно носить как кольцо и браслет. Он решил разработать эту палочку, чтобы продемонстрировать этикетку. [ нужна цитата ]
1 декабря 1972 года IBM представила предложение Лорера Комитету по супермаркетам в Рочестере, штат Миннесота , где IBM разработает сканер. Во время презентации Крауз провел лабораторную демонстрацию, где он считывал этикетки, похожие на UPC, с помощью своего кольцевого щупа. В дополнение к считыванию обычных этикеток он прочитал большую двухстраничную этикетку с разворотом в буклете с предложением. Затем он перевернул страницу с фотографией маркированных предметов, лежащих на столе. Этикетки были маленькими и несовершенными из-за разрешения напечатанной фотографии, но щуп считывал многие из них. Эта демонстрация показала надежность чистого кода Delta C. Предложение было принято.
Месяц спустя, 1 января 1973 года, Крауз вернулся в группу передовых технологий IBM, а Лорер остался нести полную ответственность за лейбл.
Dymo Industries , производители ручных печатающих устройств, настаивали на том, чтобы код был независимым от символов, [ необходимо разъяснение ] , чтобы ручные печатающие устройства могли печатать штрих-код в магазине, если товары не были закодированы производителями. Предложение Dymo было принято IBM и включено в последнее предложение IBM.
Было решено, что две половины этикетки должны иметь разный набор цифровых символов. Набор символов, который Лорер вывел из патента Delta C, использовал семь печатаемых приращений или единиц, где печатались бы две черты и два пробела. Это дало двадцать комбинаций символов, но было две пары, которые при считывании по правилам Delta C давали тот же код для пары.
Поскольку восемнадцати символов было недостаточно, Лорер попытался добавить одну единицу к набору символов. Это дало двадцать шесть символов Delta C, которые могли обеспечить два набора десятичных символов, но также добавило четырнадцать процентов к ширине этикетки и, следовательно, к высоте. Это было бы тридцатью процентами увеличения площади или этикетки размером 1,7 дюйма × 1,03 дюйма (43 мм × 26 мм). Лорер посчитал, что это неприемлемо.
Лорер вернулся к исходному набору символов с двадцатью символами, но четыре из них были двумя парами с одинаковым значением Delta C. Он решил использовать их все. Чтобы различать пары, он измерял ширину одной полосы в каждой из пар, чтобы отличать их друг от друга. Для каждой пары эти полосы были бы шириной в одну или две единицы.
Лорер не применял уравнения Баумейстера к этому набору. Он посчитал, что измерение ширины всего одной полосы не будет слишком серьезным. Как оказалось, для увеличения площади более чем вдвое потребовалось бы увеличение ширины и высоты более чем на пятьдесят процентов. Позднее Лорер признал, что эти четыре символа в каждом наборе были ответственны за большинство ошибок чтения сканера.
Дэвиду Сэвиру, математику, было поручено доказать, что символ может быть напечатан и будет соответствовать требованиям надежности, и он, скорее всего, не знал об уравнениях Баумейстера. Он и Лорер добавили еще две цифры к десятке для обнаружения и исправления ошибок .
Затем они решили добавить четность/нечетность к числу единиц, заполненных полосами с каждой стороны. Четность/нечетность — это метод, используемый для обнаружения любого нечетного числа ошибок битов в потоке битов. Они решили использовать нечетность на одной половине и четность на другой. Это дало бы дополнительное указание на то, какая половина билета считывается. Это означало, что каждая ширина полосы должна была быть считана точно, чтобы обеспечить хорошее считывание. Это также означало, что каждый пробел также будет известен.
Требование точного считывания ширины каждого бита по сути свело на нет преимущество Delta C, за исключением эталонного измерения Delta C. Только странный набор символов и размер метки остались как тень кода Delta C. Размер все еще был рассчитан для чистого Delta C. Если бы размер метки был правильно пересчитан, принимая во внимание требуемые измерения ширины штриха, метка была бы слишком большой, чтобы быть приемлемой.
Машиностроение и проектирование электронных схем обычно требуют наихудших вариантов с использованием известных допусков. Многие инженеры, работающие со штрихкодами, имели мало опыта в таких вещах и использовали несколько интуитивные методы. Это было причиной плохой производительности кода Delta B и, вполне вероятно, отказа сканера Bull's Eye компании RCA.
В следующей таблице показаны рабочие этикетки, доступные в начале 1970-х годов, а также их размеры.
Это предполагает попадание в яблочко с той же информацией и надежной читаемостью.
Каждый штрих-код UPC-A состоит из сканируемой полосы черных полос и белых пробелов над последовательностью из 12 числовых цифр. На штрих-коде UPC-A не должно быть букв , символов или другого содержимого любого рода. Существует однозначное соответствие между 12-значным числом и полосой черных полос и белых пробелов, т. е. существует только один способ визуального представления каждого 12-значного числа и только один способ числового представления каждой полосы черных полос и белых пробелов.
Сканируемая область каждого штрихкода UPC-A следует шаблону S L LLLLLMRRRR R E, где защитные шаблоны S (начало), M (середина) и E (конец) представлены одинаково на каждом штрихкоде UPC-A, а секции L (слева) и R (справа) в совокупности представляют 12 числовых цифр, которые делают каждый штрихкод UPC-A уникальным. Первая цифра L указывает на определенную систему счисления, которая будет использоваться следующими цифрами. Последняя цифра R является контрольной цифрой обнаружения ошибок , которая позволяет обнаруживать некоторые ошибки при сканировании или ручном вводе. Защитные шаблоны разделяют две группы из шести числовых цифр и устанавливают синхронизацию.
UPC-A 042100005264 эквивалентен UPC-E 425261 с шаблоном четности «EOEEOO», который определяется числом 0 в системе счисления UPC-A и контрольной цифрой 4 UPC-A.
Штрихкоды 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%.
С каждой стороны сканируемой области штрихкода UPC-A должна быть свободная зона шириной не менее 9 x-размера. [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 модуля и используют шаблон штрих-пробел-штырь , где каждый штрих и пробел имеют ширину одного модуля. Защитный шаблон M (середина) имеет ширину 5 модулей и использует шаблон пробел-штырь-пробел-штырь-пробел , где каждый штрих и пробел также имеют ширину одного модуля. Кроме того, символ UPC-A требует наличия тихой зоны (дополнительного пространства шириной 9 модулей) перед защитными шаблонами S (начало) и после защитных шаблонов E (конец).
Цифры с левой стороны UPC-A (цифры слева от защитного шаблона M (среднего)) имеют нечетную четность, что означает, что общая ширина черных полос составляет нечетное число модулей. Напротив, цифры с правой стороны имеют четную четность. Следовательно, сканер UPC может определить, сканирует ли он символ слева направо или справа налево (символ перевернут). Увидев защитный шаблон S (начало) или E (конец) (они одинаковы, штрих -пробел-штырь , в каком бы направлении они ни считывались), сканер сначала увидит нечетные цифры четности, если сканировать слева направо, или четные цифры четности, если сканировать справа налево. С информацией о четности/направлении перевернутый символ не смутит сканер. Столкнувшись с перевернутым символом, сканер может просто проигнорировать его (многие сканеры чередуют сканирование слева направо и справа налево, поэтому они будут считывать символ при последующем проходе) или распознать цифры и расположить их в правильном порядке. Есть еще одно свойство в кодировании цифр. Цифры с правой стороны являются оптической инверсией цифр с левой стороны, т. е. черные полосы превращаются в белые пробелы и наоборот. Например, левая сторона «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 можно вычислить следующим образом:
Таким образом, контрольная цифра, умноженная на 12, равна 2.
Уравнение контрольной цифры выбрано таким образом, чтобы оно имело разумные свойства обнаружения ошибок (см. алгоритм Луна ).
UPC в наиболее распространённом использовании технически относится к UPC-A.
Существуют и другие варианты UPC:
Чтобы разрешить использование штрих-кодов 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: числовые имена: список авторов ( ссылка )