二维码科普

二维条码是指在一维条码的基础上扩展出另一维具有可读性的条码,使用黑白矩形图案表示二进制数据,被设备扫描后可获取其中所包含的信息。一维条码的宽度记载着数据,而其长度没有记载数据。二维条码的长度、宽度均记载着数据。二维条码有一维条码没有的“定位点”和“容错机制”。容错机制在即使没有辨识到全部的条码、或是说条码有污损时,也可以正确地还原条码上的信息。二维条码的种类很多,不同的机构开发出的二维条码具有不同的结构以及编写、读取方法。

堆叠式/行排式二维条码,如,Code 16K、Code 49、PDF417(如下图)等。

矩阵式二维码,最流行莫过于QR CODE,二维码的名称是相对与一维码来说的,比如以前的条形码就是一个“一维码”。它的优点有:二维码存储的数据量更大;可以包含数字、字符,及中文文本等混合内容;有一定的容错性(在部分损坏以后可以正常读取);空间利用率高等。

常用二维码对比

1557904353552009.png

活码的原理

  • 活码是二维码的一种高级形态,通过短网址指向保存在云端的信息。图案和普通二维码比较更简单更易扫描,而且可以随时更改云端内容,做到同一个图案,不同的内容。极大的方便了二维码的印刷管理,甚至可以先印刷图案,后设置内容。二维码图案不变,内容可随时更改,存储无限内容,指向任意网址,扫描效果可跟踪,免费。

  • 从理论上来说,活码可以支持无限的内容,我们也没有对文本的字数做任何的限制。但是受到网络带宽和服务器性能等限制,实际操作中,输入过多文字还是会影响活码生成和扫描打开的速度。而图片和文本的大小我们一样没有做限制,但是过大的图片和文件很可能手机端会无法显示,这和手机的网速有关。所以,实际操作中,还是需要把握活码的使用。

用相同的内容制作的二维码为什么图案不同

  • 基本概念:二维条码/二维码(2-dimensional bar code)是用某种特定的几何图形按一定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息的;在代码编制上巧妙地利用构成计算机内部逻辑基础的“0”、“1”比特流的概念,使用若干个与二进制相对应的几何形体来表示文字数值信息,通过图象输入设备或光电扫描设备自动识读以实现信息自动处理:它具有条码技术的一些共性:每种码制有其特定的字符集;每个字符占有一定的宽度;具有一定的校验功能等。同时还具有对不同行的信息自动识别功能、及处理图形旋转变化点。

  • 同样的内容,不做任何修改,反复生成的二维码图案都不一样。这是由于,这些特定的几何图形按照一定规律,然后随机的分布在平面上。打个比方,一个句子,我们从左到右写,和从上到下写,表达的都是同一个意思。二维码也是一样。

什么是容错率

  • 容错率也叫纠错率,就是指二维码可以被遮挡后仍能被正常扫描,而这个能被遮挡的最大面积就是容错率。 

  • 基本概念:最常见的QR二维码,用的是里德-所罗门码(RS)来做纠错。分有几级,纠错级别越高,整体需要携带的信息越多:L级可纠正约7%错误、M级别可纠正约15%错误、Q级别可纠正约25%错误、H级别可纠正约30%错误。RS码原理比较复杂,整体基于“任意k个确定点可表示一个阶数至少为k-1的多项式”,实际上发送超过k个点,就算中间有一些错误,也能通过数学原理反推出最初的多项式,从而获得信息。并不是所有位置都可以缺损,像最明显的那三个角上的方框,直接影响初始定位。中间零散的部分是内容编码,可以容忍缺损。

  • 由于调整纠错率的时候,二维码的图案分布也要重新调整,所以每次调整纠错率,二维码的图案都会发生变化。

  • 二维码容错示意图:关键部分已用红色框框起来,识别方向也已用箭头标示。假定黑色块为1,白色为0,那么:两黑色块平列,黑+黑=11,容错级为L;黑+白=10,为M级容错;白+黑=01,为Q级容错;白+白=00,为H级容错。