
别再手动清洗 PDF 了Docling 3 步跑通 PDF 转 Markdown 与 RAG 文档解析【免费下载链接】doclingGet your documents ready for gen AI项目地址: https://gitcode.com/GitHub_Trending/do/docling月底要上线的 RAG 应用卡在最后一环200 份格式各异的 PDF 报告——扫描版、双栏论文、表格密集的财报——手动复制到向量库前光是清洗就够喝一壶。Docling 就是为这类场景生的一个 Python 库加一条 CLI把 PDF、DOCX、扫描件批量转成带结构的 DoclingDocument再一键导出 Markdown 喂给下游。它到底能干什么——一张能力地图先用一张图把输入输出链路讲清楚相比 pdfplumber 只能拿到裸文本行、正则只能硬匹配模板Docling 多做了两件事版面检测自动区分标题/正文/表格/公式和结构重建表格还原成行列关系标题还原成层级。所以你拿到的不是一堆文本 若干 bbox而是一份可以直接喂给 LLM 的结构化文档。5 分钟跑通第一个转换装包一条命令模型权重首次运行自动拉取pip install docling下面这段就是官方最小示例本地文件路径或 URL 都行from docling.document_converter import DocumentConverter source tests/data/pdf/sources/2206.01062.pdf # 换成你的路径 converter DocumentConverter() result converter.convert(source) print(result.document.export_to_markdown()[:500])跑完你会看到三样东西日志里布局模型与表格模型的加载进度、CLI 路径下当前目录生成的 .md 文件以及打印出的 Markdown——标题带#表格是标准 GFM 语法公式是 LaTeX。三个真实场景把核心能力拆开看场景一批量论文转 Markdown一次转换 200 篇 arXiv 论文用convert_all加raises_on_errorFalse单个失败不拖垮整批from docling.document_converter import DocumentConverter, PdfFormatOption from docling.datamodel.base_models import ConversionStatus, InputFormat from docling.datamodel.pipeline_options import PdfPipelineOptions opts PdfPipelineOptions() opts.generate_page_images False # 纯出 Markdown不需要页图 converter DocumentConverter( format_options{InputFormat.PDF: PdfFormatOption(pipeline_optionsopts)} ) for res in converter.convert_all(pdf_paths, raises_on_errorFalse): if res.status ConversionStatus.SUCCESS: (out_dir / f{res.input.file.stem}.md).write_text( res.document.export_to_markdown(), encodingutf-8 ) # ... 省略失败/部分成功分支约 8 行 ...批量任务里别把generate_page_images留着开它会让内存占用和耗时都上一个台阶而纯 Markdown 输出根本用不到页图。场景二扫描件全页 OCR扫描版 PDF 的文本层要么缺失要么是错的把 OCR 模式切到FULL_PAGE强制整页重扫from docling.datamodel.base_models import InputFormat from docling.datamodel.pipeline_options import ( PdfPipelineOptions, TesseractOcrOptions, OcrMode, ) from docling.document_converter import DocumentConverter, PdfFormatOption opts PdfPipelineOptions() opts.do_ocr True opts.do_table_structure True opts.ocr_options TesseractOcrOptions(modeOcrMode.FULL_PAGE) converter DocumentConverter( format_options{InputFormat.PDF: PdfFormatOption(pipeline_optionsopts)} ) doc converter.convert(scan.pdf).documentFULL_PAGE比默认检测模式慢不少只对文本层完全不可信的扫描件开普通电子版 PDF 用默认模式即可。场景三表格密集型财报财报、招股书这类文档 80% 信息在表格里。do_table_structure默认开着但导出格式选 DocTags 或 JSON 能保留完整的行列与合并关系doc.save_as_markdown(out.md) # GFM 表格人读 doc.save_as_json(out.json) # 无损喂 RAG 索引 doc.save_as_doctags(out.doctags) # 给 LLM 微调表格跨页时 Docling 会拆开需要跨页合并就在下游拼接或者换granite_vision_table引擎再试。调性能之前先看懂它的处理管道三条主线的分叉逻辑真正影响 90% 场景的三个开关do_ocr默认 True——电子版 PDF 关掉能省 30% 时间扫描件必须开且切OcrMode.FULL_PAGE。do_table_structure默认 True——输出里没有表格、或表格被当纯文本时别关纯叙述性文档关掉能加速。generate_page_images默认 False——只在导出 HTML 且要嵌图时开否则白跑一遍渲染。踩过的坑替你排好了首次运行卡在模型下载 → 检查网络或提前pip install huggingface_hub手动拉权重。tesserocr报libtesseract.so找不到 → 系统级装 tesseractapt install tesseract-ocr或brew install tesseract。内存爆掉 →PdfPipelineOptions.generate_page_images关 False同时把 batch 拆小。macOS Intel 上 torch 装不上 → 用uv add torch2.2.2 docling或pip install docling[mac_intel]。转出来的 Markdown 表格是错的 → CLI 加--table-structure-engine docling_tableformer_v2或granite_vision_table再试。做到这一步200 份报告的清洗就从手动复制粘贴降级成了一条convert_all循环加一个失败重试队列剩下的精力可以放回 RAG 的检索调优上。【免费下载链接】doclingGet your documents ready for gen AI项目地址: https://gitcode.com/GitHub_Trending/do/docling创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考