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

使用Python的PyPDF2库读取PDF时遭遇DeprecationError的问题求助

PyPDF2 读取PDF触发DeprecationError的解决方法

问题场景

使用PyPDF2读取同目录下spm.pdf文件时出现废弃错误,原代码如下:

def pdf_reader():
        book = open("spm.pdf","rb")
        pdfReader = PyPDF2.PdfFileReader(book)
        pages = pdfReader.numPages
        speak(f"Total number of pages in this book are {pages}")
        speak("Sir please enter the page number which you want me to read")
        pg = int(input("enter the page number here : "))
        page = pdfReader.getPage(pg)
        text = page.extractText()
        speak(text)

运行后报错信息:

Traceback (most recent call last):   
  File "c:\Users\Ishu\Desktop\jarvis\jarvis.py", line 269, in run
    TaskExecution()
  File "c:\Users\Ishu\Desktop\jarvis\jarvis.py", line 261, in TaskExecution
    pdf_reader()
  File "c:\Users\Ishu\Desktop\jarvis\jarvis.py", line 93, in pdf_reader   
    pdfReader = PyPDF2.PdfFileReader(book)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Ishu\AppData\Local\Programs\Python\Python311\Lib\site-packages\PyPDF2\_reader.py", line 1974, 
in __init__
    deprecation_with_replacement("PdfFileReader", "PdfReader", "3.0.0")   
  File "C:\Users\Ishu\AppData\Local\Programs\Python\Python311\Lib\site-packages\PyPDF2\_utils.py", line 369, in deprecation_with_replacement        
    deprecation(DEPR_MSG_HAPPENED.format(old_name, removed_in, new_name)) 
  File "C:\Users\Ishu\AppData\Local\Programs\Python\Python311\Lib\site-packages\PyPDF2\_utils.py", line 351, in deprecation
    raise DeprecationError(msg)      
PyPDF2.errors.DeprecationError: PdfFileReader is deprecated and was removed in PyPDF2 3.0.0. Use PdfReader instead.

解决方案

PyPDF2 3.0.0+版本对API做了多处调整,需同步修改以下几个点:

修改后的完整代码:

def pdf_reader():
        with open("spm.pdf","rb") as book:  # 用with语句自动管理文件资源,避免泄漏
            pdfReader = PyPDF2.PdfReader(book)
            pages = len(pdfReader.pages)  # 原numPages属性替换为pages列表,通过len获取页数
            speak(f"Total number of pages in this book are {pages}")
            speak("Sir please enter the page number which you want me to read")
            pg = int(input("enter the page number here : "))
            page = pdfReader.pages[pg]  # 原getPage方法替换为直接索引pages列表
            text = page.extract_text()  # 原extractText方法替换为蛇形命名的extract_text
            speak(text)

核心修改项:

  • 废弃类PdfFileReader替换为新类PdfReader
  • 页数获取方式从numPages属性改为len(pdfReader.pages)
  • 页面获取方式从getPage(pg)改为pages[pg]
  • 文本提取方法从extractText()改为extract_text()
  • 新增with语句优化文件操作逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 12:55:18