Docling 文档解析:把 20+ 种格式转成结构化数据的完整链路

发布时间:2026/8/24 10:28:52
Docling 文档解析:把 20+ 种格式转成结构化数据的完整链路 Docling 文档解析把 20 种格式转成结构化数据的完整链路【免费下载链接】doclingGet your documents ready for gen AI项目地址: https://gitcode.com/GitHub_Trending/do/doclingRAG 管道里最容易被低估的瓶颈是文档解析。一份 300 页的扫描版 PDF 端坐在摄入流程的入口表格被拉平成一行乱序文字、双栏排版的阅读顺序颠倒、公式直接消失——后续无论嵌入模型多强检索到的片段都答不上表格第 3 行对应什么指标。Docling 文档解析多格式文档解析器把 PDF、DOCX、XLSX、HTML、邮件、EPUB、LaTeX、音视频等二十余种输入统一转换为DoclingDocument再导出为 Markdown、HTML、JSON 等格式目标是让结构化数据直接进入 RAG 与 Agent 工作流。为什么普通文本提取会在 RAG 预处理中翻车拿一份双栏排版的学术 PDF 跑常规文本提取输出是按内容流拼起来的字符左栏第三段可能接到右栏第一段后面。更麻烦的是表格——单元格文本被依次读出表头和数据行脱钩。这类片段的失败模式很具体检索命中了表 2所在的段落但模型看到的是一个没有行列结构的字符串某型号在某温度下的性能是多少这类问题必然答错。传统解析器只关心字在不在不关心字在什么位置、属于哪个结构。Docling 的设计取向相反先保真地还原结构层级、行列、阅读顺序再谈导出成什么格式。DoclingDocument统一中间表示长什么样上图展示了同一份文档的两个视角左侧是序列化后的结构树右侧是原始页面中间对应关系标出每个文本块的位置与标签。DoclingDocument用 Pydantic 类型定义核心是把内容与结构分开存。内容项放在texts、tables、pictures、key_value_items四个列表里结构由三棵树承载——body正文子节点的顺序就是阅读顺序、furniture页眉页脚等正文之外的元素、groups列表、章节这类容器。每个元素还可携带边界框bounding box元素在页面上的位置与来源页码后续做可视化标注或按区域定位时直接可用。从安装到首次解析只需两条命令pip install docling # 需要 Python 3.10 docling report.pdf # 当前目录生成带标题层级的 report.md输出文件的表格会导出为 Markdown 表格标题层级来自版面分析而非简单字号猜测。想换视觉语言模型VLM直接看图输出标记的模型跑端到端转换加一个参数即可docling --pipeline vlm --vlm-model granite_docling report.pdf三级架构backend 解包、pipeline 编排、模型级联架构图把 Docling 分成三层DocumentConverter入口根据文件类型选择对应的backend格式专属的解包器比如 DOCX 读 OOXML、LaTeX 走引擎编译和pipeline编排 AI 模型的处理流程最后落到统一的DoclingDocument。对 PDF默认的StandardPdfPipeline是级联式处理版面检测先分出文本、表格、图片区域再按阅读顺序拼接表格用 TableFormer 识别行列结构扫描件交给可插拔的 OCR 引擎RapidOCR、Tesseract 等均可。这条链路全部可本地运行适合敏感数据与离线环境。转换结果附带置信度分数图中展示了文本、表格、图片各维度的评分分布。分数低的页面可以单独筛出来人工复核不必整份文档重新处理。把解析结果接进 RAG三个实战场景如果你的项目在做 RAG 预处理典型链路是解析得到DoclingDocument后不经过 Markdown直接用HybridChunker按文档层级切块并用contextualize()为每个块带上标题路径再喂给嵌入模型。表格跨块时表头可自动重复repeat_table_header避免数据行有、列名没了。如果你的项目是扫描档案数字化PdfPipelineOptions里开启enable_ocr并指定 OCR 引擎即可处理中文扫描件时选择支持ch语言模型的引擎。如果你的项目涉及专利、财报这类半结构化资料Docling 原生支持 USPTO 专利 XML、JATS 论文、XBRL 财务报告——直接解析到 JSON省去自己写 schema 映射。from docling.document_converter import DocumentConverter from docling.chunking import HybridChunker doc DocumentConverter().convert(report.pdf).document for chunk in HybridChunker().chunk(doc): text chunk.contextualize() # 带标题路径的片段直接给嵌入模型离线部署与批量跑批的几个实际约束内网环境第一次运行会因为没有网络拉不到模型而卡住。正确姿势是先在有网机器上执行docling-tools models download把模型缓存拷到内网再用--artifacts-path或环境变量DOCLING_ARTIFACTS_PATH指过去。注意远程调用如云端 OCR、图像描述 API默认是禁止的必须显式传enable_remote_servicesTrue文档外发行为是 opt-in 而非 opt-out。批量跑大文件时建议给convert()传max_num_pages和max_file_size兜底CPU 并发可用OMP_NUM_THREADS控制默认 4 线程。VLM 管线单页推理比级联管线慢一个量级选型前先用docs/examples/compare_vlm_models.py在自己目标机型上实测。路线图近期会补齐的能力元数据自动提取标题、作者、参考文献、语言化学分子结构理解视频解析MP4/AVI/MOVASR 转写加关键帧ODF.odt/.ods/.odp、邮件.eml/.msg、EPUB 与图表理解已随近期版本上线Docling 的价值一句话概括把格式各异的原始文件变成结构保真的统一数据模型让 RAG 管道第一次不用为文档解析单独写一堆胶水代码。先跑通第一条链路试试pip install docling然后docling 你的PDF。官方文档docs/getting_started/quickstart.md示例代码docs/examples/架构与概念说明docs/concepts/architecture.md、docs/usage/supported_formats.md【免费下载链接】doclingGet your documents ready for gen AI项目地址: https://gitcode.com/GitHub_Trending/do/docling创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考