You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用PyPDF2提取连续页码范围文本?排查代码仅返回最后一页问题

解决PyPDF2仅返回最后一页文本的问题

嘿,我来帮你排查这个问题!你遇到的情况大概率是没有用列表来存储每页的文本,反而每次循环都覆盖了同一个变量的值——比如你可能在循环里直接把page_content赋值为当前页的文本,这样每循环一次,之前的页内容就被新的覆盖了,最后自然只剩最后一页的结果。

问题核心原因

举个反例,如果你之前的循环是这样写的:

# 错误示范:用单个变量存储,会被覆盖
page_content = ""
for page_num in range(number_of_pages):
    page = read_pdf.getPage(page_num)
    page_content = page.extractText()  # 每次都覆盖之前的内容

那最后page_content只会保留最后一次循环的结果,也就是最后一页的文本。

修正后的代码

我们只需要初始化一个空列表,把每一页处理后的文本追加到列表里,就能得到每页文本的集合了。结合你提到的去重需求,代码可以改成这样:

import PyPDF2

# 打开PDF文件
pdf_file = open('enme2.pdf', 'rb')
read_pdf = PyPDF2.PdfFileReader(pdf_file)
number_of_pages = read_pdf.getNumPages()

# 初始化空列表,专门存储每页的文本
page_contents = []

# 遍历每一页,提取并处理文本
for page_num in range(number_of_pages):
    page = read_pdf.getPage(page_num)
    # 提取当前页原始文本
    raw_text = page.extractText()
    
    # 这里加入你的去重逻辑(示例:保留字符顺序的去重)
    # 如果你有自己的去重方法,替换这段即可
    unique_chars = []
    seen = set()
    for char in raw_text:
        if char not in seen:
            seen.add(char)
            unique_chars.append(char)
    unique_text = ''.join(unique_chars)
    
    # 将处理后的当前页文本加入列表
    page_contents.append(unique_text)

# 现在page_contents就是每页文本的列表,索引对应页码(从0开始)
print("每页文本列表:", page_contents)

# 记得关闭文件,避免资源占用
pdf_file.close()

关键改动说明

  • 用page_contents = []创建一个空列表,用来单独存储每一页的文本
  • 循环中使用append()方法,把当前页处理后的文本添加到列表末尾,而不是覆盖变量
  • 去重逻辑可以根据你的需求调整,示例里的方法是在保留字符原始顺序的基础上去重,你可以替换成自己的实现

这样处理后,page_contents就是包含所有页面文本的列表,每个元素对应一页的内容啦!

内容的提问来源于stack exchange,提问作者Winget

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 04:27:42