Docling 把 PDF、Word、PPT、Excel 转成结构清楚的 Markdown / JSON,表格与阅读顺序尽量不丢。

做 RAG 的人都知道,脏数据比模型差更致命:PDF 转出来表格变成一堆错位的字符,标题与正文分不开,结果检索永远召不回正确段落。Docling 就是专门解这个问题的:它不只做 OCR,而是识别文档结构(标题、段落、表格、列表、阅读顺序),再输出结构化结果。项目最初来自 IBM Research,现在已是一个独立开源项目。

基本信息

项目内容
项目名称Docling(docling-project/docling)
编程语言Python
开源许可证MIT
GitHub 地址https://github.com/docling-project/docling
官网或 Demohttps://docling-project.github.io/docling/

核心能力

多格式统一解析。 支持 PDF、DOCX、PPTX、XLSX、HTML、图片、AsciiDoc 等,输出统一的文档对象,再导出 Markdown 或 JSON。一套代码处理多种源文件,不用为每种格式写不同脚本。

保留表格结构。 表格是 RAG 最大的黑洞。Docling 会把表格识别为表格对象并尽可能保留行列关系,导出 Markdown 时用表格语法而不是一串空格。对财报、参数表、对比表这类文档很关键。

识别阅读顺序。 双栏论文、带侧边标注的报告,简单抽取会把左右栏文字交错。Docling 会判断阅读顺序,输出符合人阅读习惯的段落序列。

版面与元素标注。 输出里会标出哪些是标题、哪些是正文、哪些是图注。你可以据此只取正文,或按标题层级切 chunk,做出来的知识库质量完全不同。

纯本地跑。 默认不依赖外部云服务,模型可本地加载。对企业内部文档、不能上传的材料,这一点比“效果好但必须传云”的方案重要。

使用上手

  1. 建一个干净环境(建议用 venv 或 conda),pip install docling。
  2. 命令行先跑一个文件:docling 你的文件.pdf --to md --output ./out。
  3. 打开输出的 md,重点看三件事:表格是否完整、标题层级对不对、段落有没有错序。
  4. 批量处理:把文件放一个目录,写个循环调用 CLI,或直接用 Python API 批量遍历。
  5. 要接 RAG,就改用 JSON 输出,按标题层级切 chunk,不要把整篇当一个 chunk。
  6. 扫描件(纯图片 PDF)效果依赖 OCR 模型,先小量试再全量跑。
  7. 处理敏感文档时确认模型是本地加载,别误开了云端解析。

优点与不足

优点是结构识别比纯文本抽取高一个档次,表格与阅读顺序是差异点;MIT 许可,商用友好;纯本地可跑,适合内部文档;输出既有 Markdown 也有 JSON,接下游方便。不足是首次安装依赖较重(需要下载模型),在旧机器上可能报依赖冲突;复杂排版(嵌套表格、公式、手写体)仍会出错,需要人工抽检;处理速度比简单抽取慢,大批量需要排队跑;相比商业 OCR 服务,中文混排场景的准确度仍需实测。

适合谁

适合做企业知识库、文档问答的团队;适合要把历史 PDF 资料转成可检索数据的分析师;适合对数据不出内网有硬性要求的机构。不适合只需要“把几页 PDF 读一下”的偶尔使用场景。

下载与访问

仓库:https://github.com/docling-project/docling
文档:https://docling-project.github.io/docling/
安装:pip install docling

许可证与部署

项目说明
源码部署pip install docling,或 git clone 后按文档安装
容器部署官方文档提供镜像用法,以文档为准
许可证MIT,允许商用与修改
星标以 GitHub 为准(公开数据约 7 万,仅作参考)

首次运行会下载模型,请预留磁盘空间与网络;扫描件的识别效果需自行实测。

本文属于「项目」分类的 AI 资源专栏,更多评测见分类页。