汉信码技术介绍02 - 一点点历史

一点历史
汉信码的研发工作真正落地开始是在2005年。汉信码是“十五”课题的研究成果。为什么开发他?是因为在那个年头,很多人还不了解二维码,也不知道怎么使用二维码。在2005年,ISO/IEC发布的二维码国际标准有:PDF417(美国提出)、Data Matrix(美国提出)、QR Code(日本提出)、Aztec(美国提出)。当时的情况下,即使在世界上QR码的应用也仅仅局限在日本、Data Matrix主要应用在电子领域、PDF417主要应用于文档/证册领域。从应用的领域和大众认值程度来说都与今天的情况不能同日而语。同时,就拿QR来说,他开始是针对日文设计的,编码模式里面考虑主要编码的是JIS字符,也就是日文字符,ISO标准也是按照这种结构设计的,而中国国家标准因为考虑了中国应用的可能性,所以将字符集偏向UTF8进行考虑。这也就是为什么现在很多真正从日本来的QR码,特别在工业应用领域经常在识别时会出现各种各样的问题,这是由于两国使用的电脑和系统的字符集不同,日文编码到中国的中文编码或者UTF8编码是需要转换的,而且标准也有一点点不一致的地方。(题外话:这种二维码字符集的处理可以通过使用AIM ECI——扩充解释协议来解决,我现在正是这个标准的项目编辑。关于这部分的内容将在其他文章中介绍,但是说实话又有多少人了解这个协议呢?)
正是在这种背景下,中国自己二维码码制(Symbology,一般泛指一种二维码的整个技术方案)的研发才被放到议事日程之上,也才因此设立了“十五”项目。毕竟,我们这些年来看到太多“只会修车、不会造车”的例子,如果成天修修改改照抄开源软件,没有真正的核心技术研发、掌握、理解以及融会贯通,是没法办法在本质上开展自主创新的。这也正是为什么从底层开始汉信码研发的初衷。在“十五”项目设立之后,承担方是中国物品编码中心——也就是GS1 China,应该是在2002年。中国物品编码中心在项目前期进行了大规模的调研,也准备了相当丰富的技术资料,为汉信码后面的开发奠定了相关良好的基础。但是,如果让编码中心自研该方向的技术,可能还是具有一定的困难的。于是在2005年,中国物品编码中心采用发标的形式,征集行业中和科研领域能够从事或者有能力从事二维码技术研发的企业和机构。正是在这样的背景下,我才有机缘进入到这个行业中来。当时,参加竞标的公司主要是三家:龙贝、北京网路畅想科技发展有限公司和另外一家科研机构。其中我代表的是网络畅想,作为项目经理编写了几百页的标书、进行了大量的预研工作。如果论当时的基础,龙贝码是已经成型的现有技术,前期基础很充足,竞争还是很激烈的。但是,项目招标的重点是研发产生的全部知识产权,特别是全部专利要归中国物品编码中心所有,也就是国有,所以最终我们的团队竞标成功。我记得很清楚——2005年7月23日汉信码研发招标完成,我们也开始了汉信码以及之后自动识别与数据采集技术(AIDC)作为自己很可能是一生的主要研发领域的征程。招标容易,但真正的研发是相当困难的,而且给我们的时间并不是很多,回想多少个日日夜夜苦思冥想、多少个晚上失眠,不过最终我们总算攻克了各种各样的技术难关,同时也奠定了我到今天为止的工作效率与习惯,所有的付出还是值得的。在当时的研发分工上,我们的团队负责汉信码主要标准内容的研发工作(包括编码模式设计、码图设计、纠错算法、参考译码中的解码部分等等),而参考译码算法部分中图像处理算法和图像识别算法主要由外联北京意锐新创科技有限公司来研发。当时,主合同由网路畅想签下,意锐新创作为网路畅想的外联公司另行签署合同(如果我没记错的话,如果有疏漏欢迎指正)。在研发团队上,除了领导之外(包括中国物品编码中心的张成海主任和罗秋科副主任),我们的团队核心人员4-5人(我、北师大的何青老师、修兴强、边峥、袁娲,公司的老板张铎老师也起到了很好的协调作用)、意锐新创4-5人(孙总[时间太久是在记不起名字]、于东亮等,意锐新创老总的王越也是很多次会议都参与)、编码中心1-2人(王毅、黄燕滨主任,李素彩主任在标准制定时也出了很多力)。在研发内容上,除了研发汉信码的技术算法、编写国家标准草案,还包括了研制参考编码软件和参考译码软件的工作。如果你是从事软件研发和技术科研的人员,可以尝试评估一下当时的工作量,这个工作准确来说是两年的工作量,但是由于我们的团队和意锐新创团队紧密合作,最终在五个月的时间全部完成,并且这个项目代表整个专项(专项中还有很多其他的项目)第一个进行并通过了科技部的验收。还记得验收会上,光准备的验收资料和技术资料就足足四大箱、堆满了桌子。这就是汉信码诞生的故事,不精彩、但是是我们智慧的劳动和心血的浇灌。在研发之后,按照国家标准审查流程,汉信码国家标准(GB/T 21049-2007)2006年定稿、2007年正式发布实施。
在汉信码国家标准研发之后,由于各种原因,其实很多的团队成员和外联团队的成员也逐渐离开了原有的企业。我也是在2006年年底离开的网路畅想,毕竟做标准和二维码技术很多时候要求无私的付出,国家的码制又不能以盈利为目标,不论对企业还是个人如果要你做的很多都是公益的事情,要坚持下来其实很难。虽然,两家公司都后面新进了人员研究汉信码技术,但是原创者其实在二维码也好、还是任何技术也好都是很重要的。之后一段时间,大约一年半左右我一直在协助搭建北京师范大学高性能科学计算中心,也是我现在作为外聘专家工作的单位之一;同时就是协助北京师范大学刚刚接手的北京大学生数学建模与计算机应用竞赛组委会的工作,在2006之后的几年我次次参加北京市阅卷组织工作,也开发了北京大学生数学建模与计算机应用竞赛的阅卷软件各个版本以及之后的网上阅卷系统,值得一提的是北京市数学建模阅卷软件是第一个采用汉信码进行文档管理和阅卷管理的应用系统,直到前年我们新版本的网上阅卷系统正式启用才终止。也是在那个时间点,我学会了并行计算,各种能力也进展了一大截。2008年当汉信码申请国际自动识别协会(AIM Global)的国际行业标准时,编码中心希望我能够参与。所以,我又回到了汉信码的研发工作之中,在编码中心已经翻译的汉信码英文标准的基础上重写了整个标准。其实,也正印证了我老师曾经和我说的“知识产权是有形的,但是人脑子里面的知识是无价的”。当时编码中心也遇到了很多国际专家提出的问题,于是我们设计了相应的验证实验,采用高性能科学计算——现在称之为超级计算的方式,对这些情况和问题进行了验证,光结果数据几百GB(那是在08年),产生的报告10万页以上,从编码、解码、码图设计、纠错有效性、寻像图形设计的理论模型(偏心化设计带来的码图主轴透视变化参数确定)等等各个方面回答了来自AIM专家的问题,也从数据和计算的角度重新审视了汉信码原有的标准,我在其中其实还准备了一个新的参考译码算法,毕竟原有算法考虑周期太短在高性能科学计算中心的工作中我也拓展一些新思路,但是事与愿违在第一版汉信码的AIM标准中没加上,直到AIM第二次汉信码修订我负责该标准的委员会编辑工作时才正式将整个标准修订成我基本满意的程度。在这个过程中,国际专家给我们提出了很多新的知识,获益良多吧。2008年,我也随中国物品编码中心(GS1 China)和中国自动识别协会(AIM China)的代表团(包括中国自动识别协会原秘书长谢颖、王毅高工和我)到美国进行了面对面的答辩。在出发之前我们也准备了各种回答国际专家质疑的资料和数据,一次会议基本搞定了所有的问题。最终,汉信码AIM标准于2010年正式发布(AIM Global International Symbology Standard - Bar code symbology specification : Han Xin Code)。在2008年回到汉信码的技术研究和技术支持的时候,我其实和编码中心以及自己要求了两件事情:第一、我不申请汉信码任何的专利,汉信、所有的专利都应由中国物品编码中心所有。为什么?因为汉信码毕竟是国家花钱做的,而中国物品编码中心是国家的机构(原先隶属质检总局、现在属于市场监督管理总局),让其持有合情合理,而且也只有这样的方式才能保障汉信码的公允性、公开性和技术专利的免费性(毕竟国家出的钱是让整个国家所有人都能够使用的,政府机构的人员谁也不会冒天下之大不韪收费以谋私利),同时也才不会让任何公司利用自己持有的汉信码专利去赚取不正当的利益。除非有人恶意注册汉信码的专利,我们也会和物品编码中心商议怎么来防止这样现象出现。虽然按照原来的协议和相关的法律没有任何规定我们新的算法不能注册专利,但要知道世界上其他的二维码在编码和专利技术上一般都是免费的,比如Symbol(后来的Motorola Solution)在PDF417上就是这样任何人都可以生成、编写程序、自己研制识别设备,而Symbol(后来的Motorola Solution)掌握的仅仅是自己多年经验积累的更加优秀的打印技术和识读性能。这样一个开放的技术才有可能被别人接受、被行业使用。其实后来有国内其他一些二维码情况不是这样,比较令人遗憾、发码是挣不到钱的(我多年的经验),没有产业和应用、特别是促进工业生产自动化和人民生活便利(比如后来的腾讯和阿里)的应用二维码想推开是很难的,作为原创者应该给大家搭建平台、提供最核心的技术、答疑解惑,这样才能让自己创造的二维码有生机、有活力。经历了国际标准化这么多年,我看到的是能创造的人才能够贡献,别一直抠那一点点小心思。第二、我以及我未来团队也好公司也好研发的算法和程序要重新来写,不能使用原来的任何一点资料,直接从标准出发写算法,和别人从同一个出发点出发。这是我作为一个技术人员的骨气;同时按照国家软件著作权相关规定也是比较合理的方式。我们花了几个月的时间新写了相关的代码,整个重新设计并开发了代码结构和全部源代码和依赖库,而且经过5-6年的努力特别是采用超级计算进行了将近20亿枚汉信码符号的旋转演算之后,我们的产生了很多新的汉信码相关的算法,并发现了不少原来标准中写的有点肤浅或者理解不深入的地方,其中一部分除了最核心的机密技术之外,我在做汉信码AIM标准改版、AIM TSC布置给我该工作的项目编辑时也都加入到2.0版的AIM标准之中。后来编码中心也在2005年汉信码源代码基础上进行了改版,不是我们团队参与的。而我们现在汉信码的代码生成部分除了C代码还有.Net代码和Java代码;识别部分我们有C版本(我们的C版本生成库授权过:Seagull Scientific的Bartender条码打印软件、Markem Imaje和我们签订过合作协议的大族激光)。同时,我们也向AIM免费提供了一套我们仁聚智汇自己研发的汉信码的生成和识别演示软件,以便全世界的厂家想了解汉信码的时候可以下载。


