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

如何在Python中解析PDF的IndirectObject并提取数据?

解决PyPDF2中IndirectObject问题并提取PDF数据

1. 理解IndirectObject的本质

你看到的IndirectObject不是错误,是PyPDF2对PDF页面对象的内部引用方式。getPage(0)返回的是Page对象,直接打印它只会显示内部引用标识,而不是页面内容。要提取数据,需要调用Page对象的文本提取方法。

2. 提取文本的正确代码

修改你的代码,使用extract_text()方法获取页面内容:

import PyPDF2

path = 'cutoffs.pdf'
reader = PyPDF2.PdfReader(path)  # PyPDF2 v2.x版本推荐用PdfReader,PdfFileReader已被弃用
page_1 = reader.pages[0]  # v2.x版本用pages索引获取页面,替代getPage()
text = page_1.extract_text()
print(text)

3. 处理无法提取文本的情况

如果运行后没有得到有效文本,大概率是因为这个PDF是扫描生成的图片型PDF,PyPDF2无法提取图片里的文字,需要用OCR工具处理:

  • 先安装依赖:pip install pytesseract pillow pdf2image
  • 然后用以下代码(需提前安装Tesseract OCR引擎):
import pytesseract
from pdf2image import convert_from_path

# 将PDF页面转为图片
pages = convert_from_path('cutoffs.pdf', 500)
for i, page in enumerate(pages):
    # 用Tesseract提取图片中的文字
    text = pytesseract.image_to_string(page, lang='eng')
    print(f"第{i+1}页内容:")
    print(text)

4. 版本兼容提示

PyPDF2在v2.x版本做了API变更,PdfFileReader和getPage()已经被标记为弃用,建议使用PdfReader和pages属性来获取页面,避免后续版本出现兼容问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 04:32:05