阿里云内容审核服务使用(图片审核)

  • Post author:
  • Post category:其他


说明:在项目中,我们经常会对用户上传的内容(如文字、图片)等资源内容进行审核,审核包括两方面,一方面是内容与描述不符,一方面是违反法律法规。本文介绍使用阿里提供的内容审核服务,对图片内容进行审核。



开通服务



第一步:打开官网

进入

阿里云官网

,在搜索框内输入“内容安全”,点击下面这个,选择“免费开通”;

在这里插入图片描述



第二步:开通内容审核服务

选择“立即开通”

在这里插入图片描述



第三步:在线调试

进入“控制台”,“服务列表”中图片审核,选择在线调试;

在这里插入图片描述



第四步:调试代码

在弹出的窗口中,填上图片URL和scene(场景),选择SDK示例和Java语言;

在这里插入图片描述

图片URL可以选择本地图片上传,也可以选择网络路径,像OSS、Minio上的图片资源路径,如我填入的是

下面这张

在这里插入图片描述

图片审核的场景参数如下,这里我填“porn(色情图片)”;

在这里插入图片描述



第五步:发起调用

点“发起调用”,查看响应结果,可以看到“Suggestion”的值为“pass”,表示这张图片OK,没问题;

在这里插入图片描述



代码实现



第一步:添加依赖

接下来就很简单了,把右边SDK调用的代码复制下来就可以了,但是需要引入相关的依赖。如下,创建一个简单的SpringBoot项目,pom.xml文件如下:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.hzy</groupId>
    <artifactId>starter-simple</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>11</maven.compiler.source>
        <maven.compiler.target>11</maven.compiler.target>
    </properties>

    <!--Springboot项目-->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.12</version>
        <relativePath/>
    </parent>

    <dependencies>
        <!--启动类依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <!--图片审核依赖-->
        <dependency>
            <groupId>com.aliyun</groupId>
            <artifactId>imageaudit20191230</artifactId>
            <version>2.0.6</version>
        </dependency>
    </dependencies>
</project>

注意依赖也不是随便引入的,阿里云提供的SDK中找到;

在这里插入图片描述

点进GitHub链接,可以找到依赖的Maven坐标;

在这里插入图片描述

而版本号,可以点SDK链接;

在这里插入图片描述



第二步:代码实现

把前面在线调试的代码拷贝下来,提供的代码建议我们把AK&SK配置到系统环境变量中,有一点离谱,我直接不听他的建议,将代码修改成如下:

public class Sample {

    /**
     * 使用AK&SK初始化账号Client
     * @param accessKeyId
     * @param accessKeySecret
     * @return Client
     * @throws Exception
     */
    public static com.aliyun.imageaudit20191230.Client createClient(String accessKeyId, String accessKeySecret) throws Exception {
        com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
                .setAccessKeyId(accessKeyId)
                .setAccessKeySecret(accessKeySecret);
        config.endpoint = "imageaudit.cn-shanghai.aliyuncs.com";
        return new com.aliyun.imageaudit20191230.Client(config);
    }

    /**
     * main方法
     * @param args
     * @throws Exception
     */
    public static void main(String[] args) throws Exception {

        // 官方在这里是获取系统中环境变量中的值
        com.aliyun.imageaudit20191230.Client client = Sample.createClient("你的ak", "你的sk");

        // 设置ImageURL
        com.aliyun.imageaudit20191230.models.ScanImageRequest.ScanImageRequestTask task0 = new com.aliyun.imageaudit20191230.models.ScanImageRequest.ScanImageRequestTask()
                .setImageURL("https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fsafe-img.xhscdn.com%2Fbw1%2F5723a630-077e-45c5-9e73-49ed809b3f43%3FimageView2%2F2%2Fw%2F1080%2Fformat%2Fjpg&refer=http%3A%2F%2Fsafe-img.xhscdn.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1694165323&t=149871d4e26b4b9a386e0e98bedc2929");

        // 添加图片任务、设置场景
        com.aliyun.imageaudit20191230.models.ScanImageRequest scanImageRequest = new com.aliyun.imageaudit20191230.models.ScanImageRequest()
                .setTask(java.util.Arrays.asList(
                        task0
                ))
                .setScene(java.util.Arrays.asList(
                        "porn"
                ));
        
        com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();

        // 打印图片审核结果
        String suggestion = client.scanImageWithOptions(scanImageRequest, runtime).getBody().getData().results.get(0).getSubResults().get(0).suggestion;
        
        System.out.println(suggestion);
    }
}



获取AK&SK



第一步:进入AccessKey管理

鼠标移动到右上角自己的头像上,选择AccessKey管理;

在这里插入图片描述



第二步:使用子用户AccessKey

进入后,选择“开始使用子用户AccessKey”;

在这里插入图片描述



第三步:创建用户

选择“创建用户”

在这里插入图片描述

填写登录名称和在列表中显示的名称,记得勾选OpenAPI调用访问;

在这里插入图片描述

创建完成后,就会有AK&SK,记得复制下来;



第四步:添加权限

获得AK&SK还没完,还需要开通该用户图片审核服务的使用权限;

在这里插入图片描述

搜索“AliyunVIAPIFullAccess”,点击加入,点确定;

在这里插入图片描述



测试

把上面获取到的AK&SK填入到代码中,鼠标右键启动程序;

在这里插入图片描述

可以看到这张图片,审核建议为“pass”;

在这里插入图片描述

到这里,使用阿里内容审核服务,对图片内容审核功能就完成了。当然这是一个非常简陋的Demo,有以下待优化的地方:

  • 在实际项目中,我们不可能把AK、SK、ImageURL和endpoint在代码中写死,应该写在配置文件中;

  • 对审核的结果应该增加校验,审核返回值有异常的话需要处理(判断==>捕获/抛出);

  • 对于审核结果,不能仅返回一个审核建议,还需要获取其他返回值,应该设计一套返回结果的解析;

审核返回值,在

阿里云官方提供的SDK

中说明,部分如下:

在这里插入图片描述



版权声明:本文为qq_42108331原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。