• 沒有找到結果。

GO开发环境配置_内容审核 Moderation_SDK参考_使用SDK(GO)_华为云

N/A
N/A
Protected

Academic year: 2022

Share "GO开发环境配置_内容审核 Moderation_SDK参考_使用SDK(GO)_华为云"

Copied!
41
0
0

加載中.... (立即查看全文)

全文

(1)

SDK 参考

文档版本 01

发布日期 2021-09-09

(2)

版权所有 © 华为技术有限公司 2021。 保留一切权利。

非经本公司书面许可,任何单位和个人不得擅自摘抄、复制本文档内容的部分或全部,并不得以任何形式传 播。

商标声明

和其他华为商标均为华为技术有限公司的商标。

本文档提及的其他所有商标或注册商标,由各自的所有人拥有。

注意

您购买的产品、服务或特性等应受华为公司商业合同和条款的约束,本文档中描述的全部或部分产品、服务或 特性可能不在您的购买或使用范围之内。除非合同另有约定,华为公司对本文档内容不做任何明示或暗示的声 明或保证。

由于产品版本升级或其他原因,本文档内容会不定期进行更新。除非另有约定,本文档仅作为使用指导,本文 档中的所有陈述、信息和建议不构成任何明示或暗示的担保。

华为技术有限公司

地址: 深圳市龙岗区坂田华为总部办公楼 邮编:518129

网址:

https://www.huawei.com

客户服务邮箱:

[email protected]

客户服务电话:4008302118

(3)

目 录

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

(4)

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

(5)

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

(6)

2 申请服务

申请内容审核服务的具体操作步骤请参见《内容审核API参考》的“如何调用API > 申

请服务”章节。

(7)

3 获取认证信息

步骤1 登录华为云管理控制台。

步骤2 鼠标移动至用户名处,在下拉列表中单击“我的凭证”。

步骤3 选择“访问密钥”页签,点击“新增访问秘钥”按钮。

步骤4 通过邮箱或者手机进行验证,输入对应的验证码。

步骤5 单击“确定”,下载认证账号的AK/SK,AK/SK数据会以本地文件的形式保存,请妥善 保管。

----结束

(8)

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 及以上版本。

(9)

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视频指导

PYTHON

huaweicloud-

sdk-python-v3 Python SDK使用 指导

Python SDK视频 指导

.NET

huaweicloud-

sdk-net-v3 .Net SDK使用指导

-

GO

huaweicloud-

sdk-go-v3 Go SDK使用指导

-

(10)

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 。

(11)

步骤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;

(12)

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 内容审核-图像

(13)

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":

(14)

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) {

(15)

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();

(16)

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)

(17)

.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

(18)

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 环境

(19)

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值配置待检测的文本信息,配置完成后运行即可。

(20)

# 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__":

(21)

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)

(22)

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

(23)

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,配置完成后运行 即可。

(24)

# 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'},

(25)

{'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

(26)

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

(27)

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 {

(28)

};

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 {

(29)

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'}],

(30)

'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(

(31)

"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'},

(32)

{'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

(33)

{

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"

};

(34)

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,

(35)

'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'}}

(36)

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配置待检测的文本信息,配置完成后运行即可。

參考文獻

相關文件

„ „ The The extended nature extended nature of string theory introduces of string theory introduces additional degrees of freedom?. additional degrees of freedom localized

A clever and simplifying strategy: pairing up all the rays coming through the slit and then finding what conditions cause the waves of the rays in each pair to cancel each other.

Low temperature High temperature YM theory confinement deconfinement D4 brane model solitonic D4 localized D3

[r]

Don Knuth James Morris Vaughan Pratt..

private void Page_Load(object sender, System.EventArgs e) {{. string dataSource

private void Page_Load(object sender, System.EventArgs e) {. string dataSource

 Request.Cookies[ &#34;Cookie 名稱&#34; ].Value –取得使用者所傳送的 Cookie 內容. 