打个广告:自己编写的二维码库 在线应用
http://www.duqingquan.com/website/qr/p
ISO/IEC 18004-2015 是目前最新的二维码标准文档。
首页
前言:
前言:
国际权威的标准化组织 :ISO(国际标准化组织)和IEC(国际电气协会) ,其成员国家致力于创建一个互动的,国际性的标准化组织。去处理特殊领域的技术标准和活动。ISO和IEC的委员会欢迎感兴趣的人联系我们:包括其他国际组织,政府,非政府机构等,一起加入这项事业。在信息技术领域,ISO/IEC确立了一个加入制度,详细可参见 ISO/IEC JTC-1
用于文档开发,和有利于长远维护的程序在 ISO/IEC的 第一部分描述。不同的实现标准需要使用不同的文档类型,这是需要大家注意的地方。以本文档的撰稿是与ISO/IEC 第二部分的编辑规则保持一致的 (我特么也有点迷糊啥意思)
值得注意的是,文档中的部分元素,可能涉及一些专利的权利,ISO/IEC 没有辨认部分或者全部专利的责任。关于专利权利的详细鉴定内容可以在这个列表中找到 (www.iso.org/patents)
文档中出现的商业名称,都是为了用户的遍历,我们不做任何的背书。
用于阐述ISO的特殊关系,以及与WTO, TBT的一致性评估,请看这里:xxxx
ISO关于文档的责任声明看这里:xxx
这是关于QRCode的第三版文档,用于取代2006年的第二版。
简介
简介:
区分下面的四个技术名词很有必要,他们是不同的,但又是QRCode家族中十分亲密的成员,在其进化过程中扮演着重要的角色。
1 QR Code Model 1 是qrcode 的原型,最早发布 在AIM ITS 97-001 国际化符号简介:QRCode 上的
2 QR Code Model 2 是传统功能的增强版(主要是增加了校正符,来提升大图像的扫描)这也是最早起18004文档的基础。
3 QRCode(第二版 ISO/IEC 10084的基础)和 QRCode Model2 很相似。其区别只在于当符号展示在镜像图片方向颠倒反射的情况下的能力(亮色的符号在暗色的背景上)以及将制定的特殊字符集替换成默认的。
4 Micro QRCode(与第二版的10084文档也有区别)它是QRCode的一个变种,通过减少多余的module数量,并且重新改变色点数量的范围,通过这些操作可以达到 用更小的符号去承载适量的数据的效果。适合应用于于指定的符号区域,以及其他空间有限的场景。
QRCode 是一个符号矩阵,这些符号由一组方形的module组成了一个方形矩阵,这些符号包括一个独一无二的定位符:三个角落的符号(在Micro 中 只有一个角有),并且容易去定位他们的位置,大小和斜率。 在整个符号范围内的提供了四个级别的纠错码,module的大小时用户指定的使得符号可以呈现出各种形态。
QR Code Model 2 标准完全兼容QRCode解析系统
Model 1 QR Code符号 只能被用于封闭的系统应用程序,并且并不是被强制要求其环境一定遵从Model1 标准。当QRcode标准升级的时候,QRCode的开源程序和国际标准描述文档以及其他与Model1的区别 都被列在了这里 annex N
第三页
信息技术--自动识别和数据捕捉技术--二维码条形码技术说明
1 范围
技术标准轻易了 类似二维码这样符号技术所需要的内容:指定了符号的字符集,编码格式,符号格式,尺寸。纠错码级别,相关的解码算法,产的质量要求和用户可选择的应用参数。
2 一致性
QRCode的符号,以及其他被设计出来用于生产和识别二维码的工具,应该与国际标准文档中定义的特性兼容
在ISO/IEC 18004:2006中描述的 QRCode Model 1 标准,可能不被国际标准所兼容
在ISO/IEC 18004:2000中描述的 QRCode Model 2 标准,一定会被国际标准所兼容
符合ISO/IEC 18004:2000文档的实现,未必一定识别所有的QRCode符号, 新增的特性可能无法被这些标准识别。
符合ISO/IEC 18004:2000文档的实现,未必一定打印所有的QRCode符号, 新增的特性可能无法被这些标准打印。
需要注意的是,对于新的开源系统来说, Model2 和 microQR 都是其组成部分。
3 标准影响
下列文档的部分或者全部被这篇文档正常影响了。而且这些文档是目前文档中不可或缺的部分。
对于注明日期的引用,影响是注明日期的版本。 对于未注明日期的引用,影响的最近日期的版本。
ISO/IEC 8859-1 :1998 信息技术------8比特单字节编码符号字符集----part1 拉丁语 alpha
ISO/IEC 15415 信息技术----自动识别和数据储存技术---条形码打印质量测试标准
ISO/IEC 19762-1 信息技术----自动识别和数据储存技术--- 协调词汇----part1 与aidc相关的普遍关系
ISO/IEC 19762-1 信息技术----自动识别和数据储存技术--- 协调词汇----part2 可读光学媒体
JISX 0201 7比特8比特编码字符集的交换
四 专业术语
这篇文档的目的,下列关系和定义是在19762-1和19762-2中给定的。
4.1 字符数量标识
在指定模式下,定义了数据字符串长度的比特序列
4.2 数据遮罩
通过对 编码数据区域 的bit数据进行 xor操作 来使得符号的 黑白module之间更加平衡. 减少发生内容模式影响快速扫描的情况
4.3 数据遮罩相关
符号上用于指定数据遮罩层的三比特长度的字段
4.4 编码区域
符号上没有被功能符号占用的区域,用于储存编码数据,纠错码,版本信息内容
4.5 专属子集
使用该模式编码后的字符内容,不能与其他模式子集的共享。
4.6 扩展模式
Model1 符号中定义的扩展模式,其中不包含数据内容
4.7 格式信息
符号的必备专属区域所包含的编码模式,他的作用是让剩余的信息可以被解析
4.8 二维码
符合QRCode 1-40版本内的内容符号,与micro qrcode有区别
4.9 功能区域
符号外围的组成部分(特征符,分隔符,定位符还有修正符)。 他们用于被定位符号,或者帮助解析。
4.10 遮罩动作
对图像的符号区域 与选中的一种遮罩模式进行 xor运算,来减少功能区之间的冲突。
4.11 微型版本
与micro qr符号有关,按照版本可以划分为 m1-m4. 有别于 qr code符号
4.12 模式
按照某个字符集将字符串表现为一个比特流
4.13 模式标识符
4 比特的标识符用来 标识下面的数据段的编码模式
4.14 填充位
0 bit,不代表任何数据,用来在每个字符位填充完字符串比特之后的空白位置
4.15 剩余位
0bit,不代表任何数据,用来填充符号的编码区域最后一个字符之后的位置,用于符号的字符不能被8整除的情况。
4.16 剩余字
用来填充的字,用于替换纠错码后面的位置来完成整个符号, 当整体的数据数目和纠错码的数据不符合正常容量时。
4.17 段
根据ECI或者指定的mode而编码生成后的数据段
4.18 分隔符
由全部都是亮色module组成的功能字符,用于将特征符合其他区域隔离出来。
4.19 符号数
三比特长度,用来表示符号的版本和纠错码级别。和Micro code 标准一样,是格式信息中的一部分、
4.20 结束符
指定的数字0构成的 Bit区域(具体数字由符号本身指定),放在由数据编码后的bit流之后。
4.21 定位符
由黑白相间的Module组成的序列,用来确认符号的笛卡尔坐标表示的 (我另外加一句 目前是 1:1:3:1:1)
4.22 版本
符号用来表示大小的术语。 Micro qr符号的允许范围是 11x11 (M1)---17x17(M4) QR code符号的范围是 21x21(1) -----177x177(version 40)
注意:纠错码的级别是跟在版本信息后面的比如: version 4-L / M3-Q
4.23 版本信息
QRCode符号内部包含的编码区域,包含符号的版本信息和纠错码的 bit流表现方式
5 算数和逻辑运算符,缩略词和约定
5.1 算数和逻辑和逻辑符会在其出现的 公式和等式后面。
本文档范围内,下列的运算符会被用到
div 整数的除法运算符
mod 余数操作
XOR 逻辑异或运算符,两个不同时结果为1,代表符号是 十字盾
5.2 缩写
BCH Bose-Chaudhuri-Hocquenghem编码,分组纠错码
ECI 扩展渠道说明(特殊字符集模式)
R-S 里德所罗门算法
5.3 约定
5.3.1 模块的位置
为了方便定位,我们使用笛卡尔坐标来描述module的位置.form(i,j) 中i来描述行,从头开始,j来描述列,从左向右。 form(0,0)标识的module位于左上角。
5.3.2 字节写法
字节内容以十六进制展现
5.3.3 版本定位
对于QRCode符号来说,其版本定位由 V-E 来标识,V标识其版本号 (1-40) E约定了其纠错码级别(L,M,Q,H)
对于micro qrcode来说使用 MV-E标识 ,M来标识其实micro版本,V是其版本号(1-4),E约定了纠错码级别(L,M,Q)
6 符号描述
6.1 基础特征
QRCode是一个具备以下特征的矩阵符号
a ) 格式
QRCODE 具备全部的功能和最大的数据容量
MICRO-QRCODE 减少了头部信息,性能上有限制,数据容量减少 (QRCODE相比)
b) 可用字符集
1 纯数字(数字0-9)
2 文本数字(数字0-9 大写字母A-Z,九个其他字符 空格 $ % * + - . / :) )
3 字节数据,默认字符集为ISO 8859-1 其他字符集看7:32章节
4 日本字,日本字在QRCode中可以被混合成13bit长度
c) 数据展示形式
黑色module 是1 白色的Module是0 具体看6.2章节
d) 符号的尺寸(不包含静默区域)
Micro-qr 11X11 -17X17 单位是module(版本号是m1 -m4 每次每条边扩大2个单位)
QRCode 21x21---177x177(版本是从1-40,每次每条边扩大2个单位)
e) 每个符号的字符约定
MICRO-QR 最大的容量 (M4-L)
纯数字 35字符
文本数字 21字符
字节数据 15字符
日本字 9字符
QR-CODE 最大的容量 (40-L)
纯数字 7089字符
文本数字 4296字符
字节数据 2953字符
日本字 1817字符
f) 可选的纠错码级别
------L 7%
------M 15%
------Q 25%
------H 30%
四个级别的里德所罗门纠错级别比率被允许纠正。(从小到大一次递增)
对于MICRO QR来说 H级别的纠错码是不允许使用的, 对于M1级别的MICRO QR来说,rs的容量至于纠错级别有关。
g) 编码类型
矩阵
H) 方向支持
旋转和翻转都可以
情况1说明 一个正常颜色下的 QRCode 版本1的图像 进行反射旋转,在正常或者镜像的方向下都可以。
情况2说明 一个正常颜色下的 MICRO QRCode 版本M2的图像 进行反射旋转,在正常或者镜像的方向下都可以。
(TODO 这里翻译的不是很清楚)
6.2 进阶特征总览
下面列出的特性是可选的
---结构添加
允许文件的数据被以大写16进制以一定的逻辑连续的序列 它们可以被写入任何子句,进而在扫描的时候被重建。 在MICRO QR中不可用。
-----拓展的渠道说明
这个机制可以让 数据使用默认字符之外的其他字符集(比如阿拉伯语,西里尔字,希腊语)以及其他的数据说明(使用其他的压缩协议混淆数据)或者其他需求的特殊工业编码方式。 MICRO QR不可以使用这个机制
------ 反向转换
意图使符号 白底黑字或者是黑底白字时都可以被解析(具体看说明1 和说明2) 标准的是白底黑字,但是这个反向转换机制使得特殊情况下也可以被接受。
----- 镜像图像
ISO标准规定的module之间的范围 的前提是在方向是 正常的情况下,然而有些情况下,二维码图片有可能被移动了一点点。所以在扫描的时候,会先去识别其在右上,左上,左下的定位符,进而调整module的行列坐标
情形1 将文本“QR CODE Symbol” 作为例子,编码成图片, a 是正常方向并且正常翻转的 b是正常方向,但是反向翻转的 c 是镜像方向,但是正常翻转的, d是镜像方向反向翻转的
情形2 将文本“01234567” 以M2级别的 MICRO QR进行编码后的符号, a 正常的方向,正常的翻转 b 正常的方向,翻转了的翻转 c 镜像的图像方向和正常的翻转 d 镜像的图像方向和翻转了的翻转
6.3 符号结构
6.3.1 常见结构
所有的QR Code 都是由方形的Module组成的一个 方形数组。 其中又被分为编码区域,功能符号,特征符,分割线和定位符,纠错符。功能符号不编码数据,他们会环绕在二维码四周,由静默线分割。 说明3 解释了版本为7的二维码符号结构。 说明4解释了M3版本的二维码结构。
6.3.2 符号的版本和大小
6.3.2.1 QR 符号
QR版本有四十个,从version1 到version 40. 版本1的大小是 21x21, 版本2 是 25x25 依次递增,每次扩大4个moudle单位,每条边。知道版本40 的大小时177x177 说明5-说明10 分别解释了版本 1,2,6,7,14,21和40
6.3.2.2 MICRO QRCODE 符号
MICRO QR 符号有四个版本,分别是M1 -M4 M1版本大小时11x11, M2版本是13X13 M3 15X15 M4 17X17 单位是module,增长规律是单边每次增长2个module, 说明11 解释了MICRO QR的M1-M4版本
注意 M3版本有两种表现,区别是根据纠错码级别有字码上的改变
6.3.3 定位符号
6.3.3.1 QRCODE 符号
左上,右上,左下角 有三个定位符号, 说明3有解释。 所有的定位符号都是同心有层级的方形组成,其分别有7x7的深色,5x5的亮色,3x3的深色Module 组成。 其比例为 1:1:3:1:1 这点在说明12中有解释。 定位符号会被优先识别,所有在图像上其他类似的符号很少概率会发生误识别的情况。快速识别图像是否是二维码的,可以通过识别三个定位符号,并且确认其位置和旋转方向是否正确。
6.3.3.2 MICRO QR符号
只有一个定位符,其格式与上面一样,这个定位符号固定在了左上角, 具体可以先说明4, 定位符和识别符 明确的定义了图像在展示区域的大小,位置和旋转角度。
6.3.4 分割线
一个模块宽度的分割线,所有的元素都是亮色的,他们被放在 定位符合编码区域之间, 具体看说明3和说明4
6.3.5 时序符
时序符号,是由 一个module宽度组成的符号,可以是亮色可以是深色,可以是横也可以是竖。 由深色的开始并且结尾。时序符提供了符号的密度和版本信息,用来定位和提供数据的位置和确定module的坐标。
在QR Code版本中, 他们分别位于 横向和纵向的 第六行和第六列。
在MICRO QR版本中,他们分别位于第0行,开始位置是从分割线的边界开始算的。
6.3.6 校正符
校正符号只在QR CODE 的版本2以上才有,所有的校正符号都是有 5x5的深色module 和 3x3的亮色module组成,并且他们的同心是一个单独的深色module. 他们的数量与版本有关,定义在 annex E中。
6.3.7 编码区域
编码区域应该包含字符数据表现,其中格式是以包含了纠错码的字来展现的,其中的比例是以其版本来实现的, 7.7.1详细的介绍了符号字符, 7.9详细的介绍了格式信息,7.10 详细的介绍了版本信息
6.3.8 静默区域
包围在最外层的四个module宽度的区域。默认情况下应该是亮色的module.
对于QRCode图像 这里应该是4的倍数, 对于MICOR来说是2的倍数。