文档解析
最后更新:2026-06-08 数据来源:
data/data-and-knowledge.yaml自动生成
📄 文档解析的坑
把 PDF 变成文本,听起来简单,实际上是 RAG 流程中最容易翻车的环节。
| 文档类型 | 难度 | 常见坑 | 推荐方案 |
|---|---|---|---|
| 纯文本 PDF | ⭐ | 几乎没有 | PyMuPDF 直接提取 |
| 扫描件 PDF | ⭐⭐⭐ | OCR 识别错误、排版混乱 | Marker / Docling |
| 含表格的 PDF | ⭐⭐⭐⭐ | 表格结构丢失、列错位 | MinerU / Docling |
| 多栏排版 PDF | ⭐⭐⭐ | 阅读顺序错乱 | Nougat / Marker |
| 含图片的 PDF | ⭐⭐⭐⭐ | 图片说明文字丢失 | 多模态模型直接理解 |
| 网页 / HTML | ⭐⭐ | 噪声多(广告、导航) | Crawl4AI / Jina Reader |
[!TIP] 90% 的 PDF 解析问题可以用 MinerU 解决 MinerU 是目前国内开源社区最活跃的文档解析工具,对中文 PDF 支持极好,表格、公式、多栏都能处理。
pip install magic-pdf即可使用。
📋 文档解析引擎总览
⭐ 活跃项目 (10K-50K Stars)
| 名称 | 简介 | 标签 | 亮点 |
|---|---|---|---|
| MinerU | 国内最活跃的开源文档解析工具,中文 PDF 支持极好 | document, data-analysis, chinese | 中文 PDF 解析首选 表格/公式/多栏支持 32K Stars |
| Unstructured | 最流行的文档解析库,支持 PDF/Word/HTML 等 20+ 格式,RAG 标配 | document, data-analysis, rag | 28K Stars 20+ 格式支持 RAG 标配 |
| Firecrawl | 为 LLM 设计的网页爬取 API,输出干净 Markdown/结构化数据 | search, document, api-gateway | 28K Stars 输出干净 Markdown API 优先 |
| Crawl4AI | 为 LLM 设计的网页抓取工具,输出 Markdown | search, document | 为 LLM 设计 网页转 Markdown 25K Stars |
| Docling | IBM 出品的文档解析工具,支持多种格式 | document, data-analysis, enterprise | IBM 出品的结构化高保真解析器 完美还原复杂的语义层级与表格 内置 MCP Server,生态绝佳 |
| Marker | AI 驱动的 PDF 解析工具,支持扫描件、表格、公式 | document, data-analysis | 极速深度学习模型流水线 完美适配科研文献与复杂公式转换 支持可选的大模型增强 (LLM-boost) |
| GOT-OCR | 阶跃星辰出品的通用 OCR 模型,支持复杂文档/乐谱/数学公式 | data-analysis, chinese | 12K Stars 通用 OCR 公式+乐谱 |
🆕 新兴项目 (<10K Stars)
| 名称 | 简介 | 标签 | 亮点 |
|---|---|---|---|
| Nougat | Meta 出品的学术文档解析模型,擅长公式识别 | document, data-analysis, academic | Meta 出品 学术论文解析 公式识别 |
| PyMuPDF | 高性能 PDF 处理库,纯文本提取首选 | document, open-source, fast-inference | 高性能 PDF 库 纯文本提取 轻量级 |
| LlamaParse | LlamaIndex 出品的文档解析 API,专为 RAG 优化 | document, api-gateway, rag | 专为 LLM 设计的高效闭源 API 解析服务 无需配置本地环境,开箱即用 原生无缝集成 LlamaIndex 生态 |
| Jina Reader | 网页转 Markdown API,最简单的网页解析方案 | search, api-gateway, document | 网页转 Markdown API 最简单方案 无需部署 |
🔧 解析方案对比
| 方案 | 类型 | 表格 | 公式 | OCR | 中文 | 适合谁 |
|---|---|---|---|---|---|---|
| PyMuPDF | 库 | ❌ | ❌ | ❌ | ✅ | 纯文本 PDF,最轻量 |
| Marker | 工具 | ✅ | ✅ | ✅ | ✅ | 扫描件、多语言 |
| MinerU | 工具 | ✅ | ✅ | ✅ | ✅ | 中文 PDF 首选 |
| Docling | 工具 | ✅ | ✅ | ✅ | ✅ | IBM 出品,企业级 |
| Nougat | 模型 | ✅ | ✅ | ✅ | ❌ | 学术论文,公式密集 |
| Crawl4AI | 工具 | — | — | — | ✅ | 网页抓取,LLM 友好 |
| Jina Reader | API | — | — | — | ✅ | 网页转 Markdown,最简单 |
💡 最简文档解析流程
# 方案 1:纯文本 PDF(最简单)
import pymupdf
doc = pymupdf.open("document.pdf")
text = "\n".join(page.get_text() for page in doc)
# 方案 2:复杂 PDF(表格、扫描件)
# pip install magic-pdf
from magic_pdf.data.data_reader_writer import FileBasedDataWriter
# 参考 MinerU 官方文档
# 方案 3:网页抓取
# pip install crawl4ai
from crawl4ai import AsyncWebCrawler
async with AsyncWebCrawler() as crawler:
result = await crawler.arun("https://example.com")
print(result.markdown) # 直接得到 Markdown
[!TIP] 解析后的文本质量直接决定 RAG 效果 如果解析出来的文本表格错位、公式丢失、阅读顺序混乱,后面再怎么优化 Embedding 和检索都没用。建议先人工检查 10 个文档的解析结果,确认质量后再批量处理。
更新频率:每季度更新 自动化:运行
python scripts/build_docs.py从 YAML 重新渲染表格。