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

使用PyPDF2读取PDF时重复内容及提取失败问题求助

解决PDF文本提取重复及空内容问题

一、先修正代码的基础错误

原代码中arquivo变量未初始化,直接执行arquivo += conteudo_pagina会累积旧值(若之前运行过代码),引发重复内容问题。修正后的代码:

import PyPDF2

# 用原始字符串避免路径转义问题
arquivo_pdf = r'D:\PYTHON\PREFEITURA_SP\ATA40221.pdf'
pdf = PyPDF2.PdfReader(arquivo_pdf)
total_paginas = len(pdf.pages)
arquivo = ""  # 初始化空字符串存储内容

for pag in range(total_paginas):
    pagina = pdf.pages[pag]
    conteudo_pagina = pagina.extract_text()
    # 仅添加非空文本,避免累积空字符串
    if conteudo_pagina:
        arquivo += conteudo_pagina

print(arquivo)

二、解决3页及之后提取空内容的问题

如果修正后仍无法提取3页后的内容,大概率是PyPDF2对该PDF的格式支持不足,可尝试以下方案:

方案1:换用pdfplumber工具

pdfplumber的文本提取逻辑更健壮,能处理更多复杂PDF布局:

  1. 先安装依赖:
pip install pdfplumber
  1. 替换代码:
import pdfplumber

arquivo_pdf = r'D:\PYTHON\PREFEITURA_SP\ATA40221.pdf'
arquivo = ""

with pdfplumber.open(arquivo_pdf) as pdf:
    for pagina in pdf.pages:
        conteudo_pagina = pagina.extract_text()
        if conteudo_pagina:
            arquivo += conteudo_pagina

print(arquivo)

方案2:如果是扫描件(图片型PDF)

若PDF是扫描生成的(本质是图片集合),普通文本提取工具无法识别,需用OCR工具:

  1. 安装依赖:
pip install pytesseract pdf2image

同时需在本地安装Tesseract OCR引擎(根据操作系统选择对应版本)。
2. OCR提取代码:

from pdf2image import convert_from_path
import pytesseract

arquivo_pdf = r'D:\PYTHON\PREFEITURA_SP\ATA40221.pdf'
arquivo = ""

# 将PDF每页转换为图片
pages = convert_from_path(arquivo_pdf)
for page in pages:
    # 识别图片中的文本(lang='por'对应葡萄牙语,可根据PDF语言调整)
    conteudo_pagina = pytesseract.image_to_string(page, lang='por')
    arquivo += conteudo_pagina

print(arquivo)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 23:13:19