条形码是怎么工作的:UPC、EAN和隐藏的校验位

那些平行排列的黑色条纹看起来毫无规律,但它们其实是按照一套公开、有据可查的标准,编码着一个具体且可验证的数字。

条形码本身只编码一个数字

条纹本身并不包含商品名称或价格。它们编码的是一串数字,商店的系统会在自己的数据库中查找这串数字,真正的价格和商品描述其实存放在那里。

UPC和EAN的区别:主要是地区差异

UPC-A(12位)历来是美国和加拿大使用的标准,而EAN-13(13位)则在世界其他大多数地区使用。现代扫描仪通常两种都能识别,而且UPC码在前面加一个零之后,就可以当作EAN码来读取。

编码由GS1统一分配,而不是随意选取

生产商需要向全球标准化组织GS1申请一个企业前缀,再由自己为各个产品分配剩余的数字——这正是全世界商店货架上的编码不会互相冲突重复的原因。

最后一位是内置的校验位

这一位数字是根据其他数字按固定公式计算出来并附加在编码末尾的,这样扫描仪(或者手动输入编码的收银员)就能发现单个数字被读错或输错的情况,而不是直接把商品记录成完全不同的另一件。

和二维码不是一回事

传统的一维条形码只编码一个相对较短的数字,而且必须朝一个方向扫过条纹才能读取。二维的QR码能存储多得多的数据,并且可以从任意角度扫描——这也是QR码常被用来承载链接和更大信息量的原因。

扫描仪读取的是反射光,而不是一张图片

扫描仪向条形码发出一束光,并测量有多少光被反射回来;条纹和间隙的宽度不同,反射光的方式也不同,扫描仪据此以电子方式还原出编码的数字。

条形码并不存储价格

因为条形码只编码一个识别用的数字,你被收取的价格来自扫描那一刻商店销售终端(POS)系统的记录,而不是条形码本身。这也是货架标签有时会和实际结账价格对不上的原因——可能是系统更新还没跟上。

校验位的重要性超出想象

一道印刷模糊或污损的条纹,就可能让扫描仪读错一个数字。如果没有校验位,这个错误可能会悄无声息地把商品记成完全不同的另一件;而有了校验位,数学计算就直接对不上,扫描仪会拒绝这次读取,而不是靠猜测。

常见问题

两件不同的商品会共用同一个条形码吗

理论上不会,因为GS1前缀就是为了让每家企业的编码保持唯一。但在实际中,重复或被重复使用的编码偶尔确实会出现,尤其是在非常小型或自主出版的商品中,这也是大型零售商在把商品录入目录前仍要核实的原因之一。

为什么同一个条形码在不同包装上看起来大小不一样

真正重要的是条纹所编码的图案本身,而不是印刷的尺寸大小,所以条形码经常会(在可识别的范围内)被放大或缩小以适配不同的包装,但代表的仍然是完全相同的数字。