图片审核

最近更新时间:2023-07-19 11:52:22

我的收藏

简介

内容审核功能是由 数据万象(Cloud Infinite,CI)提供的,数据万象将处理能力与 COS SDK 完全结合,您可以直接按照本篇文档指引进行使用。
说明
使用内容审核服务需拥有数据万象使用权限:
主账号请 单击此处 进行角色授权。
子账号请参见 授权子账号接入数据万象服务 文档。
本文档提供关于图片审核的 API 概览和 SDK 示例代码。
注意
需要 COS PHP SDK v2.4.4 及以上版本。旧版本可能存在 bug,使用时建议升级到 最新版本
API
操作描述
图片审核功能支持同步、异步请求方式,您可以通过本接口对图片文件进行内容审核。该接口属于 GET 请求。
图片批量审核接口为同步请求方式,您可以通过本接口对多个图片文件进行内容审核。该接口属于 POST 请求。
本接口用于主动查询指定的图片审核任务结果。

单次图片审核

功能说明

图片审核功能支持同步、异步请求方式,您可以通过本接口对图片文件进行内容审核。该接口属于 GET 请求。

方法原型

public Guzzle\\Service\\Resource\\Model detectImage(array $args = array());

请求示例

示例一:审核某个存储桶路径下的图片

<?php

require dirname(__FILE__) . '/../vendor/autoload.php';

$secretId = "SECRETID"; //替换为用户的 secretId,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi
$secretKey = "SECRETKEY"; //替换为用户的 secretKey,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi
$region = "ap-beijing"; //替换为用户的 region,已创建桶归属的 region 可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket
$cosClient = new Qcloud\\Cos\\Client(
array(
'region' => $region,
'schema' => 'https', // 审核时必须为 https
'credentials' => array(
'secretId' => $secretId,
'secretKey' => $secretKey)));
try {
//存储桶图片审核
$result = $cosClient->detectImage(array(
'Bucket' => 'examplebucket-1250000000', //存储桶名称,由 BucketName-Appid 组成,可以在 COS 控制台查看 https://console.cloud.tencent.com/cos5/bucket
'Key' => 'test.png', // 桶文件
'ci-process' => 'sensitive-content-recognition',
// 'BizType' => '', // 可选 定制化策略,不传走默认策略
// 'Interval' => 5, // 可选 审核 GIF 时使用 截帧的间隔
// 'MaxFrames' => 5, // 可选 针对 GIF 动图审核的最大截帧数量,需大于0。
// 'LargeImageDetect' => '',
// 'DataId' => '',
// 'Async' => '',
// 'Callback' => '',
));
// 请求成功
print_r($result);
} catch (\\Exception $e) {
// 请求失败
echo($e);
}


示例二:审核图片 URL

<?php

require dirname(__FILE__) . '/../vendor/autoload.php';

$secretId = "SECRETID"; //替换为用户的 secretId,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi
$secretKey = "SECRETKEY"; //替换为用户的 secretKey,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi
$region = "ap-beijing"; //替换为用户的 region,已创建桶归属的 region 可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket
$cosClient = new Qcloud\\Cos\\Client(
array(
'region' => $region,
'schema' => 'https', // 审核时必须为 https
'credentials' => array(
'secretId' => $secretId,
'secretKey' => $secretKey)));
try {
//图片链接审核
$imgUrl = 'https://test.jpg';
$result = $cosClient->detectImage(array(
'Bucket' => 'examplebucket-1250000000', //存储桶名称,由 BucketName-Appid 组成,可以在 COS 控制台查看 https://console.cloud.tencent.com/cos5/bucket
'Key' => '/', // 链接图片资源路径写 / 即可
'ci-process' => 'sensitive-content-recognition',
'DetectUrl' => $imgUrl,
// 'BizType' => '', // 可选 定制化策略,不传走默认策略
// 'Interval' => 5, // 可选 审核 GIF 时使用 截帧的间隔
// 'MaxFrames' => 5, // 可选 针对 GIF 动图审核的最大截帧数量,需大于0。
// 'LargeImageDetect' => '',
// 'DataId' => '',
// 'Async' => '',
// 'Callback' => '',
));
// 请求成功
print_r($result);
} catch (\\Exception $e) {
// 请求失败
echo($e);
}

单次审核参数说明

