From ec7e1b7a60a0391518f50d5e43e30c55315eed0a Mon Sep 17 00:00:00 2001 From: quyixiao <2621048238@qq.com> Date: Thu, 13 Mar 2025 23:41:56 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../text/ARecognizeCharacterRequest.java | 4 +- .../RecognizeDriverLicenseController.java | 84 +++++++++++++ .../card/CharacterRecognizeController.java | 43 +++++++ .../card/CharacterRecognizeRequest.java | 29 +++++ .../resp/RecognizeDriverLicenseBackResp.java | 49 ++++++++ .../resp/RecognizeDriverLicenseFaceResp.java | 112 ++++++++++++++++++ 6 files changed, 319 insertions(+), 2 deletions(-) create mode 100644 api-web/api-interface/src/main/java/com/heyu/api/controller/certificate/RecognizeDriverLicenseController.java create mode 100644 api-web/api-interface/src/main/java/com/heyu/api/controller/certificate/card/CharacterRecognizeController.java create mode 100644 api-web/api-interface/src/main/java/com/heyu/api/controller/request/card/CharacterRecognizeRequest.java create mode 100644 api-web/api-interface/src/main/java/com/heyu/api/controller/resp/RecognizeDriverLicenseBackResp.java create mode 100644 api-web/api-interface/src/main/java/com/heyu/api/controller/resp/RecognizeDriverLicenseFaceResp.java diff --git a/api-third/src/main/java/com/heyu/api/alibaba/request/common/text/ARecognizeCharacterRequest.java b/api-third/src/main/java/com/heyu/api/alibaba/request/common/text/ARecognizeCharacterRequest.java index 05c8fef..4a5175c 100644 --- a/api-third/src/main/java/com/heyu/api/alibaba/request/common/text/ARecognizeCharacterRequest.java +++ b/api-third/src/main/java/com/heyu/api/alibaba/request/common/text/ARecognizeCharacterRequest.java @@ -13,7 +13,7 @@ public class ARecognizeCharacterRequest extends ACommonTextRequest { * 10 * 取值 >= 5 */ - public Integer minHeight; + public Integer minHeight = 5 ; /** @@ -24,7 +24,7 @@ public class ARecognizeCharacterRequest extends ACommonTextRequest { * 示例值: * true */ - public Boolean outputProbability; + public Boolean outputProbability = true; } diff --git a/api-web/api-interface/src/main/java/com/heyu/api/controller/certificate/RecognizeDriverLicenseController.java b/api-web/api-interface/src/main/java/com/heyu/api/controller/certificate/RecognizeDriverLicenseController.java new file mode 100644 index 0000000..3c89568 --- /dev/null +++ b/api-web/api-interface/src/main/java/com/heyu/api/controller/certificate/RecognizeDriverLicenseController.java @@ -0,0 +1,84 @@ +package com.heyu.api.controller.certificate; + +import com.aliyun.ocr20191230.models.RecognizeDriverLicenseResponse; +import com.aliyun.ocr20191230.models.RecognizeDriverLicenseResponseBody; +import com.heyu.api.alibaba.handle.common.text.ARecognizeDriverLicenseHandle; +import com.heyu.api.alibaba.request.common.text.ARecognizeDriverLicenseRequest; +import com.heyu.api.controller.BaseController; +import com.heyu.api.controller.resp.RecognizeDriverLicenseBackResp; +import com.heyu.api.controller.resp.RecognizeDriverLicenseFaceResp; +import com.heyu.api.data.annotation.NotIntercept; +import com.heyu.api.data.utils.ApiR; +import com.heyu.api.data.utils.R; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * https://next.api.aliyun.com/api/ocr/2019-12-30/RecognizeDriverLicense?tab=DEMO&lang=JAVA + *

+ * 驾驶证识别 + *

