用 Python 去除 PDF 水印,你学会吗?

Python处理PDF——PyMuPDF中图像的使用(2) 文章目录1、从文档页面生成图像page.get_pixmap()参数2、提升图像分辨率3、创建部分像素贴图(`Clips`)4、PDF文档提取图像如何获取`xref`的值呢? 本文记录PyMuPDF库中有关Image的使用方法 关于PyMuPDF库的安装、介绍及基本使用可参考博客: Python处理PDF——PyMuPDF的安装与使用(1)_ling620的专栏-优快云博客 1、从文档页面生成图像 这个脚本将获取一个文档文件名,并将每个页面生成一个PNG文件保存在脚本目录中。 文档可以是任何受支持的类 阅读详情

今天介绍下用 Python 去除 PDF (图片)的水印。思路很简单,代码也很简洁。

首先来考虑 Python 如何去除图片的水印,然后再将思路复用到 PDF 上面。

这张图片是前几天整理《数据结构和算法》PDF里的一个截图,带着公众号的水印。

从上图可以明显看到,为了不影响阅读正文,水印颜色一般比较浅。因此,我们可以利用颜色差这个特征来去掉水印。即:用 Python 读取图片的颜色,并将浅颜色部分变白。

Python 标准库 PIL 可以获取图片的颜色,Python2 是系统自带的,Python3 需要自己安装,我用的 Python 3.8,需要执行以下命令安装

pip install pillow 

安装完成,读取图片,并获取图片的尺寸(宽度和高度)

from PIL import Image 
 
img = Image.open('watermark_pic.png') 
 
width, height = img.size 

进行下一步之前,先简单介绍下计算机里关于颜色的知识。光学三原色是红绿蓝(RGB),也就是说它们是不可分解的三种基本颜色,其他颜色都可以通过这三种颜色混合而成,三种颜色等比例混合就是白色,没有光就是黑色。

在计算机中,可以用三个字节表示 RGB 颜色,1个字节能表示的最大数值是 255, 所以,(255, 0, 0)代表红色,(0, 255, 0)代表绿色,(0, 0, 255)代表蓝色。相应地,(255, 255, 255)代表白色,(0, 0, 0)代表黑色。从(0, 0, 0) ~ (255, 255, 255) 之间的任意组合都可以代表一个不同的颜色。

接下来我们可以通过下面代码读取图片的 RGB

for i in range(width): 
    for j in range(height): 
        pos = (i, j) 
        print(img.getpixel(pos)[:3]) 

图片每个位置颜色由四元组表示,前三位分别是 RGB,第四位是 Alpha 通道,我们不需要关心。

有了 RGB ,我们就可以对其修改。

从图中可以发现,水印的 RGB 是 #d9d9d9,这里是用十六进制表示的,其实就是(217, 217, 217)。

这三个颜色值都越靠近 255,颜色就越淡,当它们都变成 255,也就成了白色。所以只要 RGB 都大于 217 的位置,我们都可以给它填成白色。即:RGB 三位数之和大于等于 651。

if sum(img.getpixel(pos)[:3]) >= 651: 
 
img.putpixel(pos, (255, 255, 255)) 

完整代码如下:

from PIL import Image 
 
img = Image.open('watermark_pic.png') 
width, height = img.size 
 
for i in range(width): 
    for j in range(height): 
        pos = (i, j) 
        if sum(img.getpixel(pos)[:3]) >= 651: 
            img.putpixel(pos, (255, 255, 255)) 
 
img.save('watermark_removed_pic.png') 

有了上面的基础,去除 PDF 的水印就简单了,思路是将每页 PDF 转成图片,然后修改水印的 RGB,最后输出图片即可。

安装 pymupdf 库,用来来操作 PDF

pip install pymupdf 

读取 PDF,并转图片

import fitz 
 
 
doc = fitz.open("数据结构和算法手册@公众号渡码.pdf") 
 
for page in doc: 
    pix = page.get_pixmap() 

该 PDF 共 480 页,所以需要遍历每一页,并获取每一页对应的图片pix。pix对象类似于我们上面看到的img对象,可以读取、修改它的 RGB。

page.get_pixmap() 这个操作是不可逆的,即能够实现从 PDF 到图片的转换,但修改图片 RGB 后无法应用到 PDF 上,只能输出为图片。

修改水印 RGB 跟刚才一样,区别是这里的 RGB 是一个三元组,没有 Alpha 通道,代码如下:

from itertools import product 
 
for pos in product(range(pix.width), range(pix.height)): 
    if sum(pix.pixel(pos[0], pos[1])) >= 651: 
        pix.set_pixel(pos[0], pos[1], (255, 255, 255)) 

完整代码如下:

from itertools import product 
 
import fitz 
 
doc = fitz.open("数据结构和算法手册@公众号渡码.pdf") 
 
page_no = 0 
 
