news 2026/8/30 13:14:42

docling 完全指南:3 行代码完成多格式文档解析与 Markdown 转换

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
docling 完全指南:3 行代码完成多格式文档解析与 Markdown 转换

docling 完全指南:3 行代码完成多格式文档解析与 Markdown 转换

【免费下载链接】doclingGet your documents ready for gen AI项目地址: https://gitcode.com/GitHub_Trending/do/docling

如果你正准备搭一套 RAG 系统,而语料里混着扫描版论文、Word 合同和 Excel 台账,第一件事大概就是把它们统一变成带结构的 Markdown。docling 做的就是这件事:它是一个支持多格式文档解析与文档转换的开源工具,把 PDF、DOCX、HTML 等输入统一读入同一个 DoclingDocument 数据模型,再按需导出为 Markdown、HTML 或无损 JSON。以下内容基于仓库内 README、docs 目录与源码整理,类名与参数均可在对应路径中找到。

3 行代码跑通第一次 docling 入门转换

安装很简单,pip install docling(需要 Python 3.10 及以上)。最小可运行示例如下:

from docling.document_converter import DocumentConverter converter = DocumentConverter() result = converter.convert("thesis_scan.pdf") print(result.document.export_to_markdown())

输出的是一段带标题层级、列表与表格结构的 Markdown 字符串,官方 README 里给出的样例输出以## Docling Technical Report[...]开头。不想写 Python 的话,终端里执行docling 文件名也能直接在当前目录生成 .md 文件。

格式支持速览:从 PDF 解析到音视频

完整清单见 docs/usage/supported_formats.md,这里按输入格式归纳:

输入格式常用输出典型场景
PDF(含扫描件)Markdown、JSON、HTML学术论文解析、扫描件 OCR
DOCX / PPTX / XLSXMarkdown、JSON办公报告摘要与入库
HTML、Markdown、AsciiDoc、LaTeXMarkdown、DocLang网页抓取内容、排版文档转换
PNG / JPEG / TIFF / WEBPMarkdown、JSON图片扫描件数字化
WAV / MP3、MP4 等音视频文本、WebVTT会议录音、视频字幕转写
USPTO / JATS / XBRL 等 XMLMarkdown、JSON专利、期刊、财报解析

输出侧除 Markdown 与 HTML 外,还有无损 JSON、Doctags 以及面向 RAG 的 Chunks(JSONL),也就是说分块这一步可以交给 docling 自己做。

工作原理:一套统一文档模型,几条可插拔管道

设计思路是“后端 + 管道”两层:每个格式有自己的后端(位于 docling/backend/)负责把原始文件读出来,而管道负责跑模型阶段。PDF 走 StandardPdfPipeline,依次完成布局分析、OCR、表格结构等步骤,且支持线程化流水线并行;Word、HTML 这类本身就有结构信息的格式走 SimplePipeline,直读即可。两条线的终点都是同一个 DoclingDocument,它用树状结构记录页面、段落、表格与图片,导出方法就挂在上面。文本条目还带有置信度,机制见 docs/concepts/confidence_scores.md。

docling 表格识别与 OCR 的关键开关一览表

PDF 相关格式的行为由PdfPipelineOptions控制,定义在 docling/datamodel/pipeline_options.py,几个最值得知道的开关:

参数作用何时开启
do_ocr对页面执行 OCR,默认 True扫描件必须开;纯数字 PDF 可关掉以省时
do_table_structure检测表格并重建行列结构,默认 True财报、论文表格类文档保持开启
do_formula_enrichment公式识别并转 LaTeX,默认 False解析含公式的学术论文时开启
do_code_enrichment面向代码块的感知处理,默认 False文档含大量代码或终端输出时开启
images_scale生成图片的缩放倍数,默认 1.0需要放大图表给下游视觉模型时调高

只针对 PDF 调整配置:

from docling.datamodel.base_models import InputFormat from docling.datamodel.pipeline_options import PdfPipelineOptions from docling.document_converter import DocumentConverter, PdfFormatOption pdf_opts = PdfPipelineOptions(do_ocr=True, do_formula_enrichment=True) converter = DocumentConverter( format_options={InputFormat.PDF: PdfFormatOption(pipeline_options=pdf_opts)} )

OCR 引擎与表格模型细节还可以继续调ocr_optionstable_structure_options两个子对象。

docling RAG 集成:接 LangChain 与 LlamaIndex

LangChain 侧有官方扩展 DoclingLoader,加载文档几行搞定:

from langchain_docling import DoclingLoader loader = DoclingLoader(file_path="thesis_scan.pdf") pages = loader.load()

