Your QRToolkit

条形码校验位是什么以及如何验证

每个 EAN 和 UPC 条形码都以一个校验位结尾,用于检测扫描错误。

校验位是什么

每一个 EAN-13、UPC-A、EAN-8 或 ISBN-13 条形码,最后一位数字都是校验位。它不携带产品信息,只有一个用途:让扫描仪检测读取错误。

当扫描仪读取条形码时,它会用前面所有数字按固定算法计算出一个期望的校验位,然后与实际读取的最后一位对比。如果两者不符,扫描仪知道读取有误,会重新扫描或报错,而不是把错误数字传入系统。

这就是为什么条形码扫描的错误率可以做到极低——校验位在数学层面为每次扫描提供了自动验证。

模 10 算法(Luhn 变体)

EAN-13 和 UPC-A 都使用模 10 算法计算校验位,步骤如下(以 EAN-13 为例):

  1. 取前 12 位数字
  2. 奇数位(第 1、3、5…位)乘以 1,偶数位(第 2、4、6…位)乘以 3
  3. 将所有乘积相加,得到总和
  4. 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 注册或与任何产品关联。注册和验证是两件不同的事。

相关工具