本文介绍了调用接口审核图片内容的方法。图片审核帮助您检测图片中的风险或违规内容,具体包括以下场景:图片智能鉴黄、图片暴恐涉政、图文违规、图片二维码、图片不良场景、图片logo。

(图片异步检测)使用说明

业务接口:/green/image/asyncscan,表示图片异步检测。

您可以调用该接口创建图片异步检测任务。关于如何构造HTTP请求,请参见请求结构;您也可以直接选用已构造好的HTTP请求,更多信息,请参见SDK概览

  • 计费信息

    该接口为收费接口。关于计费方式,请参见内容安全产品定价

  • 检测超时

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

  • 返回结果

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

    • callback获取检测结果:提交异步检测任务时,在请求参数中传入callback参数,用来自动接收检测结果,请参见(异步检测)请求参数
    • 轮询获取检测结果:提交异步检测任务时,无需传入callback参数;提交异步检测任务后,调用结果查询接口获取检测结果,请参见(图片异步检测结果查询)使用说明
  • 图片要求
    • 图片链接支持以下协议:HTTP和HTTPS。
    • 图片支持以下格式:PNG、JPG、JPEG、BMP、GIF、WEBP。
    • 图片大小限制为20 MB以内(适用于同步和异步调用),高度或者宽度不能超过30,000像素(px),且图像总像素不超过2.5亿(px)
      说明 其中,GIF格式的图片,图像总像素不超过4,194,304(px),高度或者宽度不能超过30,000像素(px)。
    • 图片下载时间限制为3秒内,如果下载时间超过3秒,返回下载超时。
    • 图片像素建议不低于256*256(px),像素过低可能会影响识别效果。
    • 图片检测接口的响应时间依赖图片的下载时间。请保证被检测图片所在的存储服务稳定可靠,建议您使用阿里云OSS存储或者CDN缓存等。
表 1. 场景说明
场景名称描述检测结果分类
图片智能鉴黄检测图片是否包含色情、性感内容。正常、色情、性感
图片暴恐涉政检测图片是否包含暴恐或涉政类内容。正常、血腥、爆炸烟光、特殊装束、特殊标识、武器、涉政、打斗、聚众、游行、车祸现场、旗帜、地标
图文违规检测图片是否包含广告和文字违规信息。正常、文字含涉政内容、文字含涉黄内容、文字含辱骂内容、文字含暴恐内容、文字含违禁内容、文字含其他垃圾内容、牛皮癣广告、含二维码、含小程序码、其他广告
说明 请根据实际情况,设置您需要的检测分类。更多信息,请参见自定义机审标准
图片二维码检测图片是否包含二维码或小程序码。正常、含二维码、含小程序码
说明 请根据实际情况,设置您需要的检测分类。更多信息,请参见自定义机审标准
图片不良场景检测图片是否包含黑屏、黑边、昏暗画面、画中画、吸烟、车内直播等不良场景。正常、图片中无内容(例如黑屏、白屏)、画中画、吸烟、车内直播
图片logo检测图片是否包含logo信息,例如台标,商标等。正常、含受管控的logo、含商标

QPS限制

本接口的单用户QPS限制为50次/秒。超过限制,API调用会被限流,这可能会影响您的业务,请合理调用。

(异步检测)请求参数

名称类型是否必选示例值描述
bizTypeStringdefault该字段用于标识您的业务场景。您可以通过内容安全控制台创建业务场景(具体操作,请参见自定义机审标准)。
scenesStringArray["porn"]指定检测场景。取值:
  • porn:图片智能鉴黄
  • terrorism:图片暴恐涉政
  • ad:图文违规
  • qrcode:图片二维码
  • live:图片不良场景
  • logo:图片logo
支持指定多个场景,例如,[“porn”, “terrorism”]表示对图片同时进行智能鉴黄和暴恐摄政检测。
说明 同时检测多个场景的情况下,将按照每个场景的检测图片数量×每个场景的单价进行累加计费。
callbackStringhttp://www.aliyundoc.com

检测结果回调通知您的URL,支持使用HTTP和HTTPS协议的地址。该字段为空时,您必须定时轮询检测结果。

