本文提供了调用图片异步检测任务进行图片风险违规内容审核的具体接口和参数说明,帮助您编写程序构建HTTP调用请求有效地检测图片中的多维度风险内容。

  • 关于如何构造HTTP请求,请参见请求结构
  • 您也可以直接选用已构造好的HTTP请求,具体请参见SDK 概览

提交图片异步检测任务

业务接口:/green/image/asyncscan

提交图片异步检测任务,检测图片违规或识别图片中的不良信息。支持检测的场景包括:图片智能鉴黄、图片暴恐涉政识别、图文违规识别、图片二维码识别、图片不良场景识别、图片logo识别。

说明 该接口为收费接口,具体计费方式请参见内容安全产品定价

同步、异步检测

同步检测允许的最长检测时间是6秒,如果检测在该时间限制内没有完成,系统会强制返回超时错误码。如果您对实时性要求不高,可以选择异步检测,其它情况下请选择同步检测,同步检测接口的调用相对简单些。对于同步检测接口的调用,建议您将超时时间设置为6秒。

异步检测任务不会实时返回检测结果,您需要通过轮询的方式或者callback的方式获取检测结果。检测结果最长保留一小时。

scene与label参数

在提交检测任务时,您需要指定scenes场景参数,并且支持组合使用,即可对同一张图片的多种风险进行检测。检测返回结果中则包含了您指定的场景对应的label结果分类参数。您可以根据suggestion参数的返回值对图片进行处置,根据label参数的返回值判断风险的具体类型。
说明 同时检测多个场景的情况下,将按照“每个场景的检测量×每个场景的单价”进行累加计费。
在图片审核中,scene与label的对应关系如下。
场景 描述 scene label
图片智能鉴黄 识别图片中的色情内容。 porn
  • normal:正常图片,无色情内容
  • sexy:性感图片
  • porn:色情图片
图片暴恐涉政识别 识别图片中的暴恐涉政内容。 terrorism
  • normal:正常图片
  • bloody:血腥
  • explosion:爆炸烟光
  • outfit:特殊装束
  • logo:特殊标识
  • weapon:武器
  • politics:涉政
  • violence : 打斗
  • crowd:聚众
  • parade:游行
  • carcrash:车祸现场
  • flag:旗帜
  • location:地标
  • others:其他
图文违规识别 识别图片中的广告以及文字违规信息。 ad
  • normal:正常图片
  • politics:文字含涉政内容
  • porn:文字含涉黄内容
  • abuse:文字含辱骂内容
  • terrorism:文字含暴恐内容
  • contraband:文字含违禁内容
  • spam:文字含其他垃圾内容
  • npx:牛皮藓广告
  • qrcode:包含二维码
  • programCode:包含小程序码
  • ad:其他广告
说明 默认只会返回normal或者ad,如需其他label,请通过工单联系我们进行配置。
图片二维码识别 识别图片中的二维码。 qrcode
  • normal:正常图片
  • qrcode:含二维码的图片
  • programCode:含小程序码的图片
    说明 默认不识别小程序码。如果需要识别,请通过工单联系我们调整。
图片不良场景识别 识别图片中出现的黑屏、黑边、昏暗画面、画中画、抽烟、打架等不良场景。 live
  • normal:正常图片
  • meaningless:无意义图片
  • PIP:画中画
  • smoking:吸烟
  • drivelive:车内直播
图片logo识别 识别图片中的logo信息,例如台标,商标等。 logo
  • normal:正常图片
  • TV:带有管控logo的图片
  • trademark:商标
图片限制
  • 图片链接支持以下协议:HTTP和HTTPS。
  • 图片支持以下格式:PNG、JPG、JPEG、BMP、GIF、WEBP。
  • 图片大小限制为10MB以内(适用于同步和异步调用)。如您有特殊需求(大图片),可以提工单进行调整。
  • 图片下载时间限制为3秒内,如果下载时间超过3秒,返回下载超时。
  • 图片像素建议不低于256*256,像素过低可能会影响识别效果。
  • 图片检测接口响应时间依赖图片的下载时间。请保证被检测图片所在的存储服务稳定可靠,建议您使用阿里云OSS存储或者CDN缓存等。

请求参数

