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

使用PyMuPDF删除PDF注释时报mupdf: invalid key in dict错误如何解决

报错截图

错误原因

  • doc.save()方法被放置在页面遍历循环内部,每处理完1页就执行一次保存操作,会直接修改文档对象的底层结构,后续遍历其余页面时就会触发mupdf底层的invalid key in dict异常。
  • 直接遍历page.annots()迭代器的同时执行删除操作,会导致迭代器失效,部分结构不规范的PDF也会触发同类报错。

修复后代码

import fitz
import re

doc = fitz.open("test.pdf")
# 遍历所有页面,提前转成列表避免遍历过程中文档结构变化引发异常
for page in list(doc):
    # 提前将当前页所有注释转成列表,避免删除操作导致迭代器失效
    for annot in list(page.annots()):
        try:
            page.delete_annot(annot)
        except RuntimeError:
            # 跳过结构异常的注释,避免中断整体执行
            continue
# 全部页面处理完成后统一执行保存
doc.save('test1.pdf')
doc.close()

补充说明

如果源PDF本身存在结构损坏,可在打开文件时开启自动修复参数:
doc = fitz.open("test.pdf", repair=True)


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 19:54:02