当前位置: 首页 > news >正文

【Python实战】如何优雅地实现 PDF 去水印?

话接上篇,自动化处理 PDF 文档,完美实现 WPS 会员功能

小伙伴们更关心的是如何去除 PDF 中的水印~

今天,就来分享一个超简单的 PDF 去水印方法~

1. 原理介绍

在上一篇中,我们介绍了如何将 PDF 文档转换成图片,图片就是 RGB 三通道像素点的集合。

我们发现:水印的像素点和正常文字的像素点是有显著区别的。

如何查看水印的像素是多少呢?

最简单的方式是打开一个截图工具,聚焦到水印位置即可看到:

所以,水印的像素值有如下特点:

  • 像素分布在 180 - 250 (注:必要时,阈值需适当调整);
  • RGB三通道的像素值基本相同。

基于上述两个特点,我们就可以找到水印像素点的位置。

2. 代码实操

为了完美实现上述的两个判断,当然你可以写两层 for 循环遍历像素值进行判断,不过一旦图像尺寸太大,处理速度就令人抓狂了。

最简单的方式就是采用 numpy 数组进行操作:

import numpy as np
def judege_wm(img, low=180, high=250):# 通过像素判断low_bound = np.array([low, low, low])high_bound = np.array([high, high, high])mask = (img > low_bound) & (img < high_bound) & (np.abs(img-img.mean(-1, keepdims=True)).sum(-1, keepdims=True) < 10) # 要求rgb值相差不能太大img[mask] = 255return img

最后,我们来看下处理后的效果:

3. 整体流程

上述步骤,我们介绍了如何去除图片中的水印。

说好的 PDF 去水印呢?

来,参照下述流程走一遍:

关于如何实现:PDF转换成图片 以及 图片转换成PDF,上篇已经给出了详细教程:自动化处理 PDF 文档,完美实现 WPS 会员功能

写在最后

本文给大家带来了一种最简单的图片 & PDF 去水印方法,可以满足绝大部分白底黑字的文档场景。

如果背景图像纷繁复杂,本方法还无法完美解决。

欢迎有其他解决方案的小伙伴,评论区交流下啊~

如果本文对你有帮助,欢迎点赞收藏备用。

http://www.lryc.cn/news/413462.html

相关文章:

  • Keysight(原Agilent) E4980AL 精密 LCR 表特性与技术指标
  • 【运维】Redis主从复制 配置
  • C++ 微积分 - 求导 - 自动微分(Automatic Differentiation)
  • 面试题-每日5道
  • STM32卡死、跑飞如何调试确定问题
  • 代理模式和Spring MVC
  • 深入理解Vue slot的原理
  • git fetch作用与用法
  • pycharm如何查看git历史版本变更信息
  • 【2.2 python中的变量】
  • Python软体中找出一组字符串的最长公共前缀:算法与实现
  • git lfs使用(huggingface下载大模型文件)-教程记录
  • 1. 什么是操作系统
  • 数据科学 - 数据预处理 (数据清洗,结构化数据)
  • 基于SpringBoot+Vue的校车调度管理系统(带1w+文档)
  • 基于改进拥挤距离的多模态多目标优化差分进化(MMODE-ICD)求解无人机三维路径规划(MATLAB代码)
  • opencascade AIS_Trihedron源码学习 绘制三轴坐标系
  • 【C++】C++应用案例-通讯录管理系统
  • 使用Python自动批量提取增值税发票信息并导出为Excel文件
  • vitis (eclipse) 的Indexer不能搜索、不能跳转到函数和变量定义和声明不能打开调用层次的解决方法
  • 最佳HR软件指南:11款高效管理工具
  • 家长为孩子出国留学择校的四个步骤
  • 数据挖掘可以挖掘什么类型的模式?
  • JAVA中的隐式参数this
  • ThreadLocal 使用和详解避坑
  • Python中使用类方法的返回值在其他方法中继续调用,return self进行链式调用
  • 基于IOT架构的数据采集监控平台!
  • 初见scikit-learn之基础教程
  • 基于STM32的嵌入式深度学习系统教程
  • hive udf去掉map中的一个或者多个key