首页 › programming › 二维码神课:黑白棋盘里的信息论

二维码神课:黑白棋盘里的信息论——你天天在扫的,是一台纠错机器

一、导语:被扫了几万亿次,却几乎没人看懂

这是一个所有人都用过、却几乎没人「看见」过的技术:早餐摊上扫一下,登机牌上印一张,Excel 里导出一张,连流浪猫的耳朵上都贴着一张。二维码(QR Code)每天在全球被扫描的次数是个天文数字,但如果随机拉一个人问「它为什么被涂黑一角还能扫出来」「为什么三个角都有个小回字」,答案基本是「不知道,反正能用」。

把这件事讲得最透的,是 Branch Education 的《How do QR Codes Work?》。这条视频用频道标志性的 3D 动画,把一张二维码当成标本放上解剖台:三个回字怎么当「锚点」、数据怎么蛇形填进去、Reed-Solomon 纠错码怎么让它在油污和破损里活下来。它解决的是一个典型的「熟视无睹」问题——你以为的黑白贴纸,其实是一套在噪声信道上可靠传输信息的微型通信系统。看完它,你对扫码、支付码、防伪甚至数据备份的理解都会上一个台阶。

先交代一句:本轮写作环境的实时抓取通道受限,视频页的标题、时长、播放量未能在线核验,下文卡片中标注为记忆值;正文涉及的二维码原理属教科书级稳定知识,不受此影响。

二、视频背景卡片

项目 内容
视频标题 How do QR Codes Work?(以频道内检索为准)
频道 Branch Education(3D 工程可视化科普频道,订阅百万级)
发布时间 2023 年前后(记忆值,未经实时核验)
时长 约 20 分钟(记忆值,未经实时核验)
播放量 频道头部代表作之一,千万级(记忆值,未经实时核验)
核心主题 二维码的结构解剖:定位、编码、掩码与纠错机制

说明:本文以视频核心论点为骨架,结合公开的技术规格与工程常识展开,凡属我的延伸分析均已单独标注,未逐句复述视频原话。

频道背景多说一句:Branch Education 的路数是把「黑盒设备」用 3D 动画一颗颗螺丝拆开——本专栏此前深读过的 GPU、CPU、存储层级、JPEG 压缩都出自它手。这条二维码篇是它「信息编码」方向上的代表作之一,看之前建议开最高画质。

三、核心内容拆解

要点1:一维码的仓库之痛,与1994年的那块黑白棋盘

故事从 90 年代的日本工厂讲起。丰田的供应商电装(Denso Wave)有个日常烦恼:一维条码只能横向编码,容量撑死二十来个字符,扫一个零件要贴好几张码,还得对得很准。1994 年,工程师原昌宏(Masahiro Hara)带团队发明了 QR Code——Quick Response,名字就直接把设计目标写在了脸上:快。二维方向同时编码之后,容量直接跳到最高约 7000 位数字、4000 多个字母数字(以 version 40 为上限),还能装汉字,而且可以超高速识读。(延伸分析) 这里有个容易被忽略的产品洞察:QR 不是「把条码拍扁再排一排」的蛮力扩容,而是重新定义了读取方式——一维码要「扫」,二维码是「拍」,前者对准精度要求高,后者直接以图换图。你今天能歪着手机 0.5 秒付完钱,源头就是当年这个「拍下来再算」的思路。

要点2:三个「回」字:从围棋盘上借来的定位术

二维码最显眼的特征,是左上、右上、左下三个角的回字形图案。视频把这块讲得非常清楚:它叫 finder pattern(定位图案),黑白比例严格遵循 1:1:3:1:1——正因为这个比例在整张图里几乎不可能偶然出现,扫描器可以在画面里快速「认出」这三个记号,进而确定整张码的位置、大小和旋转角度。据 Denso Wave 官方的历史介绍,原昌宏团队当年是从围棋棋盘的黑白交错中获得的灵感,光这一项就耗掉了漫长的试错时间。除了三个大锚点,还有细小的 timing pattern(时序图案)负责定出网格坐标,以及尺寸较大时才出现的 alignment pattern(校正图案)负责矫正拍摄时的透视变形。(延伸分析) 这其实是协议设计里非常高级的思想:让数据自带「自我描述」能力。图纸上先画出坐标系,再往坐标系里填内容——好的接口、好的文件格式、好的通信协议,都是这个套路。

要点3:数据怎么排进去:蛇形填充与八种掩码