callback接口必须支持POST方法、UTF-8编码的传输数据,以及表单参数checksumcontent。内容安全按照以下规则和格式设置checksumcontent,调用您的callback接口返回检测结果。
  • checksum:字符串格式,由用户uid + seed + content拼成字符串,通过SHA256算法生成。用户UID即阿里云账号ID,可以在阿里云控制台查询。为防篡改,您可以在获取到推送结果时,按上述算法生成字符串,与checksum做一次校验。
    说明 用户UID必须是阿里云账号的UID,而不是RAM用户的UID。
  • content:JSON字符串格式,请自行解析反转成JSON对象。关于content结果的示例,请参见查询检测结果的返回示例。
说明 您的服务端callback接口收到内容安全推送的结果后,如果返回的HTTP状态码为200,则表示接收成功,其他的HTTP状态码均视为接收失败。接收失败时,内容安全将最多重复推送16次检测结果,直到接收成功。重复推送16次后仍未接收成功,则不再推送,建议您检查callback接口的状态。
seedStringabc_123

随机字符串,该值用于回调通知请求中的签名。

由英文字母、数字、下划线(_)组成,不超过64个字符。由您自定义,用于在接收到内容安全的回调通知时校验请求由阿里云内容安全服务发起。

说明 当使用callback时,该字段必须提供。
cryptTypeStringSHA256使用回调通知时(callback),设置对回调通知内容进行加密的算法。内容安全会将返回结果(由用户uid + seed + content拼接的字符串)按照您设置的加密算法加密后,再发送到您的回调通知地址。取值:
  • SHA256(默认):使用SHA256加密算法。
  • SM3:使用国密HMAC-SM3加密算法,返回十六进制的字符串,且字符串由小写字母和数字组成。

    例如,abc经国密SM3加密后返回66c7f0f462eeedd9d1f2d46bdc10e4e24167c4875cf2f7a2297da02b8f4ba8e0

offlineBooleanfalse指定检测模式, 取值范围:
  • true:表示近线检测模式。近线检测模式下,您提交的任务不保证能够实时处理,但是可以排队并在24小时内开始检测。
  • false(默认):表示实时检测模式。对于超过了并发路数限制的检测请求会直接拒绝。
tasksJSONArray指定检测对象,JSON数组中的每个元素是一个检测任务结构体。最多支持100个元素,即每次提交100条内容进行检测,支持100个元素的前提是需要将并发任务调整到100个以上。关于每个元素的具体结构描述,请参见task
表 2. task
名称类型是否必选示例值描述
clientInfoJSONObject{"userId":"12023****","userNick":"Mike","userType":"others"}

客户端信息,请参见公共参数中的公共查询参数。

服务器会把全局的clientInfo和此处独立的clientInfo合并。
说明 独立的clientInfo优先级更高。
dataIdStringtest4lNSMdggA0c56MMvfYoh4e-1mwxpx检测对象对应的数据ID。

由大小写英文字母、数字、下划线(_)、短划线(-)、英文句号(.)组成,不超过128个字符,可以用于唯一标识您的业务数据。

urlStringhttps://www.aliyundoc.com/tfs/TB1urBOQFXXXXbMXFXXXXXXXXXX-1442-257.png
检测对象的URL。
  • 公网HTTP/HTTPS URL,且长度不超过2048个字符。
  • 阿里云OSS提供的文件路径。您需要先授权内容安全访问OSS存储空间,仅限相同区域的OSS空间。更多信息,请参见授权内容安全访问OSS存储空间

    文件路径格式:oss://<bucket-name>.<endpoint>/<object-name>

extrasJSONObject额外调用参数。图片审核场景下无需传入该参数。
intervalInteger1截帧频率,GIF图、长图检测专用。
  • GIF图可理解为图片数组,interval参数指定了每隔多少张图片抽取一帧进行检测。只有该值存在时,才会对GIF进行截帧。
  • 长图分为长竖图和长横图。
    • 对长竖图(高大于400像素(px),高宽比大于2.5),按照(高:宽)取整来计算总图数,并进行切割。
    • 对长横图(宽大于400像素(px),宽高比大于2.5),按照(宽:高)取整来计算总图数,并进行切割。

默认只会检测GIF图、长图的第一帧,interval参数用于指示后台在检测时可按照该间隔跳着检测,以节省检测成本。

