1. 首页
  2. 内容识别
  3. 内容识别(无存储)

内容识别(无存储)

快速入门

内容识别(无存储)是直接把内容提交给平台,提交方式可以是内容本身或 URL,平台处理完成后返回结果,不保留数据。您在使用它之前,请确保您已经注册又拍云账号并完成实名验证,请确保您已经开通内容识别服务

使用这个服务需要收费,每天支持 2000 次免费请求次数,更多详情敬请联系商务

图片识别(图片内容)

上传图片内容,进行识别。act=porn 表示色情识别,act=political 表示政要识别,act=terror 表示暴恐识别。

请求

请求语法

POST /image/bin/check?act=<act> HTTP/1.1
Host: banma.api.upyun.com
Date: GMT Date
Authorization: UPYUN <ClientKey>:<Signature>
Content-Type: <图片内容类型,必填>
[Image Content...]

act 说明

act 代表要进行的识别,比如 act=porn 表示进行色情识别。多项识别添加多个 act,比如 act=porn&act=political&act=terror 表示进行色情识别、政要识别和暴恐识别。

签名认证

Authorization 详见签名认证

响应

响应参数是 JSON 字符串,参数名及说明如下:

参数 类型 说明
status_code integer 处理结果状态码,200 表示成功处理
error string 错误信息,空字符串表示无错误信息
porn json 色情识别结果,对应 act=porn
porn.scores list 各个分类及概率, 从左至右依次是 正常概率色情概率性感概率
porn.label integer 推荐分类,可能值 0120 表示正常,1 表示色情,2 表示性感
porn.rate float 推荐分类的概率
porn.review bool 是否需要人工审核
political json 政要识别结果,对应 act=political
political.label integer 分类, 可能值 100, 101, 100 表示正常, 101 表示涉政
political.name string 图片中出现的政治人物姓名
political.similarity float 相似度
terror json 暴恐识别结果,对应 act=terror
terror.scores array 各个分类的概率, 从左至右依次是 正常概率暴恐概率
terror.label integer 推荐分类,可能值 0-120 表示正常,1 表示恐怖画面,2 表示暴乱,3 表示暴力行为,4 表示暴恐人物,5 表示暴恐旗帜,6 表示尸体,7 表示武器,8 表示武装部队,9 表示爆炸火灾,10 表示血腥,11 表示车祸,12 表示非法集会
terror.rate float 推荐分类的概率
terror.review bool 是否需要人工审核

举例

请求示例

POST /image/bin/check?act=porn HTTP/1.1
Host: banma.api.upyun.com
Date: Thu, 12 Oct 2017 07:32:34 GMT
Content-Type: image/jpeg
Authorization: UPYUN 2GO7K6NCPInWZqvJewohbDH5jmtaBY0x:mW7gtK0PRvhR0Mzn/x6RSAbh3cg=
Content-Length: 447330
[Image Content...]

响应示例

HTTP/1.1 200 OK
Server: marco/1.8
Content-Type: application/json
Content-Length: 163
Date: Thu, 12 Oct 2017 07:32:29 GMT
{"status_code":200,"error":"","porn":{"scores":[0.999045193195343,0.00015256137703545392,0.0008022452238947153],"rate":0.999045193195343,"label":0,"review":false}}

图片识别(图片 URL)

提交图片 URL,进行识别。act=porn 表示色情识别,act=political 表示政要识别,act=terror 表示暴恐识别。

请求

请求语法

POST /image/url/check?act=<act> HTTP/1.1
Host: banma.api.upyun.com
Date: GMT Date
Authorization: UPYUN <ClientKey>:<Signature>
Content-Type: application/json
{"url": "<图片的绝对路径>"}

act 说明

act 代表要进行的识别,比如 act=porn 表示进行色情识别。多项识别添加多个 act,比如 act=porn&act=political&act=terror 表示进行色情识别、政要识别和暴恐识别。

签名认证

Authorization 详见签名认证