定位解决了「在哪看」,接下来是「看什么」。视频里有一段非常治愈的动画:数据从右下角开始,沿着两列宽的蛇形路线一路向上填充,每 8 个模块组成一个基本单元(codeword)。填充之前还有一步「选编码模式」:数字模式最省(3 位数字只要 10 个比特),字母数字、字节、日文汉字各有专门模式,同一条内容会按需混用,能省则省。真正反直觉的是掩码(masking)这一步:直接填好的图案可能出现大片空白、或者「长得像定位图案」的假回字,干扰识别,所以规格定义了 8 种掩码模板,逐一叠加后打分,选黑白分布最均匀、最不「撞脸」定位图案的那一版。(延伸分析) 这一步是防御性设计的教科书案例——它防的不是「正常输入」,而是最坏情况。写代码时处理空值、限流、防重放,本质上都是在做二维码的「掩码」:不是让系统在理想输入下好看,而是在烂输入下不翻车。

要点4:容错才是灵魂:盖住一角也能扫的秘密

二维码最神奇的特性——中间印个 logo、破个洞、沾点油也能扫——来自 Reed-Solomon 纠错码。这套 1960 年由 Irving Reed 和 Gustave Solomon 发明的数学工具,能从含错数据里把原始信息完整还原出来。二维码提供四档纠错:L 级约可恢复 7% 的数据,M 级 15%,Q 级 25%,H 级高达 30%。更妙的是存放方式:数据与纠错码不是各占一边,而是交织打散着填进整张图,这样局部损伤摊薄到全图,任何区域坏一点都有救。RS 码的战绩横跨半个数字史:CD、DVD、DSL、数字电视,甚至飞出太阳系的旅行者号探测器传回的照片,用的都是它。(延伸分析) 所以「二维码中间能放头像」从来不是玄学,是产品经理把纠错档位从 L 拨到 H 的决策结果——纠错等级换的是空间利用率,H 档容量最小但最抗造。营销码追求识读率选 H,票据追求容量选 M,这背后是个典型的工程权衡题,不是技术高低题。

要点5:扫码那一秒,流水线在跑什么

视频的后半段把扫描过程倒放了一遍,值得单独拎出来:摄像头取景 → 找到三个回字定位 → 透视矫正出采样网格 → 读取格式信息(拿到纠错档位和掩码编号)→ 按掩码还原、解调出比特流 → RS 纠错修复损坏数据 → 按编码模式解码成最终文字。每一步都在为下一步兜底:定位错了后面全错,所以定位做得最冗余;数据会坏,所以纠错码随身携带。整个过程快到让你以为「扫码」是一个动作,其实是六七道工序的流水线。(延伸分析) 这是我在这个视频里最喜欢的一个认知升级:所谓「鲁棒」,从来不是一个品质形容词,而是一条流水线上每一环的具体冗余设计。你做的高可用系统、你写的重试逻辑、你备份文件的多地存放,和二维码的三个回字是同一种东西——都是提前为「一定会有坏事发生」付的保险费。

要点6:动态码、偷换码与那点安全常识

视频以技术解剖为主,这里补一段使用层面的延伸分析。你在餐厅扫的支付码、地铁里扫的乘车码,多数是动态二维码:图里只存一个短链,扫了之后跳转到服务器换真实内容——所以商家能改价、能统计、能防重复核销。代价是二维码本身不携带安全属性:它只是个载体。现实中的「偷换码」骗局(用自己贴纸盖住商家的收款码)骗的不是二维码,是你的不经意;恶意二维码诱导跳转钓鱼页,骗的也是你的扫码反射弧。对应的动作清单其实很短:付款页面认商户名、不扫来路不明的码、贴在公共场合的码优先走「扫完输入金额再确认」的流程。技术再稳,最后一环永远是人。

要点7:一门被免费开放的技术,和它的设计哲学

很多人不知道,QR Code 的专利策略相当大方:据 Denso Wave 官网介绍,它基本开放了专利实施,只是保留「QR Code」商标——这也是二维码能全球疯长成基础设施的法律前提。三十年来它还长出了新枝:能塞进更小空间的 Micro QR、近年完成标准化的长方形 rMQR 等。(延伸分析) 为什么这条视频值得每个开发者看一遍?因为它演示了一种稀缺能力:在互相冲突的约束里做出优雅的设计。容量、识读速度、容错率、印刷密度,四个愿望互相打架,原昌宏团队的答案是定位冗余 + 分级纠错 + 掩码打分这套组合拳,每个决定都牺牲一点什么,最后整体刚好能用、耐用、好用。这种「承认噪声存在,然后系统性对抗它」的思维方式,比任何语法知识都保值——毕竟你写的每一行代码,也都是在噪声世界里传递信息。

四、知识结构图