说明 interval需要与maxFrames参数组合使用。例如,设置interval为2、maxFrames为20,在检测GIF图、长图时,将每间隔1帧检测一次,最多检测20帧,计费则按照实际检测的数量计算。
maxFramesInteger20最大截帧数量,GIF图、长图检测专用,默认值为1

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

(异步检测)返回数据

名称类型示例值描述
codeInteger200错误码,和HTTP状态码一致。

更多信息,请参见公共错误码

msgStringOK请求信息的返回信息。
dataIdStringtest4lNSMdggA0c56MMvfYoh4e-1mwxpx检测对象对应的数据ID。
说明 如果在检测请求参数中传入了dataId,则此处返回对应的dataId
taskIdStringfdd25f95-4892-4d6b-aca9-7939bc6e9baa-1486198766695检测任务的ID。
urlStringhttps://www.aliyundoc.com/tfs/TB1urBOQFXXXXbMXFXXXXXXXXXX-1442-257.png
检测对象的URL。
  • 公网HTTP/HTTPS URL,且长度不超过2048个字符。
  • 阿里云OSS提供的文件路径。您需要先授权内容安全访问OSS存储空间,仅限相同区域的OSS空间。更多信息,请参见授权内容安全访问OSS存储空间

    文件路径格式:oss://<bucket-name>.<endpoint>/<object-name>

(异步检测)示例

请求示例
http(s)://[Endpoint]/green/image/asyncscan
&<公共请求参数>
{
    "scenes": [
        "porn"
    ],
    "tasks": [
        {
            "dataId": "test4lNSMdggA0c56MMvfYoh4e-1mwxpx",
            "url": "https://www.aliyundoc.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://www.aliyundoc.com/tfs/TB1urBOQFXXXXbMXFXXXXXXXXXX-1442-257.png"
        }
    ]
}

(图片异步检测结果查询)使用说明

业务接口:/green/image/results,表示查询图片异步检测结果。

您可以调用该接口查询图片异步检测任务的结果。关于如何构造HTTP请求,请参见请求结构;您也可以直接选用已构造好的HTTP请求,更多信息,请参见SDK概览

  • 计费信息

    该接口不计费。

  • 查询超时
    建议您将查询间隔设置为30秒(即在提交异步检测任务,并获取taskId30秒后查询结果)。
    说明offline参数设置为true时,表示查询有效期为24小时;当offline参数设置为false,表示taskId查询有效期为1小时,默认设置为false

QPS限制

本接口的单用户QPS限制为50次/秒。超过限制,API调用会被限流,这可能会影响您的业务,请合理调用。

(结果查询)请求参数

名称类型是否必选示例值描述
bodyJSONArray["fdd25f95-4892-4d6b-aca9-7939bc6e9baa-1486198766695"]要查询的检测任务的taskId列表。数组中的元素个数不超过100个。

您在提交检测任务后,可以从返回数据中获取检测任务的taskId

(结果查询)返回数据

名称类型示例值描述
codeInteger200错误码,和HTTP状态码一致。

更多信息,请参见公共错误码

msgStringOK请求信息的返回信息。
dataIdStringuuid-xxxx-xxx-1234检测对象对应的数据ID。
说明 如果在检测请求参数中传入了dataId,则此处返回对应的dataId
taskIdStringimg4wlJcb7p4wH4lAP3111111-123456检测任务的ID。
urlStringhttp://www.aliyundoc.com/xxx.jpg
检测对象的URL。
  • 公网HTTP/HTTPS URL,且长度不超过2048个字符。
  • 阿里云OSS提供的文件路径。您需要先授权内容安全访问OSS存储空间,仅限相同区域的OSS空间。更多信息,请参见授权内容安全访问OSS存储空间

    文件路径格式:oss://<bucket-name>.<endpoint>/<object-name>

storedUrlStringhttp://www.aliyundoc.com如果用户开启了证据转存到OSS存储空间的功能,并且检测任务符合配置的规则,则会把图片转存到用户的OSS存储空间中,并返回对应的HTTP URL。
extrasJSONObject{"hitLibInfo":[{"context":"好看视频","libCode":"2144002","libName":"预发测试广告相似文本库a"}]}额外附加信息。

图文违规(ad)场景中,该参数可能返回以下内容。

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

