二维码容错(纠错)是内置在二维码里的冗余信息,即使二维码部分弄脏、损坏或被遮挡,依然可以被扫出来。容错共有四个等级:L 约可恢复 7% 的数据,M 约 15%,Q 约 25%,H 约 30%。等级越高越耐用,但二维码也会越密。
二维码容错是怎么工作的
二维码并不是把你的文字存一遍就听天由命。生成二维码时,数据会被切分成以字节为单位的“码字”,然后计算出额外的纠错码字一并加进去。这里用到的数学方法叫里德-所罗门(Reed–Solomon)纠错码,几十年来 CD、DVD 和数据传输都在使用同一类技术。
手机扫码时会读取所有码字。如果有些码字因为划痕、污渍或上面的 Logo 而无法读取或读错了,扫码设备会利用额外的码字推算出缺失部分原本应该是什么。只要损坏程度在该等级的承受范围内,扫码就会成功,你根本察觉不到有什么问题。
容错等级记录在二维码中一个叫“格式信息”的小区域里。格式信息会存两份,确保扫码设备能可靠地读取。
四个等级:L、M、Q、H
每个等级都是在存储空间和耐用性之间做取舍。下面的百分比是二维码数据大约可以恢复的比例。
- L 级(低),约 7%。 同样大小的码里能存最多数据。适合干净的室内环境或屏幕显示,几乎不会损坏的场景。
- M 级(中),约 15%。 均衡、常用的默认选择。适合传单、菜单、名片等大多数印刷品。
- Q 级(较高),约 25%。 为可能弄脏或磨损的二维码提供额外保护,比如包装、标签或车间里的二维码。
- H 级(高),约 30%。 最耐用。常用于户外标牌、恶劣环境,或中间放了 Logo 的二维码。
这些数字指的是可恢复的数据,并不等于“可以遮住 30% 的画面”。损坏位置不对,尤其是遮住了三个角上的大方块,即使受影响面积很小,二维码也可能扫不出来。
取舍:耐用性与密度
容错不是免费的,额外的码字会占用二维码内部的空间。对于相同的内容,更高的等级意味着:
- 更多的模块,也就是那些黑白小方格
- 更大的二维码“版本”,从版本 1 的 21 × 21 个模块,到版本 40 的 177 × 177 个模块
- 在相同的印刷尺寸下,每个方格更小
方格越小,摄像头越难分辨,尤其是在远距离、光线昏暗或使用老手机时。所以在一个小标签上,给一条长网址选 H 级,反而可能让二维码更不可靠。
通常的解决办法是减少数据。短链接,比如 QR-TH 活码使用的 qr-th.com/r/ 短链接,能让内容保持简短,从而在不让二维码过密的前提下,留出提高容错等级的空间。我们的静态码与活码对比一文解释了短链接的原理。
应该选哪个等级?
参考这份简单指南:
- 显示在屏幕上,或印在干净的室内物料上? L 或 M 级就够了。
- 普通印刷宣传品,比如菜单、传单或海报? M 级是可靠的默认选择。
- 可能被刮擦、沾水、弄脏或被部分遮挡? 选 Q 级。
- 中间有 Logo、户外标牌或环境恶劣? 选 H 级,并让数据尽量简短。
- 无论选哪一级,都要在实际距离和光线下,用多部手机测试印出来的二维码。
很多二维码生成器会自动选择合适的等级,加 Logo 时往往会自动调高。如果你的工具可以手动选择,请根据二维码的使用环境来定,而不是一律选最高。
容错与 Logo
在二维码中间放 Logo 之所以可行,靠的就是容错:Logo 遮住了一些模块,扫码设备再利用冗余数据把它们还原出来。以下几条规则能让它更可靠:
- 加 Logo 时使用 H 级,至少 Q 级。
- Logo 保持适当小、居中放置。要远低于最大恢复能力留出余量,因为现实中的损坏、反光和模糊也会消耗容错空间。
- 绝不要盖住角上的三个大定位方块,也不要占用二维码四周的静区。
- 二维码与背景之间保持高对比度。
更多设计建议,请阅读我们的二维码设计指南。
容错解决不了的问题
容错很强大,但也有极限。下面这些情况,它救不回来:
- 对比度差,比如白底浅灰或深色配深色
- 没有静区,二维码紧贴着其他图案印刷
- 角上的定位图形受损
- 方格太小,在扫码距离上无法分辨
- 严重变形,比如印在弧度很大的曲面上
- 亮面覆膜反光,冲掉了大片区域
容错也不会让二维码更安全。一个 H 级的二维码同样可以指向危险网站,贴在真二维码上的诈骗贴纸也能完美扫出。如果对某个二维码拿不准,先用 QR-TH 在线扫描二维码,在打开任何内容之前先看清目标地址。
FAQ
二维码容错等级选哪个最好?
没有绝对最好的等级。M 级适合大多数印刷用途,H 级适合加 Logo 以及户外或恶劣环境。根据二维码的使用场景来选。
容错等级越高,二维码会越大吗?
在数据相同的情况下,是的。它会增加模块数量,所以要么印出来的二维码更大,要么每个方格更小。
任何二维码都能加 Logo 吗?
只有容错能力足以覆盖被遮挡的区域才行,所以请用 Q 或 H 级。Logo 要小,避开角上的定位方块,印刷前一定要测试。
印好之后还能改容错等级吗?
不能。容错等级是印出来的图案的一部分。要更改,只能重新生成并印刷一个新的二维码。
想要一个在现实环境中也能稳定识别的二维码?用 QR-TH 的免费二维码生成器制作,内容保持简短,印刷前用几部手机测试一下。