Request 中的主要参数描述如下:
参数名称
描述
类型
是否必选
Key
COS 存储桶中的图片文件名称,COS 存储桶由 Host 指定,例如在北京的 examplebucket-1250000000存储桶中的目录 test 下的文件 img.jpg,则 Host 填写 examplebucket-1250000000.cos.ap-beijing.myqcloud.com,Key 填写 test/img.jpg。
String
ci-process
标识数据处理功能的字段,内容审核的值为:sensitive-content-recognition。
String
BizType
表示审核策略的唯一标识,您可以通过控制台上的审核策略页面,配置您希望审核的场景,如涉黄、广告、违法违规等,配置指引: 设置公共审核策略。您可以在控制台上获取到 biz-type。biz-type 填写时,此条审核请求将按照该审核策略中配置的场景进行审核。 biz-type 不填写时,将自动使用默认的审核策略。
String
DetectUrl
您可以通过填写 detect-url 审核任意公网可访问的图片链接不填写 detect-url 时,后台会默认审核 ObjectKey 填写了 detect-url 时,后台会审核 detect-url 链接,无需再填写 ObjectKey detect-url 示例:http://www.example.com/abc.jpg
String
Interval
审核 GIF 动图时,可使用该参数进行截帧配置,代表截帧的间隔。例如值设为5,则表示从第1帧开始截取,每隔5帧截取一帧,默认值5。
Int
MaxFrames
针对 GIF 动图审核的最大截帧数量,需大于0。例如值设为5,则表示最大截取5帧,默认值为5。
Int
LargeImageDetect
对于超过大小限制的图片是否进行压缩后再审核,取值为: 0(不压缩),1(压缩)。默认为0。 注:压缩最大支持32MB的图片,且会收取图片压缩费用。对于 GIF 等动态图过大时,压缩时间较长,可能会导致审核超时失败。
Int
DataId
图片标识,该字段在结果中返回原始内容,长度限制为512字节。
String
Async
请求方式参数,有效值: 0(同步返回结果),1(异步进行审核),默认值为0。
Int
Callback
回调地址,审核结果(Detail版本)以回调形式发送至您的回调地址,仅在异步审核时生效,支持以 http:// 或者 https:// 开头的地址,例如: http://www.callback.com
String

返回结果

具体响应参数含义参考 图片审核API文档

批量图片审核

功能说明

图片批量审核接口为同步请求方式,您可以通过本接口对多个图片文件进行内容审核。该接口属于 POST 请求。

方法原型

public Guzzle\\Service\\Resource\\Model detectImages(array $args = array());

请求示例

<?php

require dirname(__FILE__, 2) . '/vendor/autoload.php';

$secretId = "SECRETID"; //替换为用户的 secretId,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi
$secretKey = "SECRETKEY"; //替换为用户的 secretKey,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi
$region = "ap-beijing"; //替换为用户的 region,已创建桶归属的 region 可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket
$cosClient = new Qcloud\\Cos\\Client(
array(
'region' => $region,
'schema' => 'https', // 审核时必须为 https
'credentials' => array(
'secretId' => $secretId,
'secretKey' => $secretKey)));
try {
// 获取图片base64编码
// $localImageFile = '/tmp/test.jpg';
// $img = file_get_contents($localImageFile);
// $imgInfo = getimagesize($localImageFile);
// $imgBase64Content = base64_encode($img);

$result = $cosClient->detectImages(array(
'Bucket' => 'examplebucket-1250000000', //存储桶名称,由 BucketName-Appid 组成,可以在 COS 控制台查看 https://console.cloud.tencent.com/cos5/bucket
'Inputs' => array(
array(
'Object' => 'test01.png', // 桶文件
// 'Interval' => '', // 可选 审核 GIF 时使用 截帧的间隔
// 'MaxFrames' => '', // 可选 针对 GIF 动图审核的最大截帧数量,需大于0。
// 'DataId' => 'aaa', // 可选 图片标识,该字段在结果中返回原始内容,长度限制为512字节
// 'LargeImageDetect' => 1, // 对于超过大小限制的图片是否进行压缩后再审核,取值为: 0(不压缩),1(压缩)。默认为0。注:压缩最大支持32M的图片,且会收取压缩费用
// 'UserInfo' => array(
// 'TokenId' => '',
// 'Nickname' => '',
// 'DeviceId' => '',
// 'AppId' => '',
// 'Room' => '',
// 'IP' => '',
// 'Type' => '',
// 'ReceiveTokenId' => '',
// 'Gender' => '',
// 'Level' => '',
// 'Role' => '',
// ), // 可选 用户业务字段
// 'Encryption' => array(
// 'Algorithm' => '',
// 'Key' => '',
// 'IV' => '',
// 'KeyId' => '',
// 'KeyType' => 0,
// ), // 可选 文件加密信息。如果图片未做加密则不需要使用该字段,如果设置了该字段,则会按设置的信息解密后再做审核。
),
array(
'Url' => 'http://example.com/test.png', // 图片URL
// 'Interval' => 5, // 可选 审核 GIF 时使用 截帧的间隔
// 'MaxFrames' => 5, // 可选 针对 GIF 动图审核的最大截帧数量,需大于0。
// 'DataId' => 'bbb', // 可选 图片标识,该字段在结果中返回原始内容,长度限制为512字节
// 'LargeImageDetect' => 1, // 对于超过大小限制的图片是否进行压缩后再审核,取值为: 0(不压缩),1(压缩)。默认为0。注:压缩最大支持32M的图片,且会收取压缩费用
// 'UserInfo' => array(
// 'TokenId' => '',
// 'Nickname' => '',
// 'DeviceId' => '',
// 'AppId' => '',
// 'Room' => '',
// 'IP' => '',
// 'Type' => '',
// 'ReceiveTokenId' => '',
// 'Gender' => '',
// 'Level' => '',
// 'Role' => '',
// ), // 可选 用户业务字段
// 'Encryption' => array(
// 'Algorithm' => '',
// 'Key' => '',
// 'IV' => '',
// 'KeyId' => '',
// 'KeyType' => 0,
// ), // 可选 文件加密信息。如果图片未做加密则不需要使用该字段,如果设置了该字段,则会按设置的信息解密后再做审核。
),
// array(
// 'Content' => $imgBase64Content, // 图片文件的内容,需要先经过 base64 编码。注:Content方式提交图片不支持文件加密方式
//// 'Interval' => 5, // 可选 审核 GIF 时使用 截帧的间隔
//// 'MaxFrames' => 5, // 可选 针对 GIF 动图审核的最大截帧数量,需大于0。
//// 'DataId' => 'ccc', // 可选 图片标识,该字段在结果中返回原始内容,长度限制为512字节
// ),
),
// 'Conf' => array(
// 'BizType' => '', // 可选 定制化策略,不传走默认策略
// 'Async' => 0, // 可选 是否异步进行审核,0:同步返回结果,1:异步进行审核。默认值为 0。
// 'Callback' => '', // 可选 审核结果(Detail版本)以回调形式发送至您的回调地址
// 'Freeze' => array(
// 'PornScore' => 90,
// 'AdsScore' => 90,
// 'PoliticsScore' => 90,
// 'TerrorismScore' => 90,
// ), // 可选 可通过该字段,设置根据审核结果给出的不同分值,对图片进行自动冻结,仅当`input`中审核的图片为`object`时有效。
// ) // 可选 在BizType不传的情况下,走默认策略及默认审核场景。
));
// 请求成功
print_r($result);
} catch (\\Exception $e) {
// 请求失败
echo($e);
}

