批量识别图中文字自动命名,让你1秒找到骚图

有些话、适合烂在心里 提交于 2020-04-27 11:09:40

自从上次批量的保存了半佛老师的各种骚图之后:我用Python一键保存了半佛老师所有的骚气表情包,每次做视频,找图就相当的费劲,因为图片太多,每次想要找到固定的图的话。就像大海捞针一样。因为上个版本的代码保存图片是截取部分图片链接进行命名的,所以名称是随机的。

所以今天我准备对这些图片重新命名。按照表情包中的文字来命名。所以我得找到能够识别图片中文字的方法。基础的方法的话,那就需要安装图像处理相关的库,像 pillow、pytesser3、Tesseract-OCR 等等库。用这些库识别图片中的文字的成功率不是很高,所有我准备调用一下第三方的一些库。我看了一下百度有个文字识别的API接口。我们需要在下面地址注册应用。

https://ai.baidu.com/tech/ocr

我们在文字识别里面去创建一个应用,选择图片文字识别。

通用文字识别接口一天有5万次免费调用次数,对我们保存的几千多张的图片来说,绰绰有余了。

创建成功之后返回应用列表,我们可以看到刚刚创建的应用,有三个重要的参数,我们等下会用到 AppID、API Key、Secret Key。

我们就可以调用百度的这个识别图片文字的API接口库。我们首先需要安装这个baidu-aip库。

pip install baidu-aip

使用这个文字识别接口挑了几张图测试下效果:

总结下:

1、gif图片不识别,只能识别静态图,jpg、png、jpeg等。
2、识别成功率并不是100%,比如「人」会被识别成「入」。

3、图片中文字有换行的,都会分开以字典形式保存在 words_result 列表中。

我对有多行的文字全部加起来,组成一行文字。

图片中有时会存在无法保存为名称的符号。

我用 replace 方法对它进行替换去除。

title = t.replace('/', '').replace('\\', '').replace(':', '').replace('*', '').replace('?', '').replace('<', '')\
            .replace('>', '').replace('|', '').replace('.', '')

gif 动态图无法识别,我们对它按照时间戳重命名。

表情包中没有文字的,我们也以时间戳命名。

给出我们需要批量改名称的文件夹目录,使用 rename 方法就可以批量改名字。

当然,我们也可以对上个版本的代码进行优化,就是边保存图片的时候边重命名。在下载图片的 download 方法后面加下根据表情包中文字重命名的方法即可。

效果如下:

这样,大部分的图片名称就是根据图中文字命名的,搜索起来更加方便了。比如,我要搜索「川 人类之光 普 老师」的素材的时候,输入「人类之光」就可以找到了。

最后,原创视频昨天已发到 B 站,很魔性,一起来欣赏下吧!

硬核加倍,识别表情包中文字当成名称命名,1秒找到我要的表情包

本文两个版本的代码(边保存变改名和对一个目录下的所有图片批量改名)全部发在 GitHub 上了,在本公众号「Python知识圈」后台输入框回复「重命名」即可。
欢迎关注公众号「Python知识圈」,公众号后台回复关键字,获取更多干货。

回复「英语」:送你英语 7000 单词速记法,亲测非常有效。

回复「编程」:免费获赠2019最新编程资料,认真学完BAT offer 拿到手软。

回复「赚钱」:领取简单可实操的 36 个赚钱的小项目,每天多赚100块零花钱。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!