当前位置: 首页 > news >正文

AI开发-python-langchain框架(3-4-pdf文件load()加载 )

加载 PDF 原始页面,保留完整内容不分割

在基于 LangChain 处理 PDF 文档的场景中,很多开发者默认使用的加载方式会自动将文档内容分割成小块,虽然便于后续检索,但有时我们更需要保留 PDF 原始页面的完整内容 —— 比如解析出团通知书、合同类 PDF 时,按页码完整提取内容才能保证信息的完整性和上下文连贯。今天就和大家分享如何用 LangChain 精准加载 PDF 原始页面,完整保留每一页的全部内容。

核心需求与场景

日常处理 PDF 时,LangChain 的 PyPDFLoader 默认配合 split_text 等方法会把页面内容按字符数 / 分隔符拆分,这在需要完整页面信息的场景下并不适用:
  • 解析出团通知书、合同等格式规整的 PDF,需按原始页码完整提取内容;
  • 保留每页的元数据(页码、文件来源),便于后续按页管理和使用;
  • 避免自动分割导致的内容碎片化,保证单页信息的完整性。

实现思路与特点

1. 核心加载逻辑

使用 LangChain 的 PyPDFLoader 时,load()方法会按 PDF 原始页码生成独立的 Document 对象,每个对象对应一页完整内容,且保留页码、文件路径等元数据。

2. 关键特性

  • 内容完整性:每个 Document 对象对应 PDF 的一个原始页面,完整保留该页所有文本内容,无任何拆分;
  • 元数据保留:可直接提取每个页面的页码(从 0 开始,可自行转换为日常计数)、文件来源路径等关键信息;
  • 灵活遍历:可按页码遍历所有页面,按需提取指定页的内容,便于后续按页处理、输出或存储。

3. 实用扩展

加载完成后,可轻松实现:
  • 按页码筛选指定页面的内容;
  • 统计每一页的字符数,快速判断页面内容体量;
  • 提取所有页面的元数据,生成 PDF 页面清单;
  • 将完整页面内容写入文本文件、数据库,或对接大模型进行整页内容解析。

应用价值

这种加载方式特别适合需要完整 PDF 页面信息的业务场景:
  • 文档解析:按原始页码完整提取通知书、合同、报告类 PDF 的内容,保证信息不缺失;
  • 内容管理:按页存储 PDF 内容,便于后续按页码检索、修改和复用;
  • 数据校验:可快速核对每页内容的完整性,避免因自动分割导致的信息遗漏。

总结

  1. LangChain 的 PyPDFLoader 通过load()方法可直接加载 PDF 原始页面,无需自动分割,保留每页完整内容;
  2. 加载后生成的 Document 对象包含页码、文件来源等元数据,便于按页管理和使用;
  3. 该方式适配需要完整页面信息的场景,解决了自动分割导致的内容碎片化问题,提升 PDF 处理的精准性。
相比默认的分割加载方式,这种 “保留原始页面” 的加载思路更贴合格式规整、需完整信息的 PDF 处理场景,是 LangChain 处理 PDF 文档时的实用技巧。
 
实现代码如下:
from langchain_community.document_loaders import PyPDFLoader# 仅加载PDF(不分割),保留原始页面完整内容
loader = PyPDFLoader("./txt/1129全景四川双飞8日出团通知书-2.pdf")
pdf_docs = loader.load()  # 核心区别:仅加载,无自动分割# 遍历每个Document对象(对应PDF原始页码),提取并输出各属性
print("=" * 80)
print("PDF加载结果详情(按原始页码展示)")  # 标题调整为“加载”而非“分割”
print("=" * 80)for idx, doc in enumerate(pdf_docs):# 提取核心属性(和原格式一致)page_content = doc.page_content  # 对应页码的完整文本内容(无分割)page_num = doc.metadata.get("page", "未知页码")  # 原始页码索引(从0开始)source_file = doc.metadata.get("source", "未知文件")  # 文档来源路径# 格式化输出(和原格式完全一致)print(f"\n【第 {idx + 1} 个页面】")  # 调整描述为“页面”而非“文档块”,更贴合load()特性print(f"1. 文档来源:{source_file}")print(f"2. 页码:第 {page_num + 1} 页")  # 转换为日常计数(从1开始)print(f"3. 文本内容(字符数:{len(page_content)}):")print("-" * 60)print(page_content.strip())  # 去除首尾空白,保持内容整洁print("-" * 60)# 汇总信息(调整描述,体现“加载页面数”而非“分割块数”)
print(f"\n✅ 汇总:共加载出 {len(pdf_docs)} 个原始页面,文档来源为 {pdf_docs[0].metadata['source']}")

