AI开发-python-langchain框架(3-5-pdf文件load_and_split()加载 )
上一篇博客介绍了,加载pdf按页分割的方法,今天讲讲如何自定义分割pdf文件。
LangChain 实战:PDF 文档智能加载与自定义文本分割
一、PDF 文档加载:高效解析核心基础
二、核心方法:load_and_split 一站式处理
三、默认分割规则:开箱即用的基础配置
四、自定义文本分割:两大实用方案
方案 1:递归智能分割(推荐首选)
方案 2:固定字符分割(简单场景专用)
五、分割结果可视化:清晰掌控文档信息
六、核心优势总结
总结
实现代码如下:
from langchain_community.document_loaders import PyPDFLoader
# 导入需要的文本分割器
from langchain_text_splitters import RecursiveCharacterTextSplitter, CharacterTextSplitter
# 1. 初始化PDF加载器
pdf_path = "./txt/1129全景四川双飞8日出团通知书-2.pdf"
loader = PyPDFLoader(pdf_path)
# 2. 方式1:自定义 RecursiveCharacterTextSplitter(推荐,更智能)
# 可自定义 chunk_size(块大小)、chunk_overlap(块重叠)、分隔符等
custom_splitter_1 = RecursiveCharacterTextSplitter(
chunk_size=200, # 每个文本块最大字符数(替代默认1000)
chunk_overlap=20, # 块之间重叠字符数(替代默认200)
separators=["\n\n", "\n", "。", "!", "?", ",", "、", " "], # 自定义分割优先级
length_function=len, # 计算长度的函数(默认按字符数)
)
# 3. 方式2:简单字符分割器 CharacterTextSplitter(按固定分隔符分割)
custom_splitter_2 = CharacterTextSplitter(
separator="\n", # 按换行符分割
chunk_size=1500, # 每个块最大1500字符
chunk_overlap=0, # 块之间无重叠
strip_whitespace=True, # 去除文本块首尾空白
)
# 4. 传入自定义分割器调用 load_and_split
# 使用方式1的分割器(推荐)
pages_1 = loader.load_and_split(text_splitter=custom_splitter_1)
# 使用方式2的分割器(按需选择)
# pages_2 = loader.load_and_split(text_splitter=custom_splitter_2)
# 5. 输出分割结果(和你原代码格式一致)
print("=" * 80)
print("PDF自定义分割结果详情(按自定义规则分割)")
print("=" * 80)
for idx, doc in enumerate(pages_1):
page_content = doc.page_content
page_num = doc.metadata.get("page", "未知页码")
source_file = doc.metadata.get("source", "未知文件")
print(f"\n【第 {idx + 1} 个文档块】")
print(f"1. 文档来源:{source_file}")
print(f"2. 关联页码:第 {page_num + 1} 页")
print(f"3. 文本内容(字符数:{len(page_content)}):")
print("-" * 60)
print(page_content.strip())
print("-" * 60)
# 汇总信息
print(f"\n✅ 汇总:使用自定义分割器共分割出 {len(pages_1)} 个文档块,文档来源为 {pages_1[0].metadata['source']}")
输出结果太多了,这里不输出了,要尝试的人自己找一篇pdf执行上述代码看结果。
更多学习资料尽在 老虎网盘资源
原文地址: https://www.cveoy.top/t/topic/qF9e 著作权归作者所有。请勿转载和采集!