Docling 是什么
Docling 提供统一的文档转换入口:PDF、DOCX、PPTX、HTML 等多种格式都先转成内部的结构化文档对象,再导出为 Markdown 或其它形式。它解决的是流水线分支过多的问题——来源格式一杂,往往需要为每种格式写一套解析与清洗逻辑,而统一入口能让下游的切分与向量化只面对一种中间表示。对某个特定格式仍有更轻或更专的解析器时,也可以局部替换,不必全盘采用。
基本信息
| 输入格式 | PDF、DOCX、PPTX、HTML、图片等 |
|---|---|
| 输出 | 结构化文档对象,可导出 Markdown |
| 调用方式 | Python API(DocumentConverter)或命令行 |
| 定位 | 统一入口,减少多格式分支 |
| 搭配 | 特定格式仍可换用更轻量的专用解析器 |
典型使用场景
- 格式杂乱的语料库:一套代码处理多种来源格式
- 企业文档搬迁:把历史 Word 与 PPT 统一转成可切分的文本
- 流水线简化:下游只需要处理结构化中间表示,降低维护成本
- 批量转换前评估:先用少量样本比较转换耗时与产物质量
- 与专用解析器组合:纯 HTML 走轻量解析,复杂 PDF 走版面模型
转换示例
转换示例
from docling.document_converter import DocumentConverter
converter = DocumentConverter()
result = converter.convert('report.pdf')
md = result.document.export_to_markdown()
print(len(md)) # 先用长度判断是否解析成功
print(md[:300]) # 再抽检开头内容
open('report.md', 'w', encoding='utf-8').write(md)格式与产物处理
| 来源格式 | 转换重点 | 入库注意 |
|---|---|---|
| 版面与表格识别 | 复杂版面要抽检阅读顺序 | |
| DOCX | 标题层级与样式映射 | 样式未规范时层级会丢失 |
| PPTX | 幻灯片分页与文本块 | 页内文本顺序需人工确认 |
| HTML | 正文与导航区分 | 需去掉脚本与页脚噪声 |
统一入口的代价是依赖更重、启动更慢:批量任务前先在小样本上量转换耗时与内存占用,确认单机吞吐能覆盖语料规模,再决定是否上全量。