Ver Fonte

ocr识别图片

523096025 há 2 anos atrás
pai
commit
1f5b4eae83

+ 2 - 8
admin/src/main/java/com/huimv/farm/damsubsidy/config/JWTInterceptor.java

@@ -13,13 +13,7 @@ import javax.servlet.http.HttpServletResponse;
 import java.util.HashMap;
 import java.util.Map;
 
-/**
- * <p>
- * jwt拦截器
- * </p>
- *
- * @since 2021/4/19
- */
+
 public class JWTInterceptor implements HandlerInterceptor {
 
 
@@ -79,4 +73,4 @@ public class JWTInterceptor implements HandlerInterceptor {
     public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
 
     }
-}
+}

+ 71 - 7
admin/src/main/java/com/huimv/farm/damsubsidy/controller/ImagesTest.java

@@ -9,8 +9,12 @@ import cn.hutool.poi.excel.ExcelUtil;
 import com.huimv.farm.damsubsidy.common.annotate.DictTranslate;
 import com.huimv.farm.damsubsidy.common.utils.PovertyUtils;
 import com.huimv.farm.damsubsidy.common.utils.Result;
+import com.huimv.farm.damsubsidy.common.utils.ResultCode;
 import com.huimv.farm.damsubsidy.common.utils.UploadImage;
 import com.huimv.farm.damsubsidy.entity.PovertyUserRegist;
+import com.huimv.farm.damsubsidy.entity.vo.BankResultVo;
+import com.huimv.farm.damsubsidy.entity.vo.BankVo;
+import com.huimv.farm.damsubsidy.entity.vo.IDCardIfo;
 import com.huimv.farm.damsubsidy.entity.vo.IDCardVo;
 import okhttp3.*;
 import okhttp3.RequestBody;
@@ -29,10 +33,7 @@ import java.lang.reflect.Field;
 import java.net.URLEncoder;
 import java.nio.file.Files;
 import java.nio.file.Paths;
-import java.util.Base64;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.stream.Collectors;
 
 @CrossOrigin
@@ -112,7 +113,7 @@ public class ImagesTest {
      public Result evaluationUpdate(@RequestParam("image") MultipartFile file) throws Exception {
 
         if (ObjectUtil.isEmpty(file)){
-//            return  ;
+            return  new Result(10001,"图片识别失败",false);
         }
         BASE64Encoder encoder = new BASE64Encoder();
         String  fileStr = encoder.encode(file.getBytes());
@@ -152,14 +153,77 @@ public class ImagesTest {
             }
             return  new Result(10001,reslut,false);
         }
+        Map map  = new HashMap();
         System.out.println(idCardVo.getIdcardNumberType());
-        System.out.println(idCardVo.getWordsResult());
+        Map<String, IDCardIfo> wordsResult = idCardVo.getWordsResult();
+        System.out.println(wordsResult.toString());
+        if (ObjectUtil.isNotEmpty(wordsResult.get("住址"))){
+            map.put("addr" ,wordsResult.get("住址").getWords());
+        }
+        if (ObjectUtil.isNotEmpty(wordsResult.get("公民身份号码"))){
+            map.put("IDCARD" ,wordsResult.get("公民身份号码").getWords());
+        }
+        if (ObjectUtil.isNotEmpty(wordsResult.get("出生"))){
+            map.put("birthday" , wordsResult.get("出生").getWords());
+        }
+        if (ObjectUtil.isNotEmpty(wordsResult.get("姓名"))){
+            map.put("name" , wordsResult.get("姓名").getWords());
+        }
+        if (ObjectUtil.isNotEmpty(wordsResult.get("性别"))){
+            map.put("sex" , wordsResult.get("性别").getWords());
+        }
+        if (ObjectUtil.isNotEmpty(wordsResult.get("民族"))){
+            map.put("nation" , wordsResult.get("民族").getWords());
+        }
+        if (ObjectUtil.isNotEmpty(wordsResult.get("失效日期"))){
+            map.put("shiXiao" ,  wordsResult.get("失效日期").getWords());
+        }
+        if (ObjectUtil.isNotEmpty(wordsResult.get("签发机关"))){
+            map.put("qfjg" , wordsResult.get("签发机关").getWords());
+        }
+        if (ObjectUtil.isNotEmpty(wordsResult.get("签发日期"))){
+            map.put("qfrq" , wordsResult.get("签发日期").getWords());
+        }
 
 //        return "识别成功";
-        return  new Result(10000,idCardVo.getWordsResult().toString(),false);
+        return  new Result(ResultCode.SUCCESS,map);
     }
 
 