for page in doc: 
 
pix = page.get_pixmap() 
 
for pos in product(range(pix.width), range(pix.height)): 
 
if sum(pix.pixel(pos[0], pos[1])) >= 651: 
 
pix.set_pixel(pos[0], pos[1], (255, 255, 255)) 
 
pix.pil_save(f"pdf_pics/page_{page_no}.png", dpi=(30000, 30000)) 
 
print(f'第 {page_no} 页去除完成') 
 
page_no += 1 

这种方案是有缺点的,第一,输出并非 PDF 格式;第二,输出的图片比较模糊,后续还有待优化,最好是能直接修改 PDF。

 

 

python利用PIL及openpyxl实现图片转为excel表格 最开始是看了一个b站视频,他采用了python加vba实现了将一个图片转化在excel表格当中。https://www.bilibili.com/video/av55033139?t=300 首先是python代码 这里有个相对陌生的模块pIL(Python Imaging Library),pip install Pillow即可安装 这里分析标量图里各个像素的rgb值,并生成一个txt文件 f... 阅读详情

相关推荐

Python处理PDF——PyMuPDF的安装与使用(1)

文章目录1、`PyMuPDF`简介1. 资料链接2. 介绍3. 功能2、安装关于命名`fitz`的说明3、使用方法1. 导入库,查看版本2. 打开文档3. Document的方法和属性4. 获取元数据5. 获取目标大纲6. 页面(`Page`)a. 检查页面的链接、批注或表单字段b. 呈现页面c. 将页面图像保存到文件中d. 提取文本和图像e. 搜索文本7. PD操作a. 修改、创建、重新排列和删除页面b. 连接和拆分PDF文档c. 保存d. 关闭 1、PyMuPDF简介 1. 资料链接 github地

ling620的专栏 3万+

PYTHON PyMuPDF PDF转图片创建pixmap报错:‘Page‘ object has no attribute ‘getPixmap‘

PYTHON PyMuPDF库使用 PDF转图片时使用get_pixmap()创建pixmap报错:'Page' object has no attribute 'getPixmap'

weixin_54537901的博客 6435

python一键去PDF水印,只需十行代码,超级简单...

十行Python代码,轻松去除PDF水印!

轻松学python的博客 1万+

pyMuPDF How To

1.PDF转图片 只要是支持的文档,就可以转换为图像,比如XPS,PDF等 import sys, fitz # import the binding fname = sys.argv[1] # get filename from command line doc = fitz.open(fname) # open document for page in doc: # iterate through the pages pix = page.get_pixmap() # rende

cloveses的专栏 2737

用python一键去除图片、PDF水印

PDF 去水印的原理和图片去水印的原理大致相同,用 PyMuPDF 打开 pdf 文件后, 将 pdf 的每一页都转换为图片 pixmap,pixmap 有它自己的 RGB,只需要将 pdf 水印中的 RGB 改为(255, 255, 255) 最后保存为图片。

kakA的博客 1643

用python给pdf批量添加水印,并给pdf加密

本文参考:https://blog.youkuaiyun.com/oh5w6hinug43jvrhhb/article/details/80879026 设置路径 先设置路径,把需要加水印的相关文档放入一个目录下。我的目录是:E:\python\test\pdf批量加水印os.chdir('E:\\python\\test\\pdf批量加水印\\') 准备水印pdf文件 如下代码所示。若水印为中文...

idontknow0_0的博客 1万+

用Python去除PDF水印尝试

文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结 前言     最近在下载PDF书籍的时候,发现有些PDF有水印,于是就寻思着能不能用Python去除这些讨厌的水印 一、pandas是什么? 示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。 二、使用步骤 1.引入库 代码如下(示例): import numpy as np import pandas as pd import matplotlib.

一个卑微的java开发 6231

使用 Python 简单几步去除 PDF 水印

免费豆包AI模型在处理 PDF 文件时,水印有时会影响文件的可读性或美观性。幸运的是,Python 提供了多种库来操作 PDF 文件,其中PyMuPDF(又名fitz) 是一个强大的工具,可以用于去除 PDF 水印。本文将介绍如何使用PyMuPDF去除 PDF 文件中的水印,并提供详细的代码示例。

liyananweb的博客 2072

Python去除pdf中水印

那么今天就介绍下怎么去除水印,本博客有参考其他博主思路加以整理!import os。

aobulaien001的博客 2076

如何用python一键去除图片、PDF水印?

以后无水印图片再也不求人!

xff123456_的博客 1899

利用 Python 去除 PDF 水印(和图片水印原理一样)

