腾讯云数据万象服务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;
}
相关推荐
云老大-阿里云国际站代理商3 小时前
腾讯云国际站服务代理商:EdgeOne怎么做网站安全?WAF、DDoS和Bot防护分别解决什么问题
安全·腾讯云·ddos
洋就在江州8 小时前
gitlab-cicd 离线集成——springboot-cicd (非docker形式,shell形式)
java·spring boot·后端·ci/cd·gitlab·gitlab-runner
oicola8 小时前
【运维】CI/CD是什么,合格的规范应该怎么设置
运维·ci/cd
HZZD_HZZD10 小时前
厂区三级计量怎么选表?互感器倍率与需量管理
大数据·物联网·腾讯云
tianyuanwo10 小时前
【软考高级系统架构设计师】05 - DevOps & CI/CD专题备考
ci/cd·系统架构·devops
云贝贝贝1 天前
【无标题】TDSQL 分片键怎么选?选错等于数据倾斜加跨分片慢查询
运维·服务器·数据库·腾讯云
行业研究员1 天前
AI反电诈怎么做?腾讯云天御风控Agent方案与落地解析
人工智能·php·腾讯云·ai反诈
HZZD_HZZD2 天前
商场餐饮铺基本电费怎么算?需量控制与峰值申报
大数据·物联网·腾讯云
白帽攻防录3 天前
SRC 挖洞:Claude Code Action 供应链 RCE 深度复盘,CVE-2026-47751 一个 PR 怎么偷走你所有 CI/CD 密钥
网络安全·ci/cd·供应链安全