深圳企业网站建设定制开发服务,孝感高新区建设局网站,怎么建立自己企业网站,网站建设自建服务器1. 内容审核服务
内容安全是识别服务#xff0c;支持对图片、视频、文本、语音等对象进行多样化场景检测#xff0c;有效降低内容违规风险。
目前很多平台都支持内容检测#xff0c;如阿里云、腾讯云、百度AI、网易云等国内大型互联网公司都对外提供了API。
目前用得较多…1. 内容审核服务
内容安全是识别服务支持对图片、视频、文本、语音等对象进行多样化场景检测有效降低内容违规风险。
目前很多平台都支持内容检测如阿里云、腾讯云、百度AI、网易云等国内大型互联网公司都对外提供了API。
目前用得较多的是阿里云的内容安全接口云盾内容安全产品试用页面
1.1 文本内容审核
文本垃圾内容检测https://help.aliyun.com/document_detail/70439.html?spma2c4g.11186623.6.659.35ac3db3l0wV5k文本垃圾内容Java SDK: https://help.aliyun.com/document_detail/53427.html?spma2c4g.11186623.6.717.466d7544QbU8Lr
1.2 图片内容审核
图片垃圾内容检测https://help.aliyun.com/document_detail/70292.html?spma2c4g.11186623.6.616.5d7d1e7f9vDRz4图片垃圾内容Java SDK: https://help.aliyun.com/document_detail/53424.html?spma2c4g.11186623.6.715.c8f69b12ey35j4
2. 工具类的使用
2.1 配置文件添加
aliyun:accessKeyId: LTAI5tCWHCcfvqQzu8k2oKmXsecret: auoKUFsghimbfVQHpy7gtRyBkoR4vc
#aliyun.scenesporn,terrorism,ad,qrcode,live,logoscenes: terrorism2.2 工具类 GreenImageScan.java
package com.heima.common.aliyun;import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.green.model.v20180509.ImageSyncScanRequest;
import com.aliyuncs.http.FormatType;
import com.aliyuncs.http.HttpResponse;
import com.aliyuncs.http.MethodType;
import com.aliyuncs.http.ProtocolType;
import com.aliyuncs.profile.DefaultProfile;
import com.aliyuncs.profile.IClientProfile;
import com.heima.common.aliyun.util.ClientUploader;
import lombok.Getter;
import lombok.Setter;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;import java.util.*;Getter
Setter
Component
ConfigurationProperties(prefix aliyun)
public class GreenImageScan {private String accessKeyId;private String secret;private String scenes;public Map imageScan(Listbyte[] imageList) throws Exception {IClientProfile profile DefaultProfile.getProfile(cn-shanghai, accessKeyId, secret);DefaultProfile.addEndpoint(cn-shanghai, cn-shanghai, Green, green.cn-shanghai.aliyuncs.com);IAcsClient client new DefaultAcsClient(profile);ImageSyncScanRequest imageSyncScanRequest new ImageSyncScanRequest();// 指定api返回格式imageSyncScanRequest.setAcceptFormat(FormatType.JSON);// 指定请求方法imageSyncScanRequest.setMethod(MethodType.POST);imageSyncScanRequest.setEncoding(utf-8);//支持http和httpsimageSyncScanRequest.setProtocol(ProtocolType.HTTP);JSONObject httpBody new JSONObject();/*** 设置要检测的场景, 计费是按照该处传递的场景进行* 一次请求中可以同时检测多张图片每张图片可以同时检测多个风险场景计费按照场景计算* 例如检测2张图片场景传递porn、terrorism计费会按照2张图片鉴黄2张图片暴恐检测计算* porn: porn表示色情场景检测*/httpBody.put(scenes, Arrays.asList(scenes.split(,)));/*** 如果您要检测的文件存于本地服务器上可以通过下述代码片生成url* 再将返回的url作为图片地址传递到服务端进行检测*//*** 设置待检测图片 一张图片一个task* 多张图片同时检测时处理的时间由最后一个处理完的图片决定* 通常情况下批量检测的平均rt比单张检测的要长, 一次批量提交的图片数越多rt被拉长的概率越高* 这里以单张图片检测作为示例, 如果是批量图片检测请自行构建多个task*/ClientUploader clientUploader ClientUploader.getImageClientUploader(profile, false);String url null;ListJSONObject urlList new ArrayListJSONObject();for (byte[] bytes : imageList) {url clientUploader.uploadBytes(bytes);JSONObject task new JSONObject();task.put(dataId, UUID.randomUUID().toString());//设置图片链接为上传后的urltask.put(url, url);task.put(time, new Date());urlList.add(task);}httpBody.put(tasks, urlList);imageSyncScanRequest.setHttpContent(org.apache.commons.codec.binary.StringUtils.getBytesUtf8(httpBody.toJSONString()),UTF-8, FormatType.JSON);/*** 请设置超时时间, 服务端全链路处理超时时间为10秒请做相应设置* 如果您设置的ReadTimeout小于服务端处理的时间程序中会获得一个read timeout异常*/imageSyncScanRequest.setConnectTimeout(3000);imageSyncScanRequest.setReadTimeout(10000);HttpResponse httpResponse null;try {httpResponse client.doAction(imageSyncScanRequest);} catch (Exception e) {e.printStackTrace();}MapString, String resultMap new HashMap();//服务端接收到请求并完成处理返回的结果if (httpResponse ! null httpResponse.isSuccess()) {JSONObject scrResponse JSON.parseObject(org.apache.commons.codec.binary.StringUtils.newStringUtf8(httpResponse.getHttpContent()));System.out.println(JSON.toJSONString(scrResponse, true));int requestCode scrResponse.getIntValue(code);//每一张图片的检测结果JSONArray taskResults scrResponse.getJSONArray(data);if (200 requestCode) {for (Object taskResult : taskResults) {//单张图片的处理结果int taskCode ((JSONObject) taskResult).getIntValue(code);//图片要检测的场景的处理结果, 如果是多个场景则会有每个场景的结果JSONArray sceneResults ((JSONObject) taskResult).getJSONArray(results);if (200 taskCode) {for (Object sceneResult : sceneResults) {String scene ((JSONObject) sceneResult).getString(scene);String label ((JSONObject) sceneResult).getString(label);String suggestion ((JSONObject) sceneResult).getString(suggestion);//根据scene和suggetion做相关处理//do somethingSystem.out.println(scene [ scene ]);System.out.println(suggestion [ suggestion ]);System.out.println(suggestion [ label ]);if (!suggestion.equals(pass)) {resultMap.put(suggestion, suggestion);resultMap.put(label, label);return resultMap;}}} else {//单张图片处理失败, 原因视具体的情况详细分析System.out.println(task process fail. task response: JSON.toJSONString(taskResult));return null;}}resultMap.put(suggestion,pass);return resultMap;} else {/*** 表明请求整体处理失败原因视具体的情况详细分析*/System.out.println(the whole image scan request failed. response: JSON.toJSONString(scrResponse));return null;}}return null;}
}GreenTextScan.java
package com.heima.common.aliyun;import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.exceptions.ServerException;
import com.aliyuncs.green.model.v20180509.TextScanRequest;
import com.aliyuncs.http.FormatType;
import com.aliyuncs.http.HttpResponse;
import com.aliyuncs.profile.DefaultProfile;
import com.aliyuncs.profile.IClientProfile;
import lombok.Getter;
import lombok.Setter;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;import java.util.*;Getter
Setter
Component
ConfigurationProperties(prefix aliyun)
public class GreenTextScan {private String accessKeyId;private String secret;public Map greeTextScan(String content) throws Exception {System.out.println(accessKeyId);IClientProfile profile DefaultProfile.getProfile(cn-shanghai, accessKeyId, secret);DefaultProfile.addEndpoint(cn-shanghai, cn-shanghai, Green, green.cn-shanghai.aliyuncs.com);IAcsClient client new DefaultAcsClient(profile);TextScanRequest textScanRequest new TextScanRequest();textScanRequest.setAcceptFormat(FormatType.JSON); // 指定api返回格式textScanRequest.setHttpContentType(FormatType.JSON);textScanRequest.setMethod(com.aliyuncs.http.MethodType.POST); // 指定请求方法textScanRequest.setEncoding(UTF-8);textScanRequest.setRegionId(cn-shanghai);ListMapString, Object tasks new ArrayListMapString, Object();MapString, Object task1 new LinkedHashMapString, Object();task1.put(dataId, UUID.randomUUID().toString());/*** 待检测的文本长度不超过10000个字符*/task1.put(content, content);tasks.add(task1);JSONObject data new JSONObject();/*** 检测场景文本垃圾检测传递antispam**/data.put(scenes, Arrays.asList(antispam));data.put(tasks, tasks);System.out.println(JSON.toJSONString(data, true));textScanRequest.setHttpContent(data.toJSONString().getBytes(UTF-8), UTF-8, FormatType.JSON);// 请务必设置超时时间textScanRequest.setConnectTimeout(3000);textScanRequest.setReadTimeout(6000);MapString, String resultMap new HashMap();try {HttpResponse httpResponse client.doAction(textScanRequest);if (httpResponse.isSuccess()) {JSONObject scrResponse JSON.parseObject(new String(httpResponse.getHttpContent(), UTF-8));System.out.println(JSON.toJSONString(scrResponse, true));if (200 scrResponse.getInteger(code)) {JSONArray taskResults scrResponse.getJSONArray(data);for (Object taskResult : taskResults) {if (200 ((JSONObject) taskResult).getInteger(code)) {JSONArray sceneResults ((JSONObject) taskResult).getJSONArray(results);for (Object sceneResult : sceneResults) {String scene ((JSONObject) sceneResult).getString(scene);String label ((JSONObject) sceneResult).getString(label);String suggestion ((JSONObject) sceneResult).getString(suggestion);System.out.println(suggestion [ label ]);if (!suggestion.equals(pass)) {resultMap.put(suggestion, suggestion);resultMap.put(label, label);return resultMap;}}} else {return null;}}resultMap.put(suggestion, pass);return resultMap;} else {return null;}} else {return null;}} catch (ServerException e) {e.printStackTrace();} catch (ClientException e) {e.printStackTrace();} catch (Exception e) {e.printStackTrace();}return null;}}2.3 测试使用 AliyunTest.java
package com.heima.wemedia;import com.heima.common.aliyun.GreenImageScan;
import com.heima.common.aliyun.GreenTextScan;
import com.heima.file.service.FileStorageService;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;import java.util.Arrays;
import java.util.Map;SpringBootTest(classes WemediaApplication.class)
RunWith(SpringRunner.class)
public class AliyunTest {Autowiredprivate GreenTextScan greenTextScan;Autowiredprivate GreenImageScan greenImageScan;Autowiredprivate FileStorageService fileStorageService;Testpublic void testScanText() throws Exception {Map map greenTextScan.greeTextScan(我是一个好人,冰毒);System.out.println(map);}Testpublic void testScanImage() throws Exception {byte[] bytes fileStorageService.downLoadFile(http://192.168.200.130:9000/leadnews/2021/04/26/ef3cbe458db249f7bd6fb4339e593e55.jpg);Map map greenImageScan.imageScan(Arrays.asList(bytes));System.out.println(map);}
}