二维码缺了一角,为什么有时还能扫出来

二维码看起来像一片杂乱的黑白方格,但它并不是把信息从左到右简单排成一行。编码时,数据会按照规定的路线分散到网格中,还会加入专门用来纠错的冗余信息。因此,一小块区域被污渍遮住或轻微破损时,扫描器仍有机会还原原始内容。

二维码三个角上的大方框叫定位图形。扫描器先用它们判断二维码的位置、方向和倾斜程度。网格里还有用于确定行列节奏的图形,以及帮助处理较大图像变形的校正图形。它们不是正文数据,却决定了扫描器能否正确理解整张图。

真正承担容错任务的是纠错码。二维码常见的纠错等级为 L、M、Q、H,理论上可分别恢复大约百分之七、十五、二十五和三十的数据码字。等级越高,需要留给纠错信息的空间越多,同样尺寸下能够存放的实际内容就越少。

这些比例不能简单理解成“随便剪掉同样面积也没关系”。破损的位置十分重要:如果定位图形、安静区或关键格式信息被遮住,二维码可能还没进入纠错步骤就无法被识别。连续盖住一大片通常也比零散的小污点更难恢复。

扫描软件识别时,会先校正透视和明暗,再把画面划分成小方格,判断每格偏黑还是偏白。随后它按照编码规则读取数据,并利用纠错码检查和修复错误。只要可见信息仍足够,而且图像没有严重模糊、反光或变形,缺损的部分就可能被推算出来。

这也解释了为什么有些二维码中央可以放一个小标志。设计者通常会选较高纠错等级,并让标志避开关键图形。不过,容错能力是应对意外损伤的余量,不应当被当作可以无限遮挡的装饰空间。实际制作时,保留完整边缘、足够对比度和四周留白,往往比单纯提高纠错等级更可靠。