ARTICLE · 1342217
RAG 答非所问?Docling 把 PDF 变成结构数据!
做 RAG 的人都踩过这个坑:向量数据库上了,embedding 模型调了,rerank 也加了,结果召回还是一塌糊涂。排查一圈才发现,问题根本不在检索,而在最上游的文档解析。双栏论文被切成交叉混乱的段落,表格被拆成一行行没有表头的碎文本,页眉页脚混进正文,扫描件干脆一个字都吐不出来。你喂给大模型的是一锅乱炖,却指望它答得准,这不现实。PDF 这个格式天生是为打印设计的,文件里存的是字符坐标,而不是逻辑结构。想从中还原出标题层级、阅读顺序、表格关系,靠正则加 pdfminer 硬抠,纯属跟自己过不去。这个环节缺的从来不是又一个小工具,而是一套真正理解文档版式的解析管线。

它是什么:IBM 出品的文档解析全家桶
Docling 就是干这个的。它由 IBM Research 苏黎世实验室的 AI for knowledge 团队发起,现在托管在 Linux 基金会旗下的 LF AI & Data 基金会,MIT 协议,商用随便用。一句话概括:把 PDF、Word、PPT、Excel、HTML 这些格式统统吃进去,吐出一个统一的、带完整结构信息的文档表示,官方叫 DoclingDocument。这个对象里保留了标题层级、阅读顺序、表格结构、代码块、公式、图片分类等元信息,之后你可以一键导出成 Markdown、HTML 或者无损 JSON。对做 AI 应用的人来说,这就是连接人类文档和机器上下文的那座桥。项目还有一篇 arXiv 技术报告,编号 2408.09869,把底层模型和管线设计讲得明明白白,不是那种只会包 API 的黑盒玩具。
核心亮点:凭什么拿下近 7 万 Star
格式覆盖广到离谱。除了常规的 PDF、DOCX、PPTX、XLSX、HTML,还支持 EPUB 电子书、苹果的 Pages、Numbers、Keynote 三件套、ODF 全家桶、邮件格式 EML 和 MSG、LaTeX、常见图片,甚至 WAV、MP3 音频和 MP4 等视频文件,音视频走 ASR 转写,视频还会抽代表性关键帧。一个库顶过去五六个工具的组合。新版本连图表都能看懂,柱状图、饼图、折线图可以还原成表格或代码,还会附上详细的文字描述,对啃财报和研报的人非常友好。
PDF 理解是真硬核。版面分析、阅读顺序还原、表格结构识别都基于自家模型完成,代码块和数学公式能单独识别,扫描件有 OCR 兜底。官方还提供了 IBM 自家的视觉语言模型 GraniteDocling,只有 2.58 亿参数,对付版式复杂的文档可以切到 VLM 管线再提一档精度。
纯本地运行。数据不出本机,支持离线隔离环境。这对金融、医疗、政企场景是硬指标,很多在线解析服务在这一条上直接出局。
生态接得顺。LangChain、LlamaIndex、CrewAI、Haystack 都有现成集成,解析完直接进切块和索引环节。想做成服务,有官方的 docling-serve API server;想接 Agent,有 MCP server,路全都铺好了。
快速上手:三分钟跑通
需要 Python 3.10 以上,注意 2.70.0 版本之后已经放弃对 3.9 的支持。pip 一把梭:
pip install doclingmacOS、Linux、Windows 都能跑,x86 和 ARM 架构都行。最快的验证方式是用 CLI,直接把一篇 arXiv 论文转成 Markdown:
docling https://arxiv.org/pdf/2206.01062跑完当前目录就多出一个 .md 文件,里面是结构完整的文档内容。首次运行会下载模型文件,耐心等这一次,之后就都是本地推理了。想试 VLM 管线,加两个参数就行:
docling --pipeline vlm --vlm-model granite_docling https://arxiv.org/pdf/2206.01062Python 里用也不复杂,官方推荐的写法:
from docling.document_converter import DocumentConverter source = "https://arxiv.org/pdf/2408.09869" # 本地路径或 URL 都可以 converter = DocumentConverter() result = converter.convert(source) print(result.document.export_to_markdown())五行代码,本地文件和远程 URL 通吃。返回的 result.document 就是那个结构化的 DoclingDocument,想要 Markdown 就调 export_to_markdown,想进自家管线就导出无损 JSON 慢慢拆解,表格、图片、标题层级都在里面。

实战技巧:少踩几个坑
踩过几次坑之后,分享几条经验。批量处理时 DocumentConverter 实例一定要复用,模型加载开销不小,别每次 convert 都新建一个。表格密集的财报和论文,转换完先抽查 Markdown 里表格的完整性,要求高的场景直接导出 JSON,拿单元格坐标做后处理更稳。扫描件记得开 OCR,复杂版式可以上 GraniteDocling 的 VLM 管线,准确率肉眼可见地提升,代价是速度变慢,生产环境建议按文档类型做路由,简单文档走默认管线,难啃的再交给 VLM。XBRL 财报、JATS 医学文献、USPTO 专利这类行业 XML 文档它有专门支持,别自己造轮子。接 LangChain 的时候直接用官方集成切 chunk,文档结构信息能一直保留到切块阶段,比按字符硬切的效果好一截。
适合谁:对号入座再上车
如果你在做 RAG、企业知识库问答、文档智能处理,或者单纯被 PDF 解析折磨过,Docling 值得进你的工具箱。个人开发者拿它处理论文和电子书很顺手,企业团队看中的是本地部署能力和 MIT 协议的省心。不适合的场景也明说:只需要抽纯文本、对结构无所谓的轻量需求,用它有点杀鸡用牛刀;追求极致吞吐的海量日志清洗也不是它的主战场,它的价值在于理解版式,而不是暴力抽字。
写这篇文章时,它的 Star 已经冲到 69889,在文档解析这个细分赛道里是现象级的存在。项目地址 https://github.com/docling-project/docling ,文档和示例都写得很全。装一个,拿两篇自己手头最头疼的 PDF 跑一遍,好坏立刻见分晓。















































































