腾讯云数据万象服务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;
}
相关推荐
拔剑纵狂歌12 小时前
helm-cli安装资源时序报错问题问题
后端·docker·云原生·容器·golang·kubernetes·腾讯云
程序员雄杰13 小时前
腾讯云轻量应用服务器mac中ssh免密登录到服务器
macos·ssh·腾讯云
木二_15 小时前
附058.Kubernetes Gitea部署
ci/cd·kubernetes·gitea
研发小能2 天前
提效安全双平衡:CI/CD工具该选谁?流水线产品评测
ci/cd·持续集成·持续集成平台·持续集成产品·流水线工具
oMcLin2 天前
如何在Rocky Linux 8.5上部署并优化Jenkins流水线,支持跨平台CI/CD自动化与容器化构建?
linux·ci/cd·jenkins
无心水2 天前
【分布式利器:腾讯TSF】7、TSF高级部署策略全解析:蓝绿/灰度发布落地+Jenkins CI/CD集成(Java微服务实战)
java·人工智能·分布式·ci/cd·微服务·jenkins·腾讯tsf
oscar9992 天前
Katalon与CI_CD集成:让自动化测试融入持续交付流水线
ci/cd·katalon
一条闲鱼_mytube2 天前
CI/CD 监控指南:让流水线透明可控
ci/cd
oMcLin2 天前
如何在 Ubuntu 22.04 上部署并优化 Jenkins 2.x 流水线,提升持续集成与自动化测试的效率?
ubuntu·ci/cd·jenkins
新钛云服3 天前
Grafana Polystat面板与腾讯云可观测平台的深度融合实践
大数据·云计算·腾讯云·grafana