Skip to main content
PDF 解析用于 RAG: 转换为 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按页面拆分为单独的文档
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}

附加资源