提交修改

This commit is contained in:
quyixiao 2025-03-19 12:54:47 +08:00
parent 7cda632f36
commit f6f601e691
6 changed files with 330 additions and 0 deletions

View File

@ -0,0 +1,84 @@
package com.heyu.api.controller.imagerecog;
import com.aliyun.imagerecog20190930.models.DetectImageElementsResponse;
import com.aliyun.imagerecog20190930.models.DetectImageElementsResponseBody;
import com.heyu.api.alibaba.handle.imagerecog.ADetectImageElementsHandle;
import com.heyu.api.alibaba.request.imagerecog.ADetectImageElementsRequest;
import com.heyu.api.controller.BaseController;
import com.heyu.api.data.annotation.CacheResult;
import com.heyu.api.data.annotation.NotIntercept;
import com.heyu.api.data.utils.ApiR;
import com.heyu.api.data.utils.R;
import com.heyu.api.request.imagerecog.DetectImageElementsReq;
import com.heyu.api.resp.imagerecog.DetectImageElementsResp;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.List;
/***
* https://next.api.aliyun.com/api/imagerecog/2019-09-30/DetectImageElements?tab=DEMO&lang=JAVA&RegionId=cn-shanghai
*元素识别
*
* DetectlmageElements
*
*
* 功能描述
* 元素识别能力用于识别输入图像中所包含的元素内容用矩形框标注出其位置并区分其对应的基本类型人物修饰文案
*
*
*/
@Slf4j
@RestController
@RequestMapping("/image")
@NotIntercept
public class DetectImageElementsController extends BaseController {
@Autowired
private ADetectImageElementsHandle aDetectImageElementsHandle;
@RequestMapping("/detect")
@CacheResult
public R classifying(DetectImageElementsReq req) {
List<DetectImageElementsResp> respList = new ArrayList<>();
ADetectImageElementsRequest request = new ADetectImageElementsRequest();
request.setImageBase64(req.getImageBase64());
request.setImageUrl(req.getImageUrl());
ApiR<DetectImageElementsResponse> aR = aDetectImageElementsHandle.handle(request);
if (aR.isSuccess() && isSuccessStatusCode(aR.getData().getStatusCode())) {
DetectImageElementsResponseBody.DetectImageElementsResponseBodyData responseBodyData = aR.getData().getBody().getData();
if (CollectionUtils.isNotEmpty(responseBodyData.getElements())) {
for (DetectImageElementsResponseBody.DetectImageElementsResponseBodyDataElements element : responseBodyData.getElements()) {
DetectImageElementsResp resp = new DetectImageElementsResp();
resp.setY(element.getY());
resp.setX(element.getX());
resp.setWidth(element.getWidth());
resp.setHeight(element.getHeight());
respList.add(resp);
}
}
return R.ok().setData(respList);
}
return R.error(aR.getErrorMsg());
}
}

View File

@ -0,0 +1,79 @@
package com.heyu.api.controller.imagerecog;
import com.aliyun.imagerecog20190930.models.EvaluateCertificateQualityResponse;
import com.aliyun.imagerecog20190930.models.EvaluateCertificateQualityResponseBody;
import com.heyu.api.alibaba.handle.imagerecog.AEvaluateCertificateQualityHandle;
import com.heyu.api.alibaba.request.imagerecog.AEvaluateCertificateQualityRequest;
import com.heyu.api.controller.BaseController;
import com.heyu.api.data.annotation.CacheResult;
import com.heyu.api.data.annotation.NotIntercept;
import com.heyu.api.data.utils.ApiR;
import com.heyu.api.data.utils.R;
import com.heyu.api.request.imagerecog.EvaluateCertificateQualityReq;
import com.heyu.api.resp.imagerecog.EvaluateCertificateQualityResp;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.List;
/***
*https://next.api.aliyun.com/api/imagerecog/2019-09-30/EvaluateCertificateQuality?tab=DOC&lang=JAVA
*证件照质量审核
*
* EvaluateCertificateQuality
*
*功能描述
* 证件照质量审核能力可以识别拍摄的证件照片是否存在质量问题且有哪些质量问题
*/
@Slf4j
@RestController
@RequestMapping("/certificate")
@NotIntercept
public class EvaluateCertificateQualityController extends BaseController {
@Autowired
private AEvaluateCertificateQualityHandle aEvaluateCertificateQualityHandle;
@RequestMapping("/quality")
@CacheResult
public R quality(EvaluateCertificateQualityReq req) {
List<EvaluateCertificateQualityResp> respList = new ArrayList<>();
AEvaluateCertificateQualityRequest request = new AEvaluateCertificateQualityRequest();
/**
* 证照类型
*
* IDCard身份证
* BusinessLicense电子执照
* 示例值:
* BusinessLicense
*/
request.setType(req.getType());
request.setImageBase64(req.getImageBase64());
request.setImageUrl(req.getImageUrl());
ApiR<EvaluateCertificateQualityResponse> aR = aEvaluateCertificateQualityHandle.handle(request);
if (aR.isSuccess() && isSuccessStatusCode(aR.getData().getStatusCode())) {
EvaluateCertificateQualityResponseBody.EvaluateCertificateQualityResponseBodyData responseBodyData = aR.getData().getBody().getData();
if (CollectionUtils.isNotEmpty(responseBodyData.getElements())) {
for (EvaluateCertificateQualityResponseBody.EvaluateCertificateQualityResponseBodyDataElements element : responseBodyData.getElements()) {
EvaluateCertificateQualityResp resp = new EvaluateCertificateQualityResp();
resp.setPass(element.getPass());
resp.setScore(element.getScore());
resp.setValue(element.getValue());
respList.add(resp);
}
}
return R.ok().setData(respList);
}
return R.error();
}
}

