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

开通数据万象服务



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

①、司机微服务模块中

java 复制代码
public interface CiService{
	
	//图片审核
	Boolean imageAuditing(String path);
}
java 复制代码
@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图片增加审核

java 复制代码
@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();
}

文本审核接口

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

java 复制代码
@Operation
@PostMapping("/textAuditing")
publc Result<TextAuditingVo> textAuditing(@ReqeustBody String content){
	
	return Result.ok(ciService.textAuditing(content))
}
java 复制代码
@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;
}

远程调用接口

java 复制代码
@PostMapping("/ci/textAuditing")
Result<TextAuditingVo> textAuditing(@RequestBody String content);

web端进行调用

java 复制代码
@Operation(summary = "上传录音")
@PostMapping("/upload")
public Result<Boolean> upload(@RequestParam("file") MultipartFile file
							OrderMonitorForm orderMonitorForm){
	return Result.ok(monitorService.upload(file,orderMonitorForm));
}
java 复制代码
@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;
}
相关推荐
可乐加.糖1 小时前
腾讯云创建DeepSeek AI应用及使用教程
java·语言模型·腾讯云·deepseek
key_3_feng6 小时前
使用HAI来打通DeepSeek的任督二脉
ai·云计算·腾讯云·deepseek
带娃的IT创业者8 小时前
《Python实战进阶》No26: CI/CD 流水线:GitHub Actions 与 Jenkins 集成
python·ci/cd·github
akko_14 小时前
cool-admin-midway 使用腾讯云cos上传图片
云计算·nodejs·腾讯云·koa·后台管理·midway·cool-admin
江节胜-胜行全栈AI14 小时前
Java-腾讯云短信模板兼容阿里云短信模板-短信模板参数生成
java·阿里云·腾讯云
数字扫地僧21 小时前
腾讯云大模型知识引擎×DeepSeek:股票分析低代码应用实践
低代码·云计算·腾讯云
码农葫芦侠2 天前
GitLab CI/CD学习教程(第三章Pipeline)
学习·ci/cd·gitlab
zooKevin2 天前
腾讯云宝塔安装ffmpeg
ffmpeg·node.js·腾讯云
港 澳 在 线3 天前
马蜂窝携手腾讯云接入DeepSeek,率先应用于旅游AI智能应用“AI游贵州”
人工智能·腾讯云·旅游