resultsJSONArray返回结果。调用成功时(code=200),返回结果中包含一个或多个元素。每个元素是个结构体,具体结构描述,请参见result
表 3. result
名称类型示例值描述
sceneStringterrorism图片检测场景,和调用请求中的场景对应。取值:
  • porn:图片智能鉴黄
  • terrorism:图片暴恐涉政
  • ad:图文违规
  • qrcode:图片二维码
  • live:图片不良场景
  • logo:图片logo
labelStringsexy检测结果的分类。不同检测场景的结果分类不同,具体如下:
  • 图片智能鉴黄(porn)结果分类:
    • normal:正常
    • sexy:性感
    • porn:色情
  • 图片暴恐涉政(terrorism)结果分类:
    • normal:正常
    • bloody:血腥
    • explosion:爆炸烟光
    • outfit:特殊装束
    • logo:特殊标识
    • weapon:武器
    • politics:涉政
    • violence:打斗
    • crowd:聚众
    • parade:游行
    • carcrash:车祸现场
    • flag:旗帜
    • location:地标
    • drug:涉毒
    • gamble:赌博
    • others:其他
  • 图文违规(ad)结果分类:
    • normal:正常
    • ad:其他广告
    • politics:文字含涉政内容
    • porn:文字含涉黄内容
    • abuse:文字含辱骂内容
    • terrorism:文字含暴恐内容
    • contraband:文字含违禁内容
    • spam:文字含其他垃圾内容
    • npx:牛皮癣广告
    • qrcode:含二维码
    • programCode:含小程序码
  • 图片二维码(qrcode)结果分类:
    • normal:正常
    • qrcode:含二维码
    • programCode:含小程序码
  • 图片不良场景(live)结果分类:
    • normal:正常
    • meaningless:图片中无内容(例如黑屏、白屏)
    • PIP:画中画
    • smoking:吸烟
    • drivelive:车内直播
    • drug:涉毒
    • gamble:赌博
  • 图片logo(logo)结果分类:
    • normal:正常
    • TV:含受管控的logo
    • trademark:含商标
sublabelString如果检测场景包含智能鉴黄(porn)和暴恐涉政(terrorism),则该字段可以返回检测结果的细分类标签。

该字段默认不会返回。如果有需要,请加入钉群(钉群号:35573806),联系产品技术专家进行咨询。

suggestionStringblock建议您执行的后续操作。取值:
  • pass:结果正常,无需进行其余操作。
  • review:结果不确定,需要进行人工审核。
  • block:结果违规,建议直接删除或者限制公开。
