Python黄图批量鉴别审核(多线程版)

Posted meitubk

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python黄图批量鉴别审核(多线程版)相关的知识,希望对你有一定的参考价值。

前言

最近写了一款微信小程序需要用到图片审核,人工审核是不可能的人工审核的太费精力了,所以我就写了一个多线程批量识别脚本来处理,主要是调用百度AI的接口,这里我是付费了也不贵审核一条1分钱不到,再说我的图片也没有很多,而且实名认证可以免费10000条。

准备

去百度AI平台注册一个账号,然后去申请一个内容审核的应用,申请完会给你一些程序需要用到的密钥。

然后根据说明文档下载PYTHON的SDK,大家还是看一下开发文档的好,也不多就几行而已。

里面比较关键的数据就是这个,返回结果类型

conclusionType    uint64  N   审核结果类型,可取值1、2、3、4,分别代表1:合规,2:不合规,3:疑似,4:审核失败

当你完成了上面操作后你就可以上代码了

代码

import json
from aip import AipImageCensor
from multiprocessing.pool import ThreadPool

checks = []
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_count
    try:
        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 + 1
    except Exception as e:
        print(e)

def loaddata():
    global global_count
    with 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 这个放一堆链接的文件就可以了。当然我这是调用的远程图片,你也可以根据文档改成本地图片道理是一样的。

结语

审核的时候忘记截图了,反正运行上面的代码你只需要去泡杯茶就可以了,接下来完全交给程序操作。

以上是关于Python黄图批量鉴别审核(多线程版)的主要内容,如果未能解决你的问题,请参考以下文章

黄图识别-open nsfw

Python多线程实现批量文件移动(带进度条)

Python3.5+PyQt5多线程+itchat实现微信防撤回桌面版代码

python 自动识别黄图

python小白学习记录 多线程爬取ts片段

python 多线程批量传文件