flowchart TD
    A["二维码的三层骨架"] --> B["定位系统"]
    A --> C["编码系统"]
    A --> D["纠错系统"]
    B --> B1["三个回字锚点<br/>比例1比1比3比1比1"]
    B --> B2["时序图案定网格"]
    B --> B3["校正图案<br/>抗拍摄变形"]
    C --> C1["先选编码模式<br/>数字最省比特"]
    C --> C2["蛇形路线<br/>从右下填入数据"]
    C --> C3["八种掩码打分<br/>选分布最匀的一版"]
    D --> D1["Reed-Solomon<br/>纠错码"]
    D --> D2["L M Q H<br/>四档容错"]
    D --> D3["数据与纠错码<br/>交织打散存放"]
    B1 --> E["随便转个角度<br/>都能秒识别"]
    C3 --> F["黑白更均匀<br/>误读率更低"]
    D1 --> G["盖住一角<br/>照样扫出来"]

扫码那一刻的流水线:

flowchart LR
    S["取景"] --> F["定位"]
    F --> R["矫形"]
    R --> U["解调"]
    U --> E["纠错"]
    E --> T["解码"]

五、实战启示:三类读者的行动清单

如果你做产品或运营:先把纠错档位当产品参数用——需要印 logo、用在易磨损场景(包装、户外)就上 H 档;纯线上展示、追求好扫就 M 档。二维码四周务必留足静区(quiet zone,约 4 个模块宽),挤掉静区的海报码是「看起来能用、实际上难扫」的重灾区。深色码配浅色底,别反色——很多扫描器对白底黑码的对比度有硬性假设。内容长就用动态短链,别把几百字符的 URL 硬塞成一张高密度码。

如果你是开发者:把这条视频当成「信道编码」的入门糖衣。想加深可以动手:Nayuki 的 QR Code 生成器教程从比特流一路讲到掩码打分,跟着写一遍,你对「数据如何自描述、如何容错」的理解会脱胎换骨。再往深一层,Reed-Solomon 的思想可以直接搬进你的工程实践——分布式存储的纠删码、文件分发的校验分块,都是同一套数学的不同马甲。

如果你只是普通用户:记住三件事就够了——付款前看一眼收款方名称;公共场所贴着的码,谨慎扫;自己打印的码,隔段时间掏出手机验一次「还能不能扫」。最后这条是工程师习惯:任何承载关键信息的介质,都值得一次恢复演练。

六、延伸学习路径

  1. Branch Education 频道内检索 "How do QR Codes Work" —— 本文解读的核心视频,3D 动画把结构逐层拆开
  2. Denso Wave 官方站 qrcode.com —— 发明方亲述的 QR 历史、规格说明与 rMQR 等新变体,一手史料
  3. Nayuki《QR Code generator library》及其配套教程(nayuki.io) —— 极客向巅峰之作,从零实现一个二维码生成器
  4. Thonky《QR Code Tutorial》(thonky.com) —— 最系统的中文圈外免费图文教程,格式信息与掩码部分尤其细
  5. Backblaze 博客的 Reed-Solomon 科普(backblaze.com/blog) —— 存储厂商讲纠删码,把 RS 码从二维码接到云存储

七、一句话总结

二维码最值钱的设计不是「装得多」,而是「坏得起」——定位、编码、纠错三层冗余,让一张黑白贴纸扛住了这个毛毛躁躁的世界。

参考来源

  1. How do QR Codes Work? — Branch Education(YouTube 频道内检索入口) — 本文分析的核心视频(本轮未能实时核验播放数据)
  2. Denso Wave 官方二维码站点 — 发明方一手历史与规格资料
  3. Nayuki: QR Code generator library — 从零实现的参考代码与教程
  4. Thonky: QR Code Tutorial — 图文版规格详解
  5. Backblaze: Reed-Solomon 科普 — 纠错码在存储系统的工程应用

本文由「51学通信」技术团队出品。51学通信由通信行业18年老兵爱卫生(微信ID: gprshome201101)维护,聚焦5G/6G核心网、3GPP标准解读、通信前沿技术深度分析。 出版作品有《5G核心网原理与实践》《IMS原理与实践》等4本通信专业书籍。知识星球「51学通信」提供深度技术答疑和行业洞察。

[!tip] 51学通信知识星球 星主:爱卫生(微信:gprshome201101)——公众号「51学通信」创办者,19 年通信行业运维与讲师经验,著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书(各大电商平台有售)。 星球定位:深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域,主打运维岗位与信令分析。 当前规模:5200 篇主题 / 990 个回答,198 元/年。 加入福利:加入星球后请加爱卫生微信,拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题,另有群内分享。 AI 加持:51学通信知识星球已作为 skill 接入 WorkBuddy,使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例,做总结、找文档和 PPT 等场景全覆盖。

51学通信知识星球海报-扫码加入