校验位是什么
每一个 EAN-13、UPC-A、EAN-8 或 ISBN-13 条形码,最后一位数字都是校验位。它不携带产品信息,只有一个用途:让扫描仪检测读取错误。
当扫描仪读取条形码时,它会用前面所有数字按固定算法计算出一个期望的校验位,然后与实际读取的最后一位对比。如果两者不符,扫描仪知道读取有误,会重新扫描或报错,而不是把错误数字传入系统。
这就是为什么条形码扫描的错误率可以做到极低——校验位在数学层面为每次扫描提供了自动验证。
模 10 算法(Luhn 变体)
EAN-13 和 UPC-A 都使用模 10 算法计算校验位,步骤如下(以 EAN-13 为例):
- 取前 12 位数字
- 奇数位(第 1、3、5…位)乘以 1,偶数位(第 2、4、6…位)乘以 3
- 将所有乘积相加,得到总和
- 用 10 减去(总和 mod 10),如果结果是 10,校验位为 0
举例:编号前 12 位为 690123456789
| 位置 | 数字 | 权重 | 乘积 | |---|---|---|---| | 1 | 6 | 1 | 6 | | 2 | 9 | 3 | 27 | | 3 | 0 | 1 | 0 | | 4 | 1 | 3 | 3 | | 5 | 2 | 1 | 2 | | 6 | 3 | 3 | 9 | | 7 | 4 | 1 | 4 | | 8 | 5 | 3 | 15 | | 9 | 6 | 1 | 6 | | 10 | 7 | 3 | 21 | | 11 | 8 | 1 | 8 | | 12 | 9 | 3 | 27 |
总和 = 6+27+0+3+2+9+4+15+6+21+8+27 = 128
128 mod 10 = 8;10 − 8 = 2
校验位为 2,完整 EAN-13 为 6901234567892。
何时需要手动验证校验位
生成条形码时:本站的 EAN-13 生成器 和 UPC-A 生成器 会自动计算校验位——您只需输入前 12 位(EAN-13)或前 11 位(UPC-A),工具自动填入最后一位。
验证已有编号时:如果您收到一个完整的 13 位编号(例如来自供应商或注册机构),想确认校验位是否正确,使用 条形码校验位验证器 输入完整编号即可立即得到验证结果。
从印刷品手动录入时:扫描失败需要手动键入编号时,如果不确定某一位是否看清楚了,可以用验证器确认整个编号是否通过校验。
UPC-A 和 EAN-8 的区别
UPC-A(12 位):算法相同,但位置权重相反——奇数位权重 3,偶数位权重 1,计算结果与 EAN-13 不同。
EAN-8(8 位):超市用于小型商品(空间不足以放 EAN-13 时)。算法与 UPC-A 相同,但只用前 7 位计算第 8 位校验位。
ISBN-13:结构和算法与 EAN-13 完全相同,ISBN-13 实际上就是 EAN-13 的书号应用。
校验位验证器的实际用途
使用 条形码校验位验证器 的典型场景:
- 从 GS1 或 ANCC 收到企业前缀后,验证自行分配的产品编号是否合法
- 检查从第三方获取的条形码数据库是否存在错误
- 在条形码印刷前做最终校验,确保编号完整且正确
- 排查扫描仪报错——如果某个条形码总是扫描失败,先验证编号本身是否有效
注意:校验位正确只意味着编号格式合法,不代表该编号已在 GS1 注册或与任何产品关联。注册和验证是两件不同的事。