+ * RecognizeDriverLicense + */ +@Slf4j +@RestController +@RequestMapping("/driver/license") +@NotIntercept +public class RecognizeDriverLicenseController extends BaseController { + + + @Autowired + private ARecognizeDriverLicenseHandle aRecognizeDriverLicenseHandle; + + + @RequestMapping("/recognize") + public R recognize(ARecognizeDriverLicenseRequest request) { + + RecognizeDriverLicenseFaceResp faceResp = new RecognizeDriverLicenseFaceResp(); + RecognizeDriverLicenseBackResp backResp = new RecognizeDriverLicenseBackResp(); + ApiR aR = aRecognizeDriverLicenseHandle.handle(request); + + + if (aR.isSuccess()) { + RecognizeDriverLicenseResponse response = aR.getData(); + if (isSuccessStatusCode(response.getStatusCode())) { + RecognizeDriverLicenseResponseBody.RecognizeDriverLicenseResponseBodyData + responseBodyData = response.getBody().getData(); + + if ("face".equals(request.getSide())) { + RecognizeDriverLicenseResponseBody.RecognizeDriverLicenseResponseBodyDataFaceResult + faceResult = responseBodyData.getFaceResult(); + + faceResp.setVehicleType(faceResult.getVehicleType()); + faceResp.setIssueDate(faceResult.getIssueDate()); + faceResp.setEndDate(faceResult.getEndDate()); + faceResp.setGender(faceResult.getGender()); + faceResp.setAddress(faceResult.getAddress()); + faceResp.setStartDate(faceResult.getStartDate()); + faceResp.setLicenseNumber(faceResult.getLicenseNumber()); + faceResp.setNationality(faceResult.getNationality()); + faceResp.setIssueUnit(faceResult.getIssueUnit()); + faceResp.setNationality(faceResult.getNationality()); + faceResp.setBirthDate(faceResult.getBirthDate()); + return R.ok().setData(faceResp); + } + if ("back".equals(request.getSide())) { + RecognizeDriverLicenseResponseBody.RecognizeDriverLicenseResponseBodyDataBackResult + backResult = responseBodyData.getBackResult(); + + backResp.setArchiveNumber(backResult.getArchiveNumber()); + backResp.setName(backResult.getName()); + backResp.setCardNumber(backResult.getCardNumber()); + backResp.setRecord(backResult.getRecord()); + return R.ok().setData(backResp); + } + } + } + + + return R.error("识别失败"); + } + +} diff --git a/api-web/api-interface/src/main/java/com/heyu/api/controller/certificate/card/CharacterRecognizeController.java b/api-web/api-interface/src/main/java/com/heyu/api/controller/certificate/card/CharacterRecognizeController.java new file mode 100644 index 0000000..dc3d6f8 --- /dev/null +++ b/api-web/api-interface/src/main/java/com/heyu/api/controller/certificate/card/CharacterRecognizeController.java @@ -0,0 +1,43 @@ +package com.heyu.api.controller.certificate.card; + + +import com.aliyun.ocr20191230.models.RecognizeCharacterResponse; +import com.heyu.api.alibaba.handle.common.text.ARecognizeCharacterHandle; +import com.heyu.api.alibaba.request.common.text.ARecognizeCharacterRequest; +import com.heyu.api.controller.BaseController; +import com.heyu.api.controller.request.card.CharacterRecognizeRequest; +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 lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + + +/** + * https://next.api.aliyun.com/api/ocr/2019-12-30/RecognizeCharacter?tab=DEMO&lang=JAVA + * 通用识别 + *

+ * RecognizeCharacter + */ +@Slf4j +@RestController +@RequestMapping("/character") +@NotIntercept +public class CharacterRecognizeController extends BaseController { + + @Autowired + private ARecognizeCharacterHandle aRecognizeCharacterHandle; + + @RequestMapping("/recognize") + @CacheResult + public R recognize(CharacterRecognizeRequest request) { + ARecognizeCharacterRequest arRecognizeCharacterRequest = new ARecognizeCharacterRequest(); + arRecognizeCharacterRequest.setImageUrl(request.getImageUrl()); + arRecognizeCharacterRequest.setImageBase64(request.getImageBase64()); + ApiR aR = aRecognizeCharacterHandle.handle(arRecognizeCharacterRequest); + return R.ok().setData(aR.getData()); + } +} diff --git a/api-web/api-interface/src/main/java/com/heyu/api/controller/request/card/CharacterRecognizeRequest.java b/api-web/api-interface/src/main/java/com/heyu/api/controller/request/card/CharacterRecognizeRequest.java new file mode 100644 index 0000000..4f7d115 --- /dev/null +++ b/api-web/api-interface/src/main/java/com/heyu/api/controller/request/card/CharacterRecognizeRequest.java @@ -0,0 +1,29 @@ +package com.heyu.api.controller.request.card; + + +import com.heyu.api.data.dto.BaseRequest; +import lombok.Data; + +/*** + * https://next.api.aliyun.com/api/ocr/2019-12-30/RecognizeCharacter?tab=DEMO&lang=JAVA + *通用识别 + * + * RecognizeCharacter + * + */ +@Data +public class CharacterRecognizeRequest extends BaseRequest { + + + /** + * 文字图片的url + */ + private String imageUrl; + + /** + * 文字图片 base 64 编码 + */ + private String imageBase64; + + +} diff --git a/api-web/api-interface/src/main/java/com/heyu/api/controller/resp/RecognizeDriverLicenseBackResp.java b/api-web/api-interface/src/main/java/com/heyu/api/controller/resp/RecognizeDriverLicenseBackResp.java new file mode 100644 index 0000000..3813218 --- /dev/null +++ b/api-web/api-interface/src/main/java/com/heyu/api/controller/resp/RecognizeDriverLicenseBackResp.java @@ -0,0 +1,49 @@ +package com.heyu.api.controller.resp; + +import lombok.Data; + +/*** + * https://next.api.aliyun.com/api/ocr/2019-12-30/RecognizeDriverLicense?tab=DOC&lang=JAVA + */ +@Data +public class RecognizeDriverLicenseBackResp { + + /*** + * 档案编号。 + * + * 示例值: + * 130601473955 + */ + public String archiveNumber; + + /** + * 证号。 + * + * 示例值: + * 210288898898898888 + */ + public String cardNumber; + + /** + * 姓名。 + * + * 示例值: + * 张三 + */ + public String name; + + /** + * 记录。 + * + * 示例值: + * 实习期至2019年05月06日。 + */ + public String record; + + + + + + + +} diff --git a/api-web/api-interface/src/main/java/com/heyu/api/controller/resp/RecognizeDriverLicenseFaceResp.java b/api-web/api-interface/src/main/java/com/heyu/api/controller/resp/RecognizeDriverLicenseFaceResp.java new file mode 100644 index 0000000..2817938 --- /dev/null +++ b/api-web/api-interface/src/main/java/com/heyu/api/controller/resp/RecognizeDriverLicenseFaceResp.java @@ -0,0 +1,112 @@ +package com.heyu.api.controller.resp; + +import lombok.Data; + +/*** + * https://next.api.aliyun.com/api/ocr/2019-12-30/RecognizeDriverLicense?tab=DOC&lang=JAVA + */ +@Data +public class RecognizeDriverLicenseFaceResp { + + + /*** + * 驾驶证准驾车型。 + * + * 示例值: + * C1 + */ + private String vehicleType; + + + /*** + * 初次发证日期。格式:YYYYMMDD,例如 19800101,即 1980 年 01 月 01 日。 + * + * 示例值: + * 20130208 + * + * + */ + private String issueDate; + + /*** + * + */ + private String endDate; + + /*** + * 性别。 + * + * 示例值: + * 男der + */ + private String gender; + + + /*** + * 地址。 + * + * 示例值: + * 江苏省徐州市铜山区棠张镇田河村1队129号 + */ + private String address; + + /*** + * + */ + private String startDate; + + + /*** + * 证号。 + * + * 示例值: + * 210288898898898888 + */ + private String licenseNumber; + + + /*** + * 姓名。 + * + * 示例值: + * 张三 + */ + private String name; + + + /*** + * 发证单位。 + * + * 示例值: + * 江苏省徐州市公安局交通巡逻警察支队 + */ + private String issueUnit; + + + /*** + * 国籍。 + * + * 示例值: + * 中国 + */ + private String nationality; + + + /*** + * 出生日期。 + * + * 示例值: + * 1992-05-20 + */ + private String birthDate; + + + + + + + + + + +}