作者:美图博客
https://www.meitubk.com/zatan/229.html
前言
最近写了一款微信小程序需要用到图片审核,人工审核是不可能的人工审核的太费精力了,所以我就写了一个多线程批量识别脚本来处理,主要是调用百度 AI 的接口,这里我是付费了也不贵审核一条 1 分钱不到,再说我的图片也没有很多,而且实名认证可以免费 10000 条。
准备
去百度 AI 平台注册一个账号,然后去申请一个内容审核的应用,申请完会给你一些程序需要用到的密钥。然后根据说明文档下载 Python 的 SDK,大家还是看一下开发文档的好,也不多就几行而已。里面比较关键的数据就是这个,返回结果类型
conclusionType 审核结果类型,可取值 1、2、3、4,分别代表 1:合规,2:不合规,3:疑似,4:审核失败
当你完成了上面操作后你就可以上代码了
代码
import json
from aip import AipImageCensor
from multiprocessing.pool import ThreadPoolchecks = []
file_dumps = open("./dump.txt", "w", encoding='utf-8')cur_count = 0
global_count = 0# 这边就是填你上面申请的密钥
APP_ID = ''
API_KEY = ''
SECRET_KEY = ''def onetest(url):global cur_counttry:client = AipImageCensor(APP_ID, API_KEY, SECRET_KEY)result = client.imageCensorUserDefined(url)result = json.loads(str(result).replace("'", '"'))print(str(result) + " - {" + str(cur_count) + "/" + str(global_count) + "}")if "'conclusionType': 1" in str(result):file_dumps.write(url)cur_count = cur_count + 1except Exception as e:print(e)def loaddata():global global_countwith open("./urls.txt", "r", encoding='utf-8') as file:for line in file.readlines():checks.append(line)global_count = len(checks)def main():loaddata()pool = ThreadPool(processes=50)pool.map(onetest, checks)pool.close()pool.join()if __name__ == '__main__':main()
你只需要准备好 urls.txt 这个放一堆链接的文件就可以了。当然我这是调用的远程图片,你也可以根据文档改成本地图片道理是一样的。
结语
审核的时候忘记截图了,反正运行上面的代码你只需要去泡杯茶就可以了,接下来完全交给程序操作。