今天跟大家聊聊条码的校验。无论是条码也好,磁卡也好,还是射频卡也好,都是以一串字符来代表一个个体,这串字符就是识别对象的特征码,就象人的身份证号一样。我们现在不得不记住大量的号码:门牌号、电话号、手机号、银行卡号、学生证号、驾驶证号、身份证号,QQ号、MSN号、邮箱帐号、论坛ID号。。。。
用机器来识别这一串串数字,字母,如何保证不出错就是一大问题。假如您和亿万富翁的银行卡号只差一个数字,万一哪一天ATM机看走了眼,把您的卡号识别成亿万富翁的卡号了,那您岂不是就发了大财了。校验就是保证读取信息不出错的一个有效的手段。我国公民第一代身份证号码是15位的,那时登记号码主要靠手工,所以没有编入校验码,到后来的18位身份证号就加入了校验码,第二代身份证中使用了射频识读技术,这时就显现出来校验码的作用了。
条码中的校验机制是保证条码识读时不会出现差错的重要措施。对于校验码我们已经很熟悉了,大家都知道商品条码的最后一位就是校检码。实际上条码中的校验手段可以分为三类:自校验,校验符,校验码。有些条码使用了其中的一、两项,有些使用了多种校验手段,目的就是最大限度地保证识读数据的准确性。
一、自校验特性:
自校验特性是在条码设计阶段就已经考虑到的因素。自校验在权威的教材上的解释是:如果一个条码符号上出现一个印刷缺陷不会导致出现替代错误,则说明这种条码有自校验特性。怎么来理解呢,我们看一个例子:
假如我们设计了一个宽度调节法的条码,用三条两空表示一个数字。用10010表示1(上图左),用10100表示2(上图中),印刷时在本来表示1的条码上出现了一个漏墨(印刷缺陷,上图右),当扫描线恰好扫描到墨点这个位置时,便会被识别成10100,本来是1的数字变成了2,这就是替代错误。如何避免这种替代错误呢?就是要在编排条码结构时让所有的符号的条空结构保持较大的差异,如上例中的10100这个排列舍去不用,当扫描时出现10100这种情况时,由于没有对应的数字,便会认为出现了错误而拒读此条码。
条码自校验的另一种方法是奇偶校验,这种校验方法的思路是,对于宽度调节法,所有字符的条码符号,采用相同数量的宽单元,如25码和交插25码,每个字符用5个单元表示,其中都有2个宽单元,其余3个是窄单元,即每个符号的宽单元数是偶数。再如39条码,每个符号用9个单元表示,其中3个宽单元,即每个符号的宽单元数是奇数。对于模块组配法的条码,组成条的模块总数加在一起总是奇数或偶数(见下图,A子集为奇校验,BC子集为偶校验)。如果在扫描时发现打破了这种规律,则说明条码识读有误。这就是奇偶校验。
一种条码的条空组合并不是随便编排的,而是经过理论计算并通过大量试验才决定的。一套精心设计的条码符号可以从源头上保证条码识读的准确性。
二、校验符
在常用的条码中,只有CODE-128码采用了这种校验方式。它是把组成条码的所有的数据字符用一定的公式计算得到另一个字符,用这个字符对应的条码作为校验符,扫描时把扫描到的数据再用相同的计算公式计算结果,看是否与扫描到的校验符相符。下面这个图,一共有5个字母,按CODE-128码的规则,每个字符用3条3空来表示,前面是起始符,后面的终止符是4条3空,那么中间应该有5个3条3空,但条码上实际有6个,多出来的一个就是校验符,这个校验符不会出现在下面的供人识读的字符中,扫描时也不会被扫描显示出来。
三、校验码
校验码是在数据的编码过程中使用,即校验码是数据的组成部分。EAN和UPC商品条码就是最常见的校验码的应用实例,相信大家都不陌生,这里不再详述。18位身份证号码的最后一位也是校验码,由于身份证校验码的算法是MOD11运算,所以校验码的值可能是0-10,当校验码为0-9时直接使用,当校验码为10时,用X代替(罗马数字的10),因此有些朋友的身份证号最后一位不是数字而是X。
不同条码的校验码计算方法待下回详解.
说明:文章中非实例条码图形均采用恒佑条码提供的软件Label MX制作,特表感谢
[Bluesky老师专栏]相关教程:
《条码知识之一:商品上的黑白两道》:认识商品条码,商品条码类型,商品条码之国别码,常见问题
《条码知识之二:店内码》:店内码的形成及分类
《条码知识之三:条码中的秘密(上)》:如何判断条码类型,条码的编码规则
《条码知识之四:条码中的秘密(下)》:从起始符和终止符快速判断条码类型
《条码知识之五:校验》:条码的三种校验方法
《条码知识之六:校验码的计算》:几种条码的校验算法
《条码知识之七:商品条码详解(上)》:商品条码的编码规则,UPC-A,EAN-13编码规则
《条码知识之八:商品条码详解(下)》:EAN-8和UPC-E编码规则
《条码知识之九:EAN-128条码(上)》:Code 128 和EAN-128的关系,Code 128 和EAN-128字符集,Code128编码规则
《条码知识之十:EAN-128条码(下)》:EAN 128码编码规则,Code 128 和EAN-128常见问题
以上文章均转自Bluesky老师的QQ空间:http://26425753.qzone.qq.com/
Bluesky老师简介:
Bluesky老师,原名韩建飞,网名Bluesky,河南外贸学校成教部主任,教条码课程,精通条码知识及各种编码规则,为人热情,经常帮助网友解答各种条码问题,在条码界享有很高的声誉。
条码知识这一系列课程为Bluesky老师根据工作和日常生活中的条码问题总结而写,简单易懂,循序渐进,让一个不懂条码的人也能很快的找到想要的答案,对于条码初学者、准备上条码的工厂、条码制作者和条码教育者来说是本不可多得的教材。
感谢Bluesky老师的无私分享!