当前位置: 首页 > article >正文

腾讯云数据万象服务CI(内容审核)

开通数据万象服务
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

对上传到腾讯云COS的图片进行审核

①、司机微服务模块中

public interface CiService{
	
	//图片审核
	Boolean imageAuditing(String path);
}
@Service
public class CiServiceImpl implements CiService{
	
	@Autowried
	private TencentCloudProperties tencentCloudProperties;
	
	@Override
	public Boolean imageAuditing(String path){
		
		//创建任务请求对象
		ImageAuditingRequest request = new ImageAuditingRequest();
		
		//添加请求参数
		request.setBucketName(tencentCloudProperties.getBucketPrivate());
		request.setBizType();//设置请求策略(不传,为默认策略)
		request.setObjectKey(path);//设置bucket中的图片位置

		COSClient client = this.getCosClient();
		ImageAuditingResponse response = client.imageAuditing(request);
		
		cosClient.shutdown();

		//上传之后,进行图片审核
		Boolean imageAuditing = ciService.imageAuditing(uploadPath);
		if(!imageAuditing){
			//如果图片违规,删除图片
			cosClient.deleteObject(tencentCloudProperties.getBucketPrivate(),uploadPath);
			throw new GuiguException(ResultCodeEnum.IMAGE_AUDITION_FAIL);
		}
		
		//用于返回该审核场景的审核结果,0 表示正常  1 确认为当前场景的违规内容
		//2 疑似为当前场景的违规内容
		if(!response.getPornInfo().getHitFlag().equals("0")
			|| !response.getAdsInfo().getHitFlag().equals("0")
			|| !response.getTerroristInfo().getHitFlag().equals("0")
			|| !response.getProliticsInfo().getHitFlag().equals("0")){
			
			return false;
		}
		return true;
	}

	public COSClient getCosClient(){
		String secretId = tencentCloudProperties.getSecretId();
		String secretKey = tencentCloudProperties.getSecretKey();
		COSCredentials cred = new BasicCOSCredentials(secretId,secretKey);
		
		//设置bucket的地域
		Region region = new Region(tencentCloudProperties.getRegion());
		ClientConfig clientConfig = new ClientConfig(region);

		//设置使用https协议
		clientConfig.setHttpProtocol(HttpProtocol.https);
		//生成cos客户端
		COSClient cosClient = new COSClient(cred,clientConfig);
		return cosClient;
	}
}

②、腾讯云COS图片增加审核

@Override
public CosUploadVo upload(MultipartFile file,String path){

	COSClient cosClient = this.getCosClient();

	//元数据信息
	ObjectMetaData meta = new ObjectMetadata();
	meta.setContentLength(file.getSize());
	meta.setContentEncoding("UTF-8");
	meta.setContentType(file.getContentType());

	//向存储桶中上传文件
	String fileType = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndex("."));
	String uploadPath = "/driver/" + path + "/" + UUID.randomUUID().toString().replaceAll("-","") + fileType;
	
	PutObjectRequest putObjectRequest = null;
	try{
		putObjectRequest = new PutObjectRequest(tencentCloudProperties.getBucketPrivate(),
												uploadPath,
												file.getInputStream()
												meta);
	}catch(IOException e){
		throw new RuntimeException();
	}
	putObjectRequest.setStorageClass(StorageClass.Standard);
	PutObjectResult putObjectResult = cosClient.putObject(putObjectRequest);
	cosClient.shutdown();

	//返回vo对象
	CosUploadVo cosUploadVo = new CosUploadVo();
	cosUploadVo.ssetUrl(uploadPath);

	//图片临时访问url,回显使用
	String imageUrl = this.getImageUrl(uploadPath);
	cosUploadVo.setShowUrl(imageUrl);
	return cosUploadVo;
}

//获取临时签名URL,上传图片到腾讯云会生成一个临时地址
@Override
public String getImageUrl(String path){
	
	if(!StringUtils.hasText(path)) return "";

	COSClient cosClient = this.getCosClient();
	GeneratePresignedUrlRequest request = new GeneratePresignedUrlRequest(
											tencentCloudProperties.getBucketPrivate(),
											path,
											HttpMethodName.GET);
	
	//设置临时URL有效期为15分钟
	Date date = new DateTime().plusMinutes(15).toDate();
	request.setExpiration(date);
	URL url = cosClent.getneratePresignedUrl(request);
	return url.toString();
	cosClient.shutdown();
}

文本审核接口

语音——>文本,对文本的审核

