Skip to content

Commit 48586de

Browse files
TheoNiebinarywang
authored andcommitted
#1242 公众号OCR接口补充完善
* 公众号ocr银行卡识别接口 * 公众号ocr行驶证识别接口 * 公众号ocr驾驶证识别接口 * 公众号营业执照Ocr识别接口 * 公众号通用印刷体OCR识别接口 * 去掉身份证Ocr接口中已经废弃的type参数
1 parent 67128b0 commit 48586de

File tree

11 files changed

+1071
-32
lines changed

11 files changed

+1071
-32
lines changed
Lines changed: 101 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
11
package me.chanjar.weixin.mp.api;
22

3-
import lombok.AllArgsConstructor;
4-
import lombok.Getter;
53
import me.chanjar.weixin.common.error.WxErrorException;
4+
import me.chanjar.weixin.mp.bean.ocr.WxMpOcrBankCardResult;
5+
import me.chanjar.weixin.mp.bean.ocr.WxMpOcrBizLicenseResult;
6+
import me.chanjar.weixin.mp.bean.ocr.WxMpOcrCommResult;
7+
import me.chanjar.weixin.mp.bean.ocr.WxMpOcrDrivingLicenseResult;
8+
import me.chanjar.weixin.mp.bean.ocr.WxMpOcrDrivingResult;
69
import me.chanjar.weixin.mp.bean.ocr.WxMpOcrIdCardResult;
710

811
import java.io.File;
@@ -15,36 +18,114 @@
1518
* @date 2019-06-22
1619
*/
1720
public interface WxMpOcrService {
18-
@AllArgsConstructor
19-
@Getter
20-
enum ImageType {
21-
/**
22-
* 拍照模型,带背景的图片.
23-
*/
24-
PHOTO("photo"),
25-
/**
26-
* 扫描模式,不带背景的图片.
27-
*/
28-
SCAN("scan");
29-
30-
private String type;
31-
}
3221

3322
/**
3423
* 身份证OCR识别接口.
3524
*
36-
* @param imgType 图片类型
3725
* @param imgUrl 图片url地址
26+
* @return WxMpOcrIdCardResult
3827
* @throws WxErrorException .
3928
*/
40-
WxMpOcrIdCardResult idCard(ImageType imgType, String imgUrl) throws WxErrorException;
29+
WxMpOcrIdCardResult idCard(String imgUrl) throws WxErrorException;
4130

4231
/**
4332
* 身份证OCR识别接口.
4433
*
45-
* @param imgType 图片类型
4634
* @param imgFile 图片文件对象
35+
* @return WxMpOcrIdCardResult
4736
* @throws WxErrorException .
4837
*/
49-
WxMpOcrIdCardResult idCard(ImageType imgType, File imgFile) throws WxErrorException;
38+
WxMpOcrIdCardResult idCard(File imgFile) throws WxErrorException;
39+
40+
/**
41+
* 银行卡OCR识别接口
42+
* 文件大小限制:小于2M
43+
* @param imgUrl 图片url地址
44+
* @return WxMpOcrBankCardResult
45+
* @throws WxErrorException .
46+
*/
47+
WxMpOcrBankCardResult bankCard(String imgUrl) throws WxErrorException;
48+
49+
/**
50+
* 银行卡OCR识别接口
51+
* 文件大小限制:小于2M
52+
* @param imgFile 图片文件对象
53+
* @return WxMpOcrBankCardResult
54+
* @throws WxErrorException .
55+
*/
56+
WxMpOcrBankCardResult bankCard(File imgFile) throws WxErrorException;
57+
58+
/**
59+
* 行驶证OCR识别接口
60+
* 文件大小限制:小于2M
61+
* @param imgUrl 图片url地址
62+
* @return WxMpOcrDrivingResult
63+
* @throws WxErrorException .
64+
*/
65+
WxMpOcrDrivingResult driving(String imgUrl) throws WxErrorException;
66+
67+
/**
68+
* 行驶证OCR识别接口
69+
* 文件大小限制:小于2M
70+
* @param imgFile 图片文件对象
71+
* @return WxMpOcrDrivingResult
72+
* @throws WxErrorException .
73+
*/
74+
WxMpOcrDrivingResult driving(File imgFile) throws WxErrorException;
75+
76+
/**
77+
* 驾驶证OCR识别接口
78+
* 文件大小限制:小于2M
79+
* @param imgUrl 图片url地址
80+
* @return WxMpOcrDrivingLicenseResult
81+
* @throws WxErrorException .
82+
*/
83+
WxMpOcrDrivingLicenseResult drivingLicense(String imgUrl) throws WxErrorException;
84+
85+
/**
86+
* 驾驶证OCR识别接口
87+
* 文件大小限制:小于2M
88+
* @param imgFile 图片文件对象
89+
* @return WxMpOcrDrivingLicenseResult
90+
* @throws WxErrorException .
91+
*/
92+
WxMpOcrDrivingLicenseResult drivingLicense(File imgFile) throws WxErrorException;
93+
94+
/**
95+
* 营业执照OCR识别接口
96+
* 文件大小限制:小于2M
97+
* @param imgUrl 图片url地址
98+
* @return WxMpOcrBizLicenseResult
99+
* @throws WxErrorException .
100+
*/
101+
WxMpOcrBizLicenseResult bizLicense(String imgUrl) throws WxErrorException;
102+
103+
/**
104+
* 营业执照OCR识别接口
105+
* 文件大小限制:小于2M
106+
* @param imgFile 图片文件对象
107+
* @return WxMpOcrBizLicenseResult
108+
* @throws WxErrorException .
109+
*/
110+
WxMpOcrBizLicenseResult bizLicense(File imgFile) throws WxErrorException;
111+
112+
/**
113+
* 通用印刷体OCR识别接口
114+
* 文件大小限制:小于2M
115+
* 适用于屏幕截图、印刷体照片等场景
116+
* @param imgUrl 图片url地址
117+
* @return WxMpOcrCommResult
118+
* @throws WxErrorException .
119+
*/
120+
WxMpOcrCommResult comm(String imgUrl) throws WxErrorException;
121+
122+
/**
123+
* 通用印刷体OCR识别接口
124+
* 文件大小限制:小于2M
125+
* 适用于屏幕截图、印刷体照片等场景
126+
* @param imgFile 图片文件对象
127+
* @return WxMpOcrCommResult
128+
* @throws WxErrorException .
129+
*/
130+
WxMpOcrCommResult comm(File imgFile) throws WxErrorException;
50131
}

weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpOcrServiceImpl.java

Lines changed: 114 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,11 @@
44
import me.chanjar.weixin.common.error.WxErrorException;
55
import me.chanjar.weixin.mp.api.WxMpOcrService;
66
import me.chanjar.weixin.mp.api.WxMpService;
7+
import me.chanjar.weixin.mp.bean.ocr.WxMpOcrBankCardResult;
8+
import me.chanjar.weixin.mp.bean.ocr.WxMpOcrBizLicenseResult;
9+
import me.chanjar.weixin.mp.bean.ocr.WxMpOcrCommResult;
10+
import me.chanjar.weixin.mp.bean.ocr.WxMpOcrDrivingLicenseResult;
11+
import me.chanjar.weixin.mp.bean.ocr.WxMpOcrDrivingResult;
712
import me.chanjar.weixin.mp.bean.ocr.WxMpOcrIdCardResult;
813
import me.chanjar.weixin.mp.util.requestexecuter.ocr.OcrDiscernRequestExecutor;
914

@@ -12,7 +17,17 @@
1217
import java.net.URLEncoder;
1318
import java.nio.charset.StandardCharsets;
1419

20+
import static me.chanjar.weixin.mp.enums.WxMpApiUrl.Ocr.BANK_CARD;
21+
import static me.chanjar.weixin.mp.enums.WxMpApiUrl.Ocr.BIZ_LICENSE;
22+
import static me.chanjar.weixin.mp.enums.WxMpApiUrl.Ocr.COMM;
23+
import static me.chanjar.weixin.mp.enums.WxMpApiUrl.Ocr.DRIVING;
24+
import static me.chanjar.weixin.mp.enums.WxMpApiUrl.Ocr.DRIVING_LICENSE;
1525
import static me.chanjar.weixin.mp.enums.WxMpApiUrl.Ocr.FILEIDCARD;
26+
import static me.chanjar.weixin.mp.enums.WxMpApiUrl.Ocr.FILE_BANK_CARD;
27+
import static me.chanjar.weixin.mp.enums.WxMpApiUrl.Ocr.FILE_BIZ_LICENSE;
28+
import static me.chanjar.weixin.mp.enums.WxMpApiUrl.Ocr.FILE_COMM;
29+
import static me.chanjar.weixin.mp.enums.WxMpApiUrl.Ocr.FILE_DRIVING;
30+
import static me.chanjar.weixin.mp.enums.WxMpApiUrl.Ocr.FILE_DRIVING_LICENSE;
1631
import static me.chanjar.weixin.mp.enums.WxMpApiUrl.Ocr.IDCARD;
1732

