条形码的进化与信息密度 - 从 13 位数字开始的数据压缩史
1974 年 6 月 26 日上午 8 点 01 分,在俄亥俄州特洛伊的马什超市,收银员莎伦·布坎南扫描了一包箭牌 Juicy Fruit 口香糖。价格 67 美分。这是世界上第一件用条形码扫描的商品。那些黑白条纹中存储的仅仅是 12 位数字。半个世纪后,条形码从一维条纹进化为二维矩阵,再到包含 URL 的数字链接,可存储的字符数扩大了数千倍。
UPC 与 JAN - 12 位和 13 位的区别
世界上第一个商用条形码标准是 1973 年在美国制定的 UPC(通用产品代码)。UPC-A 由 12 位数字组成:首位是系统号(产品类型),接下来 5 位是制造商代码,再 5 位是产品代码,最后 1 位是校验位。
欧洲和日本采用了 UPC 的扩展版 EAN(欧洲商品编号)/ JAN(日本商品编号)。EAN-13 / JAN-13 为 13 位,前 2-3 位是国家代码(日本为 45 或 49),其余为制造商代码、产品代码和校验位。
| 标准 | 位数 | 结构 | 主要使用地区 |
|---|---|---|---|
| UPC-A | 12 位 | 1 + 5 + 5 + 1 | 美国、加拿大 |
| UPC-E | 8 位 | UPC-A 的缩短版 | 小型商品 |
| EAN-13 / JAN-13 | 13 位 | 2-3 + 4-5 + 4-5 + 1 | 欧洲、日本、世界各国 |
| EAN-8 / JAN-8 | 8 位 | EAN-13 的缩短版 | 小型商品 |
| ISBN-13 | 13 位 | 978/979 + 出版社 + 书名 + 1 | 书籍(全球通用) |
校验位的计算方法称为模 10(Modulus 10)算法。奇数位数字之和加上偶数位数字之和乘以 3,总和除以 10 的余数从 10 中减去即为校验位。这 1 位验证数字可以检测约 90% 的扫描错误。
用具体例子计算。JAN 码"4901234567890"中,最后的"0"是校验位。奇数位(第 1、3、5、7、9、11 位)之和:4 + 0 + 2 + 4 + 6 + 8 = 24。偶数位(第 2、4、6、8、10、12 位)之和:9 + 1 + 3 + 5 + 7 + 9 = 34。24 + 34 × 3 = 126。126 除以 10 余 6。10 - 6 = 4... 实际校验位是"0",所以这是虚构的 JAN 码。真实的 JAN 码中,这个计算一定吻合。
校验位是 1 位数字(0-9),但这 1 位可以 100% 检测简单的单位数字错误,并以高概率检测相邻两位数字的换位错误。仅增加 1 个字符就能验证 12 位数据的完整性,这就是数学的力量。
一维条形码的进化 - 从数字到 ASCII
UPC/EAN 只能存储数字,但物流和制造业需要字母和符号。为满足这一需求,支持更多字符类型的一维条形码标准相继出现。
| 标准 | 出现年份 | 支持字符 | 字符数 | 主要用途 |
|---|---|---|---|---|
| Code 39 | 1974 年 | 大写字母 + 数字 + 7 种符号 | 43 个字符 | 汽车零件、军事 |
| Interleaved 2 of 5 | 1972 年 | 仅数字 | 10 个字符 | 物流、纸箱 |
| Code 128 | 1981 年 | 全部 128 个 ASCII 字符 | 128 个字符 | 物流、医疗 |
| GS1-128 | 1989 年 | 全部 128 个 ASCII + AI | 128 个字符 + 标识符 | 物流、食品追溯 |
| Codabar | 1972 年 | 数字 + 6 种符号 | 16 个字符 | 图书馆、血库 |
1981 年出现的 Code 128 可以存储全部 128 个 ASCII 字符(大写字母、小写字母、数字、符号、控制字符)。这使得条形码可以表示 URL 和电子邮件地址等复杂字符串。但一维条形码的根本限制没有改变:信息仅通过横向条纹的粗细和间距编码,存储数据量有物理上限。
GS1-128(旧称 EAN-128)在 Code 128 基础上添加了"应用标识符"(AI)机制。AI 是 2-4 位数字,定义后续数据的含义。例如 AI"01"表示 GTIN(产品代码),AI"17"表示保质期,AI"10"表示批号。这使得一个条形码可以存储产品代码、保质期、批号等多种信息。这是食品追溯和药品个体管理不可或缺的技术。
一维条形码的物理极限由条的最小宽度(模块宽度)和扫描仪分辨率决定。一般激光扫描仪的分辨率约 0.25 mm,Code 128 的最小模块宽度为 0.25 mm。条形码总宽 10 cm 时可放置约 400 个模块,相当于约 40-50 个字母数字字符。增大物理尺寸可增加字符数,但商品包装上可印刷的尺寸有限。
二维条形码的出现 - 用面积承载信息
为突破一维条形码的容量限制,1980 年代后期开始了二维条形码的开发。通过在纵横两个方向承载信息,同样面积可存储数量级更多的数据。
1991 年出现的 PDF417 是二维条形码的先驱。"PDF"是"Portable Data File"的缩写,最多可存储 1,850 个字母数字字符。广泛用于美国驾照背面和航空登机牌。PDF417 严格来说是"堆叠型",即纵向堆叠的一维条形码。虽然与真正的二维(矩阵型)条形码不同,但实现了一维条形码数十倍的数据容量。
1994 年电装 Wave 发布了 QR 码。如QR 码能容纳多少字符中详细介绍的,QR 码最多可存储 7,089 位数字或 4,296 个字母数字字符,约为 PDF417 的 2.3 倍。
Data Matrix 由 RVSI Acuity CiMatrix 公司于 1987 年开发,专门用于极小尺寸印刷。最多可存储 2,335 个字母数字字符,广泛用于电子元件标记和药品个体识别。美国国防部要求所有军需品刻印 Data Matrix 码。
Aztec Code 由 Welch Allyn 公司于 1995 年开发,特点是中央有定位检测图案(靶心)。最多可存储 3,067 个字母数字字符,用于欧洲铁路车票和航空登机牌。与 QR 码不同,不需要周围的空白区(静区),更容易在有限空间印刷。
| 标准 | 类型 | 最大容量(数字) | 最大容量(字母数字) | 纠错 |
|---|---|---|---|---|
| UPC-A | 一维 | 12 位 | - | 1 位校验位 |
| Code 128 | 一维 | 可变(取决于物理尺寸) | 可变 | 1 个校验字符 |
| PDF417 | 二维(堆叠型) | 2,710 位 | 1,850 个字符 | 最高约 50% |
| QR 码 | 二维(矩阵型) | 7,089 位 | 4,296 个字符 | 最高约 30% |
| Data Matrix | 二维(矩阵型) | 3,116 位 | 2,335 个字符 | 最高约 25% |
| 微型 QR | 二维(矩阵型) | 35 位 | 21 个字符 | 最高约 25% |
信息密度比较 - 每平方厘米多少字符?
用"信息密度"(单位面积存储字符数)比较条形码的进化,技术进步一目了然。
标准 UPC-A 条形码尺寸约 3.73 cm × 2.59 cm(面积约 9.66 cm²),存储 12 位数字。信息密度约 1.2 位/cm²。而 QR 码版本 10(57 × 57 单元)以 3 cm × 3 cm(面积 9 cm²)印刷,纠错级别 L 时最多可存储 652 位数字。信息密度约 72 位/cm²,约为 UPC-A 的 60 倍。
| 标准 | 典型尺寸 | 存储数据量 | 信息密度(位/cm²) | 与 UPC-A 比 |
|---|---|---|---|---|
| UPC-A | 3.73 × 2.59 cm | 12 位 | 约 1.2 | 1 倍 |
| Code 128(20 字符) | 4.0 × 1.0 cm | 20 个字符 | 约 5.0 | 约 4 倍 |
| QR 码(Ver.10, L) | 3.0 × 3.0 cm | 652 位 | 约 72 | 约 60 倍 |
| Data Matrix(最大) | 2.0 × 2.0 cm | 3,116 位 | 约 779 | 约 650 倍 |
Data Matrix 专门用于极小尺寸印刷,用于电子元件和药品标记。即使 2 mm × 2 mm 的极小尺寸也能存储数十个字符,信息密度在所有条形码标准中最高。字符数与字节数的区别中介绍的编码概念与条形码的数据存储方式直接相关。
ISBN - 识别书籍的 13 位世界通用代码
ISBN(国际标准书号)是唯一识别书籍的 13 位代码。2007 年从 10 位扩展到 13 位,与 EAN-13 兼容。前 3 位是"978"或"979"(书籍前缀),接着是国家/地区代码、出版社代码、书名代码和校验位。
日本的 ISBN 格式为"978-4-XXXX-XXXX-X","4"是日本的国家代码。出版社代码位数因出版社规模而异:大型出版社为 2 位(如 06 = 讲谈社),中小出版社为 4-5 位。出版社代码越短,书名代码可用位数越多,可注册更多书籍。
13 位提供了足够的组合数来唯一识别全世界所有书籍。理论上 10^13 = 10 万亿种,虽然结构限制使实际可用数量为其一部分,但对于人类出版的书籍总数(估计约 1.3 亿种)来说绰绰有余。
GS1 数字链接 - 条形码的下一代标准
2018 年制定的 GS1 数字链接从根本上改变了条形码的概念。它将产品识别码(GTIN)以 URL 形式表示,存储在 QR 码中。
传统 JAN 码"4901234567894"在 GS1 数字链接中变为"https://id.gs1.org/01/04901234567894"这样的 URL。用收银台扫描仪读取时作为传统产品代码使用,用智能手机读取时跳转到制造商的产品页面。一个 QR 码同时服务于 POS 系统和消费者。
如URL 字符数限制中所述,URL 有浏览器和服务器的长度限制,但 GS1 数字链接的 URL 通常在 50-100 个字符左右,QR 码版本 3-5 即可充分容纳。
条形码的 50 年 - 从 12 位到 7,089 位
从 1974 年的 UPC-A(12 位)到 2024 年的 QR 码(最多 7,089 位),条形码的存储容量在 50 年间扩大了约 590 倍。然而,实际使用的条形码大多只利用了其容量的极小部分。
便利店商品上的 JAN 码是 13 位。QR 支付码通常是 50-200 个字符左右的 URL。航空登机牌约 100-200 个字符。技术上可存储数千字符,但实际只需数十到数百字符。
这种"容量余裕"并非浪费。QR 码的纠错功能通过将部分数据容量分配给冗余来实现。版本 10 的 QR 码选择纠错级别 H 时,可存储数据量约为 L 的一半,但即使 30% 损坏也能恢复原始数据。设计 QR 码(中央放置 logo 的 QR 码)能正常工作就是靠这种冗余。
微型 QR 码是标准 QR 码的省空间版。定位检测图案只有 1 个(标准 QR 码有 3 个),最多可存储 35 位数字。专门用于电子元件基板标记等极小空间。2022 年电装 Wave 发布了"rMQR 码"(长方形微型 QR 码),可在细长空间印刷。
这表明条形码的本质不是"存储大量数据",而是"连接物理世界和数字世界的最小密钥"。13 位的 JAN 码是数据库中庞大产品信息的指针。QR 码的 URL 是 Web 上无限信息的链接。条形码需要的只是能唯一确定引用目标的字符数,不需要存储所有信息本身。
从一包箭牌口香糖开始的条形码历史,体现了信息设计的本质:"用最少的字符数访问最多的信息"。
条形码和信息技术历史的相关书籍也可以在 Amazon 上找到。