0. 条码基本知识
条码是由一组规则排列的条、空及其对应字符组成的标记,用以表示一定的信息。
- 条指对光线反射率较低的部分
- 空是指对光线反射率较高的部分
条码的基本概念
- 码制
- 条码字符集
- 连续性/非连续性
- 定长条码/非定长条码
- 双向可读性
- 自校验特性
条码的编码理论
-
编码方法
- 宽度调节法
窄单元(条或空)表示逻辑值“0”
宽单元(条或空)表示逻辑值“l”
宽单元通常是窄单元的2~3倍 - 模块组合法
一个标准宽度的条模块表示二进制的“1”
一个标准宽度的空模块表示二进制的“0”
- 宽度调节法
-
编码容量
- 宽度调节法编码容量
仅有两种宽度单元的条码符号,即编码容量为:C(n,k)
C(n,k)=n(n-1)…(n-k+1)/k!
n是每一条码字符中所包含的单元总数
k是宽单元或窄单元的数量 - 模块组配的条码符号编码容量
若每个条码字符包含的模块是恒定的,其编码容量为C(n-1,2k-1)
n为每一条码字符中包含模块的总数
k是每一条码字符中条或空的数量,k应满足1≤k≤n/2。
- 宽度调节法编码容量
-
纠错方式
发现条码错误、改正错误的能力。
条码技术的特点
- 简单。
- 信息采集速度快。
- 采集信息量大。
- 可靠性高。
- 灵活、实用。
- 自由度大。
- 设备结构简单、成本低。
条码的种类
- 一维条码
- 商品条码
- EAN码:EAN-13,EAN-8
- UPC码:UPC-A,UPC-E
- 物流条码
- 128码
- ITF码
- 39码
- 库德巴(Codabar)码
- 商品条码
- 二维条码
- 行排式二维条码
- 矩阵式二维条码
1. 一维条码
1.0 EAN·UCC系统条码符号体系
- EAN/UPC条码
- UCC/EAN-128条码符号
- ITF-14 条码符号
应用标识符
应用标识符是定义其后数据域含义与格式的前缀。
一个UCC/EAN-128条码编码的应用标识符+ 数据
两个或两个以上的数字定义:
- 其后数据的含义
- 数据格式
数据可以是:
- 数字或字母:a:字母;n:数字
- 定长或变长: i:个数,定长;…i:最多的个数,变长
部分应用标识符
AI | 应用 |
---|---|
00 | 用于 SSCC(系列货运包装箱代码) |
01 | 用于 GTIN(全球贸易项目代码) |
10 | 用于批号 |
11, 12, 13, 15, 和 17 | 用于日期 |
21 | 用于系列号 |
30 | 表示GTIN中每个变量贸易项目的数量 |
310n 与 320n | 表示净重 |
420 与 421 | 表示邮政编码 |
8003 与 8004 | 用于资产 |
EAN·UCC系统的物品编码体系主要包括六个部分:
- 全球贸易项目代码(global trade item number, GTIN)
- 系列货运包装箱代码(serial shipping container code, SSCC)
- 全球位置码(global location number, GLN)
- 全球可回收资产标识(global returnable asset identifier, GRAI)
- 全球单个资产标识(global individual asset identifier, GIAI)
- 全球服务关系代码(global service relation number, GSRN)
特殊应用的条码编码
- EAN系统的图书代码
国际标准书号(ISBN)
前缀码978 - EAN系统的期刊代码
国际标准期刊号(ISSN)
前缀码977
1.1 商品条码
商品条码
- EAN商品条码
- EAN-13商品条码
- EAN-8商品条码
- UPC商品条码
- UPC-A商品条码
- UPC-E商品条码
商品条码应用
- 建立商店自动销售管理系统(POS)
- 实现商品信息的电子数据交换(EDI)
商品条码的管理与组织机构
- 国际物品编码协会(EAN)
- 美国统一代码委员会(UCC)
- 中国物品编码中心(ANCC)
商品标识代码
EAN/UCC-13代码
EAN/UCC-13代码的三种结构:
结构种类 | 厂商识别代码 | 商品项目代码 | 校验码 |
---|---|---|---|
结构一 | 7位 | 5位 | 1位 |
结构二 | 8位 | 4位 | 1位 |
结构三 | 9位 | 3位 | 1位 |
EAN/UCC-13代码的组成:
- 前缀码
- 前缀码由2~3位数字组成,表示国家或地区代码
- 赋码权:国际物品编码协会
- EAN已将“690”~“695”分配给中国物品编码中心使用
- 当前缀码为690或691时,代码结构为“结构一”;前缀码为692时,代码结构为“结构二”
- 厂商识别代码
- 厂商识别代码由7~9位数字组成,由中国物品编码中心负责分配和管理。
- 全球范围内的唯一性。
- 商品项目代码
- 商品项目代码由3~5位数字组成,由厂商负责编制。
- 校验码
校验码计算步骤
- 自右向左顺序编号
- 从序号2开始求出偶数位上数字之和①
- ①*3=②
- 从序号3开始求出奇数位上数字之和③
- ②+③=④
- 用大于或等于结果④且为10最小整数倍的数减去④,其差即为所求校验码的值
EAN/UCC-8代码
由8位数字组成,没有制造厂商代码,仅有前缀码(3位)、商品标识代码(4位)和校验码(1位)
▪ 用于标识小型商品的
▪ 计算校验码时只需在EAN/UCC-8代码前添加5个“0”,然后按照EAN/UCC-13代码中的校验位计算。
UCC-12代码
UCC-12代码可以用UPC-A商品条码和UPC-E商品条码的符号表示。
UPC-A商品条码的代码结构
- 厂商识别代码 :由左起6~10位数字组成。X12为系统字符 。
- 商品项目代码 :由1~5位数字组成。
- 校验码:校验码为1位数字,计算方法同EAN/UCC-13代码。
UPC-E商品条码的代码结构
UPC-E商品条码所表示的UCC-12代码由8位数字组成
将系统字符为0的UCC-12代码进行消零压缩所得。
消零压缩:12位代码》消零压缩代码
系统字符 | 厂商识别代码(除去系统字符部分) | 商品项目代码 | 校验码 | 商品项目代码 | 校验码 |
---|---|---|---|---|---|
0 | x11 x10 0 0 0 | 0 0 x4 x3 x2 | x1 | 0 x11 x10 x4 x3 x9 | x1 |
0 | x11 x10 1 0 0 | 0 0 x4 x3 x2 | x1 | 0 x11 x10 x4 x3 x9 | x1 |
0 | x11 x10 2 0 0 | 0 0 x4 x3 x2 | x1 | 0 x11 x10 x4 x3 x9 | x1 |
0 | x11 x10 3~9 0 0 | 0 0 0 x3 x2 | x1 | 0 x11 x10 x4 x3 3 | x1 |
0 | x11 x10 x9 1~9 0 | 0 0 0 0 x2 | x1 | 0 x11 x10 x4 x3 4 | x1 |
0 | x11 x10 x9 x8 x7 | 0 0 0 0 5~9 | x1 | 0 x11 x10 x4 x3 4 | x1 |
商品条码的符号表示
EAN-13商品条码
每一条码字符由2个条和2个空构成,每一条或空由1~4个模块组成,每一条码字符的总模块数为7。用二进制“1”表示条的模块,用二进制“0”表示空的模块。
商品条码字符集的二进制数表示:
数字字符 | A子集 | B子集 | C子集 |
---|---|---|---|
0 | 0001101 | 0100111 | 1110010 |
1 | 0011001 | 0110111 | 1100110 |
2 | 0011001 | 0110111 | 1100110 |
3 | 0111101 | 0011011 | 1101100 |
4 | 0100011 | 0011101 | 1011100 |
5 | 0110001 | 0111001 | 1001110 |
6 | 0101111 | 0000101 | 1010000 |
7 | 0111011 | 0010001 | 1000100 |
8 | 0110111 | 0001001 | 1001000 |
9 | 0001011 | 0010111 | 1110100 |
- 起始符、终止符
商品条码起始符、终止符的二进制表示都为“101” - 中间分隔符
商品条码中间分隔符的二进制表示为“01010” - 字符集子集选择:
- 左侧数据符:前置码决定字符集
- 右侧数据符:C子集
左侧数据符的字符集的选择规则
前置码数值/代码位置序号 | 12 | 11 | 10 | 9 | 8 | 7 |
---|---|---|---|---|---|---|
0 | A | A | A | A | A | A |
1 | A | A | B | A | B | B |
2 | A | A | B | B | A | B |
3 | A | A | B | B | B | A |
4 | A | B | A | A | B | B |
5 | A | B | B | A | A | B |
6 | A | B | B | B | A | A |
7 | A | B | A | B | A | B |
8 | A | B | A | B | B | A |
9 | A | B | B | A | B | A |
EAN-8商品条码
EAN-8商品条码符号的起始符、中间分隔符、校验符、终止符的结构同EAN-13商品条码符号结构一致。
EAN-8商品条码符号的左侧空白区和右侧空白区的最小宽度均为7个模块宽。
为了保护左右侧空白区的宽度,可在条码符号左下角加“<”符号,在条码符号右小角加“>”符号。
EAN-8商品条码字符集子集选择:
- 左侧数据符由字符集中的A子集表示;
- 右侧数据符和校验符由字符集中的C子集表示。
UPC
- 一种长度固定、连续性的条码。
- 应用范围广泛,又被称为万用条码。
- UPC码仅用来表示数字,字码集为数字0-9。
- UPC码共有A、B、C、D、E五种版本,常用的商品条码版本为UPC-A条码和UPC-E条码。
- UPC-A条码是标准的UPC版本,UPC-E条码为UPC-A条码的压缩版。
UPC-A商品条码
数字代码只有12位:
- 厂商识别代码(6位,包括系统字符1位)
- 商品项目代码(5位)
- 校验码(1位)
没有前缀码,系统字符为1位数字,用以标识商品类别
- 左侧6个条码字符均由A子集的条码字符组成
- 右侧数据符及校验符均由C子集的条码字符组成
UPC-E条码
由六位数码及左右护线构成
条码符号本身没有中间分隔符
1.2 物流条码
物流条码的码制标准
- UCC/EAN-128
- ITF-14
- EAN-13
UCC/EAN-128条码
是一种连续型、非定长、有含义的高密度、高可靠性的代码
- UCC/EAN-128条码不用于POS零售结算,用于标识物流单元。
- 除终止符(STOP)由13个模块组成外,每个字符由11个模块组成
- 每个字符分别由3个条和3个空
- 每个条(空)可包含1~4个模块
- 双向可识读
长度:
-
预定义长度数据串
不需要分隔符 -
可变长度数据串
用数据分隔符 (FNC1) 指示数据串的结尾
为了提高效率,应将预定义长度数据串放在可变长度数据串的前面
结构:
St | FNC1 | AI | 数据 1 | FNC1 | AI | 数据 2 | C | Sp |
---|---|---|---|---|---|---|---|---|
起始符 | 功能符 | 应用标识符 | 数据 1 | 功能符 | 应用标识符 | 数据 2 | 校验字符 | 终止符 |
AI应用标识符符号
符号 | 长度 | 字符 |
---|---|---|
ai | 定长,i个 | 字母字符 |
ni | 定长,i个 | 数字字符 |
ani | 定长,i个 | 字母、数字字符 |
a…i | 最多i个 | 字母字符 |
n…i | 最多i个 | 数字字符 |
an…i | 最多i个 | 字母、数字字符 |
UCC/EAN-128条码的长度是可变的,但是:
- 编码的数据字符的数量不能超过48个
- 整个符号的物理长度不能超过165mm
128码
我国所推行的128码是EAN-128码,EAN-128码是根据EAN/UCC-128码定义标准将资料转变成条码符号,并采用128码逻辑
ITF14条码
ITF条码是一种连续型、定长、具有自校验功能,并且条、空都表示信息的双向条码。
-
由矩形保护框、左侧空白区、条码字符、右侧空白区组成。
-
条码字符集、条码字符的组成与交叉25条码相同
-
ITF-14适合于印刷在质量较差的包装材料上
-
交插二五条码的特例
-
连续型,定长(14位)
-
每个字符有2个宽单元,3个窄单元(字符自校验功能)
-
双向可译码
-
可编码字符集:数字0~9
-
5个条和5个空交插表示一个字符对
ITF条码字符二进制表示:
字符 | 二进制表示 |
---|---|
0 | 00110 |
1 | 10001 |
2 | 01001 |
3 | 11000 |
4 | 00101 |
5 | 10100 |
6 | 01100 |
7 | 00011 |
8 | 10010 |
9 | 01010 |
25条码
标准25条码是根据宽度调节法进行编码,并且只有条表示信息的非连续型条码
- 每一个条码字符由规则的5个条组成,其中2个宽单元,3个窄单元
- 字符集为数字字符0-9
交叉25条码
简称ITF25,是一种条、空均表示信息的、连续型、非定长、具有自校验功能的双向条码
- 字符集为数字0-9,每个条码数据符由规则排列的5个单元构成,其中2个宽单元,3个窄单元
- 编码字符个数为偶数,所有奇数位置上的数据以条编码,偶数位置上的数据以空编码
- 编码方式是利用条码中条与空的宽窄设置不同,宽表示“1”,窄表示“0”
- 如果为奇数个数据编码,则在数据前补一位0,使数据为偶数个位数
库德巴(Codabar)码
- 字符集为数字0-9和六个特殊字符共16个字符
- 是条、空均表示信息的非连续型、非定长、具有自校验功能的双向条码
- 由左侧空白区、起始符、数据符、终止符及右侧空白区构成
- 每一个字符由7个单元组成:4个条单元和3个空单元
39码
39码即Code 3 of 9(简称Code 39)
- 由五条黑色线条及四条白色线条总共九条线条组成,其中三条是粗线条,故称之为“39”码
- 字符集:数字0-9,26个大写字母和7个特殊字符
- 每个字符由9个元素组成,其中由5个条和4个空
- 符号构成:左右两侧静空区。起始符、条码数据符(包括符号校验字符)、终止符
93码
是一种长度可变的连续型字母数字式码制
- 每个字符包括三个条和三个空,共九个元素宽度
- 字符集:数字0-9、26个大写字母、七个特殊字符以及四个控制字符
49码(二维)
是一种多行的连续型、长度可变的字母数字式码制
- 每个49条码符号由2-8层组成,每层有18个条和17个空
- 主要用于小物品标签上的符号
- 采用多种元素宽度
- 字符集:数字0-9、26个大写字母和七个特殊字符、三个功能键和三个变换字符,共49个
2. 二维条码
2.1 行排式二维条码
PDF417条码
组成条码的每一符号字符都是由4个条和4个空共17个模块构成
PDF417是一种多层、可变长度 、具有高容量和纠错能力的二维条码。
每一层包括:
a.左空白区
b.起始符
c.左层指示符号字符
d.1到30个数据符号字符
e.右层指示符号字符
f.终止符
g.右空白区
Code 49条码
一种多层、连续型、可变长度的条码符号,它可以表示全部的128个ASCII字符。
每个Code 49条码符号由2到8层组成,每层有18个条和17个空。
层与层之间由一个层分隔条分开。每层包含一个层标识符,最后一层包含表示符号层数的信息
Code 16K条码
一种多层、连续型可变长度的条码符号,可以表示全ASCII字符集的128个字符及扩展ASCII字符。
2.2 矩阵式二维条码
QR条码
QR条码的结构
- 寻像图形
- 分隔符
- 定位图形
- 校正图形
- 编码区域
- 空白区
纠错级别
纠错级别的比率是指全部码字与可以纠错的码字的比率
- 例:需要编码的码字数据有100个,并且想对其中的一半,也就是50个码字进行纠错,如何计算?
- 纠错需要相当于码字2倍的符号,因此在这种情况下的数量为50个×2=100码字。因此,全部码字数量为200个,其中用作纠错的码字为50个,所以计算得出,相对于全部码字的纠错率就是25%。这一比率相当于QR码纠错级别中的“Q”级别。
纠错级别 | 纠错率 |
---|---|
级别L | 约7% |
级别M | 约15% |
级别Q | 约25% |
级别H | 约30% |
Data Matrix条码
Data matrix的最小尺寸是所有条码中最小的
两种类型:
- ECC000-140:具有几种不同等级的纠错功能;
- ECC200:使用Reed-Solomon纠错。
符号结构:
- 每个Data Matrix符号由规则排列的方形模块构成的数据区组成。
- 在较大的ECC200符号中,数据区由校正图形分隔。
- 数据区的四周由寻像图形包围。
- 寻像图形的四周则由空白区包围。
Maxicode 条码
一种固定长度(尺寸)的矩阵式二维条码
有紧密相连的平行六边形模块和位于符号中央位置的定位图形组成。
符号码字的表示
- 每个码字由六个六边形的模块组成。
- 每个模块表示一个二进制位,暗模块表示“1”,浅色模块表示“0”。
- 通常六个模块排列成三层,顺序为从右上至左下。
- 由于Maxicode符号的特殊结构,符号字符1 ~ 9 和137 ~ 144 具有特殊的排列式
符号结构
每个Maxicode符号有一个中央寻像图形,四周成正方形排列着由六边形模块组成的层。
符号共有33层,每层分别由30个或29个模块组成。
符号四周应有空白区。
- 寻像图形
寻像图形由3个同心圆构成暗带及其相间的明带组成。寻像图形的中央为一个虚拟模块。中央寻像图形及其周围的排列情况见图。 - 定位图形
定位的信息由6组以3个模块组成的图形给出
符号最上面一层最右侧的两个模块是不用的,它们用暗模块表示。
Code one条码
Code one符号中包含可由快速线性探测器识别的识别图案。每一模块的宽和高的尺寸为X。
Code one符号共有10种版本及14种尺寸。
最大的符号,即版本B,可以表示2218个数字字母型字符或3550个数字,以及560个纠错字符。
Code one 可以表示全部256个ASCII字符,另加4个功能字符及1个填充字符。