图片批量审核

最近更新时间:2024-07-18 15:54:12

我的收藏

功能描述

图片批量审核接口支持同步、异步请求方式,您可以通过本接口对多个图片文件进行内容审核。该接口属于 POST 请求。该接口支持情况如下:
支持审核任意可访问的图片链接(包含非腾讯云存储的图片链接)。
支持审核本地图片文件,需要先进行 base64编码。
支持审核加密数据,如有需要,请 联系服务人员 咨询。
支持根据不同的业务场景 配置自定义的审核策略

授权说明

通过子账号使用时,需要授予 ci:CreateAuditingPictureJob权限,详情请参见 数据万象 action
子账号使用异步处理接口时,需要授予 cam:passrole 权限,异步处理接口会通过CAM的“角色”进行 COS 的资源读写操作,PassRole 权限用于传递角色,具体请查看 访问管理-写操作-PassRole 接口

服务开通

使用该功能需提前开通数据万象,并绑定存储桶。详情请参见 绑定存储桶

使用限制

使用该接口时,请先确认相关限制条件。详情请参见 使用限制
图片文件大小支持:支持审核32MB以下的图片。对于大小超过5MB的图片,您需要在调用请求时,使用 large-image-detect 参数。
单次请求图片数量不可超过100张。
图片文件分辨率支持:需满足大于20x20且小于40000x40000,建议分辨率大于256x256,否则可能会影响识别效果。
图片文件支持格式:PNG、JPG/JPEG、BMP、GIF、WEBP、HEIF/HEIC 格式。
批量默认并发数量:100。
图片文件链接支持的传输协议:HTTP、HTTPS。
调用接口需携带签名,具体规则请参见 请求签名 文档。

费用说明

该接口为付费服务,产生的费用将由数据万象收取,详细计费说明可参见 内容审核费用


推荐使用 SDK

对象存储 SDK 提供了完整的 Demo、自动集成、计算签名等能力。您可通过 SDK 方便快捷地调用接口。点此查看 SDK 文档

请求

请求示例

POST /image/auditing HTTP/1.1
Host: <BucketName-APPID>.ci.<Region>.myqcloud.com
Date: <GMT Date>
Authorization: <Auth String>
Content-Length: <length>
Content-Type: application/xml

<body>
说明:
Authorization: Auth String,详情请参见 请求签名 文档。

请求头

此接口仅使用公共请求头部,详情请参见 公共请求头部 文档。

请求体