名称 类型 是否必须 描述
bizType 字符串 该字段用于标识业务场景。针对不同的业务场景,您可以配置不同的内容审核策略,以满足不同场景下不同的审核标准或算法策略的需求。您可以通过云盾内容安全控制台创建业务场景(bizType),或者通过工单联系我们帮助您创建业务场景。
scenes 字符串数组 指定图片检测的应用场景,可选值包括:
  • porn:图片智能鉴黄
  • terrorism:图片暴恐涉政识别
  • ad:图文违规识别
  • qrcode:图片二维码识别
  • live:图片不良场景识别
  • logo:图片logo识别
说明 支持多场景(scenes)一起检测。 例如,使用scenes=[“porn”, “terrorism”],对一张图片同时进行鉴黄和暴恐识别。
callback 字符串 异步检测结果回调通知您的URL,支持HTTP/HTTPS。该字段为空时,您必须定时检索检测结果。
seed 字符串 随机字符串,该值用于回调通知请求中的签名。当使用callback时,该字段必须提供。
tasks JSON数组 检测对象,JSON数组中的每个元素是一个图片检测任务结构体(image表)。每个元素的具体结构描述请参见task
表 1. task
名称 类型 是否必须 描述
clientInfo JSON结构体 客户端信息,请参见公共参数中的公共查询参数。
服务器会把全局的clientInfo和此处独立的clientInfo合并。
说明 独立的clientInfo优先级更高。
dataId 字符串 数据ID。需要保证在一次请求中所有的ID不重复。
url 字符串 待检测图像的URL。
extras Map 额外调用参数。
interval 整型 截帧频率,GIF图/长图检测专用。GIF图可理解为图片数组,每interval张图片抽取一张进行检测。只有该值存在时,才会对GIF进行截帧。长图同时支持长竖图和长横图。
  • 对长竖图(高大于400像素,高宽比大于2.5),会按照(高:宽)取整来计算总图数,并进行切割。
  • 对长横图(宽大于400像素,宽高比大于2.5),会按照(宽:高)取整来计算总图数,并进行切割。
说明 默认只会检测GIF图/长图的第一帧,interval参数用于指示后台在检测时可按照该间隔跳着检测,以节省检测成本。需要与maxFrames参数组合使用。例如,设置interval为2,maxFrames为100,检测长图/GIF图时,将每间隔1帧检测一次,最多检测100帧,计费则按照实际检测的数量计算。
maxFrames 整型 最大截帧数量,GIF图/长图检测专用,默认值为1

interval*maxFrames小于该图片所包含的图片数量时,截帧间隔会自动修改为该图片所包含的图片数/maxFrames,以提高整体检测效果。

结果回调通知

调用异步检测时,您可以在请求参数中传入回调通知参数(callback),即一个HTTP/HTTPS协议接口的URL,用来接收检测结果。callback接口必须支持POST方法、UTF-8编码的传输数据,以及表单参数checksumcontent。内容安全按照下表描述的生成规则和格式设置checksumcontent,调用您的callback接口返回检测结果。
说明 您的服务端callback接口收到内容安全推送的结果后,如果返回的HTTP状态码为200,则表示接收成功,其他的HTTP状态码均视为接收失败。接收失败时,内容安全将最多重复推送16次检测结果,直到接收成功。重复推送16次后仍未接收成功,则不再推送,建议您检查callback接口的状态。
名称 类型 描述
checksum String 用户uid + seed + content拼成字符串,通过SHA256算法生成。用户UID即阿里云账号ID,可以在阿里云控制台查询。为防篡改,您可以在获取到推送结果时,按上述算法生成字符串,与checksum做一次校验。
说明 用户UID必须是阿里云主账号UID,而非子账号UID。
content String JSON字符串格式,请自行解析反转成JSON对象。content结果的示例如下。
content结果示例
{
    "code": 200,
    "msg": "OK",
    "dataId": "imageId xxx",
    "taskId": "taskId xxx",
    "results": [
        {
            "label": "porn",
            "rate": 99.2,
            "scene": "porn",
            "suggestion": "block"
        }
    ]
}

返回参数

名称 类型 是否必须 描述
code 整型 错误码,和HTTP的status code一致。
msg 字符串 错误描述信息。
dataId 字符串 对应请求中的dataId
taskId 字符串 该检测任务的ID。
url 字符串 对应请求中的URL。

示例