View File

@ -0,0 +1,12 @@
package com.heyu.api.request.imagerecog;
import com.heyu.api.request.CommonReq;
import lombok.Data;
@Data
public class DetectImageElementsReq extends CommonReq {
}

View File

@ -0,0 +1,22 @@
package com.heyu.api.request.imagerecog;
import com.heyu.api.request.CommonReq;
import lombok.Data;
@Data
public class EvaluateCertificateQualityReq extends CommonReq {
/**
* 证照类型
*
* IDCard身份证
* BusinessLicense电子执照
* 示例值:
* BusinessLicense
*/
private String type ;
}

View File

@ -0,0 +1,85 @@
package com.heyu.api.resp.imagerecog;
import com.heyu.api.data.dto.BaseResp;
import lombok.Data;
@Data
public class DetectImageElementsResp extends BaseResp {
/**
* 元素高度
* <p>
* 示例值:
* 354
*/
public Integer height;
/***
* 置信度取值范围[0.0, 1.0]
*
* 示例值:
* 0.997097373008728
*/
public Float score;
/**
* 元素类型包括 UnType未定义类型
* AllType所有类型
* RootType根类型
* Synthesis组合元素图
* Embedded所有嵌套类型
* Format元素格式
* MajorObject主体
* Character文案
* Identifier标识
* Background背景
* Decoration修饰
* MajorHuman人物模特
* MajorAuction商品
* MajorThing物体
* MajorOther其他主体
* CharMain主文案
* CharSub副文案
* CharAction行动点文案
* CharContent内容文案
* CharNumber数字文案
* CharOther其他文案
* IdentLogologo 标识
* IdentLight高亮标识
* IdentCode码标识
* IdentOther其他标识
* BackBitmap位图背景
* BackVector矢量图背景
* BackOther其他背景
* DecoTile平铺修饰
* <p>
* DecoRegion区域修饰DecoPieces碎片修饰DecoEdge贴边修饰DecoLine线性修饰DecoBox框型修饰DecoChar行动点文案修饰DecoOther其他修饰SynthMajor主体组团SynthChar文案组团SynthIdent标识组团SynthBack背景组团SynthDeco修饰组团SynthOther其他组团EmbedSvgsvg 嵌套格式EmbedJsonJSON 嵌套格式EmbedHtmlhtml 嵌套格式
*/
public String type;
/**
* 元素宽度
* <p>
* 示例值:
* 285
*/
public Integer width;
/***
* 元素左上角 X 轴坐标
*
* 示例值:
* 287
*/
public Integer x;
/***
*元素左上角 Y 轴坐标
*
* 示例值:
* 78
*/
public Integer y;
}

View File

@ -0,0 +1,48 @@
package com.heyu.api.resp.imagerecog;
import com.heyu.api.data.dto.BaseResp;
import lombok.Data;
@Data
public class EvaluateCertificateQualityResp extends BaseResp {
/***
* 问题类型
*
* lackoffront 缺乏正面照
* copy复印件
* imageincomplete证件图像不完整
* nationalemblemincomplete营业执照国徽不完整
* lackofseal缺乏印章
* electronic来源于电子档
* reflection反光
* 说明
* 如果请求参数 Type IDCard lackofseal缺乏印章
* 如果请求参数 Type BusinessLicense lackoffront缺乏正面照
* 示例值:
* lackoffront
*/
private String value;
/***
* 是否通过检查
*
* true通过检查
* false未通过检查
* verify无法检验证照质量请人工确认
* ERROR该模块算法推理失败
* 示例值:
* false
*/
private String pass;
/***
* 质量问题分值分值越高问题越严重取值为 0~100 之间的整数
*
* 当系统无法给出分值时输出结果为score
* Pass 字段为ERROR时输出结果为null
* 示例值:
* 0.06514739990234375
*/
private String score;
}