本文介绍了如何使用Go SDK图片审核接口,检测图片中是否包含风险内容。
功能描述
图片审核支持同步检测和异步检测两种方式。
支持传入检测的图片内容媒介包括互联网图片URL、本地图片文件路径和二进制图片文件流。
前提条件
(推荐)图片同步检测
接口 | 描述 | 支持的地域 |
接口 | 描述 | 支持的地域 |
ImageSyncScanRequest | 提交图片同步检测任务,对图片进行多个风险场景的识别,包括色情、暴恐涉政、广告、二维码、不良场景、Logo(商标台标)识别。 |
|
示例代码
package main
import (
"encoding/json"
"fmt"
"github.com/aliyun/alibaba-cloud-sdk-go/services/green"
"strconv"
)
func main() {
/**
* 注意:此处实例化的client尽可能重复使用,提升检测性能。避免重复建立连接。
* 常见获取环境变量方式:
* 获取RAM用户AccessKey ID:os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")
* 获取RAM用户AccessKey Secret:os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
*/
client, _err := green.NewClientWithAccessKey(
"cn-shanghai",
"建议从环境变量中获取RAM用户AccessKey ID",
"建议从环境变量中获取RAM用户AccessKey Secret")
if err != nil {
fmt.Println(err.Error())
return
}
task1 := map[string]interface{}{"dataId": "检测数据ID", "url": "待检测图片链接地址"}
// scenes:检测场景,支持指定多个场景。
content, _ := json.Marshal(
map[string]interface{}{
"tasks": task1, "scenes": [...]string{"porn", "terrorism"}, "bizType": "业务场景",
},
)
request := green.CreateImageSyncScanRequest()
request.SetContent(content)
response, _err := client.ImageSyncScan(request)
if _err != nil {
fmt.Println(_err.Error())
return
}
if response.GetHttpStatus() != 200 {
fmt.Println("response not success. status:" + strconv.Itoa(response.GetHttpStatus()))
}
fmt.Println(response.GetHttpContentString())
}
提交图片异步检测任务
使用Go SDK对图片进行风险检测,通过异步请求提交检测任务,结果可以通过提交请求时设置callback回调获取,也可以通过接口轮询获取。
异步检测支持的输入内容与同步检测一致(本地文件、图片URL、图片二进制流),以下仅以图片URL作为输入示例。
接口 | 描述 | 支持的地域 |
接口 | 描述 | 支持的地域 |
ImageAsyncScanRequest | 提交图片异步检测任务,对图片进行多个风险场景的识别,包括色情、暴恐涉政、广告、二维码、不良场景、Logo(商标台标)识别。 |
|
示例代码
package main
import (
"encoding/json"
"fmt"
"github.com/aliyun/alibaba-cloud-sdk-go/services/green"
"strconv"
)
func main() {
/**
* 注意:此处实例化的client尽可能重复使用,提升检测性能。避免重复建立连接。
* 常见获取环境变量方式:
* 获取RAM用户AccessKey ID:os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")
* 获取RAM用户AccessKey Secret:os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
*/
client, _err := green.NewClientWithAccessKey(
"cn-shanghai",
"建议从环境变量中获取RAM用户AccessKey ID",
"建议从环境变量中获取RAM用户AccessKey Secret")
if err != nil {
fmt.Println(err.Error())
return
}
task1 := map[string]interface{}{"dataId": "检测数据ID", "url": "待检测图片链接地址"}
// scenes:检测场景,支持指定多个场景。
content, _ := json.Marshal(
map[string]interface{}{
"tasks": [...]map[string]interface{}{task1}, "scenes": [...]string{"porn", "terrorism"},
"bizType": "业务场景",
},
)
request := green.CreateImageAsyncScanRequest()
request.SetContent(content)
response, _err := client.ImageAsyncScan(request)
if _err != nil {
fmt.Println(_err.Error())
return
}
if response.GetHttpStatus() != 200 {
fmt.Println("response not success. status:" + strconv.Itoa(response.GetHttpStatus()))
}
fmt.Println(response.GetHttpContentString())
}
查询异步检测结果
接口 | 描述 | 支持的地域 |
接口 | 描述 | 支持的地域 |
ImageAsyncScanResultsRequest | 查询图片异步检测任务的结果。支持同时查询多个检测任务的返回结果。 |
|
示例代码
package main
import (
"encoding/json"
"fmt"
"github.com/aliyun/alibaba-cloud-sdk-go/services/green"
"strconv"
)
func main() {
/**
* 注意:此处实例化的client尽可能重复使用,提升检测性能。避免重复建立连接。
* 常见获取环境变量方式:
* 获取RAM用户AccessKey ID:os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")
* 获取RAM用户AccessKey Secret:os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
*/
client, _err := green.NewClientWithAccessKey(
"cn-shanghai",
"建议从环境变量中获取RAM用户AccessKey ID",
"建议从环境变量中获取RAM用户AccessKey Secret")
if err != nil {
fmt.Println(err.Error())
return
}
content, _ := json.Marshal(
[...]string{"图片异步检测任务ID"},
)
request := green.CreateImageAsyncScanResultsRequest()
request.SetContent(content)
response, _err := client.ImageAsyncScanResults(request)
if _err != nil {
fmt.Println(_err.Error())
return
}
if response.GetHttpStatus() != 200 {
fmt.Println("response not success. status:" + strconv.Itoa(response.GetHttpStatus()))
}
fmt.Println(response.GetHttpContentString())
}
图片检测结果反馈
如果您认为图片检测结果与您的预期不符,可以通过图片检测结果反馈接口,对检测结果进行纠正(系统会根据您反馈的结果,将图片添加到相似图片的黑名单库或者白名单库)。当您再次提交相似的内容进行检测时,以您反馈的label返回结果。
关于接口的说明,请参见检测结果反馈。
接口 | 描述 | 支持的Region |
接口 | 描述 | 支持的Region |
ImageScanFeedbackRequest | 提交图片检测结果的反馈,以人工反馈的检测结果纠正算法检测结果。 |
|
示例代码
package main
import (
"encoding/json"
"fmt"
"github.com/aliyun/alibaba-cloud-sdk-go/services/green"
"strconv"
)
func main() {
/**
* 注意:此处实例化的client尽可能重复使用,提升检测性能。避免重复建立连接。
* 常见获取环境变量方式:
* 获取RAM用户AccessKey ID:os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")
* 获取RAM用户AccessKey Secret:os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
*/
client, _err := green.NewClientWithAccessKey(
"cn-shanghai",
"建议从环境变量中获取RAM用户AccessKey ID",
"建议从环境变量中获取RAM用户AccessKey Secret")
if _err != nil {
fmt.Println(_err.Error())
return
}
// scenes:检测场景,支持指定多个场景。
// suggestion:期望的检测结果;pass:正常;block:违规。
content, _ := json.Marshal(
map[string]interface{}{
"suggestion": "block", "scenes": [...]string{"porn", "terrorism"}, "url": "待检测图片链接地址",
},
)
request := green.CreateImageScanFeedbackRequest()
request.SetContent(content)
response, err := client.ImageScanFeedback(request)
if err != nil {
fmt.Println(err.Error())
return
}
if response.GetHttpStatus() != 200 {
fmt.Println("response not success. status:" + strconv.Itoa(response.GetHttpStatus()))
}
fmt.Println(response.GetHttpContentString())
}
- 本页导读 (0)
- 功能描述
- 前提条件
- (推荐)图片同步检测
- 提交图片异步检测任务
- 查询异步检测结果
- 图片检测结果反馈