请求示例
{
    "scenes": [
        "porn"
    ],
    "tasks": [
        {
            "dataId": "test4lNSMdggA0c56MMvfYoh4e-1mwxpx",
            "url": "https://img.alicdn.com/tfs/TB1urBOQFXXXXbMXFXXXXXXXXXX-1442-257.png"
        }
    ]
}
返回示例
{
    "code": 200,
    "msg": "OK",
    "requestId": "95AD868A-F5D2-4AEA-96D4-E0273B8E074C",
    "data": [
        {
            "code": 200,
            "msg": "OK",
            "dataId": "test4lNSMdggA0c56MMvfYoh4e-1mwxpx",
            "taskId": "fdd25f95-4892-4d6b-aca9-7939bc6e9baa-1486198766695",
            "url": "https://img.alicdn.com/tfs/TB1urBOQFXXXXbMXFXXXXXXXXXX-1442-257.png"
        }
    ]
}

查询图片异步检测结果

业务接口:/green/image/results

客户端定时轮询查询异步检测结果。建议您将查询间隔设置为30秒,最长不能超出一个小时,否则结果将会丢失。

说明 该接口为免费接口。

请求参数

名称 类型 是否必须 描述
body JSON数组 要查询的taskId列表。最大长度不超过1,000。

返回参数

名称 类型 是否必须 描述
code 整型 错误码,和HTTP的status code一致。
msg 字符串 错误描述信息。
dataId 字符串 对应的请求中的dataId
taskId 字符串 该检测任务的ID。
url 字符串 对应的请求中的URL。
extras Map 额外附加信息。

图文违规识别场景(scenes包含ad)中,extras可能返回以下内容。

hitLibInfo:若检测结果命中了自定义文本库,则返回命中的文本库信息。格式为数组,具体结构描述请参见hitLibInfo

示例值:
"hitLibInfo":[{"context":"好看视频","libCode":"2144002","libName":"预发测试广告相似文本库a"}]
results 数组 返回结果。调用成功时(code=200),返回结果中包含一个或多个元素。每个元素是个结构体,具体结构描述请参见result
表 2. result
名称 类型 是否必须 描述
scene 字符串 图片检测场景,和调用请求中的场景对应。
label 字符串 检测结果的分类,与具体的scene对应。取值范围请参见scene和label说明
suggestion 字符串 建议用户执行的操作,取值范围:
  • pass:图片正常,无需进行其余操作,或者未识别出目标对象
  • review:检测结果不确定,需要进行人工审核,或识别出目标对象
  • block:图片违规,建议执行进一步操作(如直接删除或做限制处理)
说明 qrcode场景中suggestion并非管控建议,仅用于区分图片中是否包含二维码。
rate 浮点数 结果为该分类的概率,取值范围为[0.00-100.00]。值越高,表示越有可能属于该分类。
frames 数组 如果待检测图片因为过长被截断,该参数会返回截断后的每一帧图像的临时访问地址,供您参考。具体结构描述请参见frames
hintWordsInfo 数组 图片中含有广告时,返回图片中广告文字命中的风险关键词信息。格式为数组,具体结构描述请参见hintWordsInfo
说明 仅适用于ad场景。
示例值:
"hintWordsInfo":[{"context":"敏感词"}]
qrcodeData 字符串数组 图片中含有二维码时,返回图片中所有二维码包含的文本信息。
说明 仅适用于qrcode场景。
programCodeData 数组 图片中含有小程序码时,返回小程序码的位置信息,具体结构描述请参见programCodeData
说明 仅适用于qrcode场景,且已通过工单联系我们开通了小程序码识别。
logoData 数组 识图片中含有logo时,返回识别出来的logo信息,具体结构描述请参见logoData
说明 仅适用于logo场景(scene)。
sfaceData 数组 图片中包含暴恐识涉政内容时,返回识别出来的暴恐涉政信息,具体结构描述请参见sfaceData
说明 仅适用于terrorism和sface场景。关于该参数在sface场景中的具体内容,请参见敏感人脸识别
ocrData 字符串数组 识别到的图片中的完整文字信息。
说明 默认不返回,如需返回请通过工单联系我们。
表 3. frames
名称 类型 是否必须 描述
rate 浮点数 置信度,仅作参考,不建议使用。
url 字符串 被截断的图片的临时访问url,地址有效期是5分钟。
表 4. programCodeData
名称 类型 是否必须 描述
x 浮点数 以图片左上角为坐标原点,小程序码区域左上角到y轴距离。
y 浮点数 以图片左上角为坐标原点,小程序码区域左上角到x轴距离。
w 浮点数 小程序码区域宽度。
h 浮点数 小程序码区域高度。
表 5. logoData
名称 类型 是否必须 描述
type 字符串 识别出的logo类型,取值为TV (台标)。
name 字符串 识别出的logo名称。
x 浮点数 以图片左上角为坐标原点,logo区域左上角到y轴距离。
y 浮点数 以图片左上角为坐标原点,logo区域左上角到x轴距离。
w 浮点数 logo区域宽度。
h 浮点数 logo区域高度。
表 6. sfaceData
名称 类型 是否必须 描述
x 浮点数 以图片左上角为坐标原点,人脸区域左上角到y轴距离。
y 浮点数 以图片左上角为坐标原点,人脸区域左上角到x轴距离。
w 浮点数 人脸区域宽度。
h 浮点数 人脸区域高度。
faces 数组 识别出的人脸信息,具体结构描述请参见face
表 7. face
名称 类型 是否必须 描述
name 字符串 相似人物的名称。
rate 浮点数 相似概率。
id 字符串 人脸Id。
表 8. hitLibInfo
名称 类型 是否必须 描述
context 字符串 图片中文字命中的自定义文本内容。
libCode 字符串 图片中文字命中的自定义文本内容对应的库code。
libName 字符串 图片中文字命中的自定义文本内容对应的库名称。
表 9. hintWordsInfo
名称 类型 是否必须 描述
context 字符串 图片中文字命中的风险关键词内容。

