一维条形码生成与识别技术
一、引言
条形码(简称条码)技术是集条码理论、光电技术、计算机技术、通信技术、条码印制技术于一体的一种自动识别技术。条形码是由宽度不同、反射率不同的条(黑色)和空(白色),按照一定的编码规则编制而成,用以表达一组数字或字母符号信息的图形标识符。条形码符号也可印成其它颜色,但两种颜色对光必须有不同的反射率,保证有足够的对比度。条码技术具有速度快、准确率高、可靠性强、寿命长、成本低廉等特点,因而广泛应用于商品流通、工业生产、图书管理、仓储标证管理、信息服务等领域。
二、EAN-13条形码简介
一维条码主要有EAN和UPC两种,其中EAN码是我国主要采取的编码标准。EAN是欧洲物品条码(European Article Number Bar Code)的英文缩写,是以消费资料为使用对象的国际统一商品代码。只要用条形码阅读器扫描该条码,便可以了解该商品的名称、型号、规格、生产厂商、所属国家或地区等丰富信息。
EAN通用商品条码是模块组合型条码,模块是组成条码的最基本宽度单位,每个模块的宽度为0.33毫米。在条码符号中,表示数字的每个条码字符均由两个条和两个空组成,它是多值符号码的一种,即在一个字符中有多种宽度的条和空参与编码。条和空分别由1~4个同一宽度的深、浅颜色的模块组成,一个模块的条表示二进制的“1”,一个模块的空表示二进制的“0”,每个条码字符共有7个模块。即一个条码字符条空宽度之和为单位元素的7倍,每个字符含条或空个数各为2,相邻元素如果相同,则从外观上合并为一个条或空,并规定每个字符在外观上包含的条和空的个数必须各为2个,所以EAN码是一种(7,2)码。
EAN条码字符包括0~9共10个数字字符,但对应的每个数字字符有三种编码形式,左侧数据符奇排列、左侧数据符偶排列以及右侧数据符偶排列。这样十个数字将有30种编码,数据字符的编码图案也有三十种,至于从这30个数据字符中选哪十个字符要视具体情况而定。在这里所谓的奇或偶是指所含二进制“1”的个数为偶数或奇数[2]。
2.1 EAN-13码的格式
EAN条形码有两个版本,一个是13位标准条码(EAN-13条码),另一个是8位缩短条码(EAN-8条码)。EAN-13条码由代表13位数字码的条码符号组成,如图1所示[1]。
图表 1
前2位( ~ ,欧共体12国采用)或前3位( ~ ,其他国家采用)数字为
国家或地区代码,称为前缀码或前缀号。例如:我国为690,日本为49*,澳大利亚为93*等(其中的“*”表示0~9的任意数字)。前缀后面的5位(
~
)或4位(
~
)
数字为商品制造商的代码,是由该国编码管理局审查批准并登记注册的。厂商代码后面的5位(
~
)数字为商品代码或商品项目代码,用以表示具体的商品项目,即具有相同包
装和价格的同一种商品。最后一位数字为校验码,用以提高数据的可靠性和校验数据输入的正确性,校验码的数值按国际物品编码协会规定的方法计算。
2.2 EAN-13条形码的构成
EAN-13条形码的构成如图2所示。 左侧 空白
左侧数据符
起始符
6位数字
中间 分隔符
右侧数据符 校验符 6位数字 1位数字
终止符
右侧空 白
图2 典型EAN-13条形码的构成
(1)左、右侧空白:没有任何印刷符号,通常是空白,位于条码符号的两侧。用以提示阅读,准备扫描条码符号,共有18个模块组成(其中左侧空白不得少于9个模块宽度),
一般左侧空白11个模块,右侧空白7个模块。
(2)起始符:条形码符号的第一位字符是起始符,它特殊的条空结构用于识别条形码符号的开始。由3个模块组成。
(3)左侧数据符:位于中间分隔符左侧,表示一定信息的条码字符,由42个模块组成。
(4)中间分隔符:位于条码中间位置的若干条与空,用以区分左、右侧数据符,由5个模块组成。
(5)右侧数据符:位于中间分隔符右侧,表示一定信息的条码字符,由35个模块组成。
(6)条码校验符:表示校验码的条码字符,用以校验条码符号的正确与否,由7个模块组成。
(7)终止符:条形码符号的最后一位字符是终止符,它特殊的条空结构用于识别条形码符号的结束。由3个模块组成。
一个条形码图案是数条黑色和白色线条组成,如图3所示。
图3 条形码图案实例
图案分成五个部分,从左至右分别为:起始部分、第一数据部分、中间部分、第二数据部分和结束部分。
(1)起始部分:由11条线组成,从左至右分别是8条白线,一条黑线,一条白线和一条黑线。
(2)第一数据部分:由42条线组成,是按照一定的算法形成的,包含了左侧数据符(
~
)这些数字的信息。
(3)中间部分:由5条线组成,从左到右依次是白线,黑线,白线,黑线,白线。 (4)第二数据部分:由42条线组成,是按照一定的算法形成的,包含了右侧数据符
( ~ ) 这些数字的信息。
(5)结尾部分:由11条线组成,从左至右分别是一条黑线,一条白线和一条黑线,8条白线。
2.3 EAN-13的编码规则
EAN-13的编码是由二进制表示的。它的数据符、起始符、终止符、中间分隔符编码见表1。
表1 EAN-13编码
二进制表示 字符 左侧数据符 右侧数据符 奇性字符(A组) 偶性字符(B组) 偶性字符(C组) 0 1 2 3 4 5 6 7 8 9 起始符 中间分隔符 终止符 101 0001101 0011001 0010011 0111101 0100011 0110001 0101111 0111011 0110111 0001011 0100111 0110011 0011011 0100001 0011101 0111001 0000101 0001001 0001001 0010111 101 1010 1110010 1100110 1101100 1000010 1011100 1001110 1010000 1000100 1001000 1110100
左侧数据符有奇偶性,它的奇偶排列取决于前置符,所谓前置符是国别识别码的第一位
,该位以消影的形式隐含在左侧六位字符的奇偶性排列中,这是国际物品编码标准版
的突出特点。前置符与左侧六位字符的奇偶排列组合方式的对应关系见表2,实际上由表2这种编码规定可看出,
与这种组合方式是一一对应固定不变的。例如:中国的国别识别
码为“690”,因此它的前置符为“6”,左侧数据符的奇偶排列为 “OEEEOO”[3],“E”
表示偶字符,“O”表示奇字符。 表2 左侧数据符奇偶排列结合方式 前置符 左侧数据符奇、偶排列 0
OOOOOO
前置符 左侧数据符奇、偶排列 5
OEEOOE
1 OOEOEE 6 OEEEOO
2 OOEEOE 7 OEOEOE
3 OOEEEO 8 OEOEEO
4 OEOOEE 9 OEEOEO
2.4 EAN-13条形码的校验方法
校验码的主要作用是防止条形码标志因印刷质量低劣或包装运输中引起标志破损而造成扫描设备误读信息。作为确保商品条形码识别正确性的必要手段,条形码用户在标志设计完成后,代码的正确与否直接关系到用户的自身利益。对代码的验证,校验码的计算是标志商品质量检验的重要内容之一,应该谨慎严格,需确定代码无误后才可用于产品包装上。 下面是EAN-13条形码的校验码验算方法,步骤如下[3]:
(1)以未知校验位为第1位,由右至左将各位数据顺序排队(包括校验码); (2)由第2位开始,求出偶数位数据之和,然后将和乘以3,得积 (3)由第3位开始,求出奇数位数据之和,得 (4)将 (5)用
和
相加得和
;
;
;
除以10,求得余数,并以10为模,取余数的补码,即得校验位数据值 ;
(6)比较第1位的数据值与C的大小,若相等,则译码正确,否则进行纠错处理。 例如,设EAN-13码中数字码为6901038100578(其中校验码值为8),该条码字符校验过程为:
,
,