请求参数

参数 类型 必选 说明
url string 图片的 URL

响应

响应参数是 JSON 字符串,参数名及说明如下:

参数 类型 说明
status_code integer 处理结果状态码,200 表示成功处理
error string 错误信息,空字符串表示无错误信息
porn json 色情识别结果,对应 act=porn
porn.scores list 各个分类及概率, 从左至右依次是 正常概率色情概率性感概率
porn.label integer 推荐分类,可能值 0120 表示正常,1 表示色情,2 表示性感
porn.rate float 推荐分类的概率
porn.review bool 是否需要人工审核
political json 涉政识别结果,对应 act=political
political.label integer 分类, 可能值 100, 101, 100 表示正常, 101 表示涉政
political.name string 图片中出现的政治人物姓名
political.similarity float 相似度
terror json 暴恐识别结果,对应 act=terror
terror.scores array 各个分类的概率, 从左至右依次是 正常概率暴恐概率
terror.label integer 推荐分类,可能值 0-120 表示正常,1 表示恐怖画面,2 表示暴乱,3 表示暴力行为,4 表示暴恐人物,5 表示暴恐旗帜,6 表示尸体,7 表示武器,8 表示武装部队,9 表示爆炸火灾,10 表示血腥,11 表示车祸,12 表示非法集会
terror.rate float 推荐分类的概率
terror.review bool 是否需要人工审核

举例

请求示例

POST /image/url/check?act=porn HTTP/1.1
Host: banma.api.upyun.com
Date: Thu, 12 Oct 2017 06:57:50 GMT
Authorization: UPYUN 2GO7K6NCPInWZqvJewohbDH5jmtaBY0x:CKhrW8SSU0ctnmavfnRs1s1NFBY=
Content-Length: 50
Content-Type: application/json
{"url": "http://uprocess.b0.upaiyun.com/demo.jpg"}

响应示例

HTTP/1.1 200 OK
Server: marco/1.8
Content-Type: application/json
Content-Length: 164
Date: Thu, 12 Oct 2017 06:57:45 GMT
{"status_code":200,"error":"","porn":{"scores":[0.9996986389160156,0.0001312318054260686,0.0001701978617347777],"rate":0.9996986389160156,"label":0,"review":false}}

点播识别(点播 URL)

提交视频点播 URL,进行识别。识别是异步进行的,收到请求后,会先返回任务的 ID,待结果出来后,回调返回识别结果。act=porn 表示色情识别。

请求

请求语法

POST /video/check?act=porn HTTP/1.1
Host: banma.api.upyun.com
Date: GMT Date
Authorization: UPYUN <ClientKey>:<Signature>
Content-Type: application/json
{"url": "<视频点播的绝对路径>", "notify_url": "<回调地址>"}

签名认证

Authorization 详见签名认证

请求参数

参数 类型 必选 说明
url string 点播的 URL
notify_url string 回调地址, 识别结果将以 POST 请求发往该地址
interval integer 截图间隔, 默认每 10s 从点播中取一帧

响应

响应参数是 JSON 字符串,参数名及说明如下:

参数 类型 说明
task_id string 任务 ID

回调

任务处理完成后,向 notify_url 发送 HTTP POST 请求,请求体是回调信息。

curl -X POST \
    <notify_url> \
    -H "Authorization: UPYUN <Operator>:<Signature>" \
    -H "Date: <Wed, 29 Oct 2014 02:26:58 GMT>" \
    -H "Content-MD5: <Content-MD5>" \
    -d "service=<service>" \
    # 其他参数...

回调参数

回调参数为 JSON 字符串,参数名及说明如下:

参数 类型 说明
task_id string 任务对应的 task_id
status_code integer 处理结果状态码,200 表示成功处理,详见状态码表
service string 视频点播所在的服务名
source string 截图保存路径,如果请求参数中未设置 save_as,不存在
error string 错误信息,空字符串表示无错误信息
result json 总的识别结果
result.porn json 总的鉴黄结果,包含 labelratereview
result.porn.label integer 图片被判定的分类,可能值 0120 表示正常,1 表示色情,2 表示性感
result.porn.rate float 图片被判定为某个分类的概率,介于 [0-1] 之间
result.porn.review boolean 是否需要人工复审,true 表示需要,false 表示不需要
filelist json 每张截图的识别结果
filelist.result json 一张截图的识别结果
filelist.result.shot_time string 截图时间点,单位秒
filelist.result.porn json 一张截图的鉴黄结果,包含 labelratereview
filelist.result.porn.label integer 图片被判定的分类,可能值 0120 表示正常,1 表示色情,2 表示性感
filelist.result.porn.rate float 图片被判定为某个分类的概率,介于 [0-1] 之间
filelist.result.porn.review boolean 是否需要人工复审,true 表示需要,false 表示不需要

举例

请求示例

POST /video/check HTTP/1.1
Host: banma.api.upyun.com
Date: Thu, 12 Oct 2017 06:57:51 GMT
Authorization: UPYUN 2GO7K6NCPInWZqvJewohbDH5jmtaBY0x:qXT2W1ROzdO3WXVM2nlLguc370k=
Content-Length: 109
Content-Type: application/json
{"url": "http://uprocess.b0.upaiyun.com/demo/short_video/UPYUN.mp4", "notify_url": "http://httpbin.org/post"}

响应示例

HTTP/1.1 200 OK
Server: marco/1.8
Content-Type: application/json
Content-Length: 65
Date: Thu, 12 Oct 2017 06:57:45 GMT
{"status_code":200,"task_id":"AIYgOOTk2OMav3iS64zPSS1Js0FzkT95"}

回调示例

POST <notify_url> HTTP/1.1
Content-Type: application/json
Date: Thu, 12 Oct 2017 04:06:43 GMT
Content-Md5: d2acd6c01e1de9afa203b585f614c0cf
Content-Length: 1775
Authorization: UPYUN 2GO7K6NCPInWZqvJewohbDH5jmtaBY0x:P8qmASfkbtM/6CMo1WlqW59W9+g=
{"error":"","filelist":[{"result":{"porn":{"label":0,"rate":0.9995450377464294,"review":false}},"shot_time":0},{"result":{"porn":{"label":0,"rate":0.9990586638450623,"review":false}},"shot_time":10},{"result":{"porn":{"label":0,"rate":0.9997151494026184,"review":false}},"shot_time":20},{"result":{"porn":{"label":0,"rate":0.9990173578262329,"review":false}},"shot_time":30},{"result":{"porn":{"label":0,"rate":0.9789921641349792,"review":false}},"shot_time":40},{"result":{"porn":{"label":0,"rate":0.9992973804473877,"review":false}},"shot_time":50},{"result":{"porn":{"label":0,"rate":0.9562959671020508,"review":false}},"shot_time":60},{"result":{"porn":{"label":0,"rate":0.9989614486694336,"review":false}},"shot_time":70}],"result":{"porn":{"label":0,"rate":0.9931503997908698,"review":false}},"service":"","source":"","status_code":200,"task_id":"rDt7IaxKeQMGWVvX8YZ5MbwJtT0WuQbh"}

文本识别

提交文本内容,进行识别。识别包括色情、广告、暴恐等,act=spam 表示违规识别。

请求

请求语法

POST /text/check?act=spam HTTP/1.1
Host: banma.api.upyun.com
Date: GMT Date
Authorization: UPYUN <ClientKey>:<Signature>
Content-Type: application/json
{"text": "<文本内容>"}

签名认证

Authorization 详见签名认证

请求参数

参数 类型 必选 说明
text string 文本内容,JSON 字符串,最大允许 64k

响应

响应参数是 JSON 字符串,参数名及说明如下:

