文档与图表理解 本节摘要:文档不是照片。PDF、科学论文、发票或手写表单有版面、表格、图表、脚注、页眉与语义结构,是纯图像理解抓不到的。VLM 之前的栈是流水线:Tesseract OCR + LayoutLMv3 + 表格抽取启发式。VLM 浪潮用「无 OCR」模型——Donut(2022)、Nougat(2023)、DocLLM(2023)——直接吐结构化标记取代了它。到 2026 年,前沿就是「把页面图像喂给原生 2576px 的 Claude Opus 4.7」,结构化标记输出免费来。本节读文档 AI 的三个时代弧线。 学习目标 阅读完本节,你应当能够: 解释文档 AI 的三个时代:OCR 流水线、无 OCR、VLM 原生。
本节摘要:文档不是照片。PDF、科学论文、发票或手写表单有版面、表格、图表、脚注、页眉与语义结构,是纯图像理解抓不到的。VLM 之前的栈是流水线:Tesseract OCR + LayoutLMv3 + 表格抽取启发式。VLM 浪潮用「无 OCR」模型——Donut(2022)、Nougat(2023)、DocLLM(2023)——直接吐结构化标记取代了它。到 2026 年,前沿就是「把页面图像喂给原生 2576px 的 Claude Opus 4.7」,结构化标记输出免费来。本节读文档 AI 的三个时代弧线。
阅读完本节,你应当能够:
「理解这个 PDF」难得具有欺骗性。信息藏在:
原始 OCR 把文本倒出来,丢了其余。一个关心发票的系统得知道「合计:1245 美元」来自右下角,而非脚注。
经典栈:
对干净印刷文本好用,在手写、倾斜扫描、复杂表格、非英文上失效。每个失败模式都要一条自定义异常路径。
TrOCR(Li 等人,arXiv:2109.10282)用合成 + 真实文本图像训练的 Transformer 编码器-解码器,取代了 Tesseract 的经典 CNN-CTC。在手写与多语言文本上干净胜出。仍是流水线(检测 → TrOCR → 版面),但 OCR 步骤大幅改进。
第一批无 OCR 模型说:完全跳过检测,直接把图像像素映射到结构化输出。
Donut(Kim 等人,arXiv:2111.15664):
Nougat(Blecher 等人,arXiv:2308.13418):
这些都是专家,不是通才。Donut 在科学论文上失败;Nougat 在发票上失败。
另一条路。LayoutLMv3(Huang 等人,arXiv:2204.08387)保留 OCR 但加版面理解:
LayoutLMv3 是基于 OCR 的文档理解的巅峰,在表单与发票上强,需要上游 OCR,是 VLM 前在标准化文档基准上的最佳精度。
DocLLM(Wang 等人,arXiv:2401.00908)是 LayoutLM 的生成兄弟,在版面 token 条件下生成自由形式答案,更适合文档 QA,但仍依赖 OCR 输入。
2024 年的 VLM 强到足以完全取代流水线。把整页高分辨率图像喂给 VLM,提问,得答案。
VLM 原生与 OCR 流水线的差距快速闭合。到 2026 年,VLM 原生在以下胜出:
OCR 流水线仍在以下胜出:
2576 像素原生输入下,前沿 VLM 以接近人类精度做文档理解。2026 年初的基准数字:
闭源差距主要在分辨率与基座 LLM 规模。7B 开源落后几分但在追。
科学论文需要精确的公式 LaTeX。Nougat 在此上训练过;带 LaTeX 目标训练的 VLM(Qwen2.5-VL-Math、Nougat 衍生)产出可用 LaTeX;无显式 LaTeX 训练的 VLM 产出可读但不精确的转写。
2026 年科学论文流水线:PDF 上链 Nougat,棘手页面上 VLM。
仍是最难的子任务。印刷 + 手写混合(医生处方、填好的表单)是 OCR 流水线在成本上仍胜 VLM 的地方。纯手写 VLM 在改进(Claude 4.7、PaliGemma 2)。
对新的文档 AI 项目:
code/main.py:
def layoutlm_input(ocr_words, bboxes, image_patches): # 三路输入: 文本 token + 2D bbox + 图像 patch text_ids = tokenize(ocr_words) # (N,) bbox_ids = quantize_bbox(bboxes) # (N, 4) 归一化到 [0, 1000] patch_ids = vit_tokenize(image_patches) # (M,) # 统一掩码训练: 随机掩码文本/patch/bbox 的子集, 让模型恢复 return concat(text_ids, bbox_ids, patch_ids)
def donut_output_schema(form_image): # 图像 → JSON, 无 OCR 无检测 output = transformer_decoder(form_image) return json.loads(output) # {"vendor": "...", "total": 1245.00, "date": "...", "line_items": [...]}
| 栈 | 每页 token | 延迟 | 失败模式 |
|---|---|---|---|
| OCR 流水线 | 文本约 500 + bbox | 快 | 手写/倾斜失效 |
| Donut | 约 1000(图像) | 中 | 任务专属, 不泛化 |
| Nougat | 约 2000(LaTeX) | 中 | 仅科学论文 |
| VLM 原生(Claude 4.7) | 2576px 约 4000+ | 慢但准 | 幻觉 |
💡 为何版面重要:「合计:1245 美元」在右下角与在脚注里,语义天差地别。LayoutLMv3 的 bbox 流让模型知道 token 在页面的哪里,这是纯文本 VLM 抓不到的——版面本身就是信号。
工程取舍:大规模纯印刷用 LayoutLMv3 + 规则;混合文档用 VLM 原生;科学论文用 Nougat + VLM;监管环境用 OCR + VLM 交叉核对。
本节产出 outputs/skill-document-ai-stack-picker.md。给定文档 AI 项目(领域、规模、质量、监管),它在 OCR 流水线、无 OCR 专家、VLM 原生间选择。
大规模发票:每天 1000 万张发票。哪套栈在最小每页成本的同时不丢精度?
LayoutLMv3 强弱:为什么 LayoutLMv3 在表单 QA 上胜纯 CLIP-VLM,却在场景文本上不如?bbox 流放弃了什么?
LaTeX 保真:Nougat 生成 LaTeX。提出一个 VLM 原生输出在 LaTeX 保真上胜 Nougat 的用例,以及一个 Nougat 胜的用例。
读 PaliGemma 2:读 PaliGemma 2 论文(Google,2024),什么关键训练数据加成让文档精度超过 PaliGemma 1?
监管混合:设计一个监管安全的混合:OCR 流水线为主、VLM 为辅交叉核对。分歧如何解决?
下一节,我们将进入 ColPali——把文档检索变成「视觉原生 RAG」,不先 OCR,直接用视觉嵌入在页面图像上做检索,是多模态 RAG 的范式转移。