前言 今天介绍下用 Python 去除 PDF (图片)的水印。思路很简单,代码也很简洁。 首先来考虑 Python 如何去除图片的水印,然后再将思路复用到 PDF 上面。 原理 这张图片是前几天整理《数据结构和算法》PDF里的一个截图,带着公众号的水印。 从上图可以明显看到,为了不影响阅读正文,水印颜色一般比较浅。因此,我们可以利用颜色差这个特征来去掉水印。即:用 Python 读取图片的颜色,并将浅颜色部分变白。 准备工作 Python 标准库 PIL 可以获取图片的颜色,Py..

熬夜学习猿的博客 2823

还在到处求人发原图?不如用Python给图片和 PDF 去掉水印~

导语 哈喽呀铁汁萌~今天小编准备教大家怎样除去图片跟PDF中的水印~ 这是不是平时到处求人发原图又卑微的你 但学完这期咱们就可以站起来了!????????这水印呐~诶!咱就是说想怎么去就怎么去 网上下载的 pdf 学习资料有一些会带有水印,非常影响阅读。比如下面的图片就是在 pdf 文件上截取出来的。接下来让我们看看用Python怎样去除这些水印! 安装模块 PIL:Python Imaging Library 是 python 上非常强大的图像处理标准库,但是只能支持 pyth

L010409的博客 1万+

用Python去除扫描型PDF中的水印

内容概述 含水印扫描型PDF文件,其中某页如下图所示,用Python去除其页顶及页底的水印。 处理思路:PDF中的每一页的水印的相对位置基本相同,将PDF每一页输出成图片,然后进行图片编辑,用白色填充方形覆盖水印,最后这些处理后的图片重新合成PDF文件。 该方法缺点: 处理后的得到PDF文件大小比原文件大了不少。 那种还可以提取文字的PDF,用该法处理后PDF文件就再不能提取文字了。 很难处理夹杂在文本中水印。 副作用: 禁止打印PDF变成可打印了。 先前步骤: 安装poppler软件,并将其执

KISS 3283

Python3,10行代码,给pdf文件去水印,再也不用花费冤枉钱了。

自动学会了pdf去水印方法,再也没花过一分钱。

商务合作 | 面试培训 | 职场规划 ==>主页扫码 1万+

PDF大文件批量去除水印,又一个省心小妙招

Python免费去除PDF图片水印,还不快进来学习!?

Moster2469的博客 2950

利用python实现添加水印和去水印的小代码

python去水印,加水印

2301_81162364的博客 3005

Python项目实践(一)去除PDF指定区域内的水印

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录对比图(水印去除前后)一、原理二、代码实现三、使用教程1. 文件夹目录(pic和res文件夹需提前创建好)![在这里插入图片描述](https://img-blog.csdnimg.cn/4348aa308e62424897b1aa029da8806f.png#pic_center)2. 执行第一步代码(注释掉其他代码,以下同理)3. 执行第二步代码4. 执行第三步代码5. 图片转PDF总结 对比图(水印去除前后) 一、原理

早饭不饿的博客 5336

图像的低频,中频,高频信息含义?

看很多图像处理的博文,都会说图像的主要成分是低频信息,它形成了图像的基本灰度等级,对图像结构的决定作用较小;中频信息决定了图像的基本结构,形成了图像的主要边缘结构;高频信息形成了图像的边缘和细节,是在中频信息上对图像内容的进一步强化。我有点纳闷,图像不就是一堆像素点构成的三维矩阵吗?跟频率有啥关系! 针对这个问题,又查了不少网文,解释的也都各不相同。例如, “初学的时候,你可以把高中低这个度量和图像上相邻点的灰度差大小对等起来”。 “感性上来讲,图像越杂乱的部分,频率越高...

jinking01的专栏 3万+

pdf水印去除代码教程

计算机视觉、图像处理、毕业辅导、作业帮助、代码获取,远程协助,代码定制,私聊会回复!

QQ_1309399183的博客 1783

PFC胶结模型实战:从线性到平行粘结的力学行为解析

本文深入解析了PFC中线性接触与平行粘结(pb模型)的核心差异与应用。平行粘结模型通过模拟胶结层的力学行为,能够有效传递拉力和抵抗弯矩,是模拟岩石、混凝土等胶结材料的关键。文章详细介绍了其变形与强度参数的设置、法向与切向行为的验证方法,并揭示了全量与增量力计算中易出现的“幽灵力”问题及其解决方案,为复杂模型的构建与调试提供了实用策略。

weixin_29230773的博客 1208

Python+Flask+Echarts打造全国气象数据可视化分析大屏

本文详细介绍了如何使用Python+Flask+Echarts构建全国气象数据可视化分析大屏,实现实时监控、趋势分析和快速决策。通过Python强大的数据处理能力、Flask的轻量级优势和Echarts的交互体验,打造高效的气象数据可视化系统,提升农业、物流等行业的决策效率。

weixin_29061531的博客 1060
上一篇: 5行Python代码就能让你的电脑 “永不息屏”?
下一篇: Python 中日志记录新技能
Python_xiaowu
博客等级 码龄5年 3096粉丝 178原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值