读书笔记 · 约 15,822 字 · 预计推送 2 部分

主题精读:文档解析管线 —— HTML、PDF、DOCX、EPUB 转 Markdown 的工具与失败模式 未开始

目录

题记与说明

来源清单(本次实际精读)

#来源读到的内容
S1OmniDocBench: Benchmarking Diverse PDF Document Parsing with Comprehensive Annotations(CVPR 2025),https://arxiv.org/abs/2412.07626 (精读 https://arxiv.org/html/2412.07626v2 全文含附录)981 页基准、评估方法(NED/TEDS/CDM)、各工具端到端与分项成绩、失败原因讨论
S2Docling Technical Report(arXiv:2408.09869),https://arxiv.org/abs/2408.09869 (摘要页)DocLayNet 版面模型 + TableFormer 表格模型、MIT 许可、资源预算定位
S3Docling README 与 Supported Formats 文档,https://github.com/docling-project/docling 、https://docling-project.github.io/docling/usage/supported_formats/支持格式全景(PDF/DOCX/PPTX/XLSX/HTML/EPUB/邮件/iWork/音视频)、统一 DoclingDocument、导出格式、已知限制
S4Marker README(VikParuchuri/marker),https://github.com/VikParuchuri/marker架构(surya+texify 管线)、force_ocr/use_llm、基准对比、官方承认的局限
S5MarkItDown README(microsoft/markitdown),https://github.com/microsoft/markitdown设计哲学(给 LLM 而非给人看)、格式支持、安全注意事项、Azure 云端升级路径
S6LlamaIndex 博客《OmniDocBench is Saturated, What's Next for OCR Benchmarks》(2026-02),https://www.llamaindex.ai/blog/omnidocbench-is-saturated-what-s-next-for-ocr-benchmarks基准饱和(GLM-OCR 94.6%)、精确匹配指标惩罚语义正确输出、下一步方向
S7Document Parsing Unveiled 综述(arXiv:2410.21169),https://arxiv.org/abs/2410.21169 (HTML 截断版,8 节后未读到)公式/表格/扫描件难点、数据集规模盘点;该综述未覆盖 HTML/DOCX/EPUB 原生格式解析

另有一次未精读的检索快照:Tensorlake 在 Reddit 上称"parsers can score 99% on standard benchmarks (often built on sanitized PDFs) yet catastrophically fail in production"——方向与 S6 一致,但正文未读,仅作旁证线索。


TL;DR

  1. 四种格式的"解析难度"完全不同:DOCX(OOXML)与 EPUB(XHTML+CSS)是带语义标签的容器,转换主要是"降维投影"(保留结构、丢弃样式),失败模式少而确定;PDF 是印刷指令流而非文档,必须靠版面分析模型"重建"结构,失败模式多而开放;HTML 介于两者之间,难点在 boilerplate 剥离与布局表格。
  2. PDF 解析已分裂为两条技术路线:模块化管线(版面检测→OCR/表格/公式识别→阅读 order→Markdown,如 MinerU、Marker、Docling、Mathpix)与端到端 VLM(Nougat、GOT-OCR、Qwen2-VL、GPT-4o)。OmniDocBench 的核心发现是二者擅长面互补:管线赢在常规文档与高密度版面,VLM 赢在手写、退化扫描件等长尾。
  3. 最重要的单一失败模式清单(有基准数据支撑):手写笔记(MinerU 编辑距离 0.984 ≈ 全军覆没,VLM 反而 0.168)、报纸级密排(VLM 编辑距离 0.65–0.90)、表格旋转(所有模型 TEDS 崩塌,MinerU 65.8→3.0)、双栏以上阅读顺序(所有模型一致下降)、水印/模糊扫描(管线工具产生错字)。
  4. 评估本身在 2025–2026 年成为新问题:OmniDocBench 被指饱和(头部 94%+)且"单一固定 ground truth + 精确匹配"会惩罚语义等价的正确输出(如该拆未拆的表、HTML vs LaTeX 记法)。基准分数与生产可用性之间的裂缝是当前领域最大的未解问题。
  5. 选型结论:先做文档路由(原生 XML→pandoc/MarkItDown/Docling 直转;数字 PDF→管线工具,必要时 --use_llm;扫描/手写→VLM 路线),Markdown 只是视图,中间态应保存无损结构(DoclingDocument / marker JSON / pandoc AST)。

