7.3 SDK 调用示例
7.3.3 图像内容审核(批量)
response = client.run_image_moderation(request) print(response.status_code)
print(response)
except exceptions.ClientRequestException as e:
print(e.status_code) print(e.request_id) print(e.error_code) print(e.error_msg)
2. 控制台输出200即表示程序执行成功,图像内容审核结果输出到控制台。
200{"result": {"detail": {"politics": [], "porn": [{"confidence": 0.9883, "label": "normal"}, {"confidence":
0.0039, "label": "porn"}, {"confidence": 0.0078, "label": "sexy"}], "terrorism": [{"confidence": 0.0002,
"label": "terrorist"}, {"confidence": 0.0002, "label": "fascist"}, {"confidence": 0.0001, "label": "cult"}, {"confidence": 0.0002, "label": "negative_politics"}, {"confidence": 0.0001, "label":
"negative_political_events"}, {"confidence": 0.0001, "label": "kidnap"}, {"confidence": 0.0006, "label":
"riot"}, {"confidence": 0.0001, "label": "parade"}, {"confidence": 0.0002, "label": "corpse"}, {"confidence": 0.0001, "label": "bloody"}, {"confidence": 0.0001, "label": "knife"}, {"confidence":
0.0001, "label": "gun"}, {"confidence": 0.0002, "label": "military_weapon"}, {"confidence": 0.0, "label":
"special_characters"}, {"confidence": 0.9994, "label": "normal"}], "ad": [{"confidence": 0.0, "label":
"ad"}, {"confidence": 1.0, "label": "normal"}]}, "suggestion": "pass", "category_suggestions":
{"politics": "pass", "ad": "pass", "terrorism": "pass", "porn": "pass"}}}
Process finished with exit code 0
7.3.3 图像内容审核(批量)
credentials = BasicCredentials(ak, sk)
client = ModerationClient.new_builder() \ .with_credentials(credentials) \
.with_region(ModerationRegion.value_of("cn-north-4")) \ .build()
try:
request = RunImageBatchModerationRequest() listImageBatchModerationReqCategoriesbody = [ "politics",
"terrorism", "porn", "ad"
]
listImageBatchModerationReqUrlsbody = [
"https://sdk-obs-source-save.obs.cn-north-4.myhuaweicloud.com/terrorism.jpg"
]
request.body = ImageBatchModerationReq(
threshold=0,
categories=listImageBatchModerationReqCategoriesbody, urls=listImageBatchModerationReqUrlsbody
)
response = client.run_image_batch_moderation(request) print(response.status_code)
print(response)
except exceptions.ClientRequestException as e:
print(e.status_code)
'url': 'https://sdk-obs-source-save.obs.cn-north-4.myhuaweicloud.com/terrorism.jpg'}]}
Process finished with exit code 0
7.3.4 内容审核-图像(批量异步)
credentials = BasicCredentials(ak, sk) client = ModerationClient.new_builder() \ .with_credentials(credentials) \
.with_region(ModerationRegion.value_of("cn-north-4")) \ .build()
"https://sdk-obs-source-save.obs.cn-north-4.myhuaweicloud.com/terrorism.jpg"
]
request.body = TaskSumbitReq(
categories=listTaskSumbitReqCategoriesbody, urls=listTaskSumbitReqUrlsbody
)
response = client.run_task_sumbit(request) print(response.status_code)
print(response)
except exceptions.ClientRequestException as e:
print(e.status_code)
Process finished with exit code 0
7.3.4.2 查询任务
1. 本章节对图像内容审核批量异步-查询任务AK/SK方式使用SDK进行示例说明。
图像内容审核批量异步-查询任务示例代码只需将AK/SK信息替换为实际AK/SK,
代码中修改RunCheckResultRequest的job_id 配置审核任务的id,配置完成后运行 即可。
# coding: utf-8
credentials = BasicCredentials(ak, sk) client = ModerationClient.new_builder() \ .with_credentials(credentials) \
.with_region(ModerationRegion.value_of("cn-north-4")) \ .build()
try:
request = RunCheckResultRequest()
request.job_id = "321cb5b6-3ad3-461a-b258-7ba7f530b91a"
response = client.run_check_result(request) print(response.status_code)
print(response)
except exceptions.ClientRequestException as e:
print(e.status_code)
{'confidence': 0.0002, 'label': 'military_weapon'}, {'confidence': 0.0,
'label': 'special_characters'}, {'confidence': 0.9994, 'label': 'normal'}]}, 'suggestion': 'pass',
'url': 'https://sdk-obs-source-save.obs.cn-north-4.myhuaweicloud.com/terrorism.jpg'}], 'job_id': '321cb5b6-3ad3-461a-b258-7ba7f530b91a',
'status': 'finish',
'update_time': '2021-08-04T08:30:41Z'}}
Process finished with exit code 0
8 使用 SDK(.NET)
8.1 .NET 开发环境配置
使用内容审核.NET版本SDK包,需要先配置.Net开发环境。
1.
Visual Studio官网,下载最新版Visual Studio。
2. 下载完毕后,点击exe文件,开始安装。
3. 安装过程中选择工作负荷ASP.NET和Web开发,安装完成后启动即可。
图8-1 选择安装.NET 环境依赖
8.2 .NET 环境 SDK 导入
.NET语言SDK的获取和安装可以使用可以通过命令方式安装或使用Visual Studio开发 工具安装第三方引用,参考方法如下:
//使用 .NET CLI 工具
dotnet add package HuaweiCloud.SDK.Core dotnet add package HuaweiCloud.SDK.Moderation //使用 Package Manager
Install-Package HuaweiCloud.SDK.Core
dotnet add package HuaweiCloud.SDK.Moderation
使用Visual Studio开发工具安装第三方引用:点击工具->选择NuGet包管理器->点击 管理解决方案的NuGet程序包,选择浏览中搜索并安装HuaweiCloud.SDK.Core及 HuaweiCloud.SDK.Moderation,如下图所示:
图8-2 安装内容审核.NET 版本 sdk 包
8.3 SDK 调用示例
8.3.1 文本内容审核
1. 本章节对文本内容审核AK/SK方式使用SDK进行示例说明。
文本内容审核示例代码只需将AK/SK信息替换为实际AK/SK,代码中可以修改 TextDetectionItemsReq的Text 配置待检测的文本信息,配置完成后运行即可。
using System;
using System.Collections.Generic;
using HuaweiCloud.SDK.Core;
using HuaweiCloud.SDK.Core.Auth;
using HuaweiCloud.SDK.Moderation;
using HuaweiCloud.SDK.Moderation.V2;
using HuaweiCloud.SDK.Moderation.V2.Model;
namespace RunTextModerationSolution { class Program
{
static void Main(string[] args) {
const string ak = "<YOUR AK>";
const string sk = "<YOUR SK>";
var config = HttpConfig.GetDefaultConfig();
config.IgnoreSslVerification = true;
var auth = new BasicCredentials(ak, sk);
var client = ModerationClient.NewBuilder() .WithCredential(auth)
.WithRegion(ModerationRegion.ValueOf("cn-north-4")) .WithHttpConfig(config)
.Build();
var req = new RunTextModerationRequest {
};
List<TextDetectionItemsReq> listTextDetectionItemsReqItems = new List<TextDetectionItemsReq>();
listTextDetectionItemsReqItems.Add(new TextDetectionItemsReq() {
Text = "666666luo聊请+110亚砷酸钾六位qqweixin,fuck66666666666666", Type = "content"
});
List<String> listTextDetectionReqCategories = new List<String>();
listTextDetectionReqCategories.Add("politics");
listTextDetectionReqCategories.Add("porn");
listTextDetectionReqCategories.Add("ad");
listTextDetectionReqCategories.Add("abuse");
listTextDetectionReqCategories.Add("contraband");
listTextDetectionReqCategories.Add("flood");
req.Body = new TextDetectionReq()
Console.WriteLine(JsonConvert.DeserializeObject(resp.HttpBody));
}
catch (RequestTimeoutException requestTimeoutException) {
Console.WriteLine(requestTimeoutException.ErrorMessage);
}
catch (ServiceResponseException clientRequestException) {
Console.WriteLine(clientRequestException.HttpStatusCode);
Console.WriteLine(clientRequestException.ErrorCode);
200{'result': {'detail': {'contraband': ['亚砷酸钾'], 'porn': ['luo聊']}, 'suggestion': 'block'}}
class Program
List<ImageDetectionReq.CategoriesEnum> listImageDetectionReqCategories = new List<ImageDetectionReq.CategoriesEnum>();
listImageDetectionReqCategories.Add(ImageDetectionReq.CategoriesEnum.FromValue("ad"));
req.Body = new ImageDetectionReq() {
Threshold = 0,
Categories = listImageDetectionReqCategories, ModerationRule = "default",
Url = "https://sdk-obs-source-save.obs.cn-north-4.myhuaweicloud.com/tagging-normal.jpg"
};
Console.WriteLine(JsonConvert.DeserializeObject(resp.HttpBody));
}
catch (RequestTimeoutException requestTimeoutException) {
Console.WriteLine(requestTimeoutException.ErrorMessage);
}
catch (ServiceResponseException clientRequestException) {
Console.WriteLine(clientRequestException.HttpStatusCode);
Console.WriteLine(clientRequestException.ErrorCode);
'politics': [],
List<ImageBatchModerationReq.CategoriesEnum> listImageBatchModerationReqCategories = new List<ImageBatchModerationReq.CategoriesEnum>();
listImageBatchModerationReqCategories.Add(ImageBatchModerationReq.CategoriesEnum.FromValue(
"politics"));
List<String> listImageBatchModerationReqUrls = new List<String>();
listImageBatchModerationReqUrls.Add("https://sdk-obs-source-save.obs.cn-north-4.myhuaweicloud.com/tagging-normal.jpg");
Console.WriteLine(JsonConvert.DeserializeObject(resp.HttpBody));
}
catch (RequestTimeoutException requestTimeoutException) {
Console.WriteLine(requestTimeoutException.ErrorMessage);
}
catch (ServiceResponseException clientRequestException) {
Console.WriteLine(clientRequestException.HttpStatusCode);
Console.WriteLine(clientRequestException.ErrorCode);
{'confidence': 0.0001, 'label': 'bloody'},
'url': 'https://sdk-obs-source-save.obs.cn-north-4.myhuaweicloud.com/terrorism.jpg'}]}
8.3.4 内容审核-图像(批量异步)
List<TaskSumbitReq.CategoriesEnum> listTaskSumbitReqCategories = new List<TaskSumbitReq.CategoriesEnum>();
listTaskSumbitReqCategories.Add(TaskSumbitReq.CategoriesEnum.FromValue("politics"));
listTaskSumbitReqCategories.Add(TaskSumbitReq.CategoriesEnum.FromValue("porn"));
listTaskSumbitReqCategories.Add(TaskSumbitReq.CategoriesEnum.FromValue("terrorism"));
List<String> listTaskSumbitReqUrls = new List<String>();
listTaskSumbitReqUrls.Add("https://sdk-obs-source-save.obs.cn-north-4.myhuaweicloud.com/
terrorism.jpg");
{
var resp = client.RunTaskSumbit(req);
var respStatusCode = resp.HttpStatusCode;
Console.WriteLine(respStatusCode);
Console.WriteLine(JsonConvert.DeserializeObject(resp.HttpBody));
}
catch (RequestTimeoutException requestTimeoutException) {
Console.WriteLine(requestTimeoutException.ErrorMessage);
}
catch (ServiceResponseException clientRequestException) {
Console.WriteLine(clientRequestException.HttpStatusCode);
Console.WriteLine(clientRequestException.ErrorCode);
try {
var resp = client.RunCheckResult(req);
var respStatusCode = resp.HttpStatusCode;
Console.WriteLine(respStatusCode);
Console.WriteLine(JsonConvert.DeserializeObject(resp.HttpBody));
}
catch (RequestTimeoutException requestTimeoutException) {
Console.WriteLine(requestTimeoutException.ErrorMessage);
}
catch (ServiceResponseException clientRequestException) {
Console.WriteLine(clientRequestException.HttpStatusCode);
Console.WriteLine(clientRequestException.ErrorCode);
'label': 'normal'}]}, 'suggestion': 'pass',
'url': 'https://sdk-obs-source-save.obs.cn-north-4.myhuaweicloud.com/terrorism.jpg'}], 'job_id': '321cb5b6-3ad3-461a-b258-7ba7f530b91a',
'status': 'finish',
'update_time': '2021-08-04T08:30:41Z'}}