该请求操作的实现需要有如下请求体。
<Request>
<Input>
<DataId></DataId>
<Url></Url>
<Object></Object>
<Content></Content>
<Interval></Interval>
<MaxFrames></MaxFrames>
<LargeImageDetect></LargeImageDetect>
<UserInfo>
<TokenId></TokenId>
</UserInfo>
</Input>
<Input>
<DataId></DataId>
<Url></Url>
<Object></Object>
<Content></Content>
<Interval></Interval>
<MaxFrames></MaxFrames>
</Input>
<Conf>
<BizType>b81d45f94b91a683255e9a9506f45a11</BizType>
<Async></Async>
<Callback></Callback>
<Freeze>
<PornScore></PornScore>
</Freeze>
</Conf>
</Request>
具体的数据描述如下:
节点名称(关键字)
父节点
描述
类型
是否必选
Request
图片批量审核的具体配置项。
Container
Container 类型 Request 的具体数据描述如下:
节点名称(关键字)
父节点
描述
类型
是否必选
Input
Request
需要审核的内容,如有多个图片,请传入多个 Input 结构。
Container Array
Conf
Request
审核规则配置。
Container
Container 类型 Input 的具体数据描述如下,使用其中一种:
节点名称(关键字)
父节点
描述
类型
是否必选
Object
Request.Input
存储在 COS 存储桶中的图片文件名称,例如在目录 test 中的文件 image.jpg,则文件名称为 test/image.jpg。Content,Object 和 Url 只能选择其中一种,传入多个时仅一个生效,按 Content,Object, Url 顺序。
String
Url
Request.Input
图片文件的链接地址,例如 http://a-1250000.cos.ap-shanghai.myqcloud.com/image.jpg。Content,Object 和 Url 只能选择其中一种,传入多个时仅一个生效,按 Content,Object, Url 顺序。
String
Content
Request.Input
图片文件的内容,需要先经过 base64 编码。Content,Object 和 Url 只能选择其中一种,传入多个时仅一个生效,按 Content,Object, Url 顺序。
String
Interval
Request.Input
截帧频率,GIF 图检测专用,默认值为5,表示从第一帧(包含)开始每隔5帧截取一帧。
Int
MaxFrames
Request.Input
最大截帧数量,GIF 图检测专用,默认值为5,表示只截取 GIF 的5帧图片进行审核,必须大于0。
Int
DataId
Request.Input
图片标识,该字段在结果中返回原始内容,长度限制为512字节。
String
LargeImageDetect
Request.Input
对于超过5MB的图片,需要使用该参数进行审核。取值为: 0(不处理),1(压缩图片)。默认为0。 注意:最大可支持的图片大小为32MB,使用该参数且会收取 图片基础处理费用。对于 GIF 等动态图过大时,压缩时间较长,可能会导致审核超时失败。
Int
否,图片体积大于 5MB时必选。
UserInfo
Request.Input
用户业务字段。
Container
Container 节点 UserInfo 的内容:
节点名称(关键字)
描述
类型
是否必选
TokenId
一般用于表示账号信息,长度不超过128字节。
String
Nickname
一般用于表示昵称信息,长度不超过128字节。
String
DeviceId
一般用于表示设备信息,长度不超过128字节。
String
AppId
一般用于表示 App 的唯一标识,长度不超过128字节。
String
Room
一般用于表示房间号信息,长度不超过128字节。
String
IP
一般用于表示 IP 地址信息,长度不超过128字节。
String
Type
一般用于表示业务类型,长度不超过128字节。
String
ReceiveTokenId
一般用于表示接收消息的用户账号,长度不超过128字节。
String
Gender
一般用于表示性别信息,长度不超过128字节。
String
Level
一般用于表示等级信息,长度不超过128字节。
String
Role
一般用于表示角色信息,长度不超过128字节。
String
Container 类型 Conf 的具体数据描述如下:
节点名称(关键字)
父节点
描述
类型
是否必选
BizType
Request.Conf
表示审核策略的唯一标识,您可以通过控制台上的审核策略页面,配置您希望审核的场景,如涉黄、广告、违法违规等,配置指引: 设置审核策略。您可以在控制台上获取到 BizType。BizType 填写时,此条审核请求将按照该审核策略中配置的场景进行审核。BizType 不填写时,将自动使用默认的审核策略。
String
Async
Request.Conf
是否异步进行审核,0:同步返回结果,1:异步进行审核。默认值为 0。
Integer
Callback
Request.Conf
审核结果(Detail版本)以回调形式发送至您的回调地址,异步审核时生效,支持以 http:// 或者 https:// 开头的地址,例如:http://www.callback.com
String
Freeze
Request.Conf
可通过该字段,设置根据审核结果给出的不同分值,对图片进行自动冻结,仅当 input 中审核的图片为 object 时有效。
Container
Container 类型 Freeze 的具体数据描述如下:
节点名称(关键字)
父节点
描述
类型
是否必选
PornScore
Request.Conf.Freeze
取值为[0,100],表示当色情审核结果大于或等于该分数时,自动进行冻结操作。不填写则表示不自动冻结,默认值为空。
Integer
AdsScore
Request.Conf.Freeze
取值为[0,100],表示当广告审核结果大于或等于该分数时,自动进行冻结操作。不填写则表示不自动冻结,默认值为空。
Integer
其他审核场景的冻结参数,请 联系服务人员 咨询。
注意:
通过 Object 进行审核为内网操作,不会产生额外的外网流量。
通过 Url 进行审核,会产生图片所在源站对应的外网流量。

响应

响应头

此接口仅返回公共响应头部,详情请参见 公共响应头部 文档。

响应体