一、核心问题

如何把视觉/半结构化文档可靠地变成 Markdown? 拆开是三个子问题:

二、主要主张

S1 OmniDocBench(CVPR 2025)

S4 Marker(作者自述局限)

S5 MarkItDown(微软,定位即主张)

S6 LlamaIndex 博客(2026-02,基准批评)

S3 Docling

S7 综述(部分读到)

三、方法(各路线的技术拆解)

3.1 模块化管线(MinerU / Marker / Docling / Mathpix)

共性流程(S1 §2.1 + S4 "How it works"):

  1. 文本层提取或 OCR:先启发式判断数字文本是否可信;Marker 用自研 surya,MinerU 用 PaddleOCR。Marker 元数据里直接输出每页 text_extraction_method: "pdftext",即逐页记录用的是文本层还是 OCR。
  2. 版面分析:检测 19 类区域(标题/段落/表格/图/页眉页脚/脚注标记……,S1 Table S6)。OmniDocBench 证明版面检测是整条管线的天花板:DocLayout-YOLO(19.6M 参数,合成数据预训练)mAP 47.38,显著高于 LayoutLMv3(28.84),"This superiority is a key factor in MinerU's integration of DocLayout-YOLO"。
  3. 专项识别:表格(RapidTable/TableFormer/TEDS 优化)、公式(UniMERNet/texify,CDM 评估)、行内公式与正文的拼接。
  4. 阅读顺序与装配:跨页段落合并、页眉页脚剔除、脚注归属。
  5. (可选)LLM 后处理:Marker --use_llm 用 LLM 做跨页表格合并、行内公式、表单取值;"It can use any gemini or ollama model."

3.2 端到端 VLM

直接图进 Markdown 出。专家模型(Nougat、GOT-OCR2.0)小而快,通用模型(GPT-4o、Qwen2-VL-72B)靠大数据泛化。S1 的训练分布假说:"This is largely due to their broader training data, enabling better handling of long-tail scenarios compared to models trained on narrow domains."

3.3 原生格式的"降维"路线(DOCX / EPUB / HTML)

3.4 评估方法(S1,这是本领域方法学贡献最大的部分)

四、数据与证据

4.1 OmniDocBench v1 端到端总分(Overall Edit Distance ↓,EN/ZH,S1 Table 2)

方法类型文本公式CDM↑表格TEDS↑阅读总分
MinerU v0.9.3管线0.061/0.21557.3/42.978.6/62.10.079/0.2920.150/0.357
Mathpix(商业)管线0.105/0.38462.7/62.177.0/67.10.108/0.3040.191/0.365
Marker v1.2.3管线0.080/0.31517.6/11.767.6/49.20.114/0.3400.336/0.556
Qwen2-VL-72B通用VLM0.096/0.21882.2/61.276.8/76.40.119/0.1930.252/0.327
GPT-4o通用VLM0.144/0.40972.8/42.872.0/62.90.128/0.2510.233/0.399
GOT-OCR 2.0专家VLM0.189/0.31574.3/45.353.2/47.20.141/0.2800.287/0.411
Nougat专家VLM0.365/0.99815.1/16.839.9/0.00.382/0.9540.452/0.973

两个结构性事实:所有方法中文成绩都差于英文;Nougat 在中文页近乎全灭(0.973/表格 0.0)——训练分布窄的专家模型泛化风险有多大。

4.2 按页面类型的失败模式(S1 Table 3,文本编辑距离 ↓)

