文章目录 一,多种文档解析意义 二,文档解析工具-MinerU 2.1MinerU定位 2.2 MinerU能干什么 2.3 安装步骤 2.3 基本用法 2.4 三种解析方式 2.5 后端选择 2.6 输出结果 三,文档解析工具-Docling 3.1 Docling 定位 3.2 Docling 能干什么 3.3 安装步骤 3.4 基本用法 3.4.1 CLI 用法 3.4.2 Python 用法 3.5 PDF 解析配置 3.6 输出结果 3.7 文档分块 3.7.1 HierarchicalChunker 3.7.2 HybridChunker 3.8 RAG 中的使用流程 一,多种文档解析意义 我们需要把PDF、Word、HTML、Markdown、图片等不同文档解析成,干净便于向量检索的文档。 二,文档解析工具-MinerU 2.1MinerU定位 MinerU 是一个文档解析引擎,主要作用是把人类阅读的文档转换成机器容易处理的 Markdown、JSON 和图片。 2.2 MinerU能干什么 当前本地 CLI 文档明确列出的输入包括 PDF、图片、DOCX、PPTX、XLSX。 2.3 安装步骤 2.3.2 CIL安装 # 创建虚拟环境 uv venv .venv# 激活环境 .venv\ Scripts\ Activate.ps1# 安装基础功能 uv pipinstall "mineru[core]" # 检查安装 mineru--version mineru--help git clone https://github.com/opendatalab/MinerU.git Set-Location MinerU uv pipinstall -e ".[all]" 2.3 基本用法 mineru-p ".\samples\document.pdf" ` -o ".\output" ` -b pipeline` -m auto` -l ch参数 作用 -p输入文件或目录 -o输出目录 -b选择解析后端 -m选择文字提取方式 -lOCR 文档语言 -s、-e指定开始页和结束页 -t是否解析表格 -f是否解析公式
2.4 三种解析方式 模式 适用情况 auto自动判断,日常默认使用 txtPDF 有完整且正常的文字层 ocr扫描 PDF、图片 PDF、乱码 PDF
# 自动判断 mineru-p input.pdf-o output-b pipeline-m auto# 强制直接提取文字 mineru-p input.pdf-o output-b pipeline-m txt# 强制 OCR mineru-p input.pdf-o output-b pipeline-m ocr-l ch2.5 后端选择 后端 特点 建议 pipeline传统解析流水线,支持纯 CPU 入门首选 vlm-engine使用视觉语言模型 复杂图文,需要较多资源 hybrid-engine结合多种解析能力 GPU 环境和复杂文档 vlm-http-client调用外部 VLM 服务 服务化部署 hybrid-http-client调用外部混合服务 服务化部署
当前版本的默认后端可能随版本变化,因此以本机 mineru --help 为准。没有 GPU 时明确指定: -b pipeline2.6 输出结果 不同版本的具体文件名可能不同,但主要有:
Markdown:适合查看内容,也可以用于简单分块。 content list JSON:按照阅读顺序保存标题、正文、表格、图片等元素,最适合后续构建 RAG。 middle JSON:包含更详细的中间解析和版面信息,适合排查问题。 images:从文档中提取的图片。 可视化结果:用于检查版面框和元素识别是否正确。 RAG 中建议以 content list JSON 为主,因为它比单纯 Markdown 更容易保留页码、类型和位置信息。 三,文档解析工具-Docling 3.1 Docling 定位 Docling 是一个多格式文档解析、转换和分块框架。 它会把不同格式的文件统一转换成结构化的DoclingDocument。 DoclingDocument可以继续导出为 Markdown、JSON、HTML,或者直接进行 RAG 分块。Docling 支持完全本地运行,文档不需要上传到云端。 3.2 Docling 能干什么 Docling 支持的主要输入格式包括 PDF、DOCX、PPTX、XLSX、HTML、Markdown、图片、EPUB、LaTeX、纯文本、邮件和部分音频格式。 Docling 可以识别和保留以下内容: 内容 解析结果 标题 保留标题及层级 正文 提取段落和阅读顺序 列表 保留列表结构 表格 识别行、列和单元格 图片 提取图片和图片标题 扫描文字 通过 OCR 识别 公式和代码 保留对应内容类型 元数据 保存来源、页码和位置信息
3.3 安装步骤 3.3.1 CLI 安装 # 创建虚拟环境 uv venv. venv# 激活虚拟环境 . venv\Scripts\Activate. ps1# 安装 Docling uv pip install docling# 检查安装 docling-- version docling-- help使用 HuggingFace tokenizer 进行 RAG 分块时,可以安装: uv pip install"docling-core[chunking]" 3.4 基本用法 3.4.1 CLI 用法 docling".\samples\document.pdf" -- to md-- output".\output" docling".\samples\document.pdf" -- to json-- output".\output" --to用于指定输出格式,--output用于指定输出目录。3.4.2 Python 用法 from docling. document_converterimport DocumentConverter converter= DocumentConverter( ) result= converter. convert( "./samples/document.pdf" ) doc= result. document markdown= doc. export_to_markdown( ) data= doc. export_to_dict( ) html= doc. export_to_html( ) result.document是统一的DoclingDocument。后续导出、遍历元素和分块都基于这个对象进行。 3.5 PDF 解析配置 包含扫描页面和表格的 PDF,可以启用 OCR 和表格结构识别: from docling. datamodel. base_modelsimport InputFormatfrom docling. datamodel. pipeline_optionsimport PdfPipelineOptionsfrom docling. document_converterimport DocumentConverter, PdfFormatOption options= PdfPipelineOptions( do_ocr= True , do_table_structure= True , ) converter= DocumentConverter( format_options= { InputFormat. PDF: PdfFormatOption( pipeline_options= options) } ) result= converter. convert( "./samples/document.pdf" ) doc= result. document参数 作用 do_ocr对扫描页面和图片文字执行 OCR do_table_structure识别表格行列和单元格结构 generate_page_images生成完整页面图片 generate_picture_images提取文档中的图片区域 images_scale控制生成图片的清晰度 do_picture_description使用视觉模型生成图片描述
options. generate_picture_images= True options. images_scale= 2.0 3.6 输出结果 输出 作用 Markdown 人工查看、结果校验和简单处理 JSON 保存完整的DoclingDocument结构 HTML 在网页中展示解析结果 DocTags Docling 使用的结构化标记格式 DoclingDocument 用于程序处理和 RAG 分块
markdown= doc. export_to_markdown( ) json_data= doc. export_to_dict( ) html= doc. export_to_html( ) doctags= doc. export_to_doctags( ) RAG 项目建议直接使用DoclingDocument进行分块,不需要先导出 Markdown 再重新解析。 3.7 文档分块 3.7.1 HierarchicalChunker HierarchicalChunker根据标题、段落、列表、表格等文档结构进行分块。from docling. chunkingimport HierarchicalChunker chunker= HierarchicalChunker( ) chunks= list ( chunker. chunk( doc) ) for chunkin chunks: print ( chunk. text) 3.7.2 HybridChunker HybridChunker先按照文档结构分块,再根据 tokenizer 控制 chunk 长度。超长内容会被拆分,相邻且较短的同级内容可以合并。 from docling. chunkingimport HybridChunkerfrom docling_core. transforms. chunker. tokenizer. huggingfaceimport ( HuggingFaceTokenizer, ) tokenizer= HuggingFaceTokenizer. from_pretrained( model_name= "BAAI/bge-m3" , max_tokens= 512 , ) chunker= HybridChunker( tokenizer= tokenizer, merge_peers= True , ) chunks= list ( chunker. chunk( doc) ) for chunkin chunks: embedding_text= chunker. contextualize( chunk) print ( chunk. meta. headings) print ( embedding_text) 分块器 适用情况 HierarchicalChunker强调标题和文档元素结构 HybridChunker同时控制结构和 token 长度,适合 RAG
3.8 RAG 中的使用流程 PDF、Word、HTML、Markdown、图片 ↓ DocumentConverter ↓ DoclingDocument ↓ HybridChunker ↓ BGE-M3 向量化 ↓ Milvus建议向量化chunker.contextualize(chunk)的结果。 入库时保存正文、标题路径、页码、来源、内容类型和文档 ID。 Markdown 主要用于人工检查,JSON 用于保存完整解析结果,DoclingDocument和 Chunker 用于正式的 RAG 入库流程。 官方资料:Docling 官方文档、Docling GitHub。