You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

使用Python3读取PDF转文本报错:'PDFObjRef'对象无'decode'属性

解决pdfminer.six中AttributeError: 'PDFObjRef' object has no attribute 'decode'的问题

我之前也碰到过一模一样的错误!这个问题大多出在pdfminer.six的版本兼容上,或是底层API处理特殊PDF对象时的bug。给你几个实用的解决办法:

  • 优先升级pdfminer.six到最新版本
    这个错误在旧版本的pdfminer.six里很常见,官方已经修复了相关的对象引用解析问题。打开终端运行:

    pip install --upgrade pdfminer.six
    

    升级后再跑你原来的代码,大概率就能解决问题。

  • 改用更简洁的高层API(推荐)
    pdfminer.six其实已经封装了更易用的extract_text函数,不用手动管理资源管理器、解释器这些底层组件,代码更简洁也不容易踩坑。修改后的代码如下:

    from pdfminer.high_level import extract_text
    
    def pdfparser(data):
        # 直接调用extract_text读取PDF文件内容
        text_content = extract_text(data)
        print(text_content)
    
    # 替换成你的目标PDF文件路径
    pdfparser("your_target.pdf")
    
  • 坚持用底层API的调整方案
    如果你一定要保留原代码结构,可以尝试在PDFPage.get_pages中添加参数确保只处理可提取内容,同时检查PDF文件是否存在加密或损坏情况:
    修改循环部分的代码:

    for page in PDFPage.get_pages(fp, check_extractable=True):
        interpreter.process_page(page)
    

    另外也可以尝试调整LAParams参数(比如设置detect_vertical=True),不过这个效果因人而异,还是升级版本或用高层API更靠谱。

错误原因说明

这个AttributeError本质是旧版本pdfminer.six在解析PDF中的对象引用(PDFObjRef)时,没有正确将其转换为可处理的字符串类型,导致后续代码试图调用decode方法失败,新版本已经修复了这个解析逻辑的bug。

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

火山引擎 最新活动