1833
/**
@@ -26,22 +41,116 @@ public class WxMpOcrServiceImpl implements WxMpOcrService {
2641
private final WxMpService wxMpService;
2742

2843
@Override
29-
public WxMpOcrIdCardResult idCard(ImageType imgType, String imgUrl) throws WxErrorException {
44+
public WxMpOcrIdCardResult idCard(String imgUrl) throws WxErrorException {
3045
try {
3146
imgUrl = URLEncoder.encode(imgUrl, StandardCharsets.UTF_8.name());
3247
} catch (UnsupportedEncodingException e) {
3348
// ignore cannot happen
3449
}
3550

3651
final String result = this.wxMpService.get(String.format(IDCARD.getUrl(this.wxMpService.getWxMpConfigStorage()),
37-
imgType.getType(), imgUrl), null);
52+
imgUrl), null);
3853
return WxMpOcrIdCardResult.fromJson(result);
3954
}
4055

4156
@Override
42-
public WxMpOcrIdCardResult idCard(ImageType imgType, File imgFile) throws WxErrorException {
43-
String result = this.wxMpService.execute(OcrDiscernRequestExecutor.create(this.wxMpService.getRequestHttp()), String.format(FILEIDCARD.getUrl(this.wxMpService.getWxMpConfigStorage()),
44-
imgType.getType()), imgFile);
57+
public WxMpOcrIdCardResult idCard(File imgFile) throws WxErrorException {
58+
String result = this.wxMpService.execute(OcrDiscernRequestExecutor.create(this.wxMpService.getRequestHttp()), FILEIDCARD.getUrl(this.wxMpService.getWxMpConfigStorage()), imgFile);
4559
return WxMpOcrIdCardResult.fromJson(result);
4660
}
61+
62+
@Override
63+
public WxMpOcrBankCardResult bankCard(String imgUrl) throws WxErrorException {
64+
try {
65+
imgUrl = URLEncoder.encode(imgUrl, StandardCharsets.UTF_8.name());
66+
} catch (UnsupportedEncodingException e) {
67+
// ignore cannot happen
68+
}
69+
70+
final String result = this.wxMpService.get(String.format(BANK_CARD.getUrl(this.wxMpService.getWxMpConfigStorage()),
71+
imgUrl), null);
72+
return WxMpOcrBankCardResult.fromJson(result);
73+
}
74+
75+
@Override
76+
public WxMpOcrBankCardResult bankCard(File imgFile) throws WxErrorException {
77+
String result = this.wxMpService.execute(OcrDiscernRequestExecutor.create(this.wxMpService.getRequestHttp()), FILE_BANK_CARD.getUrl(this.wxMpService.getWxMpConfigStorage()), imgFile);
78+
return WxMpOcrBankCardResult.fromJson(result);
79+
}
80+
81+
@Override
82+
public WxMpOcrDrivingResult driving(String imgUrl) throws WxErrorException {
83+
try {
84+
imgUrl = URLEncoder.encode(imgUrl, StandardCharsets.UTF_8.name());
85+
} catch (UnsupportedEncodingException e) {
86+
// ignore cannot happen
87+
}
88+
89+
final String result = this.wxMpService.get(String.format(DRIVING.getUrl(this.wxMpService.getWxMpConfigStorage()),
90+
imgUrl), null);
91+
return WxMpOcrDrivingResult.fromJson(result);
92+
}
93+
94+
@Override
95+
public WxMpOcrDrivingResult driving(File imgFile) throws WxErrorException {
96+
String result = this.wxMpService.execute(OcrDiscernRequestExecutor.create(this.wxMpService.getRequestHttp()), FILE_DRIVING.getUrl(this.wxMpService.getWxMpConfigStorage()), imgFile);
97+
return WxMpOcrDrivingResult.fromJson(result);
98+
}
99+
100+
@Override
101+
public WxMpOcrDrivingLicenseResult drivingLicense(String imgUrl) throws WxErrorException {
102+
try {
103+
imgUrl = URLEncoder.encode(imgUrl, StandardCharsets.UTF_8.name());
104+
} catch (UnsupportedEncodingException e) {
105+
// ignore cannot happen
106+
}
107+
108+
final String result = this.wxMpService.get(String.format(DRIVING_LICENSE.getUrl(this.wxMpService.getWxMpConfigStorage()),
109+
imgUrl), null);
110+
return WxMpOcrDrivingLicenseResult.fromJson(result);
111+
}
112+
113+
@Override
114+
public WxMpOcrDrivingLicenseResult drivingLicense(File imgFile) throws WxErrorException {
115+
String result = this.wxMpService.execute(OcrDiscernRequestExecutor.create(this.wxMpService.getRequestHttp()), FILE_DRIVING_LICENSE.getUrl(this.wxMpService.getWxMpConfigStorage()), imgFile);
116+
return WxMpOcrDrivingLicenseResult.fromJson(result);
117+
}
118+
119+
@Override
120+
public WxMpOcrBizLicenseResult bizLicense(String imgUrl) throws WxErrorException {
121+
try {
122+
imgUrl = URLEncoder.encode(imgUrl, StandardCharsets.UTF_8.name());
123+
} catch (UnsupportedEncodingException e) {
124+
// ignore cannot happen
125+
}
126+
127+
final String result = this.wxMpService.get(String.format(BIZ_LICENSE.getUrl(this.wxMpService.getWxMpConfigStorage()),
128+
imgUrl), null);
129+
return WxMpOcrBizLicenseResult.fromJson(result);
130+
}
131+
132+
@Override
133+
public WxMpOcrBizLicenseResult bizLicense(File imgFile) throws WxErrorException {
134+
String result = this.wxMpService.execute(OcrDiscernRequestExecutor.create(this.wxMpService.getRequestHttp()), FILE_BIZ_LICENSE.getUrl(this.wxMpService.getWxMpConfigStorage()), imgFile);
135+
return WxMpOcrBizLicenseResult.fromJson(result);
136+
}
137+
138+
@Override
139+
public WxMpOcrCommResult comm(String imgUrl) throws WxErrorException {
140+
try {
141+
imgUrl = URLEncoder.encode(imgUrl, StandardCharsets.UTF_8.name());
142+
} catch (UnsupportedEncodingException e) {
143+
// ignore cannot happen
144+
}
145+
146+
final String result = this.wxMpService.get(String.format(COMM.getUrl(this.wxMpService.getWxMpConfigStorage()),
147+
imgUrl), null);
148+
return WxMpOcrCommResult.fromJson(result);
149+
}
150+
151+
@Override
152+
public WxMpOcrCommResult comm(File imgFile) throws WxErrorException {
153+
String result = this.wxMpService.execute(OcrDiscernRequestExecutor.create(this.wxMpService.getRequestHttp()), FILE_COMM.getUrl(this.wxMpService.getWxMpConfigStorage()), imgFile);
154+
return WxMpOcrCommResult.fromJson(result);
155+
}
47156
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package me.chanjar.weixin.mp.bean.ocr;
2+
3+
import com.google.gson.annotations.SerializedName;
4+
import lombok.Data;
5+
import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder;
6+
7+
import java.io.Serializable;
8+
9+
/**
10+
* 银行卡OCR识别结果
11+
* @author Theo Nie
12+
*/
13+
@Data
14+
public class WxMpOcrBankCardResult implements Serializable {
15+
16+
private static final long serialVersionUID = 554136620394204143L;
17+
@SerializedName("number")
18+
private String number;
19+
20+
@Override
21+
public String toString() {
22+
return WxMpGsonBuilder.create().toJson(this);
23+
}
24+
25+
public static WxMpOcrBankCardResult fromJson(String json) {
26+
return WxMpGsonBuilder.create().fromJson(json, WxMpOcrBankCardResult.class);
27+
}
28+
}

0 commit comments

Comments
 (0)