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

使用pypdf提取TCPDF生成的PDF文本时触发IndexError报错的解决方案咨询

使用pypdf提取TCPDF生成的PDF文本时触发IndexError报错的解决方案咨询

我最近遇到一个棘手的问题,想请教社区的各位有没有可行的解决办法:

问题背景

我目前使用Python 3.10.11和pypdf 3.17.0做PDF文本提取工作,大部分文件都能正常处理,但遇到一类由TCPDF生成的PDF时,调用extract_text()方法就会触发IndexError,具体报错栈追踪如下:

File "...\pypdf_cmap.py", line 481, in type1_alternative
if words[3] != b"put":
IndexError: list index out of range

这类PDF并没有加密,我可以正常获取它的元数据,也能执行其他PDF操作,但唯独提取文本时会报错。我搜索了相关问题,没找到完全匹配这个报错的案例,但感觉和“Python无法提取部分PDF文本”“PyPDF2字体读取异常”这类场景有点相似。

测试对比情况

我尝试用已经被弃用的PyPDF2(据我了解开发者已经将维护精力转移到pypdf上了)来提取同一份PDF,反而能正常获取到文本。测试代码如下:

# 切换注释以下两行进行测试
# from pypdf import PdfReader
# from PyPDF2 import PdfReader

reader = PdfReader("example.pdf")
number_of_pages = len(reader.pages)
page = reader.pages[0]
text = page.extract_text()
print(text)

使用PyPDF2运行时,能正常输出类似CÁMARA DE COMERCIO...的完整文本;但换成pypdf运行,就会抛出上面的IndexError。

我的诉求

我不想为了这类特殊PDF在项目中多引入一个依赖,更希望继续使用pypdf。所以想请教大家:有没有办法让pypdf正常处理这类TCPDF生成的PDF?是不是我在使用过程中遗漏了什么配置或操作?

备注:内容来源于stack exchange,提问作者sescobar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.21 08:44:35