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

使用pypdf提取PDF注释内容时遇/Contents键错误的解决求助

解决pypdf提取PDF注释时的KeyError问题

问题根源在于你直接通过键访问/Contents字段,当注释对象不存在该字段时(比如仅含空格的注释可能未被PDF文件存储这个字段),就会触发KeyError。以下是可行的解决思路:

  • 用字典的get()方法安全获取/Contents,指定默认值(比如空字符串),避免直接访问键引发错误
  • 对获取到的内容做去空格处理,统一判断是否为空或仅含空白字符

修改后的代码如下:

from pypdf import PdfReader

reader = PdfReader("example.pdf")

for page in reader.pages:
    if "/Annots" in page:
        for annot in page["/Annots"]:
            annot_obj = annot.get_object()
            subtype = annot_obj.get("/Subtype")
            if subtype == "/Text":
                # 用get方法安全获取Contents,无此字段时返回空字符串
                contents = annot_obj.get("/Contents", "")
                # 去除首尾空白字符后判断是否为空
                if contents.strip() == "":
                    print("仅含空格或无内容")
                else:
                    print(contents)

说明:

  1. 提前把annot.get_object()存入变量annot_obj,避免重复调用,提升效率
  2. 用get()方法获取/Subtype和/Contents,比直接键访问更健壮
  3. 用strip()处理内容,能覆盖仅含空格、制表符、换行符等多种空白场景

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 17:02:03