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

如何高效将已扁平化且经过遮盖处理的PDF中所有黑色矩形修改为白色?

解决方案

方法1:Python脚本批量处理(最高效,适合多文件/大文件场景)

思路:将PDF每页渲染为图像后自动识别黑色矩形区域,批量填充为白色后重新导出PDF,全程无需人工介入。

  • 需提前安装依赖库:pymupdf、numpy、opencv-python,可通过pip install pymupdf numpy opencv-python一键安装
  • 运行脚本前仅需修改输入、输出文件路径即可,黑色识别阈值可根据实际遮盖的黑色深浅调整:
import fitz  # PyMuPDF
import cv2
import numpy as np

# 自定义配置项
input_pdf_path = "替换为你的输入PDF路径.pdf"
output_pdf_path = "替换为你的输出PDF路径.pdf"
black_threshold = 30 # 纯黑为0,若遮盖为深灰色可适当调大该值

doc = fitz.open(input_pdf_path)
new_doc = fitz.open()

for page in doc:
    # 渲染当前页为300DPI的高清图像
    pix = page.get_pixmap(dpi=300)
    img = np.frombuffer(pix.samples, dtype=np.uint8).reshape(pix.h, pix.w, pix.n)
    
    # 识别黑色区域并填充为白色
    if pix.n >= 3:
        lower_bound = np.array([0,0,0] if pix.n==3 else [0,0,0,0])
        upper_bound = np.array([black_threshold]*3 + ([255] if pix.n==4 else []))
        black_mask = cv2.inRange(img, lower_bound, upper_bound)
        img[black_mask != 0] = [255,255,255] if pix.n==3 else [255,255,255,255]
    
    # 插入处理后的页面到新PDF
    new_page = new_doc.new_page(width=page.rect.width, height=page.rect.height)
    new_page.insert_image(new_page.rect, stream=cv2.imencode('.png', img)[1].tobytes())

new_doc.save(output_pdf_path)
new_doc.close()
doc.close()

方法2:Adobe Acrobat 批量处理(无代码基础可用)

无需安装额外工具,用常用的PDF编辑器即可完成:

  • 打开目标PDF后,依次点击「工具」-「印刷制作」-「转换颜色」
  • 匹配条件设置为「颜色类型=印刷色」、「颜色值=纯黑(RGB 0,0,0 / CMYK 0,0,0,100)」
  • 替换动作设置为将匹配颜色转换为纯白(RGB 255,255,255)
  • 勾选「应用于所有页面」后执行即可完成批量替换
    *如果需要保留PDF内正常的黑色文字,可先用「选择对象」工具右键点击任意一个黑色遮盖矩形,选择「查找相似对象」,筛选出所有同属性的矩形后再统一设置填充色为白色,避免误伤正常内容。

方法3:Ghostscript 命令行处理(适合命令行用户)

仅需一行命令即可完成处理,适合批量处理多份PDF的场景:

gs -o 输出文件名.pdf -sDEVICE=pdfwrite -c "/setrgbcolor {0 0 0 eq {1 1 1 setrgbcolor} if} bind def" -f 输入文件名.pdf

*该命令默认将所有纯黑色内容替换为白色,若需要保留正常黑色文字,可额外添加矢量对象筛选参数限定仅修改矩形元素。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 07:27:03