类型MinerUMarkerMathpixGPT-4oQwen2-VL-72B
学术论文0.0250.0590.0910.1460.085
财报0.0330.0890.2020.3480.047
手写笔记0.9840.6510.6340.6070.168
报纸0.1710.1920.6900.7510.676
幻灯片(PPT2PDF)0.1240.3400.2200.1630.061

4.3 表格的细分失败模式(S1 Table 7 / S1 / Table S1,TEDS)

4.4 公式识别的指标陷阱(S1 Table 9)

Mathpix CDM 86.6 但 ExpRate@CDM 只有 2.8%——"Although Mathpix shows high character-level precision, it occasionally omits punctuation, such as commas, leading to a lower overall correctness rate."一个逗号使"整式全对率"归零。这直接支撑 S6 的批评:精确匹配型指标会把微小差异放大成大失败。

4.5 阅读顺序与退化扫描件(S1 Table 4/5)

4.6 Marker 自家基准(S4,注意是厂商自评)

H100 单页:Marker 启发式分 95.67 / LLM 评审 4.24,优于 LlamaParse(84.24/3.98)、Mathpix(86.43/4.16)、Docling(86.71/3.70);吞吐宣称 batch 模式 H100 上 25 页/秒(另一处按 VRAM 推算 122 页/秒)。表格 FinTabNet:Marker 0.816 → use_llm 0.907 → 纯 Gemini 0.829(纯大模型并不比专用模型强,混合才最强)。

4.7 2026 年最新水位(S6)

五、失败模式全景(格式 × 环节)

证据等级标注:〔基准〕= S1/S4/S6 数据;〔官方〕= 工具作者自述;〔经验〕= 我方已有知识,本次来源未覆盖。

格式失败模式证据缓解
PDF内置文本层损坏→乱码/错字〔官方〕Marker:"even digital ones, have bad text in them"--force_ocr / strip_existing_ocr
PDF扫描件/图片型页面〔基准〕S7:"remain in scanned or image-based formats"OCR 引擎或 VLM 路线
PDF手写内容被判成图/识别为噪声〔基准〕MinerU Notes 0.984换 VLM 通用模型(Qwen2-VL 0.168)
PDF密排(报纸)超 VLM 分辨率/token〔基准〕VLM 0.65–0.90管线切块(MinerU 0.171)
PDF表格:无边框/合并格/含公式〔基准〕S1 Table S1use_llm(0.816→0.907);HTML 输出而非纯 MD
PDF表格/文字旋转〔基准〕旋转 TEDS 3.0;270° 文字全灭预处理旋转矫正〔经验〕
PDF多栏阅读顺序错误〔基准〕三栏 InternVL2 0.682管线工具 + 版面模型升级
PDF水印/模糊/彩底〔基准〕Marker 产生错字VLM 更稳;预处理去水印〔经验〕
PDF页眉页脚/图注归属无行业标准〔官方〕S1 专设 Ignore Handling上游清洗或下游忽略
PDF行内公式漏检/误判〔基准〕S7 + Marker 需要 force_ocr 才转 LaTeX--redo_inline_math + use_llm
PDF公式"少一个逗号"整式判错〔基准〕Mathpix ExpRate 2.8%用 CDM 类渲染比对做内部 QA
DOCX非正文流:文本框/SmartArt/批注/修订/OLE〔经验〕+ pandoc 已知行为预处理拍平;或改用 Docling 无损 JSON
DOCX手工排版伪标题(无样式层级)〔经验〕样式启发式 + LLM 后校〔经验〕
DOC/RTF旧二进制格式〔官方〕"requires LibreOffice"LibreOffice 前置转换,接受叠加失败
EPUBDRM 不可转;固定版式 EPUB;CSS 结构;弹窗脚注〔经验〕——本次精读来源均未展开,薄弱区先验文件类型;文本类 EPUB 基本无虞
HTMLboilerplate 剥离误伤正文/漏删导航〔经验〕readability 类算法固有多算法投票 + 正文密度校验
HTMLrowspan/colspan、布局表格降维丢结构〔经验〕+ Markdown 无 colspan 语法表格保留 HTML 片段输出
HTMLJS 渲染页面拿不到 DOM〔经验〕headless 浏览器预取
全格式BOM/编码检测失败〔官方〕Docling 文档显式 encoding 选项
全格式解析器成为安全攻击面(路径/URI/注入)〔官方〕MarkItDown Security Considerations最小 API 面(convert_local 等)、输入消毒
评估基准饱和 + 单一 GT 精确匹配惩罚语义等价〔基准〕S6 实例 TEDS 0.38自建分层数字集;语义级评审