+    @RequestMapping("/bankcard")
+    public Result bankcard(@RequestParam("image") MultipartFile file) throws Exception {
+
+        if (ObjectUtil.isEmpty(file)){
+            return  new Result(10001,"图片识别失败",false);
+        }
+        BASE64Encoder encoder = new BASE64Encoder();
+        String  fileStr = encoder.encode(file.getBytes());
+        String image = URLEncoder.encode(fileStr, "utf-8");
+        MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded");
+        // image 可以通过 getFileContentAsBase64("C:\fakepath\039fc6cbebda8c7d48ed16b4bbf03d7.jpg") 方法获取,如果Content-Type是application/x-www-form-urlencoded时,第二个参数传true
+        okhttp3.RequestBody body = okhttp3.RequestBody.create(mediaType, "image="+image);
+
+        Request request = new Request.Builder()
+                .url("https://aip.baidubce.com/rest/2.0/ocr/v1/bankcard?access_token=" + getAccessToken())
+                .method("POST", body)
+                .addHeader("Content-Type", "application/x-www-form-urlencoded")
+                .addHeader("Accept", "application/json")
+                .build();
+        Response response = HTTP_CLIENT.newCall(request).execute();
+        String body1 = response.body().string();
+        BankVo bankVo = JSONUtil.toBean(body1, BankVo.class);
+        if (ObjectUtil.isEmpty(bankVo)){
+            return new Result(10001,"识别失败",false);
+        }
+        BankResultVo result = bankVo.getResult();
+
+        if (ObjectUtil.isEmpty(result)){
+            return new Result(10001,"识别失败",false);
+        }
+//        return "识别成功";
+        return  new Result(ResultCode.SUCCESS,result);
+    }
+
 
 
     /**

+ 7 - 0
admin/src/main/java/com/huimv/farm/damsubsidy/entity/BaseUserBank.java

@@ -4,6 +4,11 @@ import com.baomidou.mybatisplus.annotation.TableName;
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
 import java.io.Serializable;
+
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.huimv.farm.damsubsidy.common.utils.LongJsonDeserializer;
+import com.huimv.farm.damsubsidy.common.utils.LongJsonSerializer;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
@@ -45,6 +50,8 @@ public class BaseUserBank implements Serializable {
     /**
      * 用户id
      */
+    @JsonSerialize(using = LongJsonSerializer.class)
+    @JsonDeserialize(using = LongJsonDeserializer.class)
     private Long userId;
 
 

+ 6 - 0
admin/src/main/java/com/huimv/farm/damsubsidy/entity/BillIsolated.java

@@ -10,6 +10,10 @@ import java.util.Date;
 import java.io.Serializable;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.huimv.farm.damsubsidy.common.utils.LongJsonDeserializer;
+import com.huimv.farm.damsubsidy.common.utils.LongJsonSerializer;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
@@ -31,6 +35,8 @@ public class BillIsolated extends BaseEntity implements Serializable {
     private static final long serialVersionUID = 1L;
 
     @TableId(value = "id", type = IdType.ASSIGN_ID)
+    @JsonSerialize(using = LongJsonSerializer.class)
+    @JsonDeserialize(using = LongJsonDeserializer.class)
     private Long id;
 
     private String inspectionName;

+ 12 - 0
admin/src/main/java/com/huimv/farm/damsubsidy/entity/vo/BankResultVo.java

@@ -0,0 +1,12 @@
+package com.huimv.farm.damsubsidy.entity.vo;
+
+import lombok.Data;
+
+@Data
+public class BankResultVo {
+    private String bank_card_number;
+    private String valid_date;
+    private String bank_card_type;
+    private String bank_name;
+    private String holder_name;
+}

+ 10 - 0
admin/src/main/java/com/huimv/farm/damsubsidy/entity/vo/BankVo.java

@@ -0,0 +1,10 @@
+package com.huimv.farm.damsubsidy.entity.vo;
+
+import lombok.Data;
+
+@Data
+public class BankVo {
+    private Integer direction;
+    private BankResultVo result;
+
+}

+ 10 - 0
admin/src/main/java/com/huimv/farm/damsubsidy/entity/vo/IDCardIfo.java

@@ -0,0 +1,10 @@
+package com.huimv.farm.damsubsidy.entity.vo;
+
+import lombok.Data;
+
+@Data
+public class IDCardIfo {
+        private  String location;
+        private  String words;
+
+}

+ 2 - 1
admin/src/main/java/com/huimv/farm/damsubsidy/entity/vo/IDCardVo.java

@@ -7,7 +7,8 @@ import java.util.Map;
 @Data
 public class IDCardVo {
 
-        private Map wordsResult;
+        private Map<String,IDCardIfo> wordsResult;
+
         //- 1: 身份证正面所有字段全为空
         //0: 身份证证号不合法,此情况下不返回身份证证号
         //1: 身份证证号和性别、出生信息一致