参数 类型 说明
status_code integer 处理结果状态码,200 表示成功处理
error string 错误信息,空字符串表示无错误信息
spam json 文本识别结果
spam.task_id string 任务 ID
spam.scores list 各个分类及概率, 从左至右依次是 正常概率违规概率
spam.label integer 推荐分类,可能值 0120 表示正常,1 表示违规,2 表示疑似
spam.rate float 推荐分类的概率
spam.review bool 是否需要人工审核,true 表示需要,false 表示不需要

举例

请求示例

POST /text/check?act=spam HTTP/1.1
Host: banma.api.upyun.com
Date: Tue, 19 Sep 2017 07:47:49 GMT
Authorization: UPYUN x2biJtrSOGhuYj4vzPg70nfZeLEIdmlH:Q+sPbbukYstHJprpSLsS+lnOrro=
Content-Length: 30
Content-Type: application/json
{"text": "这是正常文本"}

响应示例

HTTP/1.1 200 OK
Server: marco/1.8
Content-Type: application/json
Content-Length: 190
Date: Tue, 19 Sep 2017 07:47:50 GMT
{"status_code": 200, error: "", "spam":{"task_id":"6583350f","scores":[0.9713295698165894,0.028670458123087883],"rate":0.028670458123087883,"label":1,"review":false}}

状态码说明

参数 类型
200 处理成功
400 请求参数错误
401 请求认证失败
5xx 服务端错误,请反馈给售后或您的商务经理

Python 演示

import base64
import datetime
import hashlib
import hmac
import requests

def b64(s):
    return base64.b64encode(s.encode()).decode()

# 时间格式化
def httpdate_rfc1123(dt=None):
    dt = dt or datetime.datetime.utcnow()
    return datetime.datetime.utcnow().strftime('%a, %d %b %Y %H:%M:%S GMT')

# 签名
def sign(client_key, client_secret, method, uri, date):
    signarr = [method, uri, date]
    signstr = '&'.join(signarr)
    signstr = base64.b64encode(
        hmac.new(client_secret.encode(), signstr.encode(), digestmod=hashlib.sha1).digest()
    ).decode()
    return 'UPYUN %s:%s' % (client_key, signstr)

# 密钥
client_key = '2GO7K6NCPInWZqvJewohbDH5jmt'
client_secret = 'BKQrAn5OjgG3HVlkJo78DbyiuL'

# 图片 URL 进行色情识别
def image_check():
    headers = {}
    headers['Date'] = httpdate_rfc1123()
    headers['Authorization'] = sign(client_key, client_secret, 'POST', '/image/url/check', headers['Date'])
    data = {
        'url': 'http://uprocess.b0.upaiyun.com/demo.jpg'
    }
    resp = requests.post('http://banma.api.upyun.com/image/url/check', headers=headers, json=data)
    print(resp.status_code, resp.text)

# 视频点播 URL 进行色情识别
def video_check():
    headers = {}
    headers['Date'] = httpdate_rfc1123()
    headers['Authorization'] = sign(client_key, client_secret, 'POST', '/video/check', headers['Date'])
    data = {
        'url': 'http://uprocess.b0.upaiyun.com/demo/short_video/UPYUN.mp4',
        'notify_url': 'http://httpbin.org/post'
    }
    resp = requests.post('http://banma.api.upyun.com/video/check', headers=headers, json=data)
    print(resp.status_code, resp.text)

# 文本识别
def text_check():
    # 文本审核
    headers = {}
    headers['Date'] = httpdate_rfc1123()
    headers['Authorization'] = sign(client_key, client_secret, 'POST', '/text/check', headers['Date'])
    data = {
        'text': '这里放文本内容'
    }
    resp = requests.post('http://banma.api.upyun.com/text/check', headers=headers, json=data)
    print(resp.status_code, resp.text)

# 调用
def main():
    image_check()
    video_check()
    text_check()
if __name__ == '__main__':
    main()

如有疑问请 联系我们

这篇文章有帮助吗?

相关文章