通用產品代碼
通用產品代碼(英語:Universal Product Code,UPC)是美國均勻碼理事會制定的商品條碼。在其基礎之上發展起來的歐洲商品編碼則已發展成為適用範圍最廣的通用條碼。
歷史
UPC是在IBM公司工程師諾曼·伍德蘭的環形碼基礎上誕生的[1]。1966年,美國國家食物連鎖協會(National Association of Food Chains,NAFC)要求研製加快貨物驗收速度的設備,國家收款機(National Cash Register,IBM公司的前身)在1967年開發出了用來替代伍德蘭德牛眼碼的新式同心圓環碼。
1970年夏天,應國家食物連鎖協會要求,Logicon公司開發出了食品工業統一碼(Universal Grocery Products Identification Code,UGPIC),依據IBM喬治·勞雷爾設計方案[2][3]。很快,美國超市Ad Hoc組織在Logicon公司建議下製造了UPC。美國均勻碼理事會在1973年建立了UPC系統,並且實現了該碼制標準化。UPC首先在雜貨零售業中試用,1974年6月25日,俄亥俄州的Marsh超級市場安裝了由NCR製造的第一台UPC掃描器。在使用UPC的27種商品中,第一個被收銀員沙龍·布坎南(Sharon Buchanan)掃描的是標價69美分的十片裝箭牌口香糖。在十年內,條碼掃描器攻占了一半的美國超市。至1989年,達到全美食品店的62%。
1992年香港惠康超級市場(台灣稱為「頂好」)成為全港第一家使用UPC系統的超市,為客人提供更快更方便的付款服務。根據2004-2008年的報告,惠康超級市場的分店數目因而提升。
編碼規則
UPC只能用來表示0-9的數字。每7個模組表達一個字符,每個模組有空(白色)與條(黑色)兩種狀態。
UPC又分為UPC-A、B、C、D、E五種版本。
UPC-A
用於通用商品,是適用範圍最廣的UPC。一共有113個模組,每個模組長0.33毫米。左右兩個各由9個模組組成的空白。UPC-A是定長碼,只能表示12位數字。從左至右,依次是3個模組(101)的起始碼、1位的系統碼、5位的左側數據碼、5個模組(01010)的中間碼、5位的右側數據碼、檢查碼、3個模組(101)的終止碼。其中,起始碼、中間碼、終止碼的模組長度都要長於數據碼。
- 對應法則:左側數據碼與右側數據碼的數值對應規則並不相同,左側數據碼含有奇數個模組,右側數據碼含有偶數個。黑色模組對應邏輯值為1,白色則為0。
左側資料碼 | 右側資料碼 | |
數值 | 邏輯值 | 邏輯值 |
0 | 0001101 | 1110010 |
1 | 0011001 | 1100110 |
2 | 0010011 | 1101100 |
3 | 0111101 | 1000010 |
4 | 0100011 | 1011100 |
5 | 0110001 | 1001110 |
6 | 0101111 | 1010000 |
7 | 0111011 | 1000100 |
8 | 0110111 | 1001000 |
9 | 0001011 | 1110100 |
- 可以看出,左側數據碼是右側數據碼的反碼。
- 以上圖中的數字4為例:首先確定它是右側數據碼,然後讀取出它的邏輯值:1011100。轉換成條與空則是:細黑(1)、細白(0)、粗黑(111)、粗白(00)。
- 檢查碼:檢查碼為全部12位數據碼最後一位。如果從左至右依次將數據碼前十一位命名為N1-N11,檢查碼命名為C。則檢查碼C的計算方式如下:
- CC=(N1+N3+N5+N7+N9+N11)×3 +(N2+N4+N6+N8+N10),然後取個位;
- C=10–CC(若C值為10,則取0)。
- 以圖中條碼為例,CC=(0+6+0+2+1+5)×3+(3+0+0+9+4)=58,C=2
UPC-B/C/D
與UPC-A基本相同。其中:B碼主要用於醫藥衛生;C碼用於產業部門,第二位為系統碼,倒數第二位為檢查碼;D碼用於倉庫批發,倒數第三位為檢查碼
UPC-E
短碼,總長度為8個字碼。A碼與E碼之間數字的對應規則與最後一位檢查碼有關。如下:
檢查碼 | UPC-E | UPC-A |
0 | XXNNN0 | 0XX000-00NNN+檢查碼 |
1 | XXNNN1 | 0XX100-00NNN+檢查碼 |
2 | XXNNN2 | 0XX200-00NNN+檢查碼 |
3 | XXXNN3 | 0XXX00-000NN+檢查碼 |
4 | XXXXN4 | 0XXXX0-0000N+檢查碼 |
5 | XXXXX5 | 0XXXXX-00005+檢查碼 |
6 | XXXXX6 | 0XXXXX-00006+檢查碼 |
7 | XXXXX7 | 0XXXXX-00007+檢查碼 |
8 | XXXXX8 | 0XXXXX-00008+檢查碼 |
9 | XXXXX9 | 0XXXXX-00009+檢查碼 |
- 對應法則:至於數字與模組之間的對應關係,也與最後一位有關:
檢查碼 | 規則 |
0 | EEEOOO |
1 | EEOEOO |
2 | EEOOEO |
3 | EEOOOE |
4 | EOEEOO |
5 | EOOEEO |
6 | EOOOEE |
7 | EOEOEO |
8 | EOEOOE |
9 | EOOEOE |
E表示偶碼,O表示奇碼。UPC-E的奇碼與UPC-A的奇碼完全相同。
奇碼 | 偶碼 | |
數值 | 邏輯值 | 邏輯值 |
0 | 0001101 | 0100111 |
1 | 0011001 | 0110011 |
2 | 0010011 | 0011011 |
3 | 0111101 | 0100001 |
4 | 0100011 | 0011101 |
5 | 0110001 | 0111001 |
6 | 0101111 | 0000101 |
7 | 0111011 | 0010001 |
8 | 0110111 | 0001001 |
9 | 0001011 | 0010111 |
- 檢驗碼:計算UPC-E的檢查碼時,先將其轉換為對應的UPC-A,然後按照一樣的模式計算出檢查碼即可。
參考文獻
- ^ Fox, Margalit. 现代条形码发明者伍德兰去世. 紐約時報中文網. [2024-03-24]. (原始內容存檔於2017-01-04).
- ^ Alumni Hall of Fame Members. University of Maryland Alumni Association. The University of Maryland. 2005 [2009-06-10]. (原始內容存檔於2007-06-23).
After graduating from Maryland in 1951, George Laurer joined IBM as a junior engineer and worked up the ranks to senior engineer. In 1969, he returned to the technical side of engineering and was later assigned the monumental task of designing a code and symbol for product identification for the Uniform Grocery Product Code Council. His solution — the Universal Product Code — radically changed the retail world. Since then, he has enhanced the code by adding a 13th digit. Laurer retired from IBM in 1987. He holds some 25 patents and is a member of the university’s A. James Clark School of Engineering Hall of Fame.
- ^ 商品條碼發起人Alan Haberman與世長辭. UNWIRE HK. 2011年6月17日 [2017-01-03]. (原始內容存檔於2017-01-04).