Skip to main content
面向 RAG 的 PDF 解析 — 转换为 Markdown 和 JSON,快速、本地化、无需 GPU OpenDataLoader PDF 能够将 PDF 转换为LLM 就绪的 Markdown 和 JSON,具备准确的阅读顺序、表格提取和边界框功能——全部在本地运行。 开发者选择 OpenDataLoader 的原因:
  • 确定性 — 相同输入始终产生相同输出(无 LLM 幻觉)
  • 高速 — 在 CPU 上每秒处理 100+ 页
  • 隐私安全 — 100% 本地运行,零数据传输
  • 精准 — 每个元素都有边界框,正确处理多栏阅读顺序

概述

集成详情

本地可序列化JS 支持
OpenDataLoader PDFlangchain-opendataloader-pdf

加载器功能

来源文档惰性加载原生异步支持
OpenDataLoaderPDFLoader
OpenDataLoaderPDFLoader 组件支持将 PDF 解析为结构化的 Document 对象。

环境要求

  • Python >= 3.10
  • 系统 PATH 中需有 Java 11 或更新版本

安装

pip install -U langchain-opendataloader-pdf

快速开始

from langchain_opendataloader_pdf import OpenDataLoaderPDFLoader

loader = OpenDataLoaderPDFLoader(
    file_path=["path/to/document.pdf", "path/to/folder"],
    format="text"
)
documents = loader.load()

for doc in documents:
    print(doc.metadata, doc.page_content[:80])

参数

参数类型默认值描述
file_pathstr | List[str](必填) PDF 文件路径或目录
formatstr"text"输出格式:"text""markdown""json""html"
split_pagesboolTrue按页拆分为单独的 Document
quietboolFalse禁止控制台日志输出
passwordstrNone加密 PDF 的密码
use_struct_treeboolFalse使用 PDF 结构树(带标签的 PDF)
table_methodstr"default""default"(基于边框)或 "cluster"(边框 + 聚类)
reading_orderstr"xycut""xycut""off"
keep_line_breaksboolFalse保留原始换行符
image_outputstr"off""off""embedded"(Base64)或 "external"
image_formatstr"png""png""jpeg"
content_safety_offList[str]None禁用安全过滤器:"hidden-text""off-page""tiny""hidden-ocg""all"
replace_invalid_charsstrNone无效字符的替换内容

使用示例

输出格式

# Plain text (default) - best for simple RAG
loader = OpenDataLoaderPDFLoader(file_path="doc.pdf", format="text")

# Markdown - preserves headings, lists, tables
loader = OpenDataLoaderPDFLoader(file_path="doc.pdf", format="markdown")

# JSON - structured data with bounding boxes
loader = OpenDataLoaderPDFLoader(file_path="doc.pdf", format="json")

# HTML - styled output
loader = OpenDataLoaderPDFLoader(file_path="doc.pdf", format="html")

带标签的 PDF 支持

适用于带结构标签的无障碍 PDF(政府/法律文档中常见):
loader = OpenDataLoaderPDFLoader(
    file_path="accessible_document.pdf",
    use_struct_tree=True  # Use native PDF structure
)

密码保护的 PDF

loader = OpenDataLoaderPDFLoader(
    file_path="encrypted.pdf",
    password="secret123"
)

图片处理

# Images are excluded by default (image_output="off")
# This is optimal for text-based RAG pipelines

# Embed images as Base64 (for multimodal RAG)
loader = OpenDataLoaderPDFLoader(
    file_path="doc.pdf",
    format="markdown",
    image_output="embedded",
    image_format="jpeg"  # or "png"
)

文档元数据

每个返回的 Document 包含以下元数据:
doc.metadata
# {'source': 'document.pdf', 'format': 'text', 'page': 1}

其他资源