rateFloat91.54置信度分数,取值范围:0(表示置信度最低)~100(表示置信度最高)。
如果suggestionpass,则置信度越高,表示内容正常的可能性越高;如果suggestionreviewblock,则置信度越高,表示内容违规的可能性越高。
重要 建议您参考suggestionlabel(或者部分接口返回的sublabel)结果用于内容违规判定。
framesJSONArray如果待检测图片因为过长被截断,该参数返回截断后的每一帧图像的临时访问地址。具体结构描述,请参见frame
hintWordsInfoJSONArray{"hintWordsInfo":[{"context":"敏感词"}]}图片中含有广告时,返回图片中广告文字命中的风险关键词信息。格式为数组,具体结构描述,请参见hintWordsInfo
说明 只有图文违规(ad)场景会返回该结果。
qrcodeDataStringArray["http://www.aliyundoc.com/01ZZOliO"]图片中含有二维码时,返回图片中所有二维码包含的文本信息。
说明 只有图片二维码(qrcode)场景会返回该结果。
qrcodeLocationsJSONArray返回图片中识别到的二维码的坐标信息,关于具体的结构描述,请参见qrcodeLocation
programCodeDataJSONArray图片中含有小程序码时,返回小程序码的位置信息,具体结构描述,请参见programCodeData
说明 只有图片二维码(qrcode)场景会返回该结果,且必须已经开启小程序码识别。
logoDataJSONArray识图片中含有logo时,返回识别出来的logo信息,具体结构描述,请参见logoData
说明 只有图片logo(logo)场景会返回该结果。
sfaceDataJSONArray图片中包含暴恐识涉政内容时,返回识别出来的暴恐涉政信息,具体结构描述,请参见sfaceData
说明 只有图片暴恐涉政(terrorism)场景会返回该结果。
ocrDataStringArrayxxxx识别到的图片中的完整文字信息。
说明 默认不返回。如果需要该结果,请联系商务经理。
表 4. frame
名称类型示例值描述
rateFloat89.85置信度分数,取值范围:0~100,置信度越高表示检测结果的可信度越高。建议您不要在业务中使用该分数。
urlStringhttp://www.aliyundoc.com/xxx-0.jpg被截断的图片的临时访问URL,地址有效期是5分钟。
表 5. programCodeData
名称类型示例值描述
xFloat11.0以图片左上角为坐标原点,小程序码区域左上角到y轴距离,单位:像素。
yFloat0.0以图片左上角为坐标原点,小程序码区域左上角到x轴距离,单位:像素。
wFloat402.0小程序码区域宽度,单位:像素。
hFloat413.0小程序码区域高度,单位:像素。
表 6. logoData
名称类型示例值描述
typeStringTV识别出的logo类型,取值为TV(台标)。
nameStringxxx台识别出的logo名称。
xFloat140以图片左上角为坐标原点,logo区域左上角到y轴距离,单位:像素。
yFloat68以图片左上角为坐标原点,logo区域左上角到x轴距离,单位:像素。
wFloat106logo区域宽度,单位:像素。
hFloat106logo区域高度,单位:像素。
表 7. sfaceData
名称类型示例值描述
xFloat49以图片左上角为坐标原点,人脸区域左上角到y轴距离,单位:像素。
yFloat39以图片左上角为坐标原点,人脸区域左上角到x轴距离,单位:像素。
wFloat97人脸区域宽度,单位:像素。
hFloat131人脸区域高度,单位:像素。
facesJSONArray[{"name":"命中人名","rate":91.54,"id":"AliFace_0123****"}]识别出的人脸信息,具体结构如下:
  • name:字符串类型,相似人物的名称。
  • rate:浮点数类型,置信度分数,取值范围:0(表示置信度最低)~100(表示置信度最高)。置信度越高表示人物识别结果的可信度越高。
  • id:字符串类型,人脸ID。
表 8. hitLibInfo
名称类型示例值描述
contextString好看视频文字命中的自定义文本内容。
libCodeString123456文字命中的自定义文本内容对应的库code。
libNameStringabc文字命中的自定义文本内容对应的库名称。
表 9. hintWordsInfo
名称类型示例值描述
contextString好看视频文字命中的风险关键词内容。
表 10. qrcodeLocation
名称类型示例值描述
xFloat11.0以图片左上角为坐标原点,二维码区域左上角到y轴距离,单位:像素。
yFloat0.0以图片左上角为坐标原点,二维码区域左上角到x轴距离,单位:像素。
wFloat402.0二维码区域宽度,单位:像素。
hFloat413.0二维码区域高度,单位:像素。
qrcodeStringhttp://www.aliyundoc.com/0.ZZOliO识别到的二维码链接。

(结果查询)示例

请求示例
http(s)://[Endpoint]/green/image/results
&<公共请求参数>
[
    "fdd25f95-4892-4d6b-aca9-7939bc6e9baa-1486198766695"
]
正常返回示例
{
     "msg": "OK",
     "code": 200,
     "data": [
          {
               "msg": "OK",
               "code": 200,
               "dataId": "test4lNSMdggA0c56MMvfYoh4e-1mwxpx",
               "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://www.aliyundoc.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://www.aliyundoc.com/xxx-0.jpg"
                        },
                              {
                                   "rate": 68.06,
                                   "url": "http://www.aliyundoc.com/xxx-1.jpg"
                        }
                    ],
                         "rate": 99.91,
                         "suggestion": "block",
                         "label": "ad",
                         "scene": "ad"
                },
                    {
                         "rate": 99.91,
                         "suggestion": "block",
                         "label": "drug",
                         "scene": "live"
                },
                    {
                         "qrcodeData": [
                              "http://www.aliyundoc.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": "fdd25f95-4892-4d6b-aca9-7939bc6e9baa-1486198766695",
               "url": "https://www.aliyundoc.com/tfs/TB1urBOQFXXXXbMXFXXXXXXXXXX-1442-257.png"
        }
    ],
     "requestId": "69B41AE8-1234-1234-1234-12D395695D2D"
}