基于Python批量去水印优化批量OCR的质量

3 篇文章 0 订阅

中国传媒大学2022硕士研究生录取名单终于出来了,根据我写的上一篇文章:基于批量OCR分析中传研究生录取名单
分析了一下,没想到我居然初试材料复试三个第一,然而感觉自己还是有很多不足之处和可以改进的地方。今天在中传研究生群里受到了一位国重大佬的启发,想到了可以用python批量去水印的方法去除中传研究生录取名单里的大logo,这样可以使OCR识别效果更准确。

  1. 首先了解logo水印类型
    在这里插入图片描述
    logo几乎是一个颜色,整体RGB值在一定范围内,可以将该水印区域的RGB值变成白色,能够增强OCR识别的精确度。
  2. 获取logo的RGB值
    很多软件都能识别RGB值,这里我选择常用的PS工具,点击吸管工具-吸取logo区域-设置前景色,就能找到logo的RGB大致范围在这里插入图片描述
    这里的RGB是波动的,但我们只需要看R+G+B的值大致范围,比如说这里大致都在300以上,可以令RGB值之和大于300的都变成白色(如这里[202,172,36]变成[255,255,255])
  3. 用Python批量去水印
#这里只写出新加的代码
from itertools import product
from PIL import Image
from io import BytesIO
#其余代码见我写的上一篇文章
#这里只写了新加的循环体里的内容
    filePath1 = filePath + "\\yan (" + str(i) +").png"
    #需要先去水印
    img = Image.open(filePath1)
    width, height = img.size
    for pos in product(range(width), range(height)):
            if sum(img.getpixel(pos)[:3]) > 300:
                    img.putpixel(pos, (255, 255, 255))
    #转化为二进制传输到百度api
    img_bytes = BytesIO()
    img.save(img_bytes, format='png')
    img_bytes = img_bytes.getvalue()
    table = aipOcr.tableRecognitionAsync(img_bytes)
    # 调用表格识别模块识别图片

这里只给出了新加的代码,需要用到PIL库的Image进行图像处理,io的BytesIO将PIL图形转换成二进制进行网络传输(百度api仅支持二进制传输),使RGB值之和大于300的变成白色,方便OCR识别。(这里实时二进制传输可能会出现问题,重试一遍即可)

  1. R语言部分代码优化
    在上一篇文章中R语言合并的部分可能会出现有的表格第一行为空的情况,我对之前的R语言代码进行了如下改进:
library(readxl)
# 设置工作空间
setwd('D:/360极速浏览器下载/2022拟录取名单/')
# 读取该工作空间下的所有文件名
filenames <- dir()
# 通过正则,获取所有xls结尾的文件名
filenames2 <- grep('.xls', filenames, value = TRUE)
# 初始化数据框,用于后面的数据合并
data3 <- data.frame()
#通过循环完成数据合并
for (i in filenames2){
  # 构造数据路径
  path <- paste0('D:/360极速浏览器下载/2022拟录取名单/',i)
  # 读取并合并数据
  data2 <- read_xls(path = path,sheet='body',skip=1,col_names = TRUE)
  data2$index <- i
  fit<-try(data3 <- rbind(data3,data2),silent=TRUE)
  if('try-error' %in% class(fit)){
    data2 <- read_xls(path = path,sheet='body',col_names = TRUE)
    data2$index <- i
    data3 <- rbind(data3,data2)
  }
}
write.csv(data3, file="D:/2022拟录取名单.csv",row.names = FALSE)

使用了try函数,如果合并失败,说明第一行没有识别出来,需要重新读取skip=0(默认)

  1. 最终的总录取名单
    在这里插入图片描述
    可以看到识别非常精准,说明批量去水印能显著改善批量OCR的质量,但是程序运行时间也相应的变长了。所以如果只是做正则匹配的话没必要那么精确,使用我上一篇文章的方法近似处理也许是更高效的选择。最终得到的总录取名单见我发的:中国传媒大学2022硕士研究生录取名单电子版(一志愿)


写在最后,特别感谢自己这么长时间来的努力,感谢那个积极治疗、乐观生活的自我。虽然考研期间总是在生病,也遇到了很多坎坷,但依然能够在卷王之卷的2022考研中实现自己的梦想。
在这里插入图片描述
选择这个专业是因为热爱,热爱可抵岁月漫长。众所周知统计学在计算机、金融领域十分受欢迎,但是我学了这么多发现我并不感兴趣,以后还是想做多媒体数据挖掘方向,将专业知识运用在传媒或信息传播领域。
我的导师也是一名非常优秀的老师,我特别喜欢她。双向奔赴的爱有多么美好😘在这里插入图片描述
希望大家都能考上理想的学校,我们都有美好的未来。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

清洄KAKA

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值