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用于替换无效字符的字符串

使用示例

输出格式

# 纯文本(默认)- 适用于简单的 RAG
loader = OpenDataLoaderPDFLoader(file_path="doc.pdf", format="text")

# Markdown - 保留标题、列表、表格
loader = OpenDataLoaderPDFLoader(file_path="doc.pdf", format="markdown")

# JSON - 包含边界框的结构化数据
loader = OpenDataLoaderPDFLoader(file_path="doc.pdf", format="json")

# HTML - 带样式的输出
loader = OpenDataLoaderPDFLoader(file_path="doc.pdf", format="html")

带标签的 PDF 支持

对于具有结构标签的可访问 PDF(常见于政府/法律文档):
loader = OpenDataLoaderPDFLoader(
    file_path="accessible_document.pdf",
    use_struct_tree=True  # 使用原生 PDF 结构
)

密码保护的 PDF

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

图像处理

# 默认排除图像 (image_output="off")
# 这对于基于文本的 RAG 管道是最优的

# 将图像嵌入为 Base64(用于多模态 RAG)
loader = OpenDataLoaderPDFLoader(
    file_path="doc.pdf",
    format="markdown",
    image_output="embedded",
    image_format="jpeg"  # 或 "png"
)

文档元数据

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

其他资源