如何快速把 PDF、Word、HTML 变成 AI 能读懂的格式?docling 文档解析完整指南
【免费下载链接】doclingGet your documents ready for gen AI项目地址: https://gitcode.com/GitHub_Trending/do/docling
做 RAG 或接大模型时,最头疼的往往不是模型本身,而是"喂进去的料":一份 PDF 里混杂着两栏排版、跨页表格、页眉页脚和插图,直接抽取出来的文本经常顺序错乱、结构尽失。docling 文档解析正是为解决这个问题而生的开源工具——它能把 PDF、DOCX、HTML、LaTeX、EPUB 甚至音频视频等几十种格式,统一转换成带完整结构信息的DoclingDocument,再一键导出为 Markdown、HTML、JSON 等格式,让生成式 AI 直接"消化"文档内容。
它解决什么问题:告别"每种格式一套工具"
传统做法是遇到 PDF 用一个库、遇到 Word 用另一个库、遇到扫描件再找一个 OCR 工具,每种方案输出的文本结构还各不相同,下游拼接成本很高。
docling 的思路是把问题拆成两层:
- 前端:格式特定后端。每种文件格式(PDF、DOCX、邮件、电子表格……)都有对应的解析器,负责把原始文件读成中间数据。你可以在 支持格式清单 里看到完整的输入输出矩阵,覆盖办公文档、标记语言、图片、音视频、领域 XML(专利、学术论文、财报)等场景。
- 后端:统一管道 + 统一文档模型。无论来源是什么格式,最终都会落到同一个
DoclingDocument结构上,导出、分块、序列化都只面向这一种对象编程。
这种"一次理解、处处导出"的设计,意味着你换输出格式时不需要重跑解析,也不需要为每种输入格式单独写后处理逻辑。
能处理哪些输入:从学术论文到邮件、视频
简单梳理一下能力面(完整版见 docs/usage/supported_formats.md):
| 输入类别 | 典型格式 | 说明 |
|---|---|---|
| 办公文档 | DOCX / XLSX / PPTX,以及旧的 DOC/XLS/PPT | 旧格式需要 LibreOffice 参与 |
| 标记与排版 | PDF、Markdown、HTML、LaTeX、AsciiDoc、EPUB | 覆盖从网页到科学论文写作 |
| 数据文件 | CSV、JSON(Docling 自身的无损格式) | 表格数据可直接进结构 |
| 图像与媒体 | PNG / JPEG / TIFF / WEBP,WAV / MP3,MP4 等视频 | 图像走 OCR,音视频走 ASR 语音转写 |
| 领域 XML | JATS(学术论文)、USPTO(专利)、XBRL(财报)、DocLang | 按各自 schema 精确解析 |
| 其他 | 邮件(EML/MSG)、Apple Pages、WebVTT 字幕、Box Notes | 长尾格式也有对应后端 |
输出侧同样灵活:Markdown、HTML、纯文本、无损 JSON、WebVTT 字幕、DocTags,以及面向 RAG 的 JSONL 分块输出。也就是说,同一个文档可以同时服务于"人类阅读"和"机器检索"两个目的。
第一次转换:两条命令出 Markdown
安装只需要一条命令(需要 Python 3.10+,支持 macOS / Linux / Windows):
pip install docling不想写代码时,命令行就能干活——把一个 PDF 地址丢给它,当前目录会生成结构化的.md文件:
docling --to md 报告.pdf想写代码也极简,核心就是"转换 + 导出"两行:
from docling.document_converter import DocumentConverter converter = DocumentConverter() doc = converter.convert("报告.pdf").document print(doc.export_to_markdown())这里convert()返回的doc就是统一的DoclingDocument,除了export_to_markdown()之外,你还能拿到export_to_html()、export_to_dict()等方法,以及按章节分块、序列化等能力。
深入理解:docling 是怎么"读懂"一份 PDF 的
对 docling 来说,PDF 不是文本流,而是一张需要推理的版面图。一次标准 PDF 转换大致经历这几个阶段:
- 版面分析:先跑版面检测模型,识别出页面上哪些区域是正文、标题、表格、图片、公式、代码块——这一步决定了后续每个元素"是什么"。
- 阅读顺序重建:对两栏、三栏或图文混排的页面,把文本行重新排成人类自然的阅读顺序,而不是按坐标从上到下机械拼接。
- 表格结构还原:识别出单元格、行列归属和表头,输出的是带结构的表格对象,而不是一堆挤在一起的字符串。
- OCR 兜底:扫描件或图片型页面自动走 OCR(支持 Tesseract、EasyOCR、RapidOCR 等多种引擎),把"图"变回"文"。
- 增强步骤(可选):代码块语言识别、公式转 LaTeX、图片分类与描述等"增强"能力默认关闭,按需开启即可,避免不必要的耗时。
这些开关都集中在PdfPipelineOptions上,按格式分别配置。更多调节方式可以参考 使用文档。
看懂 DoclingDocument:文档的"统一护照"
转换产物DoclingDocument是整个体系的关键。它用 Pydantic 定义了一组通用字段:
texts/tables/pictures/key_value_items:按内容类型分桶存放各类元素;body与furniture:正文是一棵树,页眉页脚等"家具"单独一棵树,天然区分主体内容和装饰元素;groups:列表、章节这类容器,用来组织层级;- 每个元素还带着版面坐标和来源信息(它来自哪一页、哪个区域)。
阅读顺序就编码在body树的孩子节点排列里。理解这一点后你会发现:docling 导出的 Markdown 之所以层级清晰,是因为它不是"把文本按顺序粘出来",而是"把一棵结构树渲染成文本"。文档模型细节可查 docling_document 概念说明。
接入 AI 工作流:分块、检索、多模态增强
DoclingDocument设计时就考虑了下游消费:
- RAG 分块:内置分块器能按文档层级切出带上下文的块,直接落成 JSONL 向量入库;官方示例目录 docs/examples/ 里提供了 LangChain、LlamaIndex、Haystack 以及 Qdrant、Milvus、Weaviate 等向量库的接入示例,可对照挑选。
- 框架集成:LangChain、LlamaIndex、CrewAI、Haystack 等都有现成适配,
docling产出的文档对象可以直接当作这些框架里的"文档"使用。 - 多模态理解:docling 支持接入视觉语言模型(如 GraniteDocling),对图片做内容描述、对公式和代码做理解增强,让"文档里的图"也能参与问答。相关用法见 enrichments 文档。
- 服务化与 Agent 接入:可以以 API 服务(docling-serve)形式部署供其他系统调用,也提供 MCP 服务器让任意 Agent 直接"问"文档内容,部署细节参考 api_server 文档。
生产级使用:本地化运行与隐私数据
一个容易被低估的优点:docling 可以在完全本地环境运行,模型权重下载到本机后,解析全程不出内网。这对处理合同、病历、专利等敏感数据的场景非常关键——air-gapped(物理隔离)环境也能跑,不需要把文档发给任何云端服务。
几条实用建议:
- 扫描件和复杂版面开启 OCR 与表格检测,纯文本 PDF 可以走轻量路径,省时间;
- 增强类步骤(图片描述、公式理解等)默认关闭,只在确实需要时开启;
- 需要高并发时用 API 服务形态部署,客户端通过 HTTP 提交任务,而不是每个进程各自加载模型;
- 想核对解析质量时,导出无损 JSON 可以逐项对照原始结构,定位问题元素。
小结
docling 把"多格式文档 → 统一结构化表示 → 多格式导出"这条链路做成了开箱即用的工具:格式后端负责"读懂来源",DoclingDocument负责"留住结构",管道与增强步骤负责"按需深入"。对刚接触文档智能的读者,建议先从 CLI 一行命令开始体验,再逐步深入管道配置与 RAG 集成。官方 文档站点目录 与 示例目录 是后续上手的最佳入口——文档解析这一环做扎实了,后面的生成式 AI 应用才真正立得住。
【免费下载链接】doclingGet your documents ready for gen AI项目地址: https://gitcode.com/GitHub_Trending/do/docling
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考