Docling
把 PDF、Word、PPT 解析成结构化内容,为 RAG 准备干净输入。
手上有一堆 PDF / Word / PPT 要喂给 RAG 的人。解析质量直接决定检索效果,这一步偷懒,后面怎么调都救不回来。
Docling 由 IBM 开源,做的是文档解析这件脏活:把 PDF、DOCX、PPTX、XLSX、HTML、图片等格式统一转成结构化的 DoclingDocument,再导出成 Markdown 或 JSON。它不只是抽文字,而是做版面理解——哪块是标题、哪块是正文、阅读顺序如何、表格的单元格边界在哪、图注对应哪张图。
表格处理是它的强项。PDF 里的表格一直是解析重灾区,用普通文本抽取会变成一堆错位的数字;Docling 用 TableFormer 模型还原表格结构,能导出成 Markdown 表格或 HTML,可以直接进 RAG 或数据库。这对财务报表、产品参数表这类内容几乎是决定性的差别。
它还支持扫描件 OCR(接 EasyOCR / Tesseract / RapidOCR)、公式与代码识别,以及用视觉语言模型给图片生成描述(这样图片内容也能被检索到)。生态上和 LangChain、LlamaIndex 都有现成集成,几行代码就能接进你的 RAG 链路。
性能方面要有心理准备。开启表格结构和 OCR 后,一份几十页的 PDF 在 CPU 上可能要跑一两分钟;批量处理建议开 GPU,或者先把任务队列化。首次运行会自动下载模型权重(几百 MB 到 1GB 以上),离线环境要提前准备好。
能拿它做什么
- RAG 前置:把产品手册、合同、论文转成干净的 Markdown 再切片
- 表格入库:从年报、报价单里抽表格,直接写进数据库
- 文档批量重写:把旧资料转成结构化文本,交给 LLM 改写
- 知识库迁移:历史 Word/PDF 资料一次性结构化
怎么用起来
- pip install docling(Python 3.9+,建议用独立虚拟环境)
- 命令行转换:docling convert report.pdf --to md -o ./out
- 代码调用:from docling.document_converter import DocumentConverter; result = DocumentConverter().convert('a.pdf'); print(result.document.export_to_markdown())
- 中文扫描件:装 rapidocr-onnxruntime,并在 pipeline 里开启 OCR + 指定中文语言
官网在 github.com/docling-project/docling ,源码在 GitHub 仓库 ↗。
坑在哪
扫描件必须有 OCR 引擎,而且中文识别质量取决于选的 OCR 后端和语言包,默认的英文配置处理中文 PDF 会一片乱码。合并单元格、跨页表格仍然会出错,重要数据一定要抽检。模型权重首次运行要联网下载,离线部署得提前缓存。另外它迭代较快,输出 JSON 的结构在版本之间可能变动,下游解析逻辑记得跟着锁版本。
文档类产品的地基,比自己写 PDF 解析省几周。