在汉信码AIM标准答辩的过程中,我了解到国际自动识别协会(AIM Global)当时正在解决ISO布置的一个作业,当时全球准备推广一种新的商品用条码,叫Databar。但是,在试点的过程中发现这种新的条码,特别是截断版本Databar Limited和原来的商品条码(EAN/UPC)存在可能“短扫描”的问题,也就是在原来的商品条码(EAN/UPC)中可能出现Databar Limited。这可是件大事,Databar预定的应用领域是食品生鲜,如果出现上述情况,你买一条鱼结果结账时扫描出来说你买了一台电视那还了得。当时,世界上很多条码厂家都在演算这种情况可能出现的概率,比如Motorola Solution就动用了公司很多台电脑进行验算。我当时就感觉这个东西很适合拿高性能科学计算也就是后来的超级计算来做。通过和北京师范大学高性能科学计算中心的配合,我们自写代码演算了1013全部的商品条码可能性,基本和Motorola Solution同时证明了可能出现问题的百万种可能性(用的是MPI程序)。同时由于多年数学建模的经验我觉得除了截断版本的Databar Limited之外全长度的Databar考虑反色的时候也会出现误译问题,通过数学推导我们发现这是一个整数型不定方程,解的周期是1/79(非常大的概率),并且通过写GPU的CUDA程序,我们在一台非常简单的设备上用9个小时就遍历了全部2×1014个Databar条码,并产生了10几TB的数据。当我们把结果发给AIM TSC的专家的时候,他们开始不太相信,但是当我把结果产生的图片发过去之后,他们承认了我们的结果,并且邀请我们进入TSC并建议我们通过中国国家组织进入ISO,他们也在Databar的ISO标准上加上了严禁反色的规定,这也是我们第一次参与(虽然是间接)ISO标准的修订工作。当时是2010年,我的公司刚刚成立,我们也正式加入了AIM Global并且成为了AIM TSC的成员。原先的这些专家,也有点不打不相识的意思,现在都成为了我很好的朋友和ISO工作伙伴。

