From 395494a09e55083226695965ff8a410ec5c2d216 Mon Sep 17 00:00:00 2001 From: quyixiao <2621048238@qq.com> Date: Sat, 22 Mar 2025 14:42:49 +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 --- .../BHkMacauTaiwanExitentrypermitRequest.java | 4 +- .../Factors3VerificationController.java | 4 +- .../Factors4VerificationController.java | 2 +- .../HkMacauPassportController.java | 94 +++++++++++++++++++ .../HkMacauReturnPassportController.java | 83 ++++++++++++++++ .../certificate/TaiwanPassportController.java | 86 +++++++++++++++++ .../TaiwanReturnPassportController.java | 86 +++++++++++++++++ .../certificate/BHkMacauPassportReq.java | 31 ++++++ .../BHkMacauReturnPassportReq.java | 35 +++++++ .../certificate/TaiwanPassportReq.java | 36 +++++++ .../certificate/TaiwanReturnPassportReq.java | 34 +++++++ .../certificate/BHkMacauPassportBackResp.java | 20 ++++ .../certificate/BHkMacauPassportFontResp.java | 24 +++++ .../BHkMacauReturnPassportBackResp.java | 18 ++++ .../BHkMacauReturnPassportFrontResp.java | 13 +++ .../certificate/Factors3VerificationResp.java | 8 +- .../certificate/Factors4VerificationResp.java | 5 +- .../certificate/TaiwanPassportBackResp.java | 15 +++ .../certificate/TaiwanPassportFrontResp.java | 21 +++++ .../TaiwanReturnPassportBackResp.java | 15 +++ .../TaiwanReturnPassportFrontResp.java | 23 +++++ .../src/test/java/com/api/test/Test1.java | 72 ++++++++++++++ 22 files changed, 718 insertions(+), 11 deletions(-) create mode 100644 api-web/api-interface/src/main/java/com/heyu/api/controller/certificate/HkMacauPassportController.java create mode 100644 api-web/api-interface/src/main/java/com/heyu/api/controller/certificate/HkMacauReturnPassportController.java create mode 100644 api-web/api-interface/src/main/java/com/heyu/api/controller/certificate/TaiwanPassportController.java create mode 100644 api-web/api-interface/src/main/java/com/heyu/api/controller/certificate/TaiwanReturnPassportController.java create mode 100644 api-web/api-interface/src/main/java/com/heyu/api/request/certificate/BHkMacauPassportReq.java create mode 100644 api-web/api-interface/src/main/java/com/heyu/api/request/certificate/BHkMacauReturnPassportReq.java create mode 100644 api-web/api-interface/src/main/java/com/heyu/api/request/certificate/TaiwanPassportReq.java create mode 100644 api-web/api-interface/src/main/java/com/heyu/api/request/certificate/TaiwanReturnPassportReq.java create mode 100644 api-web/api-interface/src/main/java/com/heyu/api/resp/certificate/BHkMacauPassportBackResp.java create mode 100644 api-web/api-interface/src/main/java/com/heyu/api/resp/certificate/BHkMacauPassportFontResp.java create mode 100644 api-web/api-interface/src/main/java/com/heyu/api/resp/certificate/BHkMacauReturnPassportBackResp.java create mode 100644 api-web/api-interface/src/main/java/com/heyu/api/resp/certificate/BHkMacauReturnPassportFrontResp.java create mode 100644 api-web/api-interface/src/main/java/com/heyu/api/resp/certificate/TaiwanPassportBackResp.java create mode 100644 api-web/api-interface/src/main/java/com/heyu/api/resp/certificate/TaiwanPassportFrontResp.java create mode 100644 api-web/api-interface/src/main/java/com/heyu/api/resp/certificate/TaiwanReturnPassportBackResp.java create mode 100644 api-web/api-interface/src/main/java/com/heyu/api/resp/certificate/TaiwanReturnPassportFrontResp.java diff --git a/api-third/src/main/java/com/heyu/api/baidu/request/certificate/BHkMacauTaiwanExitentrypermitRequest.java b/api-third/src/main/java/com/heyu/api/baidu/request/certificate/BHkMacauTaiwanExitentrypermitRequest.java index 52ef721..c07eba3 100644 --- a/api-third/src/main/java/com/heyu/api/baidu/request/certificate/BHkMacauTaiwanExitentrypermitRequest.java +++ b/api-third/src/main/java/com/heyu/api/baidu/request/certificate/BHkMacauTaiwanExitentrypermitRequest.java @@ -27,13 +27,13 @@ public class BHkMacauTaiwanExitentrypermitRequest extends BaiduPdfRequest { /** * 是否返回字段置信度,默认为 false ,即不返回 */ - private String probability = "false"; + private String probability = "true"; /** * 是否返回字段位置坐标,默认为 false,即不返回 */ - private String location = "false"; + private String location = "true"; } diff --git a/api-web/api-interface/src/main/java/com/heyu/api/controller/certificate/Factors3VerificationController.java b/api-web/api-interface/src/main/java/com/heyu/api/controller/certificate/Factors3VerificationController.java index d04d49e..a0c73ad 100644 --- a/api-web/api-interface/src/main/java/com/heyu/api/controller/certificate/Factors3VerificationController.java +++ b/api-web/api-interface/src/main/java/com/heyu/api/controller/certificate/Factors3VerificationController.java @@ -8,7 +8,7 @@ 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.resp.certificate.Factors4VerificationResp; +import com.heyu.api.resp.certificate.Factors3VerificationResp; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; @@ -38,7 +38,7 @@ public class Factors3VerificationController extends BaseController { @RequestMapping("/recognize") @CacheResult public R recognize(BFourFactorsVerificationRequest request) { - Factors4VerificationResp resp = new Factors4VerificationResp(); + Factors3VerificationResp resp = new Factors3VerificationResp(); ApiR bR = bFourFactorsVerificationHandle.handle(request); diff --git a/api-web/api-interface/src/main/java/com/heyu/api/controller/certificate/Factors4VerificationController.java b/api-web/api-interface/src/main/java/com/heyu/api/controller/certificate/Factors4VerificationController.java index ebf5040..1d6a223 100644 --- a/api-web/api-interface/src/main/java/com/heyu/api/controller/certificate/Factors4VerificationController.java +++ b/api-web/api-interface/src/main/java/com/heyu/api/controller/certificate/Factors4VerificationController.java @@ -52,7 +52,7 @@ public class Factors4VerificationController extends BaseController { resp.setVerifyresult(wordsResultDTO.getVerifyresult()); resp.setNamematch(wordsResultDTO.getNamematch()); resp.setCompanymatch(wordsResultDTO.getCompanymatch()); - resp.setRegnummatc(wordsResultDTO.getRegnummatch()); + resp.setRegnummatch(wordsResultDTO.getRegnummatch()); resp.setIdnummatch(wordsResultDTO.getIdnummatch()); return R.ok().setData(resp); diff --git a/api-web/api-interface/src/main/java/com/heyu/api/controller/certificate/HkMacauPassportController.java b/api-web/api-interface/src/main/java/com/heyu/api/controller/certificate/HkMacauPassportController.java new file mode 100644 index 0000000..bee8248 --- /dev/null +++ b/api-web/api-interface/src/main/java/com/heyu/api/controller/certificate/HkMacauPassportController.java @@ -0,0 +1,94 @@ +package com.heyu.api.controller.certificate; + + +import com.heyu.api.baidu.handle.certificate.BHkMacauTaiwanExitentrypermitHandle; +import com.heyu.api.baidu.request.certificate.BHkMacauTaiwanExitentrypermitRequest; +import com.heyu.api.data.annotation.CacheResult; +import com.heyu.api.data.annotation.NotIntercept; +import com.heyu.api.data.constants.ApiConstants; +import com.heyu.api.data.utils.ApiR; +import com.heyu.api.data.utils.MapUtils; +import com.heyu.api.data.utils.R; +import com.heyu.api.request.certificate.BHkMacauPassportReq; +import com.heyu.api.resp.certificate.BHkMacauPassportBackResp; +import com.heyu.api.resp.certificate.BHkMacauPassportFontResp; +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; + +import java.util.Map; + + +/** + * https://console.bce.baidu.com/support/?_=1740219852952×tamp=1740313880415#/api?product=AI&project=%E6%96%87%E5%AD%97%E8%AF%86%E5%88%AB&parent=%E5%8D%A1%E8%AF%81OCR&api=rest%2F2.0%2Focr%2Fv1%2Fhk_macau_taiwan_exitentrypermit&method=post + *

+ *

+ * 港澳台证件识别 + *

+ * 接口描述 + * 支持识别4类港澳台出入境证件,包含港澳通行证正/反面、台湾通行证正/反面、台胞证(台湾居民来往大陆通行证)正/反面、返乡证(港澳居民来往内地通行证)正/反面,支持识别以上4类证件的全部字段信息。 + *

+ *

+ *

+ *

+ * hk_mc_passport_front:港澳通行证正面 + * hk_mc_passport_back:港澳通行证反面 + */ +@Slf4j +@RestController +@RequestMapping("/hkMacau/passport") +@NotIntercept +public class HkMacauPassportController { + + + @Autowired + private BHkMacauTaiwanExitentrypermitHandle bhkMacauTaiwanExitentrypermitHandle; + + + @RequestMapping("/recognize") + @CacheResult + public R recognize(BHkMacauPassportReq request) { + BHkMacauTaiwanExitentrypermitRequest bHkMacauTaiwanExitentrypermitRequest = new BHkMacauTaiwanExitentrypermitRequest(); + bHkMacauTaiwanExitentrypermitRequest.setImageUrl(request.getImageUrl()); + bHkMacauTaiwanExitentrypermitRequest.setImageBase64(request.getImageBase64()); + bHkMacauTaiwanExitentrypermitRequest.setPdfFile(request.getPdfFile()); + bHkMacauTaiwanExitentrypermitRequest.setPdfFileNum(request.getPdfFileNum()); + bHkMacauTaiwanExitentrypermitRequest.setExitentrypermitType("hk_mc_passport_" + request.getSite()); + + ApiR bR = bhkMacauTaiwanExitentrypermitHandle.handle(bHkMacauTaiwanExitentrypermitRequest); + if (bR.isSuccess()) { + Map data = bR.getData(); + if (ApiConstants.front.equals(request.getSite())) { + BHkMacauPassportFontResp resp = new BHkMacauPassportFontResp(); + resp.setCardNumber(MapUtils.getByExpr(data, "words_result.card_number.[0].word")); + resp.setNameChn(MapUtils.getByExpr(data, "words_result.name_chn.[0].word")); + resp.setNameEng(MapUtils.getByExpr(data, "words_result.name_eng.[0].word")); + resp.setBirthday(MapUtils.getByExpr(data, "words_result.birthday.[0].word")); + resp.setSex(MapUtils.getByExpr(data, "words_result.sex.[0].word")); + resp.setValidDate(MapUtils.getByExpr(data, "words_result.valid_date.[0].word")); + resp.setIssueAuthority(MapUtils.getByExpr(data, "words_result.issue_authority.[0].word")); + resp.setIssuePlace(MapUtils.getByExpr(data, "words_result.issue_place.[0].word")); + resp.setMRZCode(MapUtils.getByExpr(data, "words_result.MRZCode.[0].word")); + + return R.ok().setData(resp); + } else { + BHkMacauPassportBackResp resp = new BHkMacauPassportBackResp(); + resp.setHkType(MapUtils.getByExpr(data,"words_result.hk_type.[0].word"));// 是 array[] 来往香港签注-种类 + resp.setHkValidDate(MapUtils.getByExpr(data,"words_result.hk_valid_date.[0].word"));// 是 array[] 来往香港签注-有效期 + resp.setHkRemarks(MapUtils.getByExpr(data,"words_result.hk_remarks.[0].word"));// 是 array[] 来往香港签注-备注 + resp.setHkRoundTripNumber(MapUtils.getByExpr(data,"words_result.hk_round_trip_number.[0].word"));// 是 array[] 来往香港签注-往返有效 + resp.setMcType(MapUtils.getByExpr(data,"words_result.mc_type.[0].word"));//是 array[] 来往澳门签注-种类 + resp.setMcValidDate(MapUtils.getByExpr(data,"words_result.mc_valid_date.[0].word"));// 是 array[] 来往澳门签注-有效期 + resp.setMcRemarks(MapUtils.getByExpr(data,"words_result.mc_remarks.[0].word"));// 是 array[] 来往澳门签注-备注 + resp.setMcRoundTripNumber(MapUtils.getByExpr(data,"words_result.mc_round_trip_number.[0].word"));// 是 array[] 来往澳门签注-往返有效 + + return R.ok().setData(resp); + } + } + return R.error(bR.getErrorMsg()); + + } + + +} diff --git a/api-web/api-interface/src/main/java/com/heyu/api/controller/certificate/HkMacauReturnPassportController.java b/api-web/api-interface/src/main/java/com/heyu/api/controller/certificate/HkMacauReturnPassportController.java new file mode 100644 index 0000000..0062888 --- /dev/null +++ b/api-web/api-interface/src/main/java/com/heyu/api/controller/certificate/HkMacauReturnPassportController.java @@ -0,0 +1,83 @@ +package com.heyu.api.controller.certificate; + + +import com.heyu.api.baidu.handle.certificate.BHkMacauTaiwanExitentrypermitHandle; +import com.heyu.api.baidu.request.certificate.BHkMacauTaiwanExitentrypermitRequest; +import com.heyu.api.data.annotation.CacheResult; +import com.heyu.api.data.annotation.NotIntercept; +import com.heyu.api.data.constants.ApiConstants; +import com.heyu.api.data.utils.ApiR; +import com.heyu.api.data.utils.MapUtils; +import com.heyu.api.data.utils.R; +import com.heyu.api.request.certificate.BHkMacauReturnPassportReq; +import com.heyu.api.resp.certificate.BHkMacauReturnPassportBackResp; +import com.heyu.api.resp.certificate.BHkMacauReturnPassportFrontResp; +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; + +import java.util.Map; + + +/** + * https://console.bce.baidu.com/support/?_=1740219852952×tamp=1740313880415#/api?product=AI&project=%E6%96%87%E5%AD%97%E8%AF%86%E5%88%AB&parent=%E5%8D%A1%E8%AF%81OCR&api=rest%2F2.0%2Focr%2Fv1%2Fhk_macau_taiwan_exitentrypermit&method=post + *

+ *

+ * 港澳台证件识别 + *

+ * 接口描述 + * 支持识别4类港澳台出入境证件,包含港澳通行证正/反面、台湾通行证正/反面、台胞证(台湾居民来往大陆通行证)正/反面、返乡证(港澳居民来往内地通行证)正/反面,支持识别以上4类证件的全部字段信息。 + *

+ *

+ * hk_mc_return_passport_front:返乡证正面 + * hk_mc_return_passport_back:返乡证反面 + */ +@Slf4j +@RestController +@RequestMapping("/hkMacau/returnpassport") +@NotIntercept +public class HkMacauReturnPassportController { + + + @Autowired + private BHkMacauTaiwanExitentrypermitHandle bhkMacauTaiwanExitentrypermitHandle; + + + @RequestMapping("/recognize") + @CacheResult + public R recognize(BHkMacauReturnPassportReq request) { + BHkMacauTaiwanExitentrypermitRequest bHkMacauTaiwanExitentrypermitRequest = new BHkMacauTaiwanExitentrypermitRequest(); + bHkMacauTaiwanExitentrypermitRequest.setImageUrl(request.getImageUrl()); + bHkMacauTaiwanExitentrypermitRequest.setImageBase64(request.getImageBase64()); + bHkMacauTaiwanExitentrypermitRequest.setPdfFile(request.getPdfFile()); + bHkMacauTaiwanExitentrypermitRequest.setPdfFileNum(request.getPdfFileNum()); + bHkMacauTaiwanExitentrypermitRequest.setExitentrypermitType("hk_mc_return_passport_" + request.getSite()); + + ApiR bR = bhkMacauTaiwanExitentrypermitHandle.handle(bHkMacauTaiwanExitentrypermitRequest); + if (bR.isSuccess()) { + Map data = bR.getData(); + if (ApiConstants.front.equals(request.getSite())) { + BHkMacauReturnPassportFrontResp resp = new BHkMacauReturnPassportFrontResp(); + resp.setType(MapUtils.getByExpr(data,"words_result.type.[0].word"));// 是 array[] 种类 + resp.setValidDate(MapUtils.getByExpr(data,"words_result.valid_date.[0].word"));// 是 array[] 有效期 + resp.setRemarks(MapUtils.getByExpr(data,"words_result.remarks.[0].word"));// 是 array[] 备注 + resp.setRoundTripNumber(MapUtils.getByExpr(data,"words_result.round_trip_number.[0].word"));// 是 array[] 往返有效 + return R.ok().setData(resp); + } else { + BHkMacauReturnPassportBackResp resp = new BHkMacauReturnPassportBackResp(); + resp.setNameChn(MapUtils.getByExpr(data,"words_result.name_chn.[0].word"));// 是 array[] 姓名 + resp.setNameEng(MapUtils.getByExpr(data,"words_result.name_eng.[0].word"));// 是 array[] 姓名(英文) + resp.setBirthday(MapUtils.getByExpr(data,"words_result.birthday.[0].word"));// 是 array[] 出生日期 + resp.setSex(MapUtils.getByExpr(data,"words_result.sex.[0].word"));// 是 array[] 性别 + resp.setValidDate(MapUtils.getByExpr(data,"words_result.valid_date.[0].word"));//是 array[] 有效期限 + resp.setIssueAuthority(MapUtils.getByExpr(data,"words_result.issue_authority.[0].word"));// 是 array[] 签发机关 + resp.setIssueTimes(MapUtils.getByExpr(data,"words_result.issue_times.[0].word"));// 是 array[] 签发次数 + resp.setCardNumber(MapUtils.getByExpr(data,"words_result.card_number.[0].word"));// 是 array[] 证件号码 + return R.ok().setData(resp); + } + } + return R.error(bR.getErrorMsg()); + + } +} diff --git a/api-web/api-interface/src/main/java/com/heyu/api/controller/certificate/TaiwanPassportController.java b/api-web/api-interface/src/main/java/com/heyu/api/controller/certificate/TaiwanPassportController.java new file mode 100644 index 0000000..e2439fc --- /dev/null +++ b/api-web/api-interface/src/main/java/com/heyu/api/controller/certificate/TaiwanPassportController.java @@ -0,0 +1,86 @@ +package com.heyu.api.controller.certificate; + + +import com.heyu.api.baidu.handle.certificate.BHkMacauTaiwanExitentrypermitHandle; +import com.heyu.api.baidu.request.certificate.BHkMacauTaiwanExitentrypermitRequest; +import com.heyu.api.data.annotation.CacheResult; +import com.heyu.api.data.annotation.NotIntercept; +import com.heyu.api.data.constants.ApiConstants; +import com.heyu.api.data.utils.ApiR; +import com.heyu.api.data.utils.MapUtils; +import com.heyu.api.data.utils.R; +import com.heyu.api.request.certificate.TaiwanPassportReq; +import com.heyu.api.resp.certificate.TaiwanPassportBackResp; +import com.heyu.api.resp.certificate.TaiwanPassportFrontResp; +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; + +import java.util.Map; + + +/** + * https://console.bce.baidu.com/support/?_=1740219852952×tamp=1740313880415#/api?product=AI&project=%E6%96%87%E5%AD%97%E8%AF%86%E5%88%AB&parent=%E5%8D%A1%E8%AF%81OCR&api=rest%2F2.0%2Focr%2Fv1%2Fhk_macau_taiwan_exitentrypermit&method=post + *

+ *

+ * 港澳台证件识别 + *

+ * 接口描述 + * 支持识别4类港澳台出入境证件,包含港澳通行证正/反面、台湾通行证正/反面、台胞证(台湾居民来往大陆通行证)正/反面、返乡证(港澳居民来往内地通行证)正/反面,支持识别以上4类证件的全部字段信息。 + *

+ *

+ *

+ * tw_passport_front:台湾通行证正面 + * tw_passport_back:台湾通行证反面 + */ +@Slf4j +@RestController +@RequestMapping("/tw/passport") +@NotIntercept +public class TaiwanPassportController { + + + @Autowired + private BHkMacauTaiwanExitentrypermitHandle bhkMacauTaiwanExitentrypermitHandle; + + + @RequestMapping("/recognize") + @CacheResult + public R recognize(TaiwanPassportReq request) { + BHkMacauTaiwanExitentrypermitRequest bHkMacauTaiwanExitentrypermitRequest = new BHkMacauTaiwanExitentrypermitRequest(); + bHkMacauTaiwanExitentrypermitRequest.setImageUrl(request.getImageUrl()); + bHkMacauTaiwanExitentrypermitRequest.setImageBase64(request.getImageBase64()); + bHkMacauTaiwanExitentrypermitRequest.setPdfFile(request.getPdfFile()); + bHkMacauTaiwanExitentrypermitRequest.setPdfFileNum(request.getPdfFileNum()); + bHkMacauTaiwanExitentrypermitRequest.setExitentrypermitType("tw_passport_" + request.getSite()); + + ApiR bR = bhkMacauTaiwanExitentrypermitHandle.handle(bHkMacauTaiwanExitentrypermitRequest); + if (bR.isSuccess()) { + Map data = bR.getData(); + if (ApiConstants.front.equals(request.getSite())) { + TaiwanPassportFrontResp resp = new TaiwanPassportFrontResp(); + resp.setCardNumber(MapUtils.getByExpr(data,"words_result.card_number.[0].word")); //是 array[] 证件号码 + resp.setNameChn(MapUtils.getByExpr(data,"words_result.name_chn.[0].word")); //是 array[] 姓名 + resp.setNameEng(MapUtils.getByExpr(data,"words_result.name_eng.[0].word")); //是 array[] 姓名(英文) + resp.setBirthday(MapUtils.getByExpr(data,"words_result.birthday.[0].word")); //是 array[] 出生日期 + resp.setSex(MapUtils.getByExpr(data,"words_result.sex.[0].word")); //是 array[] 性别 + resp.setValidDate(MapUtils.getByExpr(data,"words_result.valid_date.[0].word"));// 是 array[] 有效期限 + resp.setIssueAuthority(MapUtils.getByExpr(data,"words_result.issue_authority.[0].word")); //是 array[] 签发机关 + resp.setIssuePlace(MapUtils.getByExpr(data,"words_result.issue_place.[0].word"));// 是 array[] 签发地点 + resp.setMRZCode(MapUtils.getByExpr(data,"words_result.MRZCode.[0].word"));// 是 array[] 证件下方第一行 + return R.ok().setData(resp); + } else { + TaiwanPassportBackResp resp = new TaiwanPassportBackResp(); + resp.setType(MapUtils.getByExpr(data,"words_result.type.[0].word"));//是 array[] 种类 + resp.setValidDate(MapUtils.getByExpr(data,"words_result.valid_date.[0].word"));// 是 array[] 有效期 + resp.setRemarks(MapUtils.getByExpr(data,"words_result.remarks.[0].word"));//是 array[] 备注 + resp.setRoundTripNumber(MapUtils.getByExpr(data,"words_result.round_trip_number.[0].word"));// 是 array[] 往返有效 + return R.ok().setData(resp); + } + } + + return R.error(bR.getErrorMsg()); + + } +} diff --git a/api-web/api-interface/src/main/java/com/heyu/api/controller/certificate/TaiwanReturnPassportController.java b/api-web/api-interface/src/main/java/com/heyu/api/controller/certificate/TaiwanReturnPassportController.java new file mode 100644 index 0000000..6539eba --- /dev/null +++ b/api-web/api-interface/src/main/java/com/heyu/api/controller/certificate/TaiwanReturnPassportController.java @@ -0,0 +1,86 @@ +package com.heyu.api.controller.certificate; + + +import com.heyu.api.baidu.handle.certificate.BHkMacauTaiwanExitentrypermitHandle; +import com.heyu.api.baidu.request.certificate.BHkMacauTaiwanExitentrypermitRequest; +import com.heyu.api.data.annotation.CacheResult; +import com.heyu.api.data.annotation.NotIntercept; +import com.heyu.api.data.constants.ApiConstants; +import com.heyu.api.data.utils.ApiR; +import com.heyu.api.data.utils.MapUtils; +import com.heyu.api.data.utils.R; +import com.heyu.api.request.certificate.TaiwanReturnPassportReq; +import com.heyu.api.resp.certificate.TaiwanReturnPassportBackResp; +import com.heyu.api.resp.certificate.TaiwanReturnPassportFrontResp; +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; + +import java.util.Map; + + +/** + * https://console.bce.baidu.com/support/?_=1740219852952×tamp=1740313880415#/api?product=AI&project=%E6%96%87%E5%AD%97%E8%AF%86%E5%88%AB&parent=%E5%8D%A1%E8%AF%81OCR&api=rest%2F2.0%2Focr%2Fv1%2Fhk_macau_taiwan_exitentrypermit&method=post + *

+ *

+ * 港澳台证件识别 + *

+ * 接口描述 + * 支持识别4类港澳台出入境证件,包含港澳通行证正/反面、台湾通行证正/反面、台胞证(台湾居民来往大陆通行证)正/反面、返乡证(港澳居民来往内地通行证)正/反面,支持识别以上4类证件的全部字段信息。 + *

+ *

+ *

+ * tw_return_passport_front:台胞证正面 + * tw_return_passport_back:台胞证反面 + */ +@Slf4j +@RestController +@RequestMapping("/tw/returnpass") +@NotIntercept +public class TaiwanReturnPassportController { + + + @Autowired + private BHkMacauTaiwanExitentrypermitHandle bhkMacauTaiwanExitentrypermitHandle; + + + @RequestMapping("/recognize") + @CacheResult + public R recognize(TaiwanReturnPassportReq request) { + BHkMacauTaiwanExitentrypermitRequest bHkMacauTaiwanExitentrypermitRequest = new BHkMacauTaiwanExitentrypermitRequest(); + bHkMacauTaiwanExitentrypermitRequest.setImageUrl(request.getImageUrl()); + bHkMacauTaiwanExitentrypermitRequest.setImageBase64(request.getImageBase64()); + bHkMacauTaiwanExitentrypermitRequest.setPdfFile(request.getPdfFile()); + bHkMacauTaiwanExitentrypermitRequest.setPdfFileNum(request.getPdfFileNum()); + bHkMacauTaiwanExitentrypermitRequest.setExitentrypermitType("tw_return_passport_" + request.getSite()); + + ApiR bR = bhkMacauTaiwanExitentrypermitHandle.handle(bHkMacauTaiwanExitentrypermitRequest); + if (bR.isSuccess()) { + Map data = bR.getData(); + if (ApiConstants.front.equals(request.getSite())) { + TaiwanReturnPassportFrontResp resp = new TaiwanReturnPassportFrontResp(); + resp.setNameChn(MapUtils.getByExpr(data, "words_result.card_number.[0].word"));//是 array[] 姓名 + resp.setNameEng(MapUtils.getByExpr(data, "words_result.card_number.[0].word"));//是 array[] 姓名(英文) + resp.setBirthday(MapUtils.getByExpr(data, "words_result.card_number.[0].word"));// 是 array[] 出生日期 + resp.setSex(MapUtils.getByExpr(data, "words_result.card_number.[0].word"));//是 array[] 性别 + resp.setValidDate(MapUtils.getByExpr(data, "words_result.card_number.[0].word"));// 是 array[] 有效期限 + resp.setIssueAuthority(MapUtils.getByExpr(data, "words_result.card_number.[0].word"));// 是 array[] 签发机关 + resp.setIssuePlace(MapUtils.getByExpr(data, "words_result.card_number.[0].word"));// 是 array[] 签发地点 + resp.setCardNumber(MapUtils.getByExpr(data, "words_result.card_number.[0].word"));// 是 array[] 证件号码 + resp.setIssueTimes(MapUtils.getByExpr(data, "words_result.card_number.[0].word"));// 是 array[] 签发次数 + return R.ok().setData(resp); + } else { + TaiwanReturnPassportBackResp resp = new TaiwanReturnPassportBackResp(); + resp.setIdcardName(MapUtils.getByExpr(data, "words_result.idcard_name.[0].word"));// 是 array[] 身份证姓名 + resp.setIdcardNumber(MapUtils.getByExpr(data, "words_result.idcard_number.[0].word"));// 是 array[] 身份证号码 + resp.setMRZCode1(MapUtils.getByExpr(data, "words_result.MRZCode1.[0].word"));//是 array[] 证件下方第一行 + resp.setMRZCode2(MapUtils.getByExpr(data, "words_result.MRZCode2.[0].word"));//是 array[] 证件下方第二行 + return R.ok().setData(resp); + } + } + + return R.error(bR.getErrorMsg()); + + } +} diff --git a/api-web/api-interface/src/main/java/com/heyu/api/request/certificate/BHkMacauPassportReq.java b/api-web/api-interface/src/main/java/com/heyu/api/request/certificate/BHkMacauPassportReq.java new file mode 100644 index 0000000..e4f81c1 --- /dev/null +++ b/api-web/api-interface/src/main/java/com/heyu/api/request/certificate/BHkMacauPassportReq.java @@ -0,0 +1,31 @@ +package com.heyu.api.request.certificate; + + +import com.heyu.api.baidu.request.BaiduPdfRequest; +import lombok.Data; + +/** + * https://console.bce.baidu.com/support/?_=1740219852952×tamp=1740313880415#/api?product=AI&project=%E6%96%87%E5%AD%97%E8%AF%86%E5%88%AB&parent=%E5%8D%A1%E8%AF%81OCR&api=rest%2F2.0%2Focr%2Fv1%2Fhk_macau_taiwan_exitentrypermit&method=post + * 港澳台证件识别 + */ +@Data +public class BHkMacauPassportReq extends BaiduPdfRequest { + + + /** + * hk_mc_passport_front:港澳通行证正面 + * hk_mc_passport_back:港澳通行证反面 + * tw_passport_front:台湾通行证正面 + * tw_passport_back:台湾通行证反面 + * tw_return_passport_front:台胞证正面 + * tw_return_passport_back:台胞证反面 + * hk_mc_return_passport_front:返乡证正面 + * hk_mc_return_passport_back:返乡证反面 + */ + /** + * front or back + */ + private String site; + +} + diff --git a/api-web/api-interface/src/main/java/com/heyu/api/request/certificate/BHkMacauReturnPassportReq.java b/api-web/api-interface/src/main/java/com/heyu/api/request/certificate/BHkMacauReturnPassportReq.java new file mode 100644 index 0000000..6b32fcc --- /dev/null +++ b/api-web/api-interface/src/main/java/com/heyu/api/request/certificate/BHkMacauReturnPassportReq.java @@ -0,0 +1,35 @@ +package com.heyu.api.request.certificate; + + +import com.heyu.api.baidu.request.BaiduPdfRequest; +import lombok.Data; + +/** + * https://console.bce.baidu.com/support/?_=1740219852952×tamp=1740313880415#/api?product=AI&project=%E6%96%87%E5%AD%97%E8%AF%86%E5%88%AB&parent=%E5%8D%A1%E8%AF%81OCR&api=rest%2F2.0%2Focr%2Fv1%2Fhk_macau_taiwan_exitentrypermit&method=post + * 港澳台证件识别 + */ +@Data +public class BHkMacauReturnPassportReq extends BaiduPdfRequest { + + /** + * hk_mc_passport_front:港澳通行证正面 + * hk_mc_passport_back:港澳通行证反面 + * tw_passport_front:台湾通行证正面 + * tw_passport_back:台湾通行证反面 + * tw_return_passport_front:台胞证正面 + * tw_return_passport_back:台胞证反面 + * hk_mc_return_passport_front:返乡证正面 + * hk_mc_return_passport_back:返乡证反面 + */ + + /** + * front or back + */ + private String site; + + + + + +} + diff --git a/api-web/api-interface/src/main/java/com/heyu/api/request/certificate/TaiwanPassportReq.java b/api-web/api-interface/src/main/java/com/heyu/api/request/certificate/TaiwanPassportReq.java new file mode 100644 index 0000000..8cf4e84 --- /dev/null +++ b/api-web/api-interface/src/main/java/com/heyu/api/request/certificate/TaiwanPassportReq.java @@ -0,0 +1,36 @@ +package com.heyu.api.request.certificate; + + +import com.heyu.api.baidu.request.BaiduPdfRequest; +import lombok.Data; + +/** + * https://console.bce.baidu.com/support/?_=1740219852952×tamp=1740313880415#/api?product=AI&project=%E6%96%87%E5%AD%97%E8%AF%86%E5%88%AB&parent=%E5%8D%A1%E8%AF%81OCR&api=rest%2F2.0%2Focr%2Fv1%2Fhk_macau_taiwan_exitentrypermit&method=post + * 港澳台证件识别 + */ +@Data +public class TaiwanPassportReq extends BaiduPdfRequest { + + + /** + * hk_mc_passport_front:港澳通行证正面 + * hk_mc_passport_back:港澳通行证反面 + * tw_passport_front:台湾通行证正面 + * tw_passport_back:台湾通行证反面 + * tw_return_passport_front:台胞证正面 + * tw_return_passport_back:台胞证反面 + * hk_mc_return_passport_front:返乡证正面 + * hk_mc_return_passport_back:返乡证反面 + */ + + + + /** + * front or back + */ + private String site; + + + +} + diff --git a/api-web/api-interface/src/main/java/com/heyu/api/request/certificate/TaiwanReturnPassportReq.java b/api-web/api-interface/src/main/java/com/heyu/api/request/certificate/TaiwanReturnPassportReq.java new file mode 100644 index 0000000..1fc27c5 --- /dev/null +++ b/api-web/api-interface/src/main/java/com/heyu/api/request/certificate/TaiwanReturnPassportReq.java @@ -0,0 +1,34 @@ +package com.heyu.api.request.certificate; + + +import com.heyu.api.baidu.request.BaiduPdfRequest; +import lombok.Data; + +/** + * https://console.bce.baidu.com/support/?_=1740219852952×tamp=1740313880415#/api?product=AI&project=%E6%96%87%E5%AD%97%E8%AF%86%E5%88%AB&parent=%E5%8D%A1%E8%AF%81OCR&api=rest%2F2.0%2Focr%2Fv1%2Fhk_macau_taiwan_exitentrypermit&method=post + * 港澳台证件识别 + */ +@Data +public class TaiwanReturnPassportReq extends BaiduPdfRequest { + + + /** + * hk_mc_passport_front:港澳通行证正面 + * hk_mc_passport_back:港澳通行证反面 + * tw_passport_front:台湾通行证正面 + * tw_passport_back:台湾通行证反面 + * tw_return_passport_front:台胞证正面 + * tw_return_passport_back:台胞证反面 + * hk_mc_return_passport_front:返乡证正面 + * hk_mc_return_passport_back:返乡证反面 + */ + + + /** + * front or back + */ + private String site; + + +} + diff --git a/api-web/api-interface/src/main/java/com/heyu/api/resp/certificate/BHkMacauPassportBackResp.java b/api-web/api-interface/src/main/java/com/heyu/api/resp/certificate/BHkMacauPassportBackResp.java new file mode 100644 index 0000000..39049f5 --- /dev/null +++ b/api-web/api-interface/src/main/java/com/heyu/api/resp/certificate/BHkMacauPassportBackResp.java @@ -0,0 +1,20 @@ +package com.heyu.api.resp.certificate; + + +import com.heyu.api.data.dto.BaseResp; +import lombok.Data; + +@Data +public class BHkMacauPassportBackResp extends BaseResp { + + + private String hkType;// 是 array[] 来往香港签注-种类 + private String hkValidDate;// 是 array[] 来往香港签注-有效期 + private String hkRemarks;// 是 array[] 来往香港签注-备注 + private String hkRoundTripNumber;// 是 array[] 来往香港签注-往返有效 + private String mcType;//是 array[] 来往澳门签注-种类 + private String mcValidDate;// 是 array[] 来往澳门签注-有效期 + private String mcRemarks;// 是 array[] 来往澳门签注-备注 + private String mcRoundTripNumber;// 是 array[] 来往澳门签注-往返有效 + +} diff --git a/api-web/api-interface/src/main/java/com/heyu/api/resp/certificate/BHkMacauPassportFontResp.java b/api-web/api-interface/src/main/java/com/heyu/api/resp/certificate/BHkMacauPassportFontResp.java new file mode 100644 index 0000000..ba98f50 --- /dev/null +++ b/api-web/api-interface/src/main/java/com/heyu/api/resp/certificate/BHkMacauPassportFontResp.java @@ -0,0 +1,24 @@ +package com.heyu.api.resp.certificate; + + +import com.heyu.api.data.dto.BaseResp; +import lombok.Data; + +@Data +public class BHkMacauPassportFontResp extends BaseResp { + + + private String cardNumber;// 是 array[] 证件号码 + private String nameChn;// 是 array[] 姓名 + private String nameEng;// 是 array[] 姓名(英文) + private String birthday;// 是 array[] 出生日期 + private String sex;//是 array[] 性别 + private String validDate;// 是 array[] 有效期限 + private String issueAuthority;// 是 array[] 签发机关 + private String issuePlace;// 是 array[] 签发地点 + private String mRZCode;// 是 array[] 证件下方第一行 + private String word;// 是 string 字段识别结果,以上字段均包含 + private String probability;// 否 object{} 字段识别结果置信度,当请求参数 probability=true 时返回该字段,以上字段均包含 + private String average;// 否 float 字段识别结果中各字符的置信度平均值 + +} diff --git a/api-web/api-interface/src/main/java/com/heyu/api/resp/certificate/BHkMacauReturnPassportBackResp.java b/api-web/api-interface/src/main/java/com/heyu/api/resp/certificate/BHkMacauReturnPassportBackResp.java new file mode 100644 index 0000000..dd87d8b --- /dev/null +++ b/api-web/api-interface/src/main/java/com/heyu/api/resp/certificate/BHkMacauReturnPassportBackResp.java @@ -0,0 +1,18 @@ +package com.heyu.api.resp.certificate; + +import com.heyu.api.data.dto.BaseResp; +import lombok.Data; + +@Data +public class BHkMacauReturnPassportBackResp extends BaseResp { + + + private String nameChn;// 是 array[] 姓名 + private String nameEng;// 是 array[] 姓名(英文) + private String birthday;// 是 array[] 出生日期 + private String sex;// 是 array[] 性别 + private String validDate;//是 array[] 有效期限 + private String issueAuthority;// 是 array[] 签发机关 + private String issueTimes;// 是 array[] 签发次数 + private String cardNumber;// 是 array[] 证件号码 +} diff --git a/api-web/api-interface/src/main/java/com/heyu/api/resp/certificate/BHkMacauReturnPassportFrontResp.java b/api-web/api-interface/src/main/java/com/heyu/api/resp/certificate/BHkMacauReturnPassportFrontResp.java new file mode 100644 index 0000000..4e96c39 --- /dev/null +++ b/api-web/api-interface/src/main/java/com/heyu/api/resp/certificate/BHkMacauReturnPassportFrontResp.java @@ -0,0 +1,13 @@ +package com.heyu.api.resp.certificate; + +import com.heyu.api.data.dto.BaseResp; +import lombok.Data; + +@Data +public class BHkMacauReturnPassportFrontResp extends BaseResp { + + private String type;// 是 array[] 种类 + private String validDate;// 是 array[] 有效期 + private String remarks;// 是 array[] 备注 + private String roundTripNumber;// 是 array[] 往返有效 +} diff --git a/api-web/api-interface/src/main/java/com/heyu/api/resp/certificate/Factors3VerificationResp.java b/api-web/api-interface/src/main/java/com/heyu/api/resp/certificate/Factors3VerificationResp.java index 7e9687d..9ead301 100644 --- a/api-web/api-interface/src/main/java/com/heyu/api/resp/certificate/Factors3VerificationResp.java +++ b/api-web/api-interface/src/main/java/com/heyu/api/resp/certificate/Factors3VerificationResp.java @@ -8,16 +8,14 @@ import lombok.Data; public class Factors3VerificationResp extends BaseResp { + /** * 返回值为: * -1:(四要素完全匹配) * -0:(四要素不完全匹配) */ private String verifyresult; - /*** - * 注册证件号, 1:匹配 0:不匹配 2:无法验证 - */ - private String idnummatch; + /*** * 法人姓名, 1:匹配 0:不匹配 2:无法验证 */ @@ -29,7 +27,7 @@ public class Factors3VerificationResp extends BaseResp { /*** * 统一社会信用代码, 1:匹配 0:不匹配 2:无法验证 */ - private String regnummatc; + private String regnummatch; } diff --git a/api-web/api-interface/src/main/java/com/heyu/api/resp/certificate/Factors4VerificationResp.java b/api-web/api-interface/src/main/java/com/heyu/api/resp/certificate/Factors4VerificationResp.java index 680133c..3070a9d 100644 --- a/api-web/api-interface/src/main/java/com/heyu/api/resp/certificate/Factors4VerificationResp.java +++ b/api-web/api-interface/src/main/java/com/heyu/api/resp/certificate/Factors4VerificationResp.java @@ -14,7 +14,10 @@ public class Factors4VerificationResp extends BaseResp { * -0:(四要素不完全匹配) */ private String verifyresult; - + /*** + * 注册证件号, 1:匹配 0:不匹配 2:无法验证 + */ + private String idnummatch; /*** * 法人姓名, 1:匹配 0:不匹配 2:无法验证 */ diff --git a/api-web/api-interface/src/main/java/com/heyu/api/resp/certificate/TaiwanPassportBackResp.java b/api-web/api-interface/src/main/java/com/heyu/api/resp/certificate/TaiwanPassportBackResp.java new file mode 100644 index 0000000..f22555e --- /dev/null +++ b/api-web/api-interface/src/main/java/com/heyu/api/resp/certificate/TaiwanPassportBackResp.java @@ -0,0 +1,15 @@ +package com.heyu.api.resp.certificate; + +import com.heyu.api.data.dto.BaseResp; +import lombok.Data; + +@Data +public class TaiwanPassportBackResp extends BaseResp { + + + private String type;//是 array[] 种类 + private String validDate;// 是 array[] 有效期 + private String remarks;//是 array[] 备注 + private String roundTripNumber;// 是 array[] 往返有效 + +} diff --git a/api-web/api-interface/src/main/java/com/heyu/api/resp/certificate/TaiwanPassportFrontResp.java b/api-web/api-interface/src/main/java/com/heyu/api/resp/certificate/TaiwanPassportFrontResp.java new file mode 100644 index 0000000..db4e4f5 --- /dev/null +++ b/api-web/api-interface/src/main/java/com/heyu/api/resp/certificate/TaiwanPassportFrontResp.java @@ -0,0 +1,21 @@ +package com.heyu.api.resp.certificate; + +import com.heyu.api.data.dto.BaseResp; +import lombok.Data; + +@Data +public class TaiwanPassportFrontResp extends BaseResp { + + + private String cardNumber;//是 array[] 证件号码 + private String nameChn;//是 array[] 姓名 + private String nameEng;//是 array[] 姓名(英文) + private String birthday;//是 array[] 出生日期 + private String sex;//是 array[] 性别 + private String validDate;// 是 array[] 有效期限 + private String issueAuthority;//是 array[] 签发机关 + private String issuePlace;// 是 array[] 签发地点 + private String mRZCode;// 是 array[] 证件下方第一行 + + +} diff --git a/api-web/api-interface/src/main/java/com/heyu/api/resp/certificate/TaiwanReturnPassportBackResp.java b/api-web/api-interface/src/main/java/com/heyu/api/resp/certificate/TaiwanReturnPassportBackResp.java new file mode 100644 index 0000000..cadd67a --- /dev/null +++ b/api-web/api-interface/src/main/java/com/heyu/api/resp/certificate/TaiwanReturnPassportBackResp.java @@ -0,0 +1,15 @@ +package com.heyu.api.resp.certificate; + +import com.heyu.api.data.dto.BaseResp; +import lombok.Data; + +@Data +public class TaiwanReturnPassportBackResp extends BaseResp { + + + private String idcardName;// 是 array[] 身份证姓名 + private String idcardNumber;// 是 array[] 身份证号码 + private String mRZCode1;//是 array[] 证件下方第一行 + private String mRZCode2;//是 array[] 证件下方第二行 + +} diff --git a/api-web/api-interface/src/main/java/com/heyu/api/resp/certificate/TaiwanReturnPassportFrontResp.java b/api-web/api-interface/src/main/java/com/heyu/api/resp/certificate/TaiwanReturnPassportFrontResp.java new file mode 100644 index 0000000..f295875 --- /dev/null +++ b/api-web/api-interface/src/main/java/com/heyu/api/resp/certificate/TaiwanReturnPassportFrontResp.java @@ -0,0 +1,23 @@ +package com.heyu.api.resp.certificate; + +import com.heyu.api.data.dto.BaseResp; +import lombok.Data; + +@Data +public class TaiwanReturnPassportFrontResp extends BaseResp { + + + private String nameChn;//是 array[] 姓名 + private String nameEng;//是 array[] 姓名(英文) + private String birthday;// 是 array[] 出生日期 + private String sex;//是 array[] 性别 + private String validDate;// 是 array[] 有效期限 + private String issueAuthority;// 是 array[] 签发机关 + private String issuePlace;// 是 array[] 签发地点 + private String cardNumber;// 是 array[] 证件号码 + private String issueTimes;// 是 array[] 签发次数 + + + + +} diff --git a/api-web/api-interface/src/test/java/com/api/test/Test1.java b/api-web/api-interface/src/test/java/com/api/test/Test1.java index 51d6939..d521bd1 100644 --- a/api-web/api-interface/src/test/java/com/api/test/Test1.java +++ b/api-web/api-interface/src/test/java/com/api/test/Test1.java @@ -1,9 +1,81 @@ package com.api.test; +import com.alibaba.fastjson.JSONObject; +import com.heyu.api.data.utils.MapUtils; +import org.junit.Test; + +import java.util.Map; + public class Test1 { public static void main(String[] args) { System.out.println("11111111"); System.out.println("22222222"); } + + @Test + public void test1() { + + String a = "{\n" + + " \"words_result_num\": 9,\n" + + " \"words_result\": {\n" + + " \"card_number\": [\n" + + " {\n" + + " \"word\": \"C00000000\"\n" + + " }\n" + + " ],\n" + + " \"name_chn\": [\n" + + " {\n" + + " \"word\": \"证件样本\"\n" + + " }\n" + + " ],\n" + + " \"name_eng\": [\n" + + " {\n" + + " \"word\": \"ZHENGJIAN,YANGBEN\"\n" + + " }\n" + + " ],\n" + + " \"birthday\": [\n" + + " {\n" + + " \"word\": \"1981.08.03\"\n" + + " }\n" + + " ],\n" + + " \"sex\": [\n" + + " {\n" + + " \"word\": \"女\"\n" + + " }\n" + + " ],\n" + + " \"valid_date\": [\n" + + " {\n" + + " \"word\": \"2014.04.21-2024.04.20\"\n" + + " }\n" + + " ],\n" + + " \"issue_authority\": [\n" + + " {\n" + + " \"word\": \"公安部出入境管理局\"\n" + + " }\n" + + " ],\n" + + " \"issue_place\": [\n" + + " {\n" + + " \"word\": \"广东\"\n" + + " }\n" + + " ],\n" + + " \"MRZCode\": [\n" + + " {\n" + + " \"word\": \"CSC000000004<2404200<8108038<6\"\n" + + " }\n" + + " ]\n" + + " },\n" + + " \"direction\": 0,\n" + + " \"log_id\": 1645241609425709013\n" + + "}\n" + + " "; + + System.out.println(a); + Map data = JSONObject.parseObject(a,Map.class); + String b = MapUtils.getByExpr(data,"words_result.card_number.[0].word"); + System.out.println(b); + + + } + }