夜雨聆风学习资料网

ARTICLE · 1112511

67.7K Star!别再手抠 PDF 了:docling 把合同、报表一键转成 AI 能读的 Markdown

67.7K Star!别再手抠 PDF 了:docling 把合同、报表一键转成 AI 能读的 Markdown

每月 301 万次 pip 下载,2 年 2 个月,6.7 万颗星。

docling 干的事一句话说得完:把 PDF、Word、PPT、Excel 这些人类格式,转成 AI 能直接吃的结构化数据。

它是什么

IBM Research 苏黎世团队开源、现在挂在 Linux 基金会 AI & Data 项目下的文档解析库,已经走到该基金的毕业阶段。MIT 许可证,Python 写的,2024 年 7 月建仓,最新版本 2.130.0 发布于 9 月 22 日。

一句话概括它的位置:它是文档进入 AI 流水线之前的"清洗层"——不负责回答问题,只负责把乱糟糟的版面变成干净的、带结构的文本。

能干什么

输入侧支持得有点离谱:PDF、Word、PPT、Excel、HTML、EPUB、Apple Pages、LaTeX、各种图片、音频、邮件,还有 XBRL 财报、JATS 论文、USPTO 专利这些垂直格式。

这份清单还在加。视频(MP4、AVI、MOV、MKV、WebM)现在也能解析,带语音转写和关键帧;ODF、XBRL、EPUB、Apple Pages、纯文本这几类,也都是后补进来的。

输出侧给三档:Markdown、HTML,以及它自己的无损格式。

三个能力值得单独拎出来:

扫描件 OCR。 纯图片的 PDF 也能读。

表格和公式。 复杂跨页表格的结构还原,是它跟普通 PDF 库拉开差距的地方。

图表理解。 柱状图、饼图、折线图能直接转成表格或代码。

怎么工作的

一条标准调用链:

from docling.document_converter import DocumentConverterconverter = DocumentConverter()result = converter.convert("report.pdf")print(result.document.export_to_markdown())

底层是"版面分析 → 阅读顺序 → 表格结构 → OCR → 输出"的流水线,重活交给模型,所以绕不开 torch。

命令行版本更省事:docling report.pdf 一条命令就出 Markdown。要接进现有系统,官方提供了 docling-serve 把它跑成一个 HTTP 服务,另外还单开了一个 MCP server 仓库——意思是它可以被当成 Agent 的一个工具直接调用。

它天生适合本地跑。 模型能下载到本地,读取本地文件和远程资源的两个开关默认都是关的——数据不出内网。

适合谁

要把合同、研报、发票、标书喂给 RAG 的人,这是它的主场。数据不能出内网的场景,本地推理是它和云端解析 API 的分水岭。要处理扫描件、复杂表格、多语言文档的团队也合适。

还有个容易被忽略的适用面:学术和法务。它内置了 JATS 论文、USPTO 专利、XBRL 财报这三种垂直格式的解析后端,这三个都不是通用 PDF 转换器能顺手覆盖的。

反过来不适合谁:只想从结构干净的 PDF 里抽个纯文本的,为这点事装 torch 太重,pypdf 就够了。

有没有坑

第一,这个库天然是攻击面。 2026 年 6 月 2 日一天发了 6 条安全公告——XXE、Zip Slip、路径穿越、SSRF、渲染时能跑 JavaScript,8 月 24 日又补了一条:解析 ODF 文档时能读你机器上的任意本地文件。

这 7 条现在都已经修完,修复版本分别是 2.74.0、2.91.0、2.94.0、2.120.3,当前版本全在覆盖范围内。但教训很直接:解析来路不明的文档,等于让别人的文件在你的机器上跑。 它们全都出在"读别人给的文档"这同一条路径上,最近一条距今才一个月。生产环境请锁死版本、跟着升级、把解析放进沙箱,并且保持那两个读取开关是关的。

第二,大文件会把内存吃干。 有一条 issue 从 2025 年 12 月挂到现在还是 open,标题就叫《Docling 把所有可用内存吃光然后被杀掉》,19 条讨论,官方只给了它一个"提问"标签,没进 bug 流程。几百页的 PDF,建议先切分再转。

第三,迭代快到要跟版本。 近三个月主分支 332 次提交,近一个月发了 8 个版本。好处是安全修复跟得上,代价是输出格式偶尔会变——写进产品管道得有回归测试。

第四,它做过一次仓库迁移。 老地址是 IBM 时代的 DS4SD/docling,现在是 docling-project/docling。旧文章和旧脚本里写的地址会跳转,把路径写死在配置里会踩。

顺带一个数字陷阱:这个仓库贡献者排第二的是个自动化机器人,占了 17.2% 的提交。看活跃度时得先把它剔掉,否则会把自动版本提交算成人的工作量。


项目地址:https://github.com/docling-project/docling[1]

这次的完整取证——7 条安全公告逐条核对、下载量实测、内存问题追踪——都会进我的知识库「GitHub项目集」。下回你要找能本地跑的文档解析工具,直接去库里翻,不用从头再搜一遍。

我是海冰,持续拆解 GitHub 上真正值得用的开源项目。 仓库天天有新东西,值得花时间的其实不多,我替你先把一遍。如果这篇帮你省了自己翻仓库的时间,欢迎点赞、在看、转发,我们下篇见。

引用链接

[1]https://github.com/docling-project/docling

相关学习资料