执行结果(内容太长截取部分内容):

================================================================================
PDF加载结果详情(按原始页码展示)
================================================================================

【第 1 个页面】
1. 文档来源:./txt/1129全景四川双飞8日出团通知书-2.pdf
2. 页码:第 1 页
3. 文本内容(字符数:1315):
------------------------------------------------------------

出团通知书
重要提示:
尊敬的游客:您好!
感谢您选择我们的服务,为保证您的顺利出行,现提示如下:......

------------------------------------------------------------

【第 2 个页面】
1. 文档来源:./txt/1129全景四川双飞8日出团通知书-2.pdf
2. 页码:第 2 页
3. 文本内容(字符数:877):
------------------------------------------------------------
造成不必要的损失和麻烦。
3.出团前请认真检查自己的随身物品是否齐全,特别是身份证、护照等证件并随身携带,以保证自身顺利出入境。
4.长途旅行时注意保管贵重物品,现金、首饰、手机等贵重物品请随身携带,特别是护照和机票要妥善保管。......

 

更多学习资料尽在老虎网盘资源
http://www.jsqmd.com/news/466119/

相关文章:

  • 在python中的临时小知识
  • 免费ai绘画工具技术横评:功能、性能与架构分析
  • Windows 系统安全,从漏洞到后门那些事儿
  • 2026软考最全资料无偿分享
  • python数据容器快速回顾
  • 萧邦宝格丽百年灵|南京,上海,深圳等六大城市腕表养护维修指南,守护奢华质感与保值价值 - 时光修表匠
  • 不必焦虑,多数人没必要自己部署 OpenClaw
  • 海伯森发布高真空系列点光谱共焦传感头
  • 分析2026年实力强的美国投资移民企业,如何选择更明智 - 工业品网
  • Typecho 常见报错与修复大全(所有报错通用)
  • 前端中stylus是干嘛用的
  • 内外网文件交换系统产品推荐,Ftrans为企业跨网交互保驾护航
  • AutoGen学习以及案例实践
  • OpenClaw 完全上手指南:从安装到实战的 8 个步骤
  • 从技术专家到项目舵手:实战经验谈技术视角下的项目管理
  • 【JAVA基础02】—— 数据类型与变量全解析
  • 【LLM基础】2.Transformer原理
  • @ContentFontStyle注解颜色说明
  • 算法漏洞猎人:AI标注优化对象的专业剖析
  • 2026年热门的智能预制钢结构品牌推荐:装配式预制钢结构/出海预制钢结构工程高评分公司推荐 - 行业平台推荐
  • 力扣第十题C++正则表达式匹配
  • Linux系统安装nginx并配置反向代理
  • [2026.3.11]WIN11.25H2.26200.8037[PIIS]中简极速优化版 运行流畅稳定
  • 体积表面电阻率测试仪品牌推荐,教你选对不选贵 - 品牌推荐大师
  • RDMA设计60:RDMA队列管理及连接建立功能测试3
  • 技术债公墓的守墓人:测试工程师的生存启示录
  • 2026年北京写字楼出租推荐榜单:CBD/望京/三元桥/国贸/东三环等核心商圈优质办公空间深度解析与选址指南 - 品牌企业推荐师(官方)
  • 【边打字.边学昆仑正义文化】_10_幸福维度(2)
  • 【零基础配置 Claude Code 状态栏 完整教程】
  • Agent的大脑:大模型如何让AI从工具变伙伴