六、结论

  1. 没有"最好的转换器",只有"按文档类型路由的管线"。OmniDocBench 的类型×方法矩阵本身就是选型表:学术论文/财报→MinerU 或 Marker(+LLM);手写/退化件→通用 VLM;密排报纸→管线;幻灯片→Qwen2-VL 类或专用 PPT 后端。
  2. 数字 PDF 的文本层不可信任是工程常识的起点:即使有文本层,坏字体映射也会产出乱码,force_ocr 是比换工具更快的第一响应。
  3. 混合模式(专用模型 + LLM 后处理)是当前表格/公式质量的最优解,且纯 VLM 并不占优(纯 Gemini 0.829 < Marker 0.816→0.907 的跃升主要来自管线底座)。
  4. 中间表示 > 最终格式:Docling 的 DoclingDocument、Marker 的 JSON/chunks、pandoc 的 AST 都在传达同一架构判断——Markdown 是多个导出视图之一,无损结构留着,下游才能重渲染、纠错、做 RAG 分块。
  5. 给 LLM 消费的转换应以"语义正确"为验收标准(表格对齐、内容不丢、公式可渲染),而不是逐字符匹配原版式——这也是 S6 对下一代表单测的预言。

七、局限

八、对我的启发

  1. 给自己的文档/知识管线加"文档路由"前置层:先判 born-digital PDF / 扫描 PDF / DOCX / EPUB / HTML,再分发到不同转换器。这一层的成本远低于在单一工具里硬调,且路由规则可直接抄 S1 的类型×方法矩阵。
  2. 建立"乱码→force_ocr→换 VLM"的标准响应序列,把 Marker README 的 Troubleshooting 当运维手册用:garbled text→--force_ocr;复杂表格→--use_llm;OOM→降 worker 数。
  3. Markdown 表达力天花板要提前设计绕过:合并单元格表格、脚注、复杂公式,宁可输出内嵌 HTML/LaTeX 片段,不要硬降维成破损的纯 Markdown——TEDS 评估本身就把表全转 HTML 再算,工具界已默认此路。
  4. 评估自建管线时分指标验收(文本 NED / 表格 TEDS / 公式 CDM / 阅读顺序),并且每类指标配自己真实文档的小回归集——外部基准在 94%+ 饱和后对你关心的长尾(合同、表单、财报页)已经不再有区分度(S6 的核心警告)。
  5. 把解析器当不可信输入处理:MarkItDown 的安全段落(限制 URI scheme、私网地址、用最窄的 convert API)适用于所有转换工具;文档内容本身也是 prompt injection 载体,解析产物流入 LLM 前应与网页内容同等消毒〔经验,与 S5 官方建议同向〕。
  6. 与已有知识网络衔接:本主题与既有笔记《Pandoc与通用文档转换》(2026-10-31-knowledge-p5j2vm4l-1)互补——pandoc 负责"语义清楚的格式"(DOCX/EPUB/HTML→AST→MD),本主题的管线工具负责"视觉重建的格式"(PDF);RAG 场景下(另一篇 RAG 评估笔记)转换质量直接决定召回上限,表格/公式的损坏是检索失败的隐性来源。

附:检索记录

← 资料库今日播报 →