使用Python与腾讯云接口对接,实现图片鉴黄功能

1. 引言

图片鉴黄是针对网络社会中存在的黄色、低俗等不良信息进行过滤和识别的一种技术。最近,据腾讯2021年业务报告显示,腾讯云人工智能的年增长率达到了54.7%,成为了腾讯云的一项重要业务。因此,结合腾讯云的API接口,使用Python编写的程序,可以快速准确地鉴别并且提示用户图片中是否存在涉黄信息。

2. 准备工作

2.1 腾讯云API密钥

在使用腾讯云的API之前,需要先获取腾讯云API密钥,即SECRET_ID 和 SECRET_KEY。可以通过访问 https://console.cloud.tencent.com/cam/capi 页面,选择“新建密钥”并进行申请。

注意:SecretId 和 SecretKey 是您访问腾讯云API的唯一凭证,需要妥善保管。

2.2 Python库安装

Python已经成为数据分析与人工智能领域的重要工具之一,相关库的安装可以使用 pip 工具,安装命令为:

pip install requests

pip install json

3. 接口调用方法

3.1 接口调用说明

腾讯云的图片鉴黄接口,基于HTTP协议,开发者可以通过该接口快速识别图片中是否存在色情、暴力等不良信息。其中鉴定分为四个级别:

正常(Normal)、性感(Hot)、色情(Porn)、色情(Sexy)和色情(Vulgar)。

鉴黄接口的 API 接入访问地址为:https://tbp.tencentcloudapi.com/

3.2 接口调用方法

与腾讯云鉴黄接口建立连接,通常有两种方式,即使用 HTTP 协议调用和使用 SDK 调用。

本次使用 HTTP 协议调用方式。

3.3 API参数说明

API鉴别参数和输出参数详见官方API文档说明 https://cloud.tencent.com/document/product/1125/53243

4. Python 编写代码实现

下面我们来展示使用 Python 代码实现鉴黄检测功能,该代码实现的功能是:用户上传一张图片并且检测图片中是否存在涉黄信息。

# 导入需要的Python包

import time

import random

import requests

import json

# 腾讯云API鉴别参数

SecretId = '您的SecretId'

SecretKey = '您的SecretKey'

AppID = '您的AppID'

# 调用鉴别API接口

def PornDetect(img):

payload = {

"Image": img,

"Scenes": ["porn"]

}

url = "https://tbp.tencentcloudapi.com/"

TimeStamp=int(time.time())

Nonce=random.randint(0,100000000)

headers={

'Host':'tbp.tencentcloudapi.com',

'Content-Type':'application/json',

'Authorization':'TC3-HMAC-SHA256 Credential='+SecretId+'/'+str(TimeStamp)+'/'+'tbp/tc3_request, SignedHeaders=content-type;host, Signature='+signature,

'X-TC-Action':'PornDetect',

'X-TC-Version': '2019-05-29',

'X-TC-Timestamp': str(TimeStamp),

'X-TC-Nonce': str(Nonce),

'Content-Length':str(len(json.dumps(payload)))

}

data={'Action':'PornDetect','Version': '2019-05-29','Region':'ap-guangzhou','Timestamp':TimeStamp,'Nonce':Nonce,'SecretId':SecretId,'Payload':payload}

string_request = 'POST' + '\n' + '/' + '\n' + '\n' + 'content-type:'+'application/json' + '\n' + 'host:'+ 'tbp.tencentcloudapi.com\n'

string_payload = json.dumps(data['Payload'], separators=(',', ':'))

string_request += string_payload

hash1 = hashlib.sha256(string_request.encode('utf-8')).hexdigest()

date = time.strftime('%Y-%m-%d',time.localtime())

service = 'tbp'

string2 = 'TC3-HMAC-SHA256\n' + str(TimeStamp) + '\n' + date + '/' + service + '/tc3_request\n' + hash1

SecretKeyTmp = ('TC3' + SecretKey).encode('utf-8')

secretDate = hmac.new(SecretKeyTmp, date.encode('utf-8'), hashlib.sha256).digest()

secretService = hmac.new(secretDate, service.encode('utf-8'), hashlib.sha256).digest()

secretSigning = hmac.new(secretService, b'tc3_request', hashlib.sha256).hexdigest()

signature = hmac.new(bytes(secretSigning, 'utf-8'), bytes(string2, 'utf-8'), hashlib.sha256).hexdigest()

headers={

'Host':'tbp.tencentcloudapi.com',

'Content-Type':'application/json',

'Authorization':'TC3-HMAC-SHA256 Credential='+SecretId+'/'+str(TimeStamp)+'/'+'tbp/tc3_request, SignedHeaders=content-type;host, Signature='+signature,

'X-TC-Action':'PornDetect',

'X-TC-Version': '2019-05-29',

'X-TC-Timestamp': str(TimeStamp),

'X-TC-Nonce': str(Nonce),

'Content-Length':str(len(json.dumps(payload)))

}

url = "https://tbp.tencentcloudapi.com/"

result = requests.post(url, data=json.dumps(payload), headers=headers)

res = json.loads(result.content)

if res['Response']['PornDetect']['EvilFlag']>0:

return 1

elif res['Response']['PornDetect']['HotFlag']>0:

return 2

else:

return 0

注意:以上代码仅供参考,相关参数和API鉴证信息需要自行修改。

5. 测试与实现

考虑使用上传一张图片进行鉴黄检测测试,因此我们可以在代码中添加以下代码:

if __name__ == '__main__':

# 测试图片

img = 'path.jpg'

with open(img, 'rb') as img_obj:

base64_data = base64.b64encode(img_obj.read())

s = base64_data.decode()

res = PornDetect(s)

if res>0:

print("警告,该图片存在涉黄信息!")

else:

print("恭喜,该图片不存在涉黄信息!")

6. 总结

Python是一种脚本语言,开源免费,能够快速方便地编写程序,与腾讯云相结合,能够更好地使用腾讯云API接口,提供更好的服务。

后端开发标签