阿里云内容审核服务使用(图片审核)
说明:在项目中,我们经常会对用户上传的内容(如文字、图片)等资源内容进行审核,审核包括两方面,一方面是内容与描述不符,一方面是违反法律法规。本文介绍使用阿里提供的内容审核服务,对图片内容进行审核。
开通服务
第一步:打开官网
进入阿里云官网,在搜索框内输入“内容安全”,点击下面这个,选择“免费开通”;

第二步:开通内容审核服务
选择“立即开通”

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

第四步:调试代码
在弹出的窗口中,填上图片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");// 设置ImageURLcom.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中说明,部分如下:

相关文章:
阿里云内容审核服务使用(图片审核)
说明:在项目中,我们经常会对用户上传的内容(如文字、图片)等资源内容进行审核,审核包括两方面,一方面是内容与描述不符,一方面是违反法律法规。本文介绍使用阿里提供的内容审核服务,…...
git撤回最近一次push操作
git push -f origin HEAD^:branch_name其中,branch_name 是你想要撤回 push 操作的分支的名称。 这个命令将会强制推送到远程仓库,将远程分支回滚到上一个提交(HEAD^ 意味着上一个提交)。这样做会丢失最近一次 push 的更改&#…...
2000-2022年上市公司环境不确定性(原始数据+测算代码+测算结果)
2000-2022年上市公司环境不确定性指数(含原始数据 代码和计算结果) 1、时间:2000-2022年 2、指标:gupiao代码、名称、日期、年份、总资产净利润率ROA、营业收入、上市日期、成立日期、行业代码、年末是否ST或PT、行业、EU未调整…...
网络基本概念
目录 一、IP地址 1. 概念 2. 格式 3. 特殊IP 二、端口号 1.概念 2. 格式 3.注意事项 三、 协议 1. 概念 2. 作用 四、协议分层 1. 网络设备所在分层 五、封装与分用 六、客户端和服务器 1. 客户端与服务器通信的过程 一、IP地址 1. 概念 IP地址主要用于标识网络主机.其他网络…...
2.安装Docker-ce
一、删除之前安装的docker(若之前未安装过,此步骤省略…) 进入centos根目录执行以下命令(\ 是linux系统种命令换行符,如果命令过长,可以用\来换行) yum remove docker \ docker-client \ docker-client-latest \ doc…...
Redis-2
Redis 持久化 Redis 为了保证效率,数据缓存在了内存中,但是会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件中,以保证数据的持久化。总的目的把数据保存到硬盘,有 RDB 和 AOF 两种。 RDB 持久化方案: RDB 是一…...
一分钟了解下Java追随和适应云原生的手段之Java Native Build(JNB)
文章首发地址 为了解决在云原生环境中,Java应用启动慢的问题,出现了很多派系,如拯救派,让应用在原有基础上启动更快(一般都是用资源换时间),还有就是革命派,Java向Golang学习&#x…...
Flutter iOS 与 flutter 相互通信
在混合开发中避免不了通信,简单记录一下,Flutter iOS工程与Flutter 之间相互通信。 Flutter中通过Platform Channel实现Flutter和原生端的数据传递,是怎么进行数据通信,以及怎么配置,下面一一进行详解。 FlutterMetho…...
OpenCV和PIL图像对象转换
OpenCV和PIL(Python Imaging Library)都是常用的Python图像处理库。它们都有自己的图像对象类型,因此在使用它们时需要进行相应的转换。 下面是OpenCV图像对象和PIL图像对象之间的转换方法: 将OpenCV图像对象转换为PIL图像对象&…...
IDEA的实用快捷键大全
目录 1.常规快捷键 1.1通用类 1.2注释类 1.3操作类 1.4展开与关闭 2.智能补全类快捷键 3.程序结构类快捷键 4.统一操作快捷键 1.常规快捷键 1.1通用类 像 Ctrl C 复制, Ctrl V 粘贴, Ctrl S保存文件, Ctrl X剪切,这种…...
04-6_Qt 5.9 C++开发指南_QListWidget和QToolButton
文章目录 1. 实例简介2. 源码2.1 混合式界面设计2.2 mainwindow.h2.3 mainwindow.cpp 1. 实例简介 Qt 中用于项 (Item)处理的组件有两类,一类是 Item Views,包括 QListView、QTreeView、QTableView、QColumnView 等;另一类是 Item Widgets,包…...
笔试错题不熟悉 积累
【2022】小米秋招笔试-运维开发-卷2 DNS 域名解析的默认端口是 53 常用服务端口号集合(超全)!!! Redis中遍历所有Key,以下哪种方式对Redis服务影响最小? SCAN 每次执行都只会返回少量元素,…...
Adb发送特定广播给App和App获取权限的命令
最近在做Autostart,但是没有bench R1环境 目前在模拟器上调试,需要调试自定义的广播和获取悬浮窗权限(因为这个app需要在开机未启动app的情况启动服务区获取传感器信号然后全局弹窗)。 需要先adb root adb remount 1.发送广播给…...
字节C++后端面试总结
字节的面经,技术栈是 C++ 后端。 计算机网络 UDP和TCP区别 先说了概念一个是面向连接的基于字节流的可靠连接,一个是不需要连接的基于数据报的不可靠传输 然后说了几个小点,比如首部长度、应用场景、服务对象什么的。 补充: 还有一个很重要的点:UDP 的实时性比 TCP 好…...
el-select 分页加载
el-select 分页加载 el-select 分页懒加载监听的指令——loadMore指令的使用 el-select 分页懒加载 针对数据量大的选择器,需要分页从后端接口获取数据,前端监听选择器下拉框的滚动事件,当往下滚动至底部一定位置时,调接口 监听…...
QColorDialog
QColorDialog 颜色类 QColor颜色对话框API简单的使用 QColorDialog类是QDialog的子类, 通过这个类我们可以得到一个选择颜色的对话框窗口 颜色类 QColor 关于颜色的属性信息, 在QT框架中被封装到了一个叫QColor的类中。 各种颜色都是基于红, 绿, 蓝这三种颜色调配而成的, 并…...
Linux部署Zabbix主机监控
192.168.136.55 服务端 192.168.136.56 客户端 一、服务端 1.1 安装lamp环境 #关闭防火墙以及SELINUX systemctl disable firewalld systemctl stop firewalld sed -i s/SELINUXenforcing$/SELINUXdisabled/g /etc/selinux/config setenforce 0设置yum源 yum install epe…...
【IC萌新虚拟项目】功能覆盖率文件合入与功能覆盖率收集
关于整个虚拟项目,请参考: 【IC萌新虚拟项目】Package Process Unit项目全流程目录_尼德兰的喵的博客-CSDN博客 前言 上一篇文章我们已经完成了测试点的相关指导,在工程目录下看到一份推荐的测试点分解文档。当然这只是一种参考,大家可以按照自己的理解进行测试点分解,并…...
同步辐射散射数据处理分析方法及实验过程
同步辐射散射数据处理分析方法及过程 同步辐射散射测试是一种先进的材料表征技术,已广泛应用于材料科学、生物学、化学等领域。同步辐射散射技术利用同步辐射光源产生的高亮度辐射,通过散射实验来研究样品的结构、形态和动态行为。 同步辐射散射处理分析…...
使用JavaScript开发网页地图导航
使用JavaScript开发网页地图导航 导航是生活中的一个常见需求,而在互联网时代,网页地图导航成为了人们获取信息和帮助的重要工具。在网页中开发一个地图导航功能,能够提供用户位置定位、路线规划、交通情况等有用的信息,提供便利…...
基于MATLAB的智能车牌识别模型:实现定位、分割与识别一体化解决方案
基于MATLAB的车牌识别模型。 包括车牌识别系统,完成车牌定位、车牌字符分割和车牌字符识别。 用到灰度化、图像增强、边缘检测、车辆定位、分割车牌、车辆预处理、字符分割最后得到识别结果。 程序已调通,可直接运行。直接上干货!今天带大家用…...
Omni-Vision Sanctuary 在 Proteus 仿真中的应用:智能电路设计与调试助手
Omni-Vision Sanctuary 在 Proteus 仿真中的应用:智能电路设计与调试助手 1. 电子工程师的新助手 作为一名电子工程师,你是否经历过这样的场景:面对一个功能需求,花了大量时间查阅资料却找不到合适的电路方案;仿真波…...
2026届最火的十大AI科研平台实测分析
Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 学术写作需求有所增长之际,AI论文网站变成了研究者的关键辅助工具。当下主流众多…...
保姆级图解:ARM CHI协议里的Credit机制,到底是怎么防止芯片“堵车”的?
ARM CHI协议中的Credit机制:芯片互连的智能交通控制系统 想象一下早高峰时段的城市交通——如果没有红绿灯和匝道流量控制,整个道路系统将在几分钟内陷入瘫痪。类似地,在现代多核处理器和芯片间互连架构中,Credit机制正是扮演着这…...
LayerDivider终极指南:AI智能图像分层工具完全解析
LayerDivider终极指南:AI智能图像分层工具完全解析 【免费下载链接】layerdivider A tool to divide a single illustration into a layered structure. 项目地址: https://gitcode.com/gh_mirrors/la/layerdivider 你是否曾面对复杂的插画作品,需…...
腾讯 CodeBuddy 全形态解析:IDE、CLI 与插件如何重塑 AI 编程体验
1. CodeBuddy 三形态全景解析:从终端到桌面的AI编程革命 第一次用CodeBuddy的CLI工具时,我在终端里输入"帮我写个Python爬虫抓取天气数据",三秒钟后看着自动生成的完整代码,手里的咖啡差点洒在键盘上。这就是腾讯CodeB…...
保姆级教程:用C# WinForm给STM32写个Modbus固件升级工具(附完整源码)
从零构建STM32固件升级工具:C# WinForm与Modbus协议深度实践 1. 开发环境与项目初始化 在Visual Studio 2022中新建Windows窗体应用项目时,建议选择.NET Framework 4.7.2或更高版本以获得最佳兼容性。项目创建后,首先需要配置NuGet包管理器安…...
Mojo加速Python科学计算:从API绑定到内存零拷贝,5步完成CUDA级性能跃迁
第一章:Mojo加速Python科学计算:从API绑定到内存零拷贝,5步完成CUDA级性能跃迁Mojo 作为兼具 Python 兼容性与系统级性能的新一代编程语言,正重塑科学计算的性能边界。其核心优势在于原生支持异构硬件(如 NVIDIA GPU&a…...
救命!2026爆款PPT一键制作工具实测,新手也能5分钟出片,告别熬夜手搓无标题
作为常年和PPT打交道的AI博主,每天都能收到粉丝私信轰炸:“做PPT有没有捷径?”“AI能不能帮我快速出稿?”“新手零基础,半天排不出一页像样的版面”……懂的都懂!谁没为了一份PPT熬到凌晨?找模板…...
OpenClaw+Qwen3.5-9B:科研党的文献综述加速器
OpenClawQwen3.5-9B:科研党的文献综述加速器 1. 为什么需要AI辅助文献处理 去年冬天,我在准备一篇关于量子计算在金融领域应用的综述论文时,遇到了所有科研人共同的噩梦:堆积如山的PDF文献。下载了87篇相关论文后,光…...
