PDF417
PDF417 是出现在美国每张驾照背面、大多数美国护照、FedEx/UPS 运单以及无数政府表格上的堆叠线性 2D 条形码。它是唯一可被 1D 激光扫描仪可靠读取的 2D 码型,这正是各机构拥有数百万台已装备扫描仪却 30 年来未曾替换的原因。
标准规范:ISO/IEC 15438:2015, 信息技术, 自动识别和数据采集技术, PDF417 条形码符号学规范。
AAMVA 应用:AAMVA Card Design Standard v10, 要求美国/加拿大驾照使用 PDF417。
开发者: Symbol Technologies(现为 Zebra),1991 年。名称代表"Portable Data File, 4 bars, 17 modules"。
AAMVA 应用:AAMVA Card Design Standard v10, 要求美国/加拿大驾照使用 PDF417。
开发者: Symbol Technologies(现为 Zebra),1991 年。名称代表"Portable Data File, 4 bars, 17 modules"。
概述
从物理上看,PDF417 符号是一叠水平行,每行都是一个线性条形码。完整尺寸的 PDF417 看起来像一块高窄的砖,有 ~3–90 行,每行承载整体数据的一个片段。由于每行以起始图案开始、以终止图案结束,PDF417 可以由从左到右逐行扫描的激光解码,无需 2D 成像仪。
每个码字宽 17 个模块,由 4 个条和 4 个空格构成(因此称为"4/17")。数据通过以下三种"压缩模式"之一分配到码字中:
- 文本压缩, 每码字 1.8 个字符,用于混合字母数字。
- 字节压缩, 每码字 1.2 字节,用于任意二进制数据。
- 数字压缩, 每码字 2.9 位数,用于长数字数据(如 AAMVA 的邮政编码+州组合)。
容量(行 × 列)
PDF417 大小以行 × 数据列表示。最大为 90 行 × 30 数据列 = 2,700 数据码字。字母数字容量近似值:
| 行 × 数据列 | 最大字母数字 | 典型用途 |
|---|---|---|
| 3 × 1 | ~3 字符 | 最小可行符号 |
| 10 × 3 | ~30 字符 | 短 ID、短 URL |
| 20 × 5 | ~100 字符 | 登机牌、短 AAMVA |
| 30 × 8 | ~250 字符 | FedEx 运单 |
| 40 × 12 | ~500 字符 | 完整 AAMVA 驾照 |
| 90 × 30 | ~1,800 字符 | 理论最大值, 极少使用 |
纠错级别(0–8)
PDF417 定义了 9 个 Reed-Solomon 纠错级别,分别添加 2、4、8、16、32、64、128、256 或 512 个 ECC 码字。级别越高,能处理的损坏越多,但会消耗数据容量。
| ECC 级别 | ECC 码字 | 典型用途 | % 开销 |
|---|---|---|---|
| 0 | 2 | 仅用于实验 | ~0.1% |
| 1 | 4 | 短码、受控环境 | ~0.2% |
| 2 | 8 | 小数据量 | ~0.4% |
| 3 | 16 | 中等数据量、室内扫描 | ~0.8% |
| 4 | 32 | 短文档的默认值 | ~1.5% |
| 5 | 64 | 实际默认值, 运单、登机牌、AAMVA | ~3% |
| 6 | 128 | 高损坏环境 | ~6% |
| 7 | 256 | 折皱 / 户外 / 工业 | ~12% |
| 8 | 512 | 极端环境 | ~25% |
Macro PDF417(多符号数据)
当数据超过 1,800 字符的上限时,PDF417 支持 Macro PDF417, 数据被分割为最多 99,999 个独立符号,每个符号标有 Macro 索引和文件 ID。扫描仪以任意顺序读取所有符号,重新组合,输出单个解码数据。在专业文档扫描之外的实际应用中很少见。
标准测试向量
| 案例 | 数据 | 期望子串 |
|---|---|---|
| GS1 运单(FedEx 风格) | 123456789012345 FEDEX 2026-04-20 | FEDEX |
| AAMVA 驾照(最小) | @\n\x1e\rANSI 636014100002DL00410241ZVZVA01DAQA123456789 | ANSI 636014 |
| 短 URL | https://example.com/doc/X1234 | example.com/doc/X1234 |
| 长收据 / 发票 | INV:2026-04-19 VENDOR:ACME TOTAL:$1,234.56 TAX:$98.76 … | ACME |
常见问题
- 消费者手机摄像头无法可靠解码 PDF417。 iOS 17+ 有专门识别 AAMVA 的流程(Wallet 能识别美国驾照),但把这理解为"iPhone 支持 PDF417"是误导性的, , 仅适用于特定的 AAMVA 数据。Android 行为因厂商相机应用而差异很大。
- AAMVA 强制要求 PDF417。 AAMVA Card Design Standard(CDS)明确要求 PDF417,不是 QR,也不是 Aztec。如果您生成 AAMVA 数据,标准将您绑定于此。
- 静区宽度为 2× 模块宽。 不同于 QR(4 个模块)和 Aztec(无静区)。PDF417 在左右两侧各需至少 2 个模块的白色空间;静区错误是合法 PDF417 码在扫描时失败的首要原因。
- 纵横比很重要。 PDF417 的行按设计比高度更宽。强制使用方形纵横比(通过缩放或在方形介质上打印)会破坏激光扫描仪的解码;2D 成像仪有时能恢复。
- 截断 PDF417。 省略右行指示符 + 终止图案的变体。可节省约 12% 的符号宽度,但只能在 2D 成像仪上解码, , 激光扫描仪需要终止图案。仅在已知扫描仪类型时使用。
- 压缩模式自动选择。 优秀的编码器会在数据中途切换压缩方式以提高效率(数字块 → 文本块)。锁定单一模式的手动编码器会浪费容量。Abundera 的编码器按每个码字自动选择。
- 压缩模式与字符集。 文本压缩仅处理可打印的 ASCII。嵌入的 NUL、Latin-1 重音符或二进制数据会强制使用字节压缩,效率降至 1.2 字节/码字。
- 样式已禁用。 QR 专属功能(自定义点形状、渐变、中心 Logo)不适用。Abundera 的样式面板对 PDF417 自动禁用。
扫描仪兼容性
| 读码器 | PDF417 支持 | 备注 |
|---|---|---|
| iOS 摄像头(iOS 17+) | 仅 AAMVA | 适用于美国驾照的原生 Wallet 流程。通用 PDF417 数据不解码。 |
| Android 摄像头(OEM 相关) | 部分 | Samsung + Pixel 原厂相机解码不稳定。Google Lens 部分支持。 |
| Google Lens | 不可靠 | 不是生产环境的可行验证路径。 |
| 美国 DMV / 信息亭扫描仪 | 是(标准) | 这就是 PDF417 的设计用途, , 每个 DMV 和酒类售卖机原生读取 PDF417。 |
| 航空公司登机牌阅读器 | 部分航空公司 | 大多数已改用 Aztec;少数(ANA、JAL、传统美国航空公司)仍接受 PDF417 登机牌。 |
| FedEx / UPS 运单阅读器 | 是(标准) | 每个分拣设施的激光扫描仪原生读取 PDF417。 |
| 1D 激光扫描仪 | 是 | 相对 Aztec / Data Matrix 的独特优势, , 1D 激光器能够解码 PDF417。 |
| Zebra / Honeywell / Datalogic 成像仪 | 是 | 每款工业 2D 成像仪均支持 PDF417。 |
| Scandit / Dynamsoft SDK | 是 | 完全支持,包括 Macro PDF417。 |
另请参阅
- /pdf417-barcode-generator/, PDF417 生成工具。
- AAMVA 参考, PDF417 的标准使用案例(美国驾照)。规范强制要求。
- Aztec · PDF417 · Data Matrix 对比, 并排比较。
- Aztec 参考, 以显示为先的同类符号,用于登机牌和交通。
- Data Matrix 参考, 直接零件标记同类符号。
- 标准索引, 返回参考中心。