> ## Documentation Index
> Fetch the complete documentation index at: https://cndoc-langchain.site/llms.txt
> Use this file to discover all available pages before exploring further.

# OpenDataLoader PDF 集成

> 使用 LangChain Python 与 OpenDataLoader PDF 文档加载器集成。

**用于 RAG 的 PDF 解析：** 转换为 Markdown 和 JSON，快速、本地运行、无需 GPU

[OpenDataLoader PDF](https://github.com/opendataloader-project/opendataloader-pdf) 将 PDF 转换为 **LLM 就绪的 Markdown 和 JSON**，具有准确的阅读顺序、表格提取和边界框——所有处理均在您的本地机器上运行。

**开发者选择 OpenDataLoader 的原因：**

* **确定性**——相同输入始终产生相同输出（无 LLM 幻觉）
* **快速**——在 CPU 上每秒处理 100 多页
* **私密**——100% 本地运行，零数据传输
* **准确**——每个元素都有边界框，正确的多栏阅读顺序

## 概述

### 集成详情

| 类                                                                                  | 包                                                                                        | 本地运行 | 可序列化 | JS 支持 |
| :--------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------- | :--: | :--: | :---: |
| [OpenDataLoader PDF](https://github.com/opendataloader-project/opendataloader-pdf) | [`langchain-opendataloader-pdf`](https://pypi.org/project/langchain-opendataloader-pdf/) |   ✅  |   ❌  |   ❌   |

### 加载器功能

|             来源            | 文档延迟加载 | 原生异步支持 |
| :-----------------------: | :----: | :----: |
| `OpenDataLoaderPDFLoader` |    ✅   |    ❌   |

`OpenDataLoaderPDFLoader` 组件使您能够将 PDF 解析为结构化的 [`Document`](https://reference.langchain.com/python/langchain-core/documents/base/Document) 对象。

## 要求

* Python >= 3.10
* 系统 `PATH` 中可用 Java 11 或更新版本

## 安装

```bash theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
pip install -U langchain-opendataloader-pdf
```

## 快速开始

```python theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
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]` | —           | **（必需）** PDF 文件路径或目录                                                 |
| `format`                | `str`              | `"text"`    | 输出格式：`"text"`、`"markdown"`、`"json"`、`"html"`                         |
| `split_pages`           | `bool`             | `True`      | 按页面拆分为单独的 Document                                                   |
| `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"` 或 `"off"`                                                  |
| `keep_line_breaks`      | `bool`             | `False`     | 保留原始换行符                                                              |
| `image_output`          | `str`              | `"off"`     | `"off"`、`"embedded"`（Base64）或 `"external"`                           |
| `image_format`          | `str`              | `"png"`     | `"png"` 或 `"jpeg"`                                                   |
| `content_safety_off`    | `List[str]`        | `None`      | 禁用安全过滤器：`"hidden-text"`、`"off-page"`、`"tiny"`、`"hidden-ocg"`、`"all"` |
| `replace_invalid_chars` | `str`              | `None`      | 无效字符的替换内容                                                            |

## 使用示例

### 输出格式

```python theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
# 纯文本（默认） - 最适合简单的 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（常见于政府/法律文档）：

```python theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
loader = OpenDataLoaderPDFLoader(
    file_path="accessible_document.pdf",
    use_struct_tree=True  # 使用原生 PDF 结构
)
```

### 密码保护的 PDF

```python theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
loader = OpenDataLoaderPDFLoader(
    file_path="encrypted.pdf",
    password="secret123"
)
```

### 图像处理

```python theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
# 默认情况下不包含图像（image_output="off"）
# 这对于基于文本的 RAG 管道是最优的

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

## 文档元数据

每个返回的 `Document` 都包含元数据：

```python theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
doc.metadata
# {'source': 'document.pdf', 'format': 'text', 'page': 1}
```

## 附加资源

* [LangChain OpenDataLoader PDF 集成 GitHub](https://github.com/opendataloader-project/langchain-opendataloader-pdf)
* [LangChain OpenDataLoader PDF 集成 PyPI 包](https://pypi.org/project/langchain-opendataloader-pdf/)
* [OpenDataLoader PDF GitHub](https://github.com/opendataloader-project/opendataloader-pdf)
* [OpenDataLoader PDF 主页](https://opendataloader.org/)

***

<div className="source-links">
  <Callout icon="terminal-2">
    [将这些文档](/use-these-docs) 通过 MCP 连接到 Claude、VSCode 等，以获取实时答案。
  </Callout>

  <Callout icon="edit">
    [在 GitHub 上编辑此页面](https://github.com/langchain-ai/docs/edit/main/src/oss/python/integrations/document_loaders/opendataloader_pdf.mdx) 或 [提交问题](https://github.com/langchain-ai/docs/issues/new/choose)。
  </Callout>
</div>