@Operation
@PostMapping("/textAuditing")
publc Result<TextAuditingVo> textAuditing(@ReqeustBody String content){
	
	return Result.ok(ciService.textAuditing(content))
}
@Override
public TextAuditingVo textAuditing(String content){
	
	if(!StringUtils.hasText(content)){
		TextAuditingVo textAuditingVo = new TextAuditingVo();
		textAuditingVo.setResult("0");
		return textAuditingVo;
	}

	COSClient cosClient = this.getCosClient();
	
	//创建任务请求对象
	TextAuditingRequest request = new TextAuditingRequest();
	//添加请求参数,参数详情见API接口文档
	request.setBucketName(tencentCloudProperties.getBucketPrivate());
	byte[] encoder = Base64.encodeBase64(content.getBytes());
	String contentBase64 = new String(encoder);
	request.getInput().setContent(contentBase64);
	request.getConf().setDetectType("all");

	TextAuditingResponse response = cosClient.createAuditingTextJobs(request);
	AuditingJobsDetail detail = response.getJobsDetail();
	TextAuditingVo textAuditingVo = new TextAuditingVo();
	if("Success".equals(detail.getState())){
		
		//检测结果:0 审核正常   1  判定违规敏感文件  2 疑似敏感,建议人工
		String result = detail.getResult();
		
		//违规关键词
		StringBuffer keywords = new StringBuffer();
		List<SectionInfo> sectionInfoList = detail.getSectionList();
		for(SectionInfo info:sectionInfoList){
			String pornInfoKeyword = info.getPornInfo().getKeywords();
			String illegalInfoKeyword = info.getIllegalInfo().getKeywords();
			String abuseInfoKeyword = info.getAbuseInfo().getKeywords();
			if(pornInfoKeyword.length() > 0){
				keywords.append(pornInfoKeyword).append(",");
			}
			if(illegalInfoKeyword.length() > 0){
				keywords.append(illegalInfoKeyword).append(",")
			}
			if(abuseInfoKeyword.leneth() > 0){
				keywords.append(abuseInfoKeyword).append(",");
			}
		}
		textAuditingVo.getResult(result);
		textAuditingVo.setKeywords(keywords.toString());
	}
	return textAuditingVo;
}

远程调用接口

@PostMapping("/ci/textAuditing")
Result<TextAuditingVo> textAuditing(@RequestBody String content);

web端进行调用

@Operation(summary = "上传录音")
@PostMapping("/upload")
public Result<Boolean> upload(@RequestParam("file") MultipartFile file
							OrderMonitorForm orderMonitorForm){
	return Result.ok(monitorService.upload(file,orderMonitorForm));
}
@Override
public Boolean upload(MultipartFile file,OrderMonitorForm orderMonitorForm){
	
	String url = fileService.upload(file);

	OrderMonitorRecord orderMonitorRecord = new OrderMonitorRecord();
	orderMonitorRecord.setOrderId(orderMonitorForm.getOrderId());
	orderMonitorRecord.setFileUrl(url);
	orderMonitorRecord.setContent(orderMonitorForm.getContent());

	//增加文本内容的审核
	TextAuditingVo textAuditingVo = ciFeignClient.textAuditing(orderMonitorForm.getContent()).getData();
	orderMonitorRecord.setResult(textAuditingVo.getResult());
	orderMonitorRecord.setKeywords(textAuditingVo.getKeywords());
	orderMonitorFeignClient.saveMonitorRecord(orderMonitorRecord);
	return true;
}

http://www.kler.cn/a/600043.html

相关文章:

  • 【C++ 真题】P9749 [CSP-J 2023] 公路
  • SSL/TLS 和 SSH 介绍以及他们的区别
  • Redis全面学习指南
  • 26考研——图_图的存储(6)
  • oracle数据库(数据库启动关闭/sqlplus登录及基本操作/设置字符集/distinct去重)
  • 【MySQL】一篇讲懂什么是聚簇索引和非聚簇索引(二级索引)以及什么是回表?
  • 一文了解Gradle 依赖管理(五)- 依赖管理缓存依赖
  • 算法 | 麻雀搜索算法原理,公式,改进算法综述,应用场景及matlab完整代码
  • 气膜馆的奥秘:空气支撑的科技建筑—轻空间
  • 数据结构--分块查找
  • 如何使用go的template模版
  • Rust+WebAssembly:开启浏览器3D渲染新时代
  • 华为OD机试2025A卷 - 游戏分组/王者荣耀(Java Python JS C++ C )
  • 基于Python卷积神经网络(CNN)的mnist手写数字识别
  • JVM常见概念之条件移动
  • git安装教程
  • Java 基础入门代码示例解析
  • idea底部图标不小心关了,怎么重新打开?
  • Leetcode—15. 三数之和(哈希表—基础算法)
  • Java多线程与高并发专题——使用 Future 有哪些注意点?Future 产生新的线程了吗?