LlamaIndex 侧拆成 Reader 与 Node Parser 两个组件,前者读文件,后者利用文档结构切出适合 embedding 的节点:

from llama_index.readers.docling import DoclingReader documents = DoclingReader().load_data(file_path="report.docx")

集成文档见 docs/integrations/langchain.md。除此之外,docling 自带 docling/chunking/ 分块模块,可以直接对 DoclingDocument 生成层级式分块,配合 JSONL 输出即可跳过下游框架的分块逻辑。仓库 examples 目录下的 rag_langchain.ipynb、rag_llamaindex.ipynb 给了完整可复现的 RAG 链路。

生产环境建议:本地化、敏感数据与批量重试

  • 全程本地运行:模型权重下载到本地,推理在自有 CPU/GPU 上完成,适合处理敏感材料;离线环境可把预置权重目录配到artifacts_path,避免运行时联网。
  • 批量容错:用convert_all(paths, raises_on_error=False),单个文件失败不会中断整批,失败结果里带ConversionResult.status与错误明细,方便记录后重试。
  • 资源护栏:convertconvert_all都支持max_num_pagesmax_file_size,防止个别超大文件拖垮进程;官方建议在批处理系统里再叠加文档级超时保护。
  • 横向扩展:docling-serve 可以把转换能力部署成 HTTP 服务(见 docs/usage/api_server/),配套的客户端 SDK 在 docling/service_client/。
  • 模型增强是可选的:图片描述、图表理解等 enrichment 能力按需开启,详见 docs/usage/enrichments.md。

常见问题

扫描版 PDF 转出来为什么没有文字或很乱?扫描件没有文本层,需要保证do_ocr=True且 OCR 引擎(Tesseract、EasyOCR 等)已正确安装;管道会对缺文本层的页面自动走 OCR 补全。

导出的 Markdown 里表格结构不对,怎么排查?表格是由结构模型重建的,合并单元格多的复杂表格容易出错。可以换更准的表格模型(table_structure_options),或开启generate_page_images=True后调用TableItem.get_image()导出表格原图,人工核对。

遇到 docling 不支持的格式会怎样?不会静默通过:默认raises_on_error=True时直接抛 ConversionError;关掉后结果状态为 SKIPPED 或 FAILURE,并在 errors 里写明原因。用allowed_formats白名单还能提前拦掉无关格式。

写在最后

docling 擅长的是把异构格式归一到一套结构化模型,再稳定地导出 Markdown 或 JSON,其中 PDF 的表格与公式理解在同类工具里完成度较高;它不擅长的是内容层面的问答与摘要,这部分仍需交给下游大模型。项目后续还会继续补充元数据抽取、化学结构理解等能力,文档解析链路本身仍在快速迭代。

【免费下载链接】doclingGet your documents ready for gen AI项目地址: https://gitcode.com/GitHub_Trending/do/docling

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

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

134、实时感知系统设计:多传感器同步与实时推理

134、实时感知系统设计:多传感器同步与实时推理 从一次机械臂抓取失败说起 上周调试一台UR5e,装了两个RealSense D435i加一个IMU,机械臂在快接近目标时突然抖了一下,抓了个空。查了半天,不是控制算法的问题——是视觉给的位姿比实际晚了80毫秒。传感器各自为政,时间戳对…

作者头像 李华
网站建设 2026/8/30 13:10:10

NocoDB:3步把任意数据库变成表格界面,免费自部署

NocoDB:3步把任意数据库变成表格界面,免费自部署 【免费下载链接】nocodb 🔥 🔥 🔥 A Free & Self-hostable Airtable Alternative 项目地址: https://gitcode.com/GitHub_Trending/no/nocodb 周一早上&…

作者头像 李华
网站建设 2026/8/30 13:08:03

12 周、24 课学完 AI 基础:AI-For-Beginners 这套课程到底怎么安排

12 周、24 课学完 AI 基础:AI-For-Beginners 这套课程到底怎么安排 【免费下载链接】AI-For-Beginners 12 Weeks, 24 Lessons, AI for All! 项目地址: https://gitcode.com/GitHub_Trending/ai/AI-For-Beginners 如果你没接触过 AI,又不想从零拼资…

作者头像 李华
网站建设 2026/8/30 13:03:58

让 AI 编程助手替你剪视频:OpenMontage 从安装到成片指南

让 AI 编程助手替你剪视频:OpenMontage 从安装到成片指南 【免费下载链接】OpenMontage Worlds first open-source, agentic video production system. 12 production pipelines, 100 tools, 700 agent skill and production-knowledge files. Turn your AI coding …

作者头像 李华