From 7356d6806ebfda662ed961b63b0acf48ba2c3b9e Mon Sep 17 00:00:00 2001 From: wucongxing8150 <815046773@qq.com> Date: Mon, 30 Jun 2025 17:35:59 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E4=BA=86=E8=BA=AB=E4=BB=BD?= =?UTF-8?q?=E8=AF=81=E8=AF=86=E5=88=AB=EF=BC=8C=E5=8E=BB=E9=99=A4=E4=BA=86?= =?UTF-8?q?=E5=8F=8D=E9=9D=A2114444?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lab1024/sa/admin/extend/baidubce/Ocr.java | 18 +++++++++++++++ .../app/file/controller/ImageController.java | 22 +++++++++++++++++++ .../file/domain/form/GetIdCardOcrForm.java | 13 +++++++++++ .../app/file/domain/vo/GetImageOcrVo.java | 14 ++++++++++++ 4 files changed, 67 insertions(+) create mode 100644 sa-admin/src/main/java/net/lab1024/sa/admin/module/app/file/domain/form/GetIdCardOcrForm.java create mode 100644 sa-admin/src/main/java/net/lab1024/sa/admin/module/app/file/domain/vo/GetImageOcrVo.java diff --git a/sa-admin/src/main/java/net/lab1024/sa/admin/extend/baidubce/Ocr.java b/sa-admin/src/main/java/net/lab1024/sa/admin/extend/baidubce/Ocr.java index 519edd0..9a4e48e 100644 --- a/sa-admin/src/main/java/net/lab1024/sa/admin/extend/baidubce/Ocr.java +++ b/sa-admin/src/main/java/net/lab1024/sa/admin/extend/baidubce/Ocr.java @@ -27,4 +27,22 @@ public class Ocr extends Base { throw new BusinessException("OCR识别失败: " + e.getMessage()); } } + + /** + * 文字识别 + */ + public JSONObject image(byte[] imageBytes) { + try { + HashMap options = new HashMap<>(); + options.put("language_type", "CHN_ENG"); + options.put("detect_direction", "true"); + options.put("detect_language", "true"); + options.put("probability", "true"); + + return ocrClient.basicGeneral(imageBytes, options); + + } catch (Exception e) { + throw new BusinessException("OCR识别失败: " + e.getMessage()); + } + } } diff --git a/sa-admin/src/main/java/net/lab1024/sa/admin/module/app/file/controller/ImageController.java b/sa-admin/src/main/java/net/lab1024/sa/admin/module/app/file/controller/ImageController.java index 5a121c8..e337aef 100644 --- a/sa-admin/src/main/java/net/lab1024/sa/admin/module/app/file/controller/ImageController.java +++ b/sa-admin/src/main/java/net/lab1024/sa/admin/module/app/file/controller/ImageController.java @@ -32,6 +32,28 @@ public class ImageController { return ResponseDTO.userErrorParam("参数错误"); } + try { + // 解码 Base64 字符串为字节数组 + byte[] frontBytes = Base64.getDecoder().decode(form.getFrontBase64()); + + // 调用 Service + GetIdCardOcrVo result = ocrService.getIdCardOcr(frontBytes); + return ResponseDTO.app_ok(result); + + } catch (Exception e) { + return ResponseDTO.userErrorParam("识别失败:" + e.getMessage()); + } + } + + @ApiOperation(value = "通用文字识别-ocr") + @PostMapping("/ocr/image") + public ResponseDTO getImageOcr( + @RequestBody @Valid GetIdCardOcrForm form + ){ + if (form.getFrontBase64() == null || form.getFrontBase64().isEmpty()) { + return ResponseDTO.userErrorParam("参数错误"); + } + try { // 解码 Base64 字符串为字节数组 byte[] frontBytes = Base64.getDecoder().decode(form.getFrontBase64()); diff --git a/sa-admin/src/main/java/net/lab1024/sa/admin/module/app/file/domain/form/GetIdCardOcrForm.java b/sa-admin/src/main/java/net/lab1024/sa/admin/module/app/file/domain/form/GetIdCardOcrForm.java new file mode 100644 index 0000000..85d278d --- /dev/null +++ b/sa-admin/src/main/java/net/lab1024/sa/admin/module/app/file/domain/form/GetIdCardOcrForm.java @@ -0,0 +1,13 @@ +package net.lab1024.sa.admin.module.app.file.domain.form; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +@Data +public class GetIdCardOcrForm { + @ApiModelProperty("身份证正面") + @NotBlank(message = "身份证正面 不能为空") + private String frontBase64; +} diff --git a/sa-admin/src/main/java/net/lab1024/sa/admin/module/app/file/domain/vo/GetImageOcrVo.java b/sa-admin/src/main/java/net/lab1024/sa/admin/module/app/file/domain/vo/GetImageOcrVo.java new file mode 100644 index 0000000..49d3bbe --- /dev/null +++ b/sa-admin/src/main/java/net/lab1024/sa/admin/module/app/file/domain/vo/GetImageOcrVo.java @@ -0,0 +1,14 @@ +package net.lab1024.sa.admin.module.app.file.domain.vo; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class GetImageOcrVo { + @ApiModelProperty(value = "身份证姓名") + private String idCardName; + + @ApiModelProperty(value = "身份证号") + private String idCardNo; +} +