ARTICLE · 1047331
PDF 转完表格就乱?用 Docling 给 AI 整理一份靠谱的资料

把产品手册丢进知识库,问一个价格,AI 却把两列数字串在了一起。
你以为是提示词没写好,打开解析结果才发现:表头丢了,跨页内容接错了,图片只剩一个占位符。原文件里明明写得很清楚,到了模型面前已经变了样。
做文档问答,值得先检查的就是这一步:模型拿到的内容,还保留着原文的结构吗?
今天的开源项目 Docling,做的是文档解析与结构化。它由 IBM Research Zurich 团队发起,目前是 LF AI & Data Foundation 项目,可以把 PDF、Word、PPT 等文档转换成统一的文档对象,再导出 Markdown、JSON 等格式。
转出文字,只是第一步
普通文本提取适合处理结构简单的文件。遇到双栏论文、扫描件、带合并单元格的表格,光把字拿出来,可能还不够。
Docling 提供版面分析、阅读顺序、表格结构和 OCR 等能力,目标是把标题、段落、表格和图片组织起来。具体效果仍取决于文档、模型和配置,需要拿自己的文件验收。

从多种文档到统一结构,再导出或接入 AI 应用。
这里有个容易混淆的词:“无损 JSON”不等于“原 PDF 识别零错误”。
JSON 保留的是解析后文档模型里的结构和元信息;解析时读错的数字,不会因为存成 JSON 就自动变对。Markdown 更适合阅读与预览,但不能表达文档模型里的全部信息。两份都留着,后面排错会方便很多。
先拿一份三页文档试试
第一次不建议把整盘文件一起拖进去。先找一份有正文、表格、插图的短 PDF,记下三个核对点:一段双栏文字、一张关键表格、一幅带图注的图片。
准备 Python 3.10 或更新版本,建议新建虚拟环境。本文安装示例固定为核验时的 2.129.0:
python -m venv .venv# macOS / Linuxsource .venv/bin/activate# Windows PowerShell 使用:# .venv\Scripts\Activate.ps1python -m pip install "docling==2.129.0"首次处理可能下载模型和依赖资源,需要网络、磁盘空间和等待时间。本地运行不代表第一次启动就能离线;需要离线部署时,先准备好对应模型,再按官方文档配置模型目录。
把文件命名为 sample.pdf,与下面脚本放在同一目录。保存为 convert_pdf.py:
from pathlib importPathfrom docling.document_converter import(DocumentConverter,PdfFormatOption,)from docling.datamodel.base_models importInputFormatfrom docling.datamodel.pipeline_options import(PdfPipelineOptions,)from docling_core.types.doc importImageRefModesource =Path("sample.pdf")output = Path("output")output.mkdir(exist_ok=True)options = PdfPipelineOptions()options.generate_picture_images = Trueoptions.images_scale = 2.0converter = DocumentConverter( format_options={ InputFormat.PDF: PdfFormatOption( pipeline_options=options, ), },)result = converter.convert(source)result.document.save_as_markdown( output / "sample.md", image_mode=ImageRefMode.REFERENCED,)result.document.save_as_json( output / "sample.json", image_mode=ImageRefMode.REFERENCED,)print("导出完成,请同时检查 Markdown、JSON 和图片目录")运行:
python convert_pdf.py代码按官方导出示例整理,本轮做了源码和语法核对,未运行模型转换。generate_picture_images 保留识别出的图片元素,REFERENCED 让 Markdown 引用外部图片文件。发给别人时要连同生成的图片目录一起带走,不能只拷贝一个 .md。
有文件生成,不代表转换过关
打开原 PDF 和输出结果,把前面标记的三个位置对着看:
如果扫描页没有文字,先查 OCR 配置和语言支持;图片没显示,检查是否开启图片生成,以及相对路径是否仍有效。表格有文件却错列,问题可能在识别阶段,改 Markdown 样式解决不了。
旧教程里会出现特定的默认 OCR 引擎和模型目录,不宜直接照搬。当前源码使用自动选择 OCR 的配置;需要指定引擎时,再按当前文档设置。
图片上的文字被识别出来,也不代表系统已经理解了整张统计图。 “提取图”“读图上的字”“解释图的含义”是不同任务,复杂图表可能还需要额外处理。
下一步,才是接入知识库
这条链可以拆开看:
原始文档 → Docling 解析 → 检查与切块 → 建立索引 → 检索相关片段 → 模型回答Docling 有 LangChain、LlamaIndex 等集成入口,但接上框架也不等于问答质量自动过关。建议先用几个能在原文定位答案的问题测试:检索命中了哪段,引用能不能回到原文,回答有没有漏掉限制条件。
如果后面的问答环节需要接入 Claude、GPT 等模型,可以了解 RouteFast(https://routefast.ai/)的 API 接入服务。文档解析和模型回答分开配置,也方便分别检查问题出在哪一层。
想补 RAG、Embedding、检索和评估,云栈的《大模型开发与微调全栈实战》(yunpan.plus/t/615)有对应章节。先按目录选需要的部分,资料按页面算力条件兑换。
你在其他教程里看到的网页上传界面,通常属于 Docling Serve,它负责把解析能力提供成服务。第一次练习先跑通库和脚本,再考虑服务部署,排错范围会小一些。
把转换过程留成一个小项目
保留原文件、输出目录、版本、配置和失败样本,再做一张验收表。这比只展示“成功生成 Markdown”,更能说明你真正理解了文档处理。
Docling 代码采用 MIT 许可,使用到的模型仍要分别查看对应许可。模型、格式和文件质量都会影响结果,不必照着别人的截图承诺速度或准确率。
你处理 PDF 最常卡在哪:扫描文字、跨页表格,还是转出来的阅读顺序?如果已经做过知识库,也可以说说最难排查的是哪一层。
项目与学习入口
开源项目: github.com/docling-project/docling官方文档: docling-project.github.io/docling云栈课程: https://yunpan.plus/t/615