该响应体返回为 application/xml 数据,包含完整节点数据的内容展示如下:
<Response>
<JobsDetail>
<DataId></DataId>
<Url></Url>
<PornInfo>
<HitFlag>1</HitFlag>
<Score>100</Score>
<Category>xxx</Category>
<SubLabel>xxx</SubLabel>
</PornInfo>
</JobsDetail>
<JobsDetail>
<Code>InvalidArgument</Code>
<Message>Param MaxFrames is illegal</Message>
<DataId></DataId>
</JobsDetail>
</Response>
响应包体具体数据内容如下:
节点名称(关键字)
父节点
描述
Response
Container
图片批量审核返回的具体响应内容。
Container 节点 Response 的内容:
参数名称
类型
描述
JobsDetail
Container Array
图片审核的结果。
RequestId
String
每次请求发送时,服务端将会自动为请求生成一个 ID,遇到问题时,该 ID 能更快地协助定位问题。
异步审核结果的 JobsDetail 节点内容如下:
节点名称(关键字)
类型
描述
Code
String
错误码,只有失败时返回。详情请查看 错误码列表
Message
String
错误描述,只有失败时返回。
DataId
String
图片标识,审核结果会返回原始内容,长度限制为512字节。
JobId
String
本次审核任务的 ID。
State
String
审核任务的状态,值为 Submitted(已提交审核)、Failed(审核失败)其中一个。
Object
String
存储在 COS 存储桶中的图片文件名称,创建任务使用 Object 时返回。
Url
String
图片文件的链接地址,创建任务使用Url时返回。
同步审核结果的 JobsDetail 节点内容如下:
参数名称
类型
描述
Code
String
错误码,只有失败时返回。详情请查看 错误码列表
Message
String
错误描述,只有失败时返回。
DataId
String
图片标识,审核结果会返回原始内容,长度限制为512字节。
JobId
String
本次审核任务的 ID。
State
String
审核任务的状态,值为 Success(审核成功)、Failed(审核失败)其中一个。
Object
String
存储在 COS 存储桶中的图片文件名称,创建任务使用Object时返回。
Url
String
图片文件的链接地址,创建任务使用Url时返回。
CompressionResult
Integer
图片是否被压缩处理,值为 0(未压缩),1(正常压缩)。
Label
String
该字段用于返回检测结果中所对应的优先级最高的恶意标签,表示模型推荐的审核结果,建议您按照业务所需,对不同违规类型与建议值进行处理。 返回值:Normal:正常,Porn:色情,Ads:广告,Quality:低质量等。
Result
Integer
该字段表示本次判定的审核结果,您可以根据该结果,进行后续的操作;建议您按照业务所需,对不同的审核结果进行相应处理。有效值:0(审核正常),1 (判定为违规敏感文件),2(疑似敏感,建议人工复核)。
Score
Integer
该字段表示审核结果命中审核信息的置信度,取值范围:0(置信度最低)-100(置信度最高 ),越高代表该内容越有可能属于当前返回审核信息。例如:色情 99,表明该内容非常有可能属于色情内容。
Category
String
该图命中的审核类别结果。
SubLabel
String
该图命中的二级标签结果。
Text
String
该图里的文字内容(OCR),当审核策略开启文本内容检测时返回。
PornInfo
Container
审核场景为色情性感的审核结果信息。
AdsInfo
Container
审核场景为广告引导的审核结果信息。
QualityInfo
Container
审核场景为图片质量低不清晰的审核结果信息。
UserInfo
Container
请求中设置的 UserInfo 原样返回。
ListInfo
Container
账号黑白名单结果。
ForbidState
Integer
若您在请求时设置了自动冻结,该字段表示图片的冻结状态。0:未冻结,1:已被冻结。
审核信息(PornInfo、AdsInfo、QualityInfo等)中的内容如下:
参数名称
类型
描述
Code
Integer
单个审核场景的错误码,0为成功,其他为失败。详情请参见 错误码
Msg
String
具体错误信息,如正常则为 OK。
HitFlag
Integer
用于返回该审核场景的审核结果,返回值:0:正常。1:确认为当前场景的违规内容。2:疑似为当前场景的违规内容。
Score
Integer
该字段表示审核结果命中审核信息的置信度,取值范围:0(置信度最低)-100(置信度最高 ),越高代表该内容越有可能属于当前返回审核信息例如:色情 99,则表明该内容非常有可能属于色情内容。
Category
String
该字段为 Label 的子集,表示审核命中的具体审核类别。例如 Sexy,表示色情标签中的性感类别。
SubLabel
String
该图的二级标签结果。
Label
String
历史字段,返回内容等同于 SubLabel。
OcrResults
Container Array
该字段表示 OCR 文本识别的详细检测结果,包括文本坐标信息、文本识别结果等信息,有相关违规内容时返回。
LibResults
Container Array
该字段用于返回基于风险库识别的结果。注意:未命中风险库中样本时,此字段不返回。
Container 节点 LibResults 的内容:
节点名称(关键字)
类型
描述
ImageId
String
该字段表示命中的风险库中的图片样本 ID。
Score
Integer
该字段用于返回当前标签下的置信度,取值范围:0(置信度最低)-100(置信度最高),越高代表当前的图片越有可能命中库中的样本。例如:色情 99,则表明该数据非常有可能命中库中的色情样本。
OcrResults 的内容如下:
节点名称(关键字)
类型
描述
Text
String
有敏感信息的 Ocr 文本内容。
Keywords
String Array
该段内容中的敏感文字。
Location
Container
该段文字在图片中的位置信息。
ObjectResults 的内容如下:
节点名称(关键字)
类型
描述
Name
String
敏感内容的字称。
Location
Container
该内容在图片中的位置信息。
Location 的内容如下:
节点名称(关键字)
类型
描述
X
Float
相对于原点(图片左上角)的 X 坐标。
Y
Float
相对于原点(图片左上角)的 Y 坐标。
Height
Float
敏感区域的高度。
Width
Float
敏感区域的宽度。
Rotate
Float
敏感区域的旋转角度。
UserInfo 的内容(与请求中的 UserInfo 一致):
节点名称(关键字)
类型
描述
TokenId
String
一般用于表示账号信息,长度不超过128字节。
Nickname
String
一般用于表示昵称信息,长度不超过128字节。
DeviceId
String
一般用于表示设备信息,长度不超过128字节。
AppId
String
一般用于表示 App 的唯一标识,长度不超过128字节。
Room
String
一般用于表示房间号信息,长度不超过128字节。
IP
String
一般用于表示 IP 地址信息,长度不超过128字节。
Type
String
一般用于表示业务类型,长度不超过128字节。
ReceiveTokenId
String
一般用于表示接收消息的用户账号,长度不超过128字节。
Gender
String
一般用于表示性别信息,长度不超过128字节。
Level
String
一般用于表示等级信息,长度不超过128字节。
Role
String
一般用于表示角色信息,长度不超过128字节。
Container 节点 ListInfo 的内容:
节点名称(关键字)
类型
描述
ListResults
Container Array
命中的所有名单结果。
Container 节点 ListResults 的内容:
节点名称(关键字)
类型
描述
ListType
Integer
命中的名单类型,取值为0(白名单)和1(黑名单)。
ListName
String
命中的名单名称。
Entity
String
命中了名单中的哪条内容。

