From f0ab7b6300d66ded8dd629dcb9746581fe35c06a Mon Sep 17 00:00:00 2001 From: quyixiao <2621048238@qq.com> Date: Fri, 14 Mar 2025 20:59:59 +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 --- .../common/text/ARecognizeQrCodeHandle.java | 1 - .../car/RecognizeLicensePlateController.java | 2 - .../car/RecognizeTaxiInvoiceController.java | 55 ++++++++++++ .../car/RecognizeTrainTicketController.java | 61 +++++++++++++ .../qrcode/RecognizeQrCodeController.java | 67 +++++++++++++++ .../resp/car/RecognizeTaxiInvoiceResp.java | 4 + .../resp/car/RecognizeTrainTicketResp.java | 86 +++++++++++++++++++ .../resp/qrcode/RecognizeQrCodeResp.java | 73 ++++++++++++++++ 8 files changed, 346 insertions(+), 3 deletions(-) create mode 100644 api-web/api-interface/src/main/java/com/heyu/api/controller/certificate/car/RecognizeTaxiInvoiceController.java create mode 100644 api-web/api-interface/src/main/java/com/heyu/api/controller/certificate/car/RecognizeTrainTicketController.java create mode 100644 api-web/api-interface/src/main/java/com/heyu/api/controller/certificate/qrcode/RecognizeQrCodeController.java create mode 100644 api-web/api-interface/src/main/java/com/heyu/api/controller/resp/car/RecognizeTaxiInvoiceResp.java create mode 100644 api-web/api-interface/src/main/java/com/heyu/api/controller/resp/car/RecognizeTrainTicketResp.java create mode 100644 api-web/api-interface/src/main/java/com/heyu/api/controller/resp/qrcode/RecognizeQrCodeResp.java diff --git a/api-third/src/main/java/com/heyu/api/alibaba/handle/common/text/ARecognizeQrCodeHandle.java b/api-third/src/main/java/com/heyu/api/alibaba/handle/common/text/ARecognizeQrCodeHandle.java index 7e97863..4c2b045 100644 --- a/api-third/src/main/java/com/heyu/api/alibaba/handle/common/text/ARecognizeQrCodeHandle.java +++ b/api-third/src/main/java/com/heyu/api/alibaba/handle/common/text/ARecognizeQrCodeHandle.java @@ -39,7 +39,6 @@ public class ARecognizeQrCodeHandle extends AlibabaBaseHandle aR = arRecognizeTaxiInvoiceHandle.handle(request); + + if(aR.isSuccess() && isSuccessStatusCode(aR.getData().getStatusCode()) ){ + RecognizeTaxiInvoiceResponse recognizeTaxiInvoiceResponse = aR.getData(); + + RecognizeTaxiInvoiceResponseBody responseBody = recognizeTaxiInvoiceResponse.getBody(); + RecognizeTaxiInvoiceResponseBody.RecognizeTaxiInvoiceResponseBodyData responseBodyData = responseBody.getData(); + + + } + + return R.error(); + } + +} diff --git a/api-web/api-interface/src/main/java/com/heyu/api/controller/certificate/car/RecognizeTrainTicketController.java b/api-web/api-interface/src/main/java/com/heyu/api/controller/certificate/car/RecognizeTrainTicketController.java new file mode 100644 index 0000000..9bf89da --- /dev/null +++ b/api-web/api-interface/src/main/java/com/heyu/api/controller/certificate/car/RecognizeTrainTicketController.java @@ -0,0 +1,61 @@ +package com.heyu.api.controller.certificate.car; + + +import com.aliyun.ocr20191230.models.RecognizeTrainTicketResponse; +import com.aliyun.ocr20191230.models.RecognizeTrainTicketResponseBody; +import com.heyu.api.alibaba.handle.common.text.ARecognizeTrainTicketHandle; +import com.heyu.api.alibaba.request.common.text.ARecognizeTaxiInvoiceRequest; +import com.heyu.api.alibaba.request.common.text.ARecognizeTrainTicketRequest; +import com.heyu.api.controller.BaseController; +import com.heyu.api.controller.resp.car.RecognizeTrainTicketResp; +import com.heyu.api.data.annotation.NotIntercept; +import com.heyu.api.data.utils.ApiR; +import com.heyu.api.data.utils.R; +import lombok.Data; +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/RecognizeTrainTicket?tab=DOC&lang=JAVA + * + * 火车票识别 + * + * RecognizeTrainTicket + * + */ +@Slf4j +@RestController +@RequestMapping("/train/ticket") +@NotIntercept +public class RecognizeTrainTicketController extends BaseController { + + + @Autowired + private ARecognizeTrainTicketHandle aRecognizeTrainTicketHandle; + + + @RequestMapping("/recognize") + public R recognize(ARecognizeTrainTicketRequest request) { + ApiR aR = aRecognizeTrainTicketHandle.handle(request); + if (aR.isSuccess() && isSuccessStatusCode(aR.getData().getStatusCode())) { + RecognizeTrainTicketResponse recognizeTrainTicketResponse = aR.getData(); + + RecognizeTrainTicketResponseBody responseBody = recognizeTrainTicketResponse.getBody(); + RecognizeTrainTicketResponseBody.RecognizeTrainTicketResponseBodyData responseBodyData = responseBody.getData(); + + RecognizeTrainTicketResp resp = new RecognizeTrainTicketResp(); + resp.setPrice(responseBodyData.getPrice()); + resp.setDestination(responseBodyData.getDestination()); + resp.setDepartureStation(responseBodyData.getDepartureStation()); + resp.setDate(responseBodyData.getDate()); + resp.setNumber(responseBodyData.getNumber()); + resp.setSeat(responseBodyData.getSeat()); + resp.setName(responseBodyData.getName()); + resp.setLevel(responseBodyData.getLevel()); + return R.ok().setData(resp); + } + return R.error(); + } +} diff --git a/api-web/api-interface/src/main/java/com/heyu/api/controller/certificate/qrcode/RecognizeQrCodeController.java b/api-web/api-interface/src/main/java/com/heyu/api/controller/certificate/qrcode/RecognizeQrCodeController.java new file mode 100644 index 0000000..6bac28d --- /dev/null +++ b/api-web/api-interface/src/main/java/com/heyu/api/controller/certificate/qrcode/RecognizeQrCodeController.java @@ -0,0 +1,67 @@ +package com.heyu.api.controller.certificate.qrcode; + + +import com.aliyun.ocr20191230.models.RecognizeQrCodeResponse; +import com.aliyun.ocr20191230.models.RecognizeQrCodeResponseBody; +import com.heyu.api.alibaba.handle.common.text.ARecognizeQrCodeHandle; +import com.heyu.api.alibaba.request.common.text.ARecognizeQrCodeRequest; +import com.heyu.api.controller.BaseController; +import com.heyu.api.controller.resp.qrcode.RecognizeQrCodeResp; +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.apache.commons.collections.CollectionUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.autoconfigure.data.mongo.ReactiveStreamsMongoClientDependsOnBeanFactoryPostProcessor; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; + +/*** + * https://next.api.aliyun.com/api/ocr/2019-12-30/RecognizeQrCode?tab=DEMO&lang=JAVA + * + * + * 二维码识别 + * + * RecognizeQrCode + */ +@Slf4j +@RestController +@RequestMapping("/qrcode") + +@NotIntercept +public class RecognizeQrCodeController extends BaseController { + @Autowired + private ARecognizeQrCodeHandle arecognizeQrCodeHandle; + + @RequestMapping("/recognize") + @CacheResult + public R recognize(ARecognizeQrCodeRequest request) { + RecognizeQrCodeResp resp = new RecognizeQrCodeResp(); + ApiR aR = arecognizeQrCodeHandle.handle(request); + + if (aR.isSuccess() && isSuccessStatusCode(aR.getData().getStatusCode())) { + RecognizeQrCodeResponse response = aR.getData(); + RecognizeQrCodeResponseBody responseBody = response.getBody(); + RecognizeQrCodeResponseBody.RecognizeQrCodeResponseBodyData responseBodyData = responseBody.getData(); + List responseBodyDataElements = responseBodyData.getElements(); + if (CollectionUtils.isNotEmpty(responseBodyDataElements)) { + RecognizeQrCodeResponseBody.RecognizeQrCodeResponseBodyDataElements responseBodyDataElements1 = responseBodyDataElements.get(0); + + List results = responseBodyDataElements1.getResults(); + RecognizeQrCodeResponseBody.RecognizeQrCodeResponseBodyDataElementsResults responseBodyDataElementsResults = results.get(0); + resp.setQrCodesData(responseBodyDataElementsResults.getQrCodesData()); + resp.setRate(responseBodyDataElementsResults.getRate()); + resp.setSuggestion(responseBodyDataElementsResults.getSuggestion()); + resp.setLabel(responseBodyDataElementsResults.getLabel()); + return R.ok().setData(resp); + } + } + return R.error(); + } +} diff --git a/api-web/api-interface/src/main/java/com/heyu/api/controller/resp/car/RecognizeTaxiInvoiceResp.java b/api-web/api-interface/src/main/java/com/heyu/api/controller/resp/car/RecognizeTaxiInvoiceResp.java new file mode 100644 index 0000000..b6a2aee --- /dev/null +++ b/api-web/api-interface/src/main/java/com/heyu/api/controller/resp/car/RecognizeTaxiInvoiceResp.java @@ -0,0 +1,4 @@ +package com.heyu.api.controller.resp.car; + +public class RecognizeTaxiInvoiceResp { +} diff --git a/api-web/api-interface/src/main/java/com/heyu/api/controller/resp/car/RecognizeTrainTicketResp.java b/api-web/api-interface/src/main/java/com/heyu/api/controller/resp/car/RecognizeTrainTicketResp.java new file mode 100644 index 0000000..6f2d28a --- /dev/null +++ b/api-web/api-interface/src/main/java/com/heyu/api/controller/resp/car/RecognizeTrainTicketResp.java @@ -0,0 +1,86 @@ +package com.heyu.api.controller.resp.car; + + +import com.aliyun.tea.NameInMap; +import com.heyu.api.data.dto.BaseResp; +import lombok.Data; + +/*** + * + * + * https://next.api.aliyun.com/api/ocr/2019-12-30/RecognizeTrainTicket?useCommon=true + * 火车票识别 + * + * RecognizeTrainTicket + * + * + */ +@Data +public class RecognizeTrainTicketResp extends BaseResp { + + + /** + * 乘车日期时间。 + * + * 示例值: + * 2017年08月05日22:09开 + */ + public String date; + + /*** + * 始发站点。 + * + * 示例值: + * 苏州站 + */ + public String departureStation; + + /*** + * 目的站点。 + * + * 示例值: + * 南京南站 + */ + public String destination; + + /** + * 座位席别。 + * + * 示例值: + * 二等座 + */ + public String level; + + /** + * 乘车人姓名。 + * + * 示例值: + * 帅帅 + */ + public String name; + + /** + * 车次号。 + * + * 示例值: + * G7350 + */ + public String number; + + /*** + * 票价。 + * + * 示例值: + * 104.5 + */ + public Float price; + + /*** + * 座位车厢及座次号。 + * + * 示例值: + * 04车13A号 + */ + public String seat; + +} diff --git a/api-web/api-interface/src/main/java/com/heyu/api/controller/resp/qrcode/RecognizeQrCodeResp.java b/api-web/api-interface/src/main/java/com/heyu/api/controller/resp/qrcode/RecognizeQrCodeResp.java new file mode 100644 index 0000000..4b1870b --- /dev/null +++ b/api-web/api-interface/src/main/java/com/heyu/api/controller/resp/qrcode/RecognizeQrCodeResp.java @@ -0,0 +1,73 @@ +package com.heyu.api.controller.resp.qrcode; + + +import lombok.Data; + +import java.util.List; + +/*** + * https://next.api.aliyun.com/api/ocr/2019-12-30/RecognizeQrCode?tab=DOC&lang=JAVA + * + * 二维码识别 + * + * RecognizeQrCode + * + * 二维码识别能力可以识别图像中是否含有二维码信息,输出图像中二维码包含的文本信息(每个二维码对应的 URL 或文本),可支持图像中含有多个二维码识别。 + * + * + */ +@Data +public class RecognizeQrCodeResp { + + + /*** + * 建议您执行的操作,取值包括: + * + * pass:图片正常,无需进行其余操作。 + * + * review:检测结果不确定,需要进行人工审核。 + * + * block:图片违规,建议执行进一步操作(如直接删除或做限制处理)。 + * + * 示例值: + * review + */ + private String suggestion; + + + /*** + * 图片中含有二维码时,返回图片中二维码包含的文本信息(每个二维码对应的 URL 或者文本)。 + * + * 说明 不是所有的二维码图片都能识别返回出对应的 URL 或文本。 + * 当 Suggestion 为review时说明识别到的二维码不含对应的 URL 或文本信息,QrCodesData 不会透出对应信息。 + * 当 Suggestion 为block时会携带识别到的对应二维码的 URL 或文本信息进行透出。 + * 示例值: + * https://yqh.aliyun.com/live/detail/23798 + */ + private List qrCodesData; + + + /*** + * 检测结果的分类,取值包括: + * + * normal:正常图片。 + * + * qrcode:含二维码的图片。 + * + * programCode:含小程序码的图片。 + * + * 说明 默认不识别小程序码。如果需要识别,请通过钉钉群(23109592)联系我们。 + * 示例值: + * qrcode + */ + private String label; + + /*** + * 结果为该分类的概率,取值范围为[0.00-100.00]。值越高,表示属于该分类的概率越大。 + * + * 示例值: + * 99.91 + */ + private Float rate; + +}