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

如何批量移除PDF中重复的可选中文字水印?

批量移除PDF固定位置文字水印的可行方案

原脚本失效的常见原因

你的PyMuPDF脚本未成功,大概率是以下原因之一:

  • 文本匹配不精准:水印文字可能存在大小写差异、隐藏字符,或PDF文本编码导致搜索不到目标内容
  • 红印应用时机错误:原脚本在每个匹配实例后立即执行apply_redactions,可能干扰后续文本搜索
  • 未指定填充色:默认红印可能未完全覆盖水印,导致残留

方案一:优化文本搜索与红印处理

调整脚本逻辑,确保精准匹配并批量处理红印,同时用白色填充覆盖水印:

import fitz

pdf_document = "Gravitation CJM21.pdf"
doc = fitz.open(pdf_document)
target_text = "PHYSICS"

for page_idx in range(len(doc)):
    page = doc.load_page(page_idx)
    # 忽略大小写搜索所有匹配的文本区域,返回四边形坐标
    matches = page.search_for(target_text, quads=True, case=False)
    
    if not matches:
        print(f"第 {page_idx+1} 页未找到目标水印文本")
        continue
    
    # 批量添加红印注释,指定白色填充
    for quad in matches:
        page.add_redact_annot(quad, fill=(1, 1, 1))
    # 一次性应用所有红印,彻底移除文本
    page.apply_redactions(flags=fitz.REDACT_FLAGS_REMOVE)

# 保存时启用压缩,减小输出文件体积
doc.save("output_cleaned.pdf", garbage=4, deflate=True)
doc.close()

方案二:固定位置矩形覆盖(更可靠)

由于水印在每页固定位置,直接用与页面背景色一致的矩形覆盖,无需依赖文本搜索,稳定性更高:

步骤1:获取水印的矩形坐标

先运行以下脚本,查看目标水印的坐标(PDF坐标原点在页面左下角):

import fitz

doc = fitz.open("Gravitation CJM21.pdf")
page = doc.load_page(0)  # 查看第一页的文字坐标
for word in page.get_text("words"):
    # 输出格式:(左边界, 下边界, 右边界, 上边界, 文字内容)
    print(f"文字: {word[4]}, 坐标: ({word[0]:.2f}, {word[1]:.2f}, {word[2]:.2f}, {word[3]:.2f})")
doc.close()

步骤2:批量覆盖水印

将上一步获取的坐标替换到watermark_rect中,运行脚本:

import fitz

pdf_document = "Gravitation CJM21.pdf"
doc = fitz.open(pdf_document)
# 替换为你实际获取的水印矩形坐标(左, 下, 右, 上)
watermark_rect = fitz.Rect(150, 60, 350, 90)

for page_idx in range(len(doc)):
    page = doc.load_page(page_idx)
    # 绘制白色矩形覆盖水印,overlay=True确保矩形在最上层
    page.draw_rect(watermark_rect, color=(1, 1, 1), fill=(1, 1, 1), overlay=True)

doc.save("output_fixed.pdf", garbage=4, deflate=True)
doc.close()

注意事项

  • 若页面背景色不是白色,需将填充色(1,1,1)替换为对应背景的RGB值
  • 使用garbage=4和deflate=True参数可有效压缩PDF,解决原文件过大的问题
  • PyMuPDF处理大文件时内存占用低,无需担心性能问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 11:03:17