diff --git a/OCRTool/.idea/workspace.xml b/OCRTool/.idea/workspace.xml index 5812d76..b3975c7 100644 --- a/OCRTool/.idea/workspace.xml +++ b/OCRTool/.idea/workspace.xml @@ -13,11 +13,19 @@ + + + + + + + + @@ -206,16 +224,26 @@ file://$PROJECT_DIR$/src/main/java/com/bonus/core/OCRRecognition.java - 29 + 33 + + file://$PROJECT_DIR$/src/main/java/com/bonus/core/MySpringBootApplication.java + 47 + file://$PROJECT_DIR$/src/main/java/com/bonus/core/OCRRecognition.java - 109 - + + + + + diff --git a/OCRTool/pom.xml b/OCRTool/pom.xml index c17a142..aa61e0d 100644 --- a/OCRTool/pom.xml +++ b/OCRTool/pom.xml @@ -40,6 +40,7 @@ gson 2.8.9 + diff --git a/OCRTool/src/main/java/com/bonus/core/IDCardInfoDTO.java b/OCRTool/src/main/java/com/bonus/core/IDCardInfoDTO.java new file mode 100644 index 0000000..881ab99 --- /dev/null +++ b/OCRTool/src/main/java/com/bonus/core/IDCardInfoDTO.java @@ -0,0 +1,99 @@ +package com.bonus.core; + +public class IDCardInfoDTO { + private int code = 2000; + private String msg = "身份证信息提取完整"; + private Data data; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public String getMsg() { + return msg; + } + + public void setMsg(String msg) { + this.msg = msg; + } + + public class Data { + private String issuingAuthority = ""; + private String validTime = ""; + private String name = ""; + private String gender = ""; + private String ethnicity = ""; + private String dateOfBirth = ""; + private String address = ""; + private String idNumber = ""; + + public String getIssuingAuthority() { + return issuingAuthority; + } + + public void setIssuingAuthority(String issuingAuthority) { + this.issuingAuthority = issuingAuthority; + } + + public String getValidTime() { + return validTime; + } + + public void setValidTime(String validTime) { + this.validTime = validTime; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getGender() { + return gender; + } + + public void setGender(String gender) { + this.gender = gender; + } + + public String getEthnicity() { + return ethnicity; + } + + public void setEthnicity(String ethnicity) { + this.ethnicity = ethnicity; + } + + public String getDateOfBirth() { + return dateOfBirth; + } + + public void setDateOfBirth(String dateOfBirth) { + this.dateOfBirth = dateOfBirth; + } + + public String getAddress() { + return address; + } + + public void setAddress(String address) { + this.address = address; + } + + public String getIdNumber() { + return idNumber; + } + + public void setIdNumber(String idNumber) { + this.idNumber = idNumber; + } + } + +} \ No newline at end of file diff --git a/OCRTool/src/main/java/com/bonus/core/MySpringBootApplication.java b/OCRTool/src/main/java/com/bonus/core/MySpringBootApplication.java index a043354..c767200 100644 --- a/OCRTool/src/main/java/com/bonus/core/MySpringBootApplication.java +++ b/OCRTool/src/main/java/com/bonus/core/MySpringBootApplication.java @@ -23,7 +23,7 @@ public class MySpringBootApplication { // String filePath1 = "/Users/wangvivi/Desktop/Code/ocrtest/images/1.jpg"; // String filePath2 = "/Users/wangvivi/Desktop/Code/ocrtest/images/2.jpg"; // app.callExtractIdentityInfoByLocalPath(filePath1,filePath2); -// app.callExtractIdentityInfoByBase64Data(filePath1, filePath2); +// app.callExtractIdentityInfoByLocalPath1(filePath1, ""); } private static ApplicationContext context; @@ -38,6 +38,17 @@ public class MySpringBootApplication { logger.info(javaString); } + public void callExtractIdentityInfoByLocalPath1(String filePath1, String filePath2 ) { + OCRRecognition myComponent = context.getBean(OCRRecognition.class); + IdentifyRecognitionParams params = new IdentifyRecognitionParams(); + params.setType(IdentifyRecognitionParams.RecognitionType.IDENTITY_CARD_PATH); + params.setRecognitionFrontData(filePath1); + params.setRecognitionBackData(filePath2); + IDCardInfoDTO javaString = myComponent.extractIDInfo(params); + logger.info("身份证信息是:"); + } + + public String callExtractIdentityInfoByBase64Data(String file1Data, String file2Data ) { OCRRecognition myComponent = context.getBean(OCRRecognition.class); diff --git a/OCRTool/src/main/java/com/bonus/core/OCRRecognition.java b/OCRTool/src/main/java/com/bonus/core/OCRRecognition.java index 193dff4..e6341fa 100644 --- a/OCRTool/src/main/java/com/bonus/core/OCRRecognition.java +++ b/OCRTool/src/main/java/com/bonus/core/OCRRecognition.java @@ -1,4 +1,5 @@ package com.bonus.core; +import com.google.gson.Gson; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; @@ -26,6 +27,9 @@ public class OCRRecognition { private static final String BASE64_PATTERN = "^[A-Za-z0-9+/]+={0,2}$"; + /** + *根据传入的身份证的正反面进行识别和解析,返回身份证的8个字段信息的json字符串 + */ public String extractInfo(IdentifyRecognitionParams recognitionParams){ Process proc; List stringList = new ArrayList<>(); @@ -99,6 +103,16 @@ public class OCRRecognition { return lastElement; } + /** + *据传入的身份证的正反面进行识别和解析,返回身份证的IDCardInfoDTO 对象,当code=2000时,身份证信息是完整 + */ + public IDCardInfoDTO extractIDInfo(IdentifyRecognitionParams recognitionParams){ + String result = extractInfo(recognitionParams); + Gson gson = new Gson(); + IDCardInfoDTO response = gson.fromJson(result, IDCardInfoDTO.class); + return response; + } + private void passParameter(OutputStream outputStream, byte[] input) throws IOException { int offset = 0; // 设置每次写入的批次大小