反馈

二维码原理:纠错等级、版本和为什么能加 Logo

二维码中间能塞一个 Logo,边角哪怕脏了、磨损了也能正常扫出来——这背后不是运气,而是二维码内置的纠错编码本身就设计了大量冗余空间,能够容忍一定比例的数据"损坏"。


目录

  1. 二维码的基本结构
  2. 纠错等级:L/M/Q/H 怎么选
  3. 为什么中间能放 Logo
  4. 版本:矩阵大小和容量的关系

1. 二维码的基本结构

QR 码(Quick Response Code)由日本 Denso Wave 公司于 1994 年发明,一个标准二维码由几个关键部分组成:

  • 定位图案:三个角上的同心方块图案,用于扫描设备快速识别二维码的方向和边界(第四个角故意不放,方便判断旋转方向)
  • 校正图案:较大尺寸的二维码里额外分布的小方块,帮助纠正图像变形和透视畸变
  • 格式信息与版本信息:记录这个二维码用的纠错等级、编码模式、版本号等元数据
  • 数据区:实际存储的内容(文本、网址等)编码后的区域
  • 纠错码区:基于数据计算出的冗余纠错信息,用来在部分数据损坏时依然能恢复原始内容

2. 纠错等级:L/M/Q/H 怎么选

二维码的纠错编码基于 Reed-Solomon(里德-所罗门)纠错码,这是一种能够在数据部分丢失或错误的情况下依然还原完整信息的编码方案。QR 码标准定义了四档纠错等级:

等级 容错率 说明
L(Low) 约 7% 容错能力最低,能存的数据最多
M(Medium) 约 15% 默认常用等级,容错和容量的平衡点
Q(Quartile) 约 25% 容错能力较高
H(High) 约 30% 容错能力最高,能存的数据最少

纠错等级和数据容量是此消彼长的关系——纠错等级越高,用来存储冗余纠错信息的空间越大,能塞进原始数据的空间就越小,所以同样的矩阵尺寸下,L 级能编码的字符数最多,H 级最少。

3. 为什么中间能放 Logo

在中心区域覆盖一个 Logo,本质上就是"人为损坏"了这块区域的原始数据/纠错码信息。只要被覆盖遮挡的面积在当前纠错等级允许的容错范围内(通常需要配合最高的 H 级 30% 容错率),扫描设备依然能靠剩余的纠错码信息完整还原出原始数据——这也是为什么带 Logo 的二维码生成工具通常会自动把纠错等级提升到 H 级,并且限制 Logo 的尺寸不能覆盖过大比例的面积,超过容错上限就会导致扫码失败。

4. 版本:矩阵大小和容量的关系

QR 码标准定义了 Version 1 到 Version 40 共 40 个版本,版本数字越大,二维码的矩阵(黑白格子的网格)越大——Version 1 是 21×21 的小矩阵,Version 40 则达到 177×177。矩阵越大,能容纳的数据自然越多,但相应地对扫描设备的分辨率和识别距离要求也更高(远距离或低分辨率扫描高版本二维码更容易失败)。生成二维码时,工具会根据要编码的内容长度和选定的纠错等级,自动选出容纳得下这些数据的最小版本。


在线工具:二维码生成 · 艺术二维码