实际案例

请求

POST /image/auditing HTTP/1.1
Authorization: q-sign-algorithm=sha1&q-ak=AKIDZfbOAo7cllgPvF9cXFrJD0**********&q-sign-time=1497530202;1497610202&q-key-time=1497530202;1497610202&q-header-list=&q-url-param-list=&q-signature=28e9a4986df11bed0255e97ff90500557e0e****
Host: examplebucket-1250000000.cos.ap-chengdu.myqcloud.com
Content-Length: 166
Content-Type: application/xml

<Request>
<Input>
<Object>a.jpg</Object>
</Input>
<Input>
<Url>http://exsample.com/b.jpg</Url>
</Input>
<Conf>
<BizType>b81d45f94xxxxxxxxa9506f45a11</BizType>
</Conf>
</Request>

响应

HTTP/1.1 200 OK
Content-Type: application/xml
Content-Length: 645
Date: Tue, 03 Apr 2018 09:06:16 GMT
Status: 200 OK
x-cos-request-id: NWFjMzQ0MDZfOTBmYTUwXzZkZV8z****

<Response>
<JobsDetail>
<JobId>xxxxxxxxxx</JobId>
<CompressionResult>0</CompressionResult>
<Object>a.jpg</Object>
<Label>Porn</Label>
<Result>1</Result>
<Score>100</Score>
<SubLabel>xxx</SubLabel>
<PornInfo>
<Code>0</Code>
<Msg>OK</Msg>
<HitFlag>1</HitFlag>
<Score>100</Score>
<Label>xxx</Label>
<SubLabel>xxx</SubLabel>
</PornInfo>
</JobsDetail>
<JobsDetail>
<JobId>yyyyyyyyyy</JobId>
<CompressionResult>0</CompressionResult>
<Url>http://exsample.com/b.jpg</Url>
<Label>Porn</Label>
<Result>1</Result>
<Score>100</Score>
<SubLabel>xxx</SubLabel>
<PornInfo>
<Code>0</Code>
<Msg>OK</Msg>
<HitFlag>1</HitFlag>
<Score>100</Score>
<Label>xxx</Label>
<SubLabel>xxx</SubLabel>
</PornInfo>
</JobsDetail>
<RequestId>xxxxxxxxxxx</RequestId>
</Response>