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

Python3.12.5下PyPDF2合并PDF报TypeError: unhashable type: 'ArrayObject'求助

解决PyPDF2合并PDF时的TypeError: unhashable type: 'ArrayObject'错误

这个错误是PyPDF2处理部分特殊结构PDF时的已知问题,多因旧版本库的bug或PDF包含非标准字典键导致,以下是几种可行解决方式:

方案1:升级PyPDF2到最新稳定版

运行命令更新库:

pip install --upgrade PyPDF2

新版本已修复大量PDF结构处理的bug,多数情况下能直接解决该问题。

方案2:换用PyMuPDF库处理合并

若升级后问题仍存在,推荐使用兼容性更强的PyMuPDF(fitz)替代,代码示例如下:

import fitz

def merge_pdfs(pdf_list, output_pdf):
    merged_doc = fitz.open()
    for pdf_path in pdf_list:
        with fitz.open(pdf_path) as doc:
            merged_doc.insert_pdf(doc)
    merged_doc.save(output_pdf)
    merged_doc.close()

if __name__ == '__main__':
    pdf_files = ['2019.pdf', '2020.pdf']
    merge_pdfs(pdf_files, 'merged_output.pdf')

安装PyMuPDF的命令:

pip install pymupdf

方案3:临时修改PyPDF2源码(不推荐)

如果必须使用当前版本的PyPDF2,可临时修改库文件修复问题:
找到PyPDF2/generic/_data_structures.py文件,定位到DictionaryObject.read_from_stream方法的第395行,将原代码:

if not data.get(key):

替换为:

if isinstance(key, (str, bytes)) and not data.get(key):

此修改会跳过非哈希类型的键,避免触发错误,但仅作为临时 workaround,优先推荐前两种方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 18:22:22