批量审核参数说明

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
对于超过大小限制的图片是否进行压缩后再审核,取值为: 0(不压缩),1(压缩)。默认为0。注:压缩最大支持32M的图片,且会收取压缩费用。
Int
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

返回结果

具体响应参数含义参考 图片审核API文档

查询图片审核结果

功能说明

本接口用于主动查询指定的图片审核任务结果。

方法原型

public Guzzle\\Service\\Resource\\Model getDetectImageResult(array $args = array());

请求示例

<?php

require dirname(__FILE__, 2) . '/vendor/autoload.php';

$secretId = "SECRETID"; //替换为用户的 secretId,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi
$secretKey = "SECRETKEY"; //替换为用户的 secretKey,请登录访问管理控制台进行查看和管理,https://console.cloud.tencent.com/cam/capi
$region = "ap-beijing"; //替换为用户的 region,已创建桶归属的region可以在控制台查看,https://console.cloud.tencent.com/cos5/bucket
$cosClient = new Qcloud\\Cos\\Client(
array(
'region' => $region,
'schema' => 'https', // 审核时必须为https
'credentials'=> array(
'secretId' => $secretId ,
'secretKey' => $secretKey)));
try {
$result = $cosClient->getDetectImageResult(array(
'Bucket' => 'examplebucket-1250000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket
'Key' => '', // jobId
));
// 请求成功
print_r($result);
} catch (\\Exception $e) {
// 请求失败
echo($e);
}

参数说明

Request 中的具体数据描述如下:
参数名称
类型
描述
是否必填
Bucket
String
存储桶名称,格式:BucketName-APPID。
Key
String
需要查询的任务 ID。

返回结果示例

具体响应参数含义参考 图片审核API文档
GuzzleHttp\\Command\\Result Object
(
[RequestId] => NjEzZTBjZWRfZmNjYTNiMGFfNGM2M18zZGUzNzc=
[ContentType] => application/xml
[ContentLength] => 1053
[JobsDetail] => Array
(
[JobId] => sd48e1ea1213d411ec953452540024deb5
[State] => Success
[CreationTime] => 2023-05-15T16:02:39+08:00
[Object] => terrorism/枪械.jpeg
[CompressionResult] => 0
[Text] =>
[Label] => Terrorism
[Category] => Firearms
[SubLabel] => Gun
[Result] => 1
[Score] => 99
[ForbidState] => 0
[PornInfo] => Array
(
[HitFlag] => 0
[Score] => 0
[Label] =>
[Category] =>
[SubLabel] =>
)

[AdsInfo] => Array
(
[HitFlag] => 0
[Score] => 0
[Label] =>
[Category] =>
[SubLabel] =>
)

[PoliticsInfo] => Array
(
[HitFlag] => 0
[Score] => 0
[Label] =>
[Category] =>
[SubLabel] =>
)

[TerrorismInfo] => Array
(
[HitFlag] => 1
[Score] => 99
[Label] => Gun
[Category] => Firearms
[SubLabel] => Gun
)

)

[Key] => sd48e1ea1213d411ec953452540024deb5
[Bucket] => examplebucket-1250000000
[Location] => examplebucket-1250000000.ci.ap-guangzhou.myqcloud.com/image/auditing/sd48e1ea1213d411ec953452540024deb5
)