用于 RAG 的 PDF 解析: 转换为 Markdown 和 JSON,快速、本地化、无需 GPU
OpenDataLoader PDF 将 PDF 转换为 **LLM 就绪的 Markdown 和 JSON** 具有准确的阅读顺序、表格提取和边界框——全部在本地机器上运行。
为什么开发者选择 OpenDataLoader: - **确定性**—相同输入始终产生相同输出(无 LLM 幻觉) - **快速**—在 CPU 上每秒处理 100+ 页 - **私密**—100% 本地化,零数据传输 - **准确**—每个元素都有边界框,正确处理多列阅读顺序
概述
集成详情
| 类 | 包 | 本地 | 可序列化 | JS 支持 |
|---|---|---|---|---|
| OpenDataLoader PDF | langchain-opendataloader-pdf | ✅ | ❌ | ❌ |
加载器功能
| 源 | 文档延迟加载 | 原生异步支持 |
|---|---|---|
OpenDataLoaderPDFLoader | ✅ | ❌ |
该 OpenDataLoaderPDFLoader 组件使您能够将 PDF 解析为结构化的 Document 对象。
## 要求 - Python >= 3.10 - 系统上需要 Java 11 或更高版本 PATH
安装
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_path | `str \ | List[str]` | — |
format | str | "text" | 输出格式: "text", "markdown", "json", "html" |
split_pages | bool | True | 将每页拆分为单独的文档 |
quiet | bool | False | 禁止控制台日志输出 |
password | str | None | 加密 PDF 的密码 |
use_struct_tree | bool | False | 使用 PDF 结构树(标记 PDF) |
table_method | str | "default" | "default" (基于边界)或 "cluster" (边界 + 聚类) |
reading_order | str | "xycut" | "xycut" or "off" |
keep_line_breaks | bool | False | 保留原始换行符 |
image_output | str | "off" | "off", "embedded" |
image_format | str | "png" | "png" or "jpeg" |
content_safety_off | List[str] | None | 禁用安全过滤器: "hidden-text", "off-page", "tiny", "hidden-ocg", "all" |
replace_invalid_chars | str | None | 无效字符的替换字符 |
使用示例
输出格式
# 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 支持
For accessible PDFs with structure tags (common in government/legal documents):
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}