
docling 文档解析实战4 行代码把 PDF、DOCX 和扫描件转成能直接喂 RAG 的 Markdown【免费下载链接】doclingGet your documents ready for gen AI项目地址: https://gitcode.com/GitHub_Trending/do/docling把一份 60 页的投标 PDF 塞进 RAG最头疼的往往不是模型而是解析文字糊成一团、表格散架、两栏正文顺序错乱。docling 文档解析干的就是这件事——PDF、DOCX、HTML 等多格式文档转换到统一的 DoclingDocument再导出 Markdown、HTML 或 JSON产出的 Markdown 自带标题层级切块、向量化基本不用再手工修。安装只有两步pip install docling然后跑一次 CLI 验证docling --help。下面用三个真实场景把它跑通。三个真实场景多格式文档转换跑通流程每个场景都按「输入什么 → docling 怎么处理 → 拿到什么」来讲。场景一PDF 转 Markdown——60 页标书变结构化文本输入一份数字版有文字层的 PDF比如投标书、技术报告。处理DocumentConverter()走标准 PDF 管道——后端抽文字布局模型识别标题、表格、图片区块自动排好阅读顺序产出一个DoclingDocument。产出export_to_markdown()直接给你带#/##层级的 Markdownexport_to_json()则是无损序列化连版面坐标都保留着。核心就这四行也是全文最重要的代码from docling.document_converter import DocumentConverter converter DocumentConverter() result converter.convert(bid_60pages.pdf) print(result.document.export_to_markdown())场景二DOCX 解析——标题层级不用猜直接读出来输入.docx、.xlsx、.pptx等 Office Open XML 文件老格式的.doc/.xls/.ppt需要系统装了 LibreOffice。处理docx 走的是声明式后端直接读文件里的结构数据不做任何像素级识别——标题几级、表格几行几列都是原文档里写好的docling 原样搬到 DoclingDocument。产出和 PDF 一样走export_to_markdown()且文本样式加粗、下划线在这类格式里是被保留的PDF 反而做不到。好处很实际同一套下游代码PDF 和 DOCX 的产出结构一致你不需要为两种格式写两套解析逻辑。场景三扫描件与图片的 OCR——没有文字层也能出文字输入.png/.jpg/.tiff/.webp图片或纯扫描版 PDF。处理管道里的 OCR 引擎默认 RapidOCR也可切 Tesseract、EasyOCR在布局识别之后把文字补出来再进入和场景一相同的后处理。产出同样是一份带层级的 Markdown扫描件因为没有原文字层整体耗时会比数字 PDF 高一截见后面的坑。两个硬骨头怎么配、效果如何复杂表格列错位、单元格被合并会遇到的坑提取出的表格多列被并成一列或者表头和数据对不上行。怎么配表格结构抽取默认开启do_table_structureTrue结构模式默认是更精确的ACCURATE。当出现多列被错误合并时官方文档给了一个关键开关控制表格结构是映射回 PDF 原生单元格默认还是直接用结构预测自身的文本单元格——切到后者往往就能解决。配置写法在 docs/usage/advanced_options.md 里有现成片段照着改两行即可。效果产出的是带行列关系的逻辑表格导出 Markdown 时变成标准管道符表格下游按列取数不再错位。跨页表格、嵌套表格是目前边界情况里最容易翻车的地方批量上量前建议先拿你的真实样本跑一轮人工抽查。多栏版面阅读顺序两栏论文被之字形读取会遇到的坑双栏论文、报纸类版面文字先读完左栏下半截再跳到右栏句子被拦腰截断。怎么配标准管道会自动处理——布局阶段就负责给每个区块排阅读顺序这一项默认开启、无需额外配置。如果顺序还是乱按顺序查两件事一是扫描页没走 OCR文字定位不可靠二是页面渲染分辨率偏低把渲染 scale 调高再试。另外生产环境建议在PdfPipelineOptions里设document_timeout官方建议 90~120 秒防止个别坏文档卡死整个批处理。效果多栏内容的 Markdown 按正常阅读顺序输出标题层级归位切块时段落不会被拦腰截断。选型速查按你的需求挑配置你的需求建议配置说明离线/内网部署不允许外网先docling-tools models download拉模型再用环境变量DOCLING_ARTIFACTS_PATH指向本地模型目录模型默认缓存在$HOME/.cache/docling/models拉一次即可离线纯数字 PDF只要文字要快PdfPipelineOptions(do_ocrFalse)或force_backend_textTrue直接吃 PDF 内嵌文字层跳过识别是三条配置里最快的扫描件 / 图片版 PDF保持do_ocrTrue默认开确认 OCR 引擎已装、语言包正确耗时约为数字 PDF 的数倍预算要留够公式、代码块较多do_formula_enrichmentTrue/do_code_enrichmentTrue按需开官方明确提示功能多开会显著变慢开够用即可想接 LLM / 做 RAG导出 JSON无损或直接用 CLI 的 chunks JSONL 输出--chunks-type可调想换更强理解能力可试 VLM 模式docling --pipeline vlm --vlm-model granite_docling下一节给最短路径文档接入 RAG一条最短路径最短路径四步转 Markdown → 切块 → 向量化 → 检索不需要先把全家桶框架装齐。步骤用什么要点1. 转换DocumentConverter().convert()产出 DoclingDocument版面信息都在里面2. 切块内置 chunking 模块按文档层级切不会把段落切散3. 向量化任意 embedding 模型输入就是切块后的纯文本4. 检索任意向量库检索命中后回原文渲染切块这一步的用法全文第二段代码共 5 行from docling.chunking import HybridChunker for chunk in HybridChunker().chunk(doc): print(chunk.meta.text) # 每个切块的正文直接送去 embedding两个加分项一是export_to_json()是无损序列化切块 meta 里带页码和坐标回答时可以做引用第几页的落地溯源二是仓库里 docs/examples/ 下有hybrid_chunking.ipynb、serialization.ipynb这类现成 notebook对照着改比自己摸索快。常见坑与排查扫描件转出来是空文本没有文字层时不自动救你——确认do_ocrTrue且 OCR 引擎装好RapidOCR 在只读文件系统上有已知问题这类环境建议切 Tesseract语言不对如繁体、日文同样会大面积漏字。大文件卡死或内存飙升给PdfPipelineOptions(document_timeout120)上保险批处理时控制每批页数别一次塞几百页。官方在选项文档里明确建议生产系统做超时保护。老 Office 格式降级.doc/.xls/.ppt97–2004依赖 LibreOffice没装就走不通.odt/.ods/.odp则开箱即用。交付前检查一遍运行环境。Docker 里报libGL.so.1缺失典型 headless 环境问题opencv-python和opencv-python-headless二选一推荐卸载前者、只装后者。这条在 docs/faq/index.md 里有完整解法。下一步先跑最小闭环pip install docling用docling 你的文件 --to md转一份真实业务文档打开生成的 Markdown 抽查表格和标题层级——比看十页文档更能判断它适不适合你的场景。确认解析质量后再按选型速查表收紧配置关掉用不到的 OCR / 公式增强最后接上切块和向量化。遇到问题优先翻 docs/faq/index.md多数安装与环境问题都有现成答案。【免费下载链接】doclingGet your documents ready for gen AI项目地址: https://gitcode.com/GitHub_Trending/do/docling创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考