在这段时间,参加汉信码原创团队之一的意锐新创王越总也同航天信息一起将汉信码应用到发票领域,是一个很好的应用模式。
2012年,我在参加AIM工作的时候,AIM TSC的秘书突然告诉我由于AIM换届和人员交替,汉信码的AIM标准的原始版本居然丢失了,在这样的契机下AIM TSC成立了一个项目——重新恢复汉信码AIM版本的标准,在其中我重绘了很多在国家标准中不太清晰的图、调整了部分的技术说明和算法、增补了部分的内容、修改了很多的错误英文、重新按照ISO草案的规则调整了引用/标题/图表引文等等。这个工作在2015年完成。这次修订工作是公益的,其实做国家标准很多时候你做的事情是公益的,在国际标准工作中很多工作都是公益化的,你要耐得住寂寞、经得起考验。这个版本的汉信码标准最后经由AIM Global同意转交给ISO的中国国家组织,作为汉信码ISO标准的初始草案。
2015年,中国物品编码中心技术部副主任王毅,也是我们汉信码原创团队的成员开始代表中国将汉信码提交到ISO,开始了汉信码ISO标准化工作(ISO/IEC 20830 Information technology — Automatic identification and data capture techniques — Han Xin Code bar code symbology specification),由ISO/IEC/JTC1/SC31/WG1负责。ISO条码码制标准的周期按照当时的规则是48个月,也就是4-5年的时间。在这段时间,我们公司负责了相关的汉信码的新技术内容的研发工作,比如汉信码GS1模式(商品数据应用模式)、URI/网址模式、Unicode模式。汉信码的GS1模式后来在王毅的主持下根据ISO专家工作组的意见以及王毅高工自己的思考采用了一种增补数字模式的方式,是一个很好的方法,我们原先设计的模式是采用类似数据库和数据报文的模式。URI/网址模式被用来可以高效编码网址特别是商品二维码的网址结构(你可以用网址去表示商品编码、保质期、批号、序列号等数据,既可以网络访问商品信息、也可以通过其传输商品数据和报文)。Unicode模式采用的是一种我自己设计的文本压缩方式,虽然最终按照王毅高工项目编辑的选择确定为UTF8编码,但是只要经过相关ECI规则,其实这种编码模式可以表示其他很多的字符集和计算机编码结构,而且根据测试有的时候甚至比原来12位的常用汉字编码的编码效率还要高。记得在日本开会的时候日本团的相关专家看到这个新方案也吃了一惊。在汉信码ISO标准开始的时候,我是作为编码中心的外援参与的,但是从2017年开始,由于我在ISO/IEC/JTC1/SC31开始担任美国代表团成员,在很多会议中和工作中也开始协助汉信码ISO标准的很多工作。截至今天,汉信码的DIS(发布前版本)已经经过了ISO的投票,不远的将来,汉信码ISO标准也将开始和您们见面,我们为其倾注了15年的技术生命、心血和努力,也希望您喜欢这种中国自己的特别是国家持有的二维条码国家标准、国际行业标准和ISO国际标准。
在下一篇文章中,我将从这么多年参加汉信码、其他国内的二维码和国际二维码标准(比如新的德国的彩色二维码、日本的新的长方型QR码标准、德国负责的Data Matrix新的长方型版本)等等经验出发,给您介绍如何设计一种二维条码,你需要考虑什么技术内容、具备什么样的知识。在之后我们将一点点详细介绍汉信码的编码和解码算法。如果有时间我们还会介绍这十几年来一些压箱底的汉信码创新研发,比如:长方型汉信码、公开密钥系统汉信码等等新奇的内容,这些内容虽然从没有面世过,但是在技术创新上可以给大家提个醒,另外在很多特种应用领域都非常有创新和应用价值。就此做个简单的预告吧。
施煜
2020年5月9日
版权声明: 本内容是由本网站以及本网站的相关专家自行编写的或者根据参考文献归纳总结的。本内容中来自参考文献的观点和内容的著作权归原网站或者原网站声明的或者实际的作者所有。除上述情况外,本内容及本内容的任何部分的著作权归本网站所有。如需转载在其它网站上请直接使用本页面的连接或者声明文字的出处和著作权,否则构成侵权。