SDK 参考
文档版本 01
发布日期 2021-09-09
版权所有 © 华为技术有限公司 2021。 保留一切权利。
非经本公司书面许可,任何单位和个人不得擅自摘抄、复制本文档内容的部分或全部,并不得以任何形式传 播。
商标声明
和其他华为商标均为华为技术有限公司的商标。
本文档提及的其他所有商标或注册商标,由各自的所有人拥有。
注意
您购买的产品、服务或特性等应受华为公司商业合同和条款的约束,本文档中描述的全部或部分产品、服务或 特性可能不在您的购买或使用范围之内。除非合同另有约定,华为公司对本文档内容不做任何明示或暗示的声 明或保证。
由于产品版本升级或其他原因,本文档内容会不定期进行更新。除非另有约定,本文档仅作为使用指导,本文 档中的所有陈述、信息和建议不构成任何明示或暗示的担保。
华为技术有限公司
地址: 深圳市龙岗区坂田华为总部办公楼 邮编:518129
网址:
https://www.huawei.com
客户服务邮箱:
[email protected]
客户服务电话:4008302118目 录
1 内容审核 SDK 简介...1
2 申请服务...2
3 获取认证信息... 3
4 准备环境...4
5 SDK 列表及指导文档(通用版)... 5
6 使用 SDK(Java)... 6
6.1 Java 开发环境配置... 6
6.2 SDK 获取和安装... 6
6.3 内容审核-文本... 7
6.3.1 文本内容审核示例... 7
6.4 内容审核-图像... 8
6.4.1 图像内容审核示例... 9
6.5 内容审核-图像(批量)... 10
6.5.1 图像内容审核(批量)示例... 10
6.6 内容审核-图像(批量异步)...11
6.6.1 提交任务... 11
6.6.2 查询任务... 12
7 使用 SDK(Python)... 14
7.1 Python 开发环境配置...14
7.2 Python 语言 SDK 获取和安装... 15
7.3 SDK 调用示例... 15
7.3.1 文本内容审核... 15
7.3.2 图像内容审核... 16
7.3.3 图像内容审核(批量)...17
7.3.4 内容审核-图像(批量异步)... 19
7.3.4.1 提交任务... 19
7.3.4.2 查询任务... 19
8 使用 SDK(.NET)... 22
8.1 .NET 开发环境配置... 22
8.2 .NET 环境 SDK 导入...22
8.3 SDK 调用示例... 23
8.3.1 文本内容审核... 23
8.3.2 图像内容审核... 24
8.3.3 图像内容审核(批量)...26
8.3.4 内容审核-图像(批量异步)... 28
8.3.4.1 提交任务... 28
8.3.4.2 查询任务... 29
9 使用 SDK(GO)... 32
9.1 GO 开发环境配置... 32
9.2 GO 语言 SDK 获取和安装... 32
9.3 SDK 调用示例... 32
9.3.1 文本内容审核... 32
9.3.2 图像内容审核... 33
9.3.3 图像内容审核(批量)...34
9.3.4 内容审核-图像(批量异步)... 35
9.3.4.1 提交任务... 36
9.3.4.2 查询任务... 36
1 内容审核 SDK 简介
内容审核概述
内容审核(Content Moderation),是基于图像、文本的检测技术,可自动检测涉 黄、广告、涉政涉暴、涉政敏感人物等内容,对用户上传的图片、文字进行内容审 核,帮助客户降低业务违规风险。
内容审核以开放API(Application Programming Interface,应用程序编程接口)的方 式提供给用户,用户通过实时访问和调用API获取推理结果,帮助用户自动采集关键数 据,打造智能化业务系统,提升业务效率。
SDK 概述
内容审核软件开发工具包(Content Moderation Software Development Kit,简称 Moderation SDK)是对内容审核提供的REST API进行的封装,以简化用户的开发工 作。用户通过添加依赖或下载的方式调用API即可实现使用内容审核业务能力的目的。
接口与 API 对应关系
内容审核接口与API对应关系请参见表1-1。
表1-1 接口与 API 对应关系表
接口 API
文本内容审核 POST /v2/{project_id}/moderation/text 图像内容审核 POST /v2/{project_id}/moderation/image 图像内容审核(批量) POST /v2/{project_id}/moderation/image/batch 图像内容审核(异步批
量)-任务提交 POST /v2/{project_id}/moderation/image/batch/jobs 图像内容审核(异步批
量)-处理结果查询 GET /v2/{project_id}/moderation/image/batch 图像内容审核(异步批
量)-任务列表查询 GET /v2/{project_id}/moderation/image/batch/jobs
2 申请服务
申请内容审核服务的具体操作步骤请参见《内容审核API参考》的“如何调用API > 申
请服务”章节。
3 获取认证信息
步骤1 登录华为云管理控制台。
步骤2 鼠标移动至用户名处,在下拉列表中单击“我的凭证”。
步骤3 选择“访问密钥”页签,点击“新增访问秘钥”按钮。
步骤4 通过邮箱或者手机进行验证,输入对应的验证码。
步骤5 单击“确定”,下载认证账号的AK/SK,AK/SK数据会以本地文件的形式保存,请妥善 保管。
----结束
4 准备环境
在使用内容审核SDK时,各语言需要准备的环境 参照表4-1。
表4-1 开发环境 开发语
言
准备项 说明
JAVA 安装JDK JAVA环境开发配置,支持 Java JDK 1.8 及其以上版本,
推荐通过Maven 安装依赖的方式使用JAVA版本SDK。
PYTHO
N 安装python python版本sdk支持python3.3以上。
.NET 安装.NET .NET Standard 2.0 及其以上版本或C# 4.0 及其以上版 本。
GO 安装go 支持 go 1.14 及以上版本。
5 SDK 列表及指导文档(通用版)
API Explorer能根据需要动态生成SDK代码功能,降低您使用SDK的难度,推荐使用。
SDK中心提供服务SDK依赖引入的方式。
表5-1 提供了各个云服务支持的SDK列表,您可以在GitHub仓库查看SDK更新历史、
获取安装包以及查看指导文档进行配置。
表5-1 SDK 列表
编程语言 github地址 指导文档 视频指导
JAVA
huaweicloud-
sdk-java-v3 Java SDK使用指导 Java SDK视频指导
PYTHONhuaweicloud-
sdk-python-v3 Python SDK使用 指导
Python SDK视频 指导
.NET
huaweicloud-
sdk-net-v3 .Net SDK使用指导
-GO
huaweicloud-
sdk-go-v3 Go SDK使用指导
-6 使用 SDK(Java)
6.1 Java 开发环境配置
本SDK包要求的JDK版本必须高于JDK8版本,以下步骤以win7环境配置JDK8 64位为 例,若已经下载JDK并配置好环境请忽略本章节。
步骤1 单击下载JDK文件。
步骤2 下载完成后按照提示安装,位置自选,比如安装到本地“C:\Program Files\Java
\jdk1.8.0_131”。
步骤3 配置Java环境变量:右键“计算机 >属性 >高级系统设置 >环境变量”,进行如下操 作。
1. 新建系统变量JAVA_HOME,变量值为实际JDK安装位置。
2. 在Path中添加“%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin” (注意用英文 分号分隔)。
3. 新建系统变量CLASSPATH,变量值为“%JAVA_HOME%\lib\dt.jar;
%JAVA_HOME%\lib\tools.jar” 。
步骤4 打开命令行窗口,输入“java -version”,显示如图6-1表示配置成功。
图6-1 Java 版本信息
----结束
6.2 SDK 获取和安装
JAVA版本,内容审核服务推荐您通过 Maven 安装依赖的方式使用华为云 Java SDK:
步骤1 首先您需要在您的操作系统中 下载 并 安装Maven 。
步骤2 安装配置完成后,输入命令“mvn -v”,显示如下图 Maven版本信息 表示成功。
步骤3 Maven安装完成后,可根据开发需要直接引入依赖到已有的Maven工程或先用开发工 具创建Maven工程。
创建项目以idea开发工具为例(已有Maven工程可跳过此步骤):
1. 打开IntelliJ IDEA 开发工具。
2. 点击File - New - project...。
3. 在New Project弹窗 点击-Maven-点击Next。
4. 输入GroupId和ArtifactId,点击Next。
5. 输入Project name 和 Project location,点击Finish。
步骤4 在Maven 项目的 pom.xml 文件加入相应版本的依赖项即可。
以引入3.0.55版本的内容审核SDK为例:
<dependency>
<groupId>com.huaweicloud.sdk</groupId>
<artifactId>huaweicloud-sdk-moderation</artifactId>
<version>3.0.55</version>
</dependency>
示例代码因需要输出结果更直观,所以新增fastjson的依赖(如接入不涉及此项,可忽 略并在示例代码中删除相关内容),依赖如下:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.70</version>
</dependency>
----结束
6.3 内容审核-文本
6.3.1 文本内容审核示例
1. 本章节对文本内容审核AK/SK方式使用SDK进行示例说明。
文本内容审核示例代码只需将AK/SK信息替换为实际AK/SK,代码中可以使用 TextDetectionItemsReq类的withText方法配置待检测的文本信息,配置完成后运 行即可。package com.huaweicloud.sdk.test;
import com.alibaba.fastjson.JSON;
import com.huaweicloud.sdk.core.auth.ICredential;
import com.huaweicloud.sdk.core.auth.BasicCredentials;
import com.huaweicloud.sdk.core.exception.ConnectionException;
import com.huaweicloud.sdk.core.exception.RequestTimeoutException;
import com.huaweicloud.sdk.core.exception.ServiceResponseException;
import com.huaweicloud.sdk.moderation.v2.ModerationClient;
import com.huaweicloud.sdk.moderation.v2.region.ModerationRegion;
import com.huaweicloud.sdk.moderation.v2.model.RunTextModerationResponse;
import com.huaweicloud.sdk.moderation.v2.model.TextDetectionReq;
import com.huaweicloud.sdk.moderation.v2.model.RunTextModerationRequest;
import com.huaweicloud.sdk.moderation.v2.model.TextDetectionItemsReq;
import java.util.List;
import java.util.ArrayList;
public class RunTextModerationSolution { public static void main(String[] args) { String ak = "<YOUR AK>";
String sk = "<YOUR SK>";
ICredential auth = new BasicCredentials() .withAk(ak)
.withSk(sk);
ModerationClient client = ModerationClient.newBuilder() .withCredential(auth)
.withRegion(ModerationRegion.valueOf("cn-north-4")) .build();
RunTextModerationRequest request = new RunTextModerationRequest();
TextDetectionReq body = new TextDetectionReq();
List<TextDetectionItemsReq> listbodyItems = new ArrayList<>();
listbodyItems.add(
new TextDetectionItemsReq()
.withText("666666luo聊请+110亚砷酸钾六位qqweixin,fuck666666666666666") .withType("content")
);
List<String> listbodyCategories = new ArrayList<>();
listbodyCategories.add("ad");
listbodyCategories.add("politics");
listbodyCategories.add("abuse");
listbodyCategories.add("porn");
listbodyCategories.add("contraband");
listbodyCategories.add("flood");
body.withItems(listbodyItems);
body.withCategories(listbodyCategories);
request.withBody(body);
try {
RunTextModerationResponse response = client.runTextModeration(request);
System.out.println(response.getHttpStatusCode());
System.out.println(JSON.toJSON(response));
} catch (ConnectionException e) { e.printStackTrace();
} catch (RequestTimeoutException e) { e.printStackTrace();
} catch (ServiceResponseException e) { e.printStackTrace();
System.out.println(e.getHttpStatusCode());
System.out.println(e.getErrorCode());
System.out.println(e.getErrorMsg());
} } }
2. 控制台输出200即表示程序执行成功,文本内容审核结果输出到控制台。
200{"result":{"suggestion":"block","detail":{"contraband":["亚砷酸钾"],"porn":["luo聊"]}},"httpStatusCode":
200}
6.4 内容审核-图像
6.4.1 图像内容审核示例
1. 本章节对图像内容审核AK/SK方式使用SDK进行示例说明。
图像内容审核示例代码只需将AK/SK信息替换为实际AK/SK,代码中可以使用 ImageDetectionReq类的withUrl或withImage方法配置图像信息(image和url参 数二选一),示例中以url为例配置完成后运行即可。
package com.huaweicloud.sdk.test;
import com.alibaba.fastjson.JSON;
import com.huaweicloud.sdk.core.auth.ICredential;
import com.huaweicloud.sdk.core.auth.BasicCredentials;
import com.huaweicloud.sdk.core.exception.ConnectionException;
import com.huaweicloud.sdk.core.exception.RequestTimeoutException;
import com.huaweicloud.sdk.core.exception.ServiceResponseException;
import com.huaweicloud.sdk.moderation.v2.ModerationClient;
import com.huaweicloud.sdk.moderation.v2.region.ModerationRegion;
import com.huaweicloud.sdk.moderation.v2.model.RunImageModerationRequest;
import com.huaweicloud.sdk.moderation.v2.model.ImageDetectionReq;
import com.huaweicloud.sdk.moderation.v2.model.RunImageModerationResponse;
import java.util.List;
import java.util.ArrayList;
public class RunImageModerationSolution { public static void main(String[] args) { String ak = "<YOUR AK>";
String sk = "<YOUR SK>";
ICredential auth = new BasicCredentials() .withAk(ak)
.withSk(sk);
ModerationClient client = ModerationClient.newBuilder() .withCredential(auth)
.withRegion(ModerationRegion.valueOf("cn-north-4")) .build();
RunImageModerationRequest request = new RunImageModerationRequest();
ImageDetectionReq body = new ImageDetectionReq();
List<ImageDetectionReq.CategoriesEnum> listbodyCategories = new ArrayList<>();
listbodyCategories.add(ImageDetectionReq.CategoriesEnum.fromValue("politics"));
listbodyCategories.add(ImageDetectionReq.CategoriesEnum.fromValue("terrorism"));
listbodyCategories.add(ImageDetectionReq.CategoriesEnum.fromValue("porn"));
body.withCategories(listbodyCategories);
body.withModerationRule("default");
body.withUrl("https://sdk-obs-source-save.obs.cn-north-4.myhuaweicloud.com/terrorism.jpg");
request.withBody(body);
try {
RunImageModerationResponse response = client.runImageModeration(request);
System.out.println(response.getHttpStatusCode());
System.out.println(JSON.toJSONString(response));
} catch (ConnectionException e) { e.printStackTrace();
} catch (RequestTimeoutException e) { e.printStackTrace();
} catch (ServiceResponseException e) { e.printStackTrace();
System.out.println(e.getHttpStatusCode());
System.out.println(e.getErrorCode());
System.out.println(e.getErrorMsg());
} } }
2. 控制台输出200即表示程序执行成功,图像内容审核结果输出到控制台。
200{"httpStatusCode":200,"result":{"categorySuggestions":
{"politics":"pass","terrorism":"pass","porn":"pass"},"detail":{"politics":[],"porn":[{"confidence":
0.9883,"label":"normal"},{"confidence":0.0039,"label":"porn"},{"confidence":
0.0078,"label":"sexy"}],"terrorism":[{"confidence":2.0E-4,"label":"terrorist"},{"confidence":
2.0E-4,"label":"fascist"},{"confidence":1.0E-4,"label":"cult"},{"confidence":
2.0E-4,"label":"negative_politics"},{"confidence":1.0E-4,"label":"negative_political_events"}, {"confidence":1.0E-4,"label":"kidnap"},{"confidence":6.0E-4,"label":"riot"},{"confidence":
1.0E-4,"label":"parade"},{"confidence":2.0E-4,"label":"corpse"},{"confidence":1.0E-4,"label":"bloody"}, {"confidence":1.0E-4,"label":"knife"},{"confidence":1.0E-4,"label":"gun"},{"confidence":
2.0E-4,"label":"military_weapon"},{"confidence":0.0,"label":"special_characters"},{"confidence":
0.9994,"label":"normal"}]},"suggestion":"pass"}}
Process finished with exit code 0
6.5 内容审核-图像(批量)
6.5.1 图像内容审核(批量)示例
1. 本章节对图像内容审核AK/SK方式使用SDK进行示例说明。
图像内容审核(批量)示例代码只需将AK/SK信息替换为实际AK/SK,代码中可以 使用ImageBatchModerationReq 类的withUrls配置待审核的图像url(仅支持url 方式),配置完成后运行即可。
package com.huaweicloud.sdk.test;
import com.alibaba.fastjson.JSON;
import com.huaweicloud.sdk.core.auth.ICredential;
import com.huaweicloud.sdk.core.auth.BasicCredentials;
import com.huaweicloud.sdk.core.exception.ConnectionException;
import com.huaweicloud.sdk.core.exception.RequestTimeoutException;
import com.huaweicloud.sdk.core.exception.ServiceResponseException;
import com.huaweicloud.sdk.moderation.v2.ModerationClient;
import com.huaweicloud.sdk.moderation.v2.region.ModerationRegion;
import com.huaweicloud.sdk.moderation.v2.model.RunImageBatchModerationRequest;
import com.huaweicloud.sdk.moderation.v2.model.ImageBatchModerationReq;
import com.huaweicloud.sdk.moderation.v2.model.RunImageBatchModerationResponse;
import java.util.List;
import java.util.ArrayList;
public class RunImageBatchModerationSolution { public static void main(String[] args) { String ak = "<YOUR AK>";
String sk = "<YOUR SK>";
ICredential auth = new BasicCredentials() .withAk(ak)
.withSk(sk);
ModerationClient client = ModerationClient.newBuilder() .withCredential(auth)
.withRegion(ModerationRegion.valueOf("cn-north-4")) .build();
RunImageBatchModerationRequest request = new RunImageBatchModerationRequest();
ImageBatchModerationReq body = new ImageBatchModerationReq();
List<ImageBatchModerationReq.CategoriesEnum> listbodyCategories = new ArrayList<>();
listbodyCategories.add(ImageBatchModerationReq.CategoriesEnum.fromValue("politics"));
listbodyCategories.add(ImageBatchModerationReq.CategoriesEnum.fromValue("terrorism"));
listbodyCategories.add(ImageBatchModerationReq.CategoriesEnum.fromValue("porn"));
List<String> listbodyUrls = new ArrayList<>();
listbodyUrls.add("https://sdk-obs-source-save.obs.cn-north-4.myhuaweicloud.com/terrorism.jpg");
body.withThreshold((double) 0);
body.withCategories(listbodyCategories);
body.withUrls(listbodyUrls);
request.withBody(body);
try {
RunImageBatchModerationResponse response = client.runImageBatchModeration(request);
System.out.println(response.getHttpStatusCode());
System.out.println(JSON.toJSONString(response));
} catch (ConnectionException e) {
e.printStackTrace();
} catch (RequestTimeoutException e) { e.printStackTrace();
} catch (ServiceResponseException e) { e.printStackTrace();
System.out.println(e.getHttpStatusCode());
System.out.println(e.getErrorCode());
System.out.println(e.getErrorMsg());
} } }
2. 控制台输出200即表示程序执行成功,图像内容审核批量结果输出到控制台。
200{"httpStatusCode":200,"result":[{"categorySuggestions":
{"politics":"pass","terrorism":"pass","porn":"pass"},"detail":{"politics":[],"porn":[{"confidence":
0.9883,"label":"normal"},{"confidence":0.0039,"label":"porn"},{"confidence":
0.0078,"label":"sexy"}],"terrorism":[{"confidence":2.0E-4,"label":"terrorist"},{"confidence":
2.0E-4,"label":"fascist"},{"confidence":1.0E-4,"label":"cult"},{"confidence":
2.0E-4,"label":"negative_politics"},{"confidence":1.0E-4,"label":"negative_political_events"}, {"confidence":1.0E-4,"label":"kidnap"},{"confidence":6.0E-4,"label":"riot"},{"confidence":
1.0E-4,"label":"parade"},{"confidence":2.0E-4,"label":"corpse"},{"confidence":1.0E-4,"label":"bloody"}, {"confidence":1.0E-4,"label":"knife"},{"confidence":1.0E-4,"label":"gun"},{"confidence":
2.0E-4,"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"}]}
6.6 内容审核-图像(批量异步)
6.6.1 提交任务
1. 本章节对图像内容审核AK/SK方式使用SDK进行示例说明。
图像内容审核批量异步-提交任务示例代码只需将AK/SK信息替换为实际AK/SK,
代码中可以使用RunTaskSumbitRequest 类的withUrls配置待审核的图像url(仅 支持url方式),配置完成后运行即可。
package com.huaweicloud.sdk.test;
import com.alibaba.fastjson.JSON;
import com.huaweicloud.sdk.core.auth.ICredential;
import com.huaweicloud.sdk.core.auth.BasicCredentials;
import com.huaweicloud.sdk.core.exception.ConnectionException;
import com.huaweicloud.sdk.core.exception.RequestTimeoutException;
import com.huaweicloud.sdk.core.exception.ServiceResponseException;
import com.huaweicloud.sdk.moderation.v2.ModerationClient;
import com.huaweicloud.sdk.moderation.v2.region.ModerationRegion;
import com.huaweicloud.sdk.moderation.v2.model.RunTaskSumbitRequest;
import com.huaweicloud.sdk.moderation.v2.model.TaskSumbitReq;
import com.huaweicloud.sdk.moderation.v2.model.RunTaskSumbitResponse;
import java.util.List;
import java.util.ArrayList;
public class RunTaskSumbitSolution { public static void main(String[] args) { String ak = "<YOUR AK>";
String sk = "<YOUR SK>";
ICredential auth = new BasicCredentials() .withAk(ak)
.withSk(sk);
ModerationClient client = ModerationClient.newBuilder() .withCredential(auth)
.withRegion(ModerationRegion.valueOf("cn-north-4")) .build();
RunTaskSumbitRequest request = new RunTaskSumbitRequest();
TaskSumbitReq body = new TaskSumbitReq();
List<TaskSumbitReq.CategoriesEnum> listbodyCategories = new ArrayList<>();
listbodyCategories.add(TaskSumbitReq.CategoriesEnum.fromValue("politics"));
listbodyCategories.add(TaskSumbitReq.CategoriesEnum.fromValue("porn"));
listbodyCategories.add(TaskSumbitReq.CategoriesEnum.fromValue("terrorism"));
List<String> listbodyUrls = new ArrayList<>();
listbodyUrls.add("https://sdk-obs-source-save.obs.cn-north-4.myhuaweicloud.com/terrorism.jpg");
body.withCategories(listbodyCategories);
body.withUrls(listbodyUrls);
request.withBody(body);
try {
RunTaskSumbitResponse response = client.runTaskSumbit(request);
System.out.println(response.getHttpStatusCode());
System.out.println(JSON.toJSONString(response));
} catch (ConnectionException e) { e.printStackTrace();
} catch (RequestTimeoutException e) { e.printStackTrace();
} catch (ServiceResponseException e) { e.printStackTrace();
System.out.println(e.getHttpStatusCode());
System.out.println(e.getErrorCode());
System.out.println(e.getErrorMsg());
} } }
2. 控制台输出200即表示程序执行成功,图像内容审核批量任务提交的结果输出到控 制台。200
{"httpStatusCode":200,"result":{"jobId":"7f6a5881-7774-40cf-903b-4548914b55a3"}}
Process finished with exit code 0
6.6.2 查询任务
1. 本章节对图像内容审核批量异步-查询任务AK/SK方式使用SDK进行示例说明。
图像内容审核批量异步-查询任务示例代码只需将AK/SK信息替换为实际AK/SK,
代码中需要配置使用RunCheckResultRequest类的withJobId配置审核任务的id,
配置完成后运行即可。
package com.huaweicloud.sdk.test;
import com.alibaba.fastjson.JSON;
import com.huaweicloud.sdk.core.auth.ICredential;
import com.huaweicloud.sdk.core.auth.BasicCredentials;
import com.huaweicloud.sdk.core.exception.ConnectionException;
import com.huaweicloud.sdk.core.exception.RequestTimeoutException;
import com.huaweicloud.sdk.core.exception.ServiceResponseException;
import com.huaweicloud.sdk.moderation.v2.ModerationClient;
import com.huaweicloud.sdk.moderation.v2.region.ModerationRegion;
import com.huaweicloud.sdk.moderation.v2.model.RunCheckResultRequest;
import com.huaweicloud.sdk.moderation.v2.model.RunCheckResultResponse;
public class RunCheckResultSolution { public static void main(String[] args) { String ak = "<YOUR AK>";
String sk = "<YOUR SK>";
ICredential auth = new BasicCredentials() .withAk(ak)
.withSk(sk);
ModerationClient client = ModerationClient.newBuilder() .withCredential(auth)
.withRegion(ModerationRegion.valueOf("cn-north-4")) .build();
RunCheckResultRequest request = new RunCheckResultRequest();
request.withJobId("7f6a5881-7774-40cf-903b-4548914b55a3");
try {
RunCheckResultResponse response = client.runCheckResult(request);
System.out.println(response.getHttpStatusCode());
System.out.println(JSON.toJSONString(response));
} catch (ConnectionException e) { e.printStackTrace();
} catch (RequestTimeoutException e) { e.printStackTrace();
} catch (ServiceResponseException e) { e.printStackTrace();
System.out.println(e.getHttpStatusCode());
System.out.println(e.getErrorCode());
System.out.println(e.getErrorMsg());
} } }
1. 控制台输出200即表示程序执行成功,图像内容审核批量任务查询的结果输出到控 制台。200
{"httpStatusCode":200,"result":{"createTime":"2021-08-13T03:46:30Z","items":[{"categorySuggestions":
{"politics":"pass","terrorism":"pass","porn":"pass"},"detail":{"politics":[],"porn":[{"confidence":
0.9883,"label":"normal"},{"confidence":0.0039,"label":"porn"},{"confidence":
0.0078,"label":"sexy"}],"terrorism":[{"confidence":2.0E-4,"label":"terrorist"},{"confidence":
2.0E-4,"label":"fascist"},{"confidence":1.0E-4,"label":"cult"},{"confidence":
2.0E-4,"label":"negative_politics"},{"confidence":1.0E-4,"label":"negative_political_events"}, {"confidence":1.0E-4,"label":"kidnap"},{"confidence":6.0E-4,"label":"riot"},{"confidence":
1.0E-4,"label":"parade"},{"confidence":2.0E-4,"label":"corpse"},{"confidence":1.0E-4,"label":"bloody"}, {"confidence":1.0E-4,"label":"knife"},{"confidence":1.0E-4,"label":"gun"},{"confidence":
2.0E-4,"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"}],"jobId":"7f6a5881-7774-40cf-903b-4548914b55a3","status":"finish","updateTime":"202 1-08-13T03:46:30Z"}}
Process finished with exit code 0
7 使用 SDK(Python)
7.1 Python 开发环境配置
使用内容审核Python版本SDK包,需要您配置Python开发环境。
1. 从Python官网下载并安装合适的Python版本。请使用Python3.3以上版本,如下 以Python3.7 版本为例进行说明。
2. 从PyCharm官网下载并安装最新版本。
3. 在PyCharm开发工具中配置Python环境,在菜单依次选择“File > Settings >
Project Interpreter”。
4. 在页面上方选择您的Python安装路径,如图 PyCharm配置python环境所示。选 择好目标Python之后单击页面下方“Apply”完成配置。
图7-1 PyCharm 配置 python 环境
7.2 Python 语言 SDK 获取和安装
python语言SDK的获取和安装推荐使用pip命令进行安装或使用pycharm进行安装,需 要安装huaweicloudsdkcore包以及huaweicloudsdkmoderation,参考方法如下:
pip 安装:
# 安装核心库
pip install huaweicloudsdkcore
# 安装Moderation服务库
pip install huaweicloudsdkmoderation
使用pycharm安装,步骤如下:
1. 打开pycharm,点击File -> Settings...。
2. 点击Python Interpreter -> 点击+。
3. 点击+,分别搜索huaweicloudsdkcore及huaweicloudsdkmoderation,搜索到包 内容点击左下角Install Package完成安装。
图7-2 pycharm 安装内容审核 python 版本 sdk 包
7.3 SDK 调用示例
7.3.1 文本内容审核
1. 本章节对文本内容审核AK/SK方式使用SDK进行示例说明。
文本内容审核示例代码只需将AK/SK信息替换为实际AK/SK,代码中修改
TextDetectionItemsReq的text值配置待检测的文本信息,配置完成后运行即可。
# coding: utf-8
from huaweicloudsdkcore.auth.credentials import BasicCredentials from huaweicloudsdkcore.exceptions import exceptions
from huaweicloudsdkmoderation.v2.region.moderation_region import ModerationRegion from huaweicloudsdkmoderation.v2 import
ModerationClient,RunTextModerationRequest,TextDetectionItemsReq,TextDetectionReq if __name__ == "__main__":
ak = "<YOUR AK>"
sk = "<YOUR SK>"
credentials = BasicCredentials(ak, sk) client = ModerationClient.new_builder() \ .with_credentials(credentials) \
.with_region(ModerationRegion.value_of("cn-north-4")) \ .build()
try:
request = RunTextModerationRequest() listTextDetectionItemsReqItemsbody = [ TextDetectionItemsReq(
text="666666luo聊请+110亚砷酸钾六位qqweixin,fuck66666666666666", type="content"
) ]
listTextDetectionReqCategoriesbody = [ "politics",
"porn", "ad", "abuse", "contraband", "flood"
]
request.body = TextDetectionReq(
items=listTextDetectionItemsReqItemsbody, categories=listTextDetectionReqCategoriesbody )
response = client.run_text_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": {"suggestion": "block", "detail": {"contraband": ["亚砷酸钾"], "porn": ["luo聊"]}}}}
7.3.2 图像内容审核
1. 本章节对图像内容审核AK/SK方式使用SDK进行示例说明。
图像内容审核示例代码只需将AK/SK信息替换为实际AK/SK,代码中可以修改 ImageDetectionReq的url或image方法配置图像信息(image和url参数二选 一),示例中以url为例配置完成后运行即可。
# coding: utf-8
from huaweicloudsdkcore.auth.credentials import BasicCredentials from huaweicloudsdkcore.exceptions import exceptions
from huaweicloudsdkmoderation.v2.region.moderation_region import ModerationRegion from huaweicloudsdkmoderation.v2 import
ModerationClient,RunImageModerationRequest,ImageDetectionReq if __name__ == "__main__":
ak = "<YOUR AK>"
sk = "<YOUR SK>"
credentials = BasicCredentials(ak, sk) client = ModerationClient.new_builder() \ .with_credentials(credentials) \
.with_region(ModerationRegion.value_of("cn-north-4")) \ .build()
try:
request = RunImageModerationRequest() listImageDetectionReqCategoriesbody = [ "politics",
"terrorism", "porn", "ad"
]
request.body = ImageDetectionReq(
threshold=0,
categories=listImageDetectionReqCategoriesbody, moderation_rule="default",
url="https://sdk-obs-source-save.obs.cn-north-4.myhuaweicloud.com/terrorism.jpg"
)
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 图像内容审核(批量)
1. 本章节对图像内容审核AK/SK方式使用SDK进行示例说明。
图像内容审核(批量)示例代码只需将AK/SK信息替换为实际AK/SK,代码中可以 修改ImageBatchModerationReq的urls配置待审核的图像url(仅支持url方式),
配置完成后运行即可。
# coding: utf-8
from huaweicloudsdkcore.auth.credentials import BasicCredentials from huaweicloudsdkcore.exceptions import exceptions
from huaweicloudsdkmoderation.v2.region.moderation_region import ModerationRegion from huaweicloudsdkmoderation.v2 import
ModerationClient,RunImageBatchModerationRequest,ImageBatchModerationReq if __name__ == "__main__":
ak = "<YOUR AK>"
sk = "<YOUR SK>"
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) print(e.request_id) print(e.error_code) print(e.error_msg)
2. 控制台输出200即表示程序执行成功,图像内容审核批量结果输出到控制台。
200{'result': [{'category_suggestions': {'ad': 'pass', 'politics': 'pass', 'porn': 'pass', 'terrorism': 'pass'}, 'detail': {'ad': [{'confidence': 0.0, 'label': 'ad'}, {'confidence': 1.0, 'label': 'normal'}], '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'}]}, 'suggestion': 'pass',
'url': 'https://sdk-obs-source-save.obs.cn-north-4.myhuaweicloud.com/terrorism.jpg'}]}
Process finished with exit code 0
7.3.4 内容审核-图像(批量异步)
7.3.4.1 提交任务
1. 本章节对图像内容审核AK/SK方式使用SDK进行示例说明。
图像内容审核批量异步-提交任务示例代码只需将AK/SK信息替换为实际AK/SK,
代码中可以修改TaskSumbitReq的urls配置待审核的图像url(仅支持url方式),
配置完成后运行即可。
# coding: utf-8
from huaweicloudsdkcore.auth.credentials import BasicCredentials from huaweicloudsdkcore.exceptions import exceptions
from huaweicloudsdkmoderation.v2.region.moderation_region import ModerationRegion from huaweicloudsdkmoderation.v2 import *
from huaweicloudsdkmoderation.v2 import ModerationClient,RunTaskSumbitRequest,TaskSumbitReq if __name__ == "__main__":
ak = "<YOUR AK>"
sk = "<YOUR SK>"
credentials = BasicCredentials(ak, sk) client = ModerationClient.new_builder() \ .with_credentials(credentials) \
.with_region(ModerationRegion.value_of("cn-north-4")) \ .build()
try:
request = RunTaskSumbitRequest() listTaskSumbitReqCategoriesbody = [ "politics",
"porn", "terrorism"
]
listTaskSumbitReqUrlsbody = [
"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) print(e.request_id) print(e.error_code) print(e.error_msg)
2. 控制台输出200即表示程序执行成功,图像内容审核批量任务提交的结果输出到控 制台。200
{'result': {'job_id': '321cb5b6-3ad3-461a-b258-7ba7f530b91a'}}
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
from huaweicloudsdkcore.auth.credentials import BasicCredentials from huaweicloudsdkcore.exceptions import exceptions
from huaweicloudsdkmoderation.v2.region.moderation_region import ModerationRegion from huaweicloudsdkmoderation.v2 import *
from huaweicloudsdkmoderation.v2 import ModerationClient,RunCheckResultRequest if __name__ == "__main__":
ak = "<YOUR AK>"
sk = "<YOUR SK>"
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) print(e.request_id) print(e.error_code) print(e.error_msg)
2. 控制台输出200即表示程序执行成功,图像内容审核批量任务查询的结果输出到控 制台。200
{'result': {'create_time': '2021-08-04T08:30:41Z',
'items': [{'category_suggestions': {'politics': 'pass', 'porn': 'pass',
'terrorism': 'pass'}, 'detail': {'ad': None,
'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'}]}, '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() {
Items = listTextDetectionItemsReqItems, Categories = listTextDetectionReqCategories };
try {
var resp = client.RunTextModeration(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);
Console.WriteLine(clientRequestException.ErrorMsg);
}
catch (ConnectionException connectionException) {
Console.WriteLine(connectionException.ErrorMessage);
} } } }
2. 控制台输出200即表示程序执行成功,文本内容审核结果输出到控制台。
200{'result': {'detail': {'contraband': ['亚砷酸钾'], 'porn': ['luo聊']}, 'suggestion': 'block'}}
8.3.2 图像内容审核
1. 本章节对图像内容审核AK/SK方式使用SDK进行示例说明。
图像内容审核示例代码只需将AK/SK信息替换为实际AK/SK,代码中可以修改 ImageDetectionReq的Image或Url配置待审核图像信息(image和url参数二选 一),示例中以url为例配置完成后运行即可。
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 RunImageModerationSolution {
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 RunImageModerationRequest {
};
List<ImageDetectionReq.CategoriesEnum> listImageDetectionReqCategories = new List<ImageDetectionReq.CategoriesEnum>();
listImageDetectionReqCategories.Add(ImageDetectionReq.CategoriesEnum.FromValue("politics"));
listImageDetectionReqCategories.Add(ImageDetectionReq.CategoriesEnum.FromValue("terrorism"));
listImageDetectionReqCategories.Add(ImageDetectionReq.CategoriesEnum.FromValue("porn"));
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"
};
try {
var resp = client.RunImageModeration(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);
Console.WriteLine(clientRequestException.ErrorMsg);
}
catch (ConnectionException connectionException) {
Console.WriteLine(connectionException.ErrorMessage);
} } } }
2. 控制台输出200即表示程序执行成功,图像内容审核结果输出到控制台。
200{'result': {'category_suggestions': {'ad': 'pass', 'politics': 'pass', 'porn': 'pass', 'terrorism': 'pass'}, 'detail': {'ad': [{'confidence': 0.0, 'label': 'ad'}, {'confidence': 1.0, 'label': 'normal'}],
'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'}]}, 'suggestion': 'pass'}}
8.3.3 图像内容审核(批量)
1. 本章节对图像内容审核AK/SK方式使用SDK进行示例说明。
图像内容审核(批量)示例代码只需将AK/SK信息替换为实际AK/SK,代码中可以 修改ImageBatchModerationReq 的Urls 配置待审核的图像url(仅支持url方 式),配置完成后运行即可。
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 RunImageBatchModerationSolution { 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 RunImageBatchModerationRequest {
};
List<ImageBatchModerationReq.CategoriesEnum> listImageBatchModerationReqCategories = new List<ImageBatchModerationReq.CategoriesEnum>();
listImageBatchModerationReqCategories.Add(ImageBatchModerationReq.CategoriesEnum.FromValue(
"politics"));
listImageBatchModerationReqCategories.Add(ImageBatchModerationReq.CategoriesEnum.FromValue(
"terrorism"));
listImageBatchModerationReqCategories.Add(ImageBatchModerationReq.CategoriesEnum.FromValue(
"porn"));
listImageBatchModerationReqCategories.Add(ImageBatchModerationReq.CategoriesEnum.FromValue(
"ad"));
List<String> listImageBatchModerationReqUrls = new List<String>();
listImageBatchModerationReqUrls.Add("https://sdk-obs-source-save.obs.cn- north-4.myhuaweicloud.com/tagging-normal.jpg");
req.Body = new ImageBatchModerationReq() {
Threshold = 0,
Categories = listImageBatchModerationReqCategories, Urls = listImageBatchModerationReqUrls
};
try {
var resp = client.RunImageBatchModeration(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);
Console.WriteLine(clientRequestException.ErrorMsg);
}
catch (ConnectionException connectionException) {
Console.WriteLine(connectionException.ErrorMessage);
} } } }
2. 控制台输出200即表示程序执行成功,图像内容审核批量结果输出到控制台。
200{'result': [{'category_suggestions': {'ad': 'pass', 'politics': 'pass', 'porn': 'pass', 'terrorism': 'pass'}, 'detail': {'ad': [{'confidence': 0.0, 'label': 'ad'}, {'confidence': 1.0, 'label': 'normal'}], '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'}]}, 'suggestion': 'pass',
'url': 'https://sdk-obs-source-save.obs.cn-north-4.myhuaweicloud.com/terrorism.jpg'}]}
8.3.4 内容审核-图像(批量异步)
8.3.4.1 提交任务
1. 本章节对图像内容审核AK/SK方式使用SDK进行示例说明。
图像内容审核批量异步-提交任务示例代码只需将AK/SK信息替换为实际AK/SK,
代码中可以配置RunTaskSumbitRequest 的Urls配置待审核的图像url(仅支持url 方式),配置完成后运行即可。
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 RunTaskSumbitSolution { 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 RunTaskSumbitRequest {
};
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");
req.Body = new TaskSumbitReq() {
Categories = listTaskSumbitReqCategories, Urls = listTaskSumbitReqUrls
};
try
{
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);
Console.WriteLine(clientRequestException.ErrorMsg);
}
catch (ConnectionException connectionException) {
Console.WriteLine(connectionException.ErrorMessage);
} } } }
2. 控制台输出200即表示程序执行成功,图像内容审核批量任务提交的结果输出到控 制台。200
{'result': {'job_id': '321cb5b6-3ad3-461a-b258-7ba7f530b91a'}}
8.3.4.2 查询任务
1. 本章节对图像内容审核批量异步-查询任务AK/SK方式使用SDK进行示例说明。
图像内容审核批量异步-查询任务示例代码只需将AK/SK信息替换为实际AK/SK,
代码中需要修改RunCheckResultRequest的JobId配置审核任务的id,配置完成后 运行即可。
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 RunCheckResultSolution { 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 RunCheckResultRequest {
JobId = "2991572e-f503-11eb-a32d-88bd0dde8061"
};
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);
Console.WriteLine(clientRequestException.ErrorMsg);
}
catch (ConnectionException connectionException) {
Console.WriteLine(connectionException.ErrorMessage);
} } } }
1. 控制台输出200即表示程序执行成功,图像内容审核批量任务查询的结果输出到控 制台。200
{'result': {'create_time': '2021-08-04T08:30:41Z',
'items': [{'category_suggestions': {'politics': 'pass', 'porn': 'pass',
'terrorism': 'pass'}, 'detail': {'ad': None,
'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'}]}, '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'}}
9 使用 SDK(GO)
9.1 GO 开发环境配置
使用图像识别GO版本SDK包,需要您配置Go语言开发环境。如已经安装配置go开发 环境,可跳过
1. 在golang 官网 下载并安装对应的go版本,sdk支持 go 1.14 及以上版本。
2. 下载完成后按照提示安装,位置自选,比如安装到本地D:\develop\go。
3. 配置GO环境变量:右键“计算机>属性>高级系统设置>环境变量”,进行如下操 作。
a. 新建系统变量GOROOT,变量值为实际go安装位置。新增环境变量 GOPATH,变量为go语言工程所在目录。
b. 修改PATH变量,末尾增加GO的编译器路径“;%GOROOT%\bin",中间分隔 符是【;】。
c. 修改CLASSPATH变量,末尾增加GO的编译器路径“;%GOROOT%\lib",中 间分隔符是【;】。
4. 在vs code官网:https://code.visualstudio.com/Download ,下载安装操作系 统的vs code。
5. 安装go语言的插件Go和 Go Critic。
9.2 GO 语言 SDK 获取和安装
1. GO语言SDK的获取和安装使用命令,参考方法如下:
go get -u github.com/huaweicloud/huaweicloud-sdk-go-v3
9.3 SDK 调用示例
9.3.1 文本内容审核
1. 本章节对文本内容审核AK/SK方式使用SDK进行示例说明。
文本内容审核示例代码只需将AK/SK信息替换为实际AK/SK,代码中可以将 TextDetectionItemsReq的Text配置待检测的文本信息,配置完成后运行即可。