示例

请求示例
[
    "fdd25f95-4892-4d6b-aca9-7939bc6e9baa-1486198766695"
]
返回示例
{
     "msg": "OK",
     "code": 200,
     "data": [
          {
               "msg": "OK",
               "code": 200,
               "dataId": "uuid-xxxx-xxx-1234",
               "extras": {

            },
               "results": [
                    {
                         "rate": 99.63,
                         "suggestion": "block",
                         "label": "sexy",
                         "scene": "porn"
                },
                    {
                         "label": "politics",
                         "rate": 91.54,
                         "scene": "terrorism",
                         "sfaceData": [
                              {
                                   "faces": [
                                        {
                                             "id": "AliFace_0001234",
                                             "name": "命中人名",
                                             "rate": 91.54
                                }
                            ],
                                   "h": 131,
                                   "w": 97,
                                   "x": 49,
                                   "y": 39
                        }
                    ],
                         "suggestion": "block"
                },
                    {
                         "extras": {
                              "qrcodes": "http://xxxx.xxx.com/0.ZZOliO",
                              "npx": "72.01",
                              "hitCustomLibCode": "8012345000",
                              "hitCustomLibName": "自定义图库名",
                              "hitLibInfo": [
                                   {
                                        "context": "命中的文本",
                                        "libCode": "123456",
                                        "libName": "文本库名"
                            }
                        ]
                    },
                         "programCodeData": [
                              {
                                   "w": 402.0,
                                   "h": 413.0,
                                   "x": 11.0,
                                   "y": 0.0
                        }
                    ],
                         "frames": [
                              {
                                   "rate": 89.85,
                                   "url": "http://xxx.xxx.com/xxx-0.jpg"
                        },
                              {
                                   "rate": 68.06,
                                   "url": "http://xxx.xxx.com/xxx-1.jpg"
                        }
                    ],
                         "rate": 99.91,
                         "suggestion": "block",
                         "label": "ad",
                         "scene": "ad"
                },
                    {
                         "rate": 99.91,
                         "suggestion": "block",
                         "label": "drug",
                         "scene": "live"
                },
                    {
                         "qrcodeData": [
                              "http://xxx.xxx.com/01ZZOliO"
                    ],
                         "rate": 99.91,
                         "suggestion": "review",
                         "label": "qrcode",
                         "scene": "qrcode"
                },
                    {
                         "logoData": [
                              {
                                   "name": "xxx台",
                                   "type": "TV",
                                   "x": 140,
                                   "y": 68,
                                   "w": 106,
                                   "h": 106
                        }
                    ],
                         "rate": 99.9,
                         "suggestion": "block",
                         "label": "TV",
                         "scene": "logo"
                }
            ],
               "taskId": "img4wlJcb7p4wH4lAP3111111-123456",
               "url": "http://xxx.xxx.xxx/xxx.jpg"
        }
    ],
     "requestId": "69B41AE8-1234-1234-1234-12D395695D2D"
}