文档解析一站式:用 Docling 把 PDF、Word、HTML 变成 AI 能直接读的结构化数据
【免费下载链接】doclingGet your documents ready for gen AI项目地址: https://gitcode.com/GitHub_Trending/do/docling
Docling 是一个开源文档解析工具,把 PDF、DOCX、HTML、XLSX 等二十多种格式统一解析成结构化文档对象,再导出为 Markdown、JSON 等格式,适合需要批量处理文档、搭建 RAG 检索或 AI 应用的开发者。如果每种格式的文档都要换一个工具处理,你最后得维护几套代码?Docling 的思路是把这件事收敛到一条流水线里:所有输入都先变成同一个DoclingDocument对象,下游只跟这个对象打交道。
能力清单:Docling 一次能做什么
先看它的能力边界,再决定要不要上手:
- 输入:PDF、Office 全家桶(DOCX/XLSX/PPTX 及旧版 DOC/XLS/PPT)、ODT/ODS/ODP、HTML、EPUB、LaTeX、Markdown、CSV、图片(PNG/JPEG/TIFF)、音频视频(需 ASR 扩展)、邮件(EML/MSG)等,完整列表见 受支持格式说明
- PDF 深度理解:版面分析、阅读顺序、表格结构提取、公式识别(转 LaTeX)、代码块识别、图像分类
- 输出:Markdown、HTML、无损 JSON、纯文本、WebVTT、DocTags,以及面向 RAG 的切块输出(JSONL)
- 运行方式:本地 CLI、Python API、视觉语言模型(VLM)管线,支持 Mac/Linux/Windows
图中从左到右是完整链路:多格式文档进入 Docling 后统一为{DOC}文档对象,再分别流向 JSON/Markdown 导出、切块与 LangChain/LlamaIndex 集成,以及你自己的生成式 AI 应用。
30 秒安装,一条命令完成 PDF 转 Markdown
安装只要一条命令,要求 Python 3.10 及以上:
pip install docling装完直接进命令行,把一份 PDF 转成结构化 Markdown:
# 输出到当前目录的 .md 文件 docling report.pdf想看看全部参数,运行docling --help,或者查 CLI 参考。对只想"把文件转一下"的场景,这一步就够用了。
三行 Python 示例:第一次文档解析
需要二次开发时,用 Python API。最小的可用示例如下:
from docling.document_converter import DocumentConverter source = "report.pdf" # 本地路径或 URL 都可以 result = DocumentConverter().convert(source) print(result.document.export_to_markdown())result.document就是统一的DoclingDocument对象。除了export_to_markdown(),它还提供export_to_html()、export_to_dict()等方法,JSON 导出是无损的,可以存下来供后续流程反复使用。详细概念见 DoclingDocument 说明。
图中左侧是DoclingDocument的结构化表示,右侧是文档原文,每个文本项都带有title、paragraph、section_header等语义标签——这正是导出 Markdown 时标题层级能保持正确的原因。
两个进阶开关:表格结构化提取与扫描版 OCR
默认管线已经启用了 OCR 和表格结构识别,但对不同文档你通常要显式控制这两项:
from docling.datamodel.base_models import InputFormat from docling.datamodel.pipeline_options import PdfPipelineOptions from docling.document_converter import DocumentConverter, PdfFormatOption options = PdfPipelineOptions( do_ocr=True, # 启用 OCR,扫描版 PDF 必需 do_table_structure=True, # 启用表格结构提取,还原行列关系 ) converter = DocumentConverter( format_options={InputFormat.PDF: PdfFormatOption(pipeline_options=options)} ) result = converter.convert("scanned_report.pdf")表格结构化提取把页面里的表格还原成带行列关系的结构,导出 Markdown 时就是规整的表格,而不是乱序文字。想进一步调整单元格匹配行为,可以给options.table_structure_options配置do_cell_matching等参数,完整配置示例见 custom_convert.py。
如果文档本身就很复杂(多栏混排、密集图表),可以换用视觉语言模型管线,让 VLM 端到端读图:
from docling.datamodel.base_models import InputFormat from docling.document_converter import DocumentConverter, PdfFormatOption from docling.pipeline.vlm_pipeline import VlmPipeline converter = DocumentConverter( format_options={ InputFormat.PDF: PdfFormatOption(pipeline_cls=VlmPipeline) # 改用 VLM 管线 } ) result = converter.convert("complex_layout.pdf")可用的模型与框架(Transformers、MLX)见 视觉模型指南。
避坑提示:OCR 和公式、代码等增强功能每多开一项,处理时间都会明显增加。官方建议按需启用,只开你真正用到的功能。
从解析结果到 RAG:导出、切块与框架集成
解析不是终点。DoclingDocument可以直接喂给主流 AI 框架:
- LangChain / LlamaIndex / Haystack / Crew AI都有原生集成,入口见 集成列表
- RAG 切块:CLI 支持
--chunks-type直接输出 JSONL 切块,Python 里也有 HybridChunker、HierarchicalChunker 两种策略,示例见 hybrid_chunking.ipynb - JSON 序列化:无损导出后可以落库,下次处理直接从 JSON 恢复,不必重跑管线
如果文档量大,还可以把 Docling 跑成服务(API server,即 docling-serve),或通过 MCP server 接入 Agent,部署方式见 API 服务文档。
避坑:四个高频问题
- 旧版 .doc/.xls 打不开:LibreOffice 格式的旧二进制 Office 文件需要系统安装 LibreOffice 才能解析,新格式(DOCX 等)不需要
- OCR 速度远慢于纯文本提取:文字层可靠的 PDF 可以关掉
do_ocr,甚至用force_backend_text=True直接走 PDF 内嵌文本,跳过版面模型 - 生产环境要加超时保护:官方建议通过
document_timeout参数(如 90–120 秒)防止个别坏文档卡住整批任务 - 手写体、重度模糊扫描件:模型能力有边界,这类文档建议保留人工复核环节,置信度参考见 置信度评分概念
从一条docling report.pdf命令开始,跑通后再按上面两个进阶开关逐步加能力,是最省心的上手顺序。更多用法见 快速上手指南 和 示例目录。
【免费下载链接】doclingGet your documents ready for gen AI项目地址: https://gitcode.com/GitHub_Trending/do/docling
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考