LangChain PyPDFLoader 实战:PDF 加载、分块与图片 OCR 提取
在 AI 大模型学习系列中,我们已经掌握了 LangChain 的核心概念、Prompt 工程以及链(Chain)等基础能力。而在 RAG(检索增强生成)系统 中,'文档加载(Document Loading)'是数据输入的第一步——只有先把 PDF、Word 等外部文档准确提取成文本,才能后续构建向量数据库、实现精准检索。
本文作为 RAG 链路的关键实战篇,将聚焦 LangChain 中最常用的 PDF 加载器 PyPDFLoader,从基础使用到图片提取,再到问题排查,带你一站式掌握 PDF 文档处理能力。

为什么需要 PyPDFLoader?
在 RAG 系统中,PDF 是最常见的'外部知识库'格式(如技术文档、论文、报告等)。但 PDF 的文本存储结构特殊,直接读取会出现'乱码''分页丢失'等问题。LangChain 的 PyPDFLoader 正是为解决这个问题而生。
它的核心价值在于:
- 自动按 PDF 页码拆分文档,返回
Document对象列表(每个对象对应 1 页); - 保留元数据(如页码、文件路径),方便后续检索时定位'文本来源';
- 支持按需加载指定页码,避免大文件加载耗时;
- 可结合 OCR 工具提取扫描版 PDF 或图片中的文本,覆盖更多场景。
PyPDFLoader 基础:安装与核心能力
安装依赖库
PyPDFLoader 依赖 pypdf 库实现 PDF 解析,需先安装(建议指定版本避免兼容性问题):
# 安装 pypdf(推荐 3.0.0+ 版本)
pip install pypdf>=3.0.0 -i https://pypi.tuna.tsinghua.edu.cn/simple
# 安装 LangChain 社区版(包含 PyPDFLoader)
pip install langchain-community -i https://pypi.tuna.tsinghua.edu.cn/simple
核心能力说明
| 能力 | 描述 | 适用场景 |
|---|---|---|
| 按页拆分 | 将多页 PDF 拆分为单个 Document 对象,每个对象包含 page_content(文本)和 metadata(元数据) | 需按页码追溯文本来源的场景(如'引用第 5 页的内容') |
| 元数据保留 | 自动记录 source(文件路径)、page(页码,从 1 开始) | RAG 检索时显示'答案来自 xxx 文件第 x 页' |
| 按需加载 | 支持指定页码范围加载,无需加载整个文件 | 大文件(如 1000 页 PDF)仅需提取部分页面 |
PyPDFLoader 实战:3 类核心场景
以下实战均基于'本地 PDF 文件'(路径示例:data/test.pdf),建议先创建 data 文件夹并放入测试 PDF,避免路径错误。



