news 2026/8/30 11:41:37

文档解析一站式:用 Docling 把 PDF、Word、HTML 变成 AI 能直接读的结构化数据

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
文档解析一站式:用 Docling 把 PDF、Word、HTML 变成 AI 能直接读的结构化数据

文档解析一站式:用 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的结构化表示,右侧是文档原文,每个文本项都带有titleparagraphsection_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),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/30 11:40:30

【Nginx学习】7步轻松编译安装Nginx,你真的准备好了吗?

🔥关注墨瑾轩,带你探索编程的奥秘!🚀编程之旅更有趣� 7步轻松编译安装Nginx,你真的准备好了吗? 嘿,小伙伴们!今天我们要聊的是如何从源码编译安装Nginx。这不仅是一个技术活,更是一次对耐心和细心的考验。但别担心,跟着我一步步来,你会发现这其实并不难。让我们…

作者头像 李华
网站建设 2026/8/30 11:38:01

学习Transformer前必懂的核心概念:位置编码、注意力与QKV

学 Transformer 的过程中,真正劝退人的往往不是 Transformer 本身的代码量,而是背后的前置概念没有先理清。很多人一上来就读 MultiHeadAttention 的源码,看到 QKV 三个线性层就发懵,问题通常不出在读代码的耐心上,而是…

作者头像 李华
网站建设 2026/8/30 11:37:28

Tutti VM:多智能体协作的环境隔离与实战指南

多智能体是今年绕不开的技术热词,但很多人一开始尝试多智能体项目,就被环境问题卡住了:多个 Agent 之间怎么隔离依赖、怎么管理不同版本的 Python 和模型配置、多个智能体同时跑的时候怎么避免互相干扰。这些问题的答案,往往不在 …

作者头像 李华
网站建设 2026/8/30 11:36:59

10步玩转Guava RangeMap:对称加密 vs 非对称加密,你选对了吗?

🔥关注墨瑾轩,带你探索编程的奥秘!🚀 🔥超萌技术攻略,轻松晋级编程高手🚀 🔥技术宝库已备好,就等你来挖掘🚀 🔥订阅墨瑾轩,智趣学习不孤单🚀 🔥即刻启航,编程之旅更有趣🚀 导读: 年龄权限、金额折扣这类区间映射需求,用传统 Map 只能手动遍历,代码…

作者头像 李华
网站建设 2026/8/30 11:35:57

使用CMake与VS2019编译DCMTK 3.6.8 SDK:医学影像处理开发环境搭建指南

简介:本资源是面向医学影像软件开发者与DICOM技术实践者的DCMTK SDK编译成品包,专为解决VS2019环境下DCMTK3.6.8版本在x64平台编译门槛高、配置复杂等实际问题而提供。资源包含完整编译产出的debug与release双模式SDK,涵盖头文件(…

作者头像 李华