OCR识别服务开发手册
获取全套开发手册和源程序,发站内信联系
OCR识别服务开发手册
文件版本:4.0.0
修改时间:2019-11-12
第一章 接口说明
1.1. OCR识别接口说明
服务器 API基于http协议开发,任何程序都可以通过 HTTP 的调用方式来调用接口。
使用识别服务前请确认服务器IP地址及端口号(端口号可以根据具体情况进行设置)。
1.1.1. 证件OCR识别服务API
http |
post |
|
url |
http://222.128.10.62:8999/EtOcrWeb/servlet/PosOcrServlet |
|
Post 数据参数 |
ocrKey |
联系厂商 |
ocrSecret |
联系厂商 |
|
filedata |
图片文件的BASE64编码 |
|
pid |
产品id编号 |
|
返回值 |
返回状态码,详见《接口调用状态码》 返回OCR识别结果,格式见《OCR识别结果格式说明》 |
1.2. 识别接口调用示例
识别服务调用主要分为三部分:
1)将客户端文件读成二进制流,转换成base64编码
2)调用http识别服务API获取卡片信息
3)对识别结果进行处理(写入数据库,或者前端浏览等)
调用实例代码如下:
import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import com.sun.org.apache.xml.internal.security.utils.Base64;
public class OcrInvoiceTest {
private static final String strUrl =
“http://222.128.10.62:8999/EtOcrWeb/servlet/PosOcrServlet”;
public static void main(String[] args) {
String strFilep = “/mnt/hgfs/LinuxTestPic/21/002003.jpg”;
String strpid = “2”//pid
File file = new File(strFilep);
FileInputStream is;
try {
is = new FileInputStream(file);
byte[] data = new byte[is.available()];
is.read(data);
String base64file = Base64.encode(data);
String params = “filedata=”+ URLEncoder.encode(base64file, “utf-8”);
params+=”&pid=”+URLEncoder.encode(strpid, “utf-8”);
params+=”&ocrKey=”+ URLEncoder.encode(“594bd72adde5019f9042ff2a3f3935258a”, “utf-8”); params+=”&ocrSecret=”+
URLEncoder.encode(“a458a3281b896e9c5413f5fded03278b”, “utf-8”);
String readByGet = readByPOST(strUrl, params);
System.out.println(readByGet);
} catch (IOException e) {
e.printStackTrace();
}
}
private static String readByPOST(String inUrl, String params)throws IOException {
StringBuffer sbf = new StringBuffer();
String strRead = null;
URL url = new URL(inUrl);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestProperty(“Content-Type”, “application/x-www-form-urlencoded”);
connection.setRequestMethod(“POST”);
connection.setDoInput(true);
connection.setDoOutput(true);
connection.connect();
PrintWriter out = new PrintWriter(connection.getOutputStream());
out.print(params);
out.flush();
InputStream is = connection.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(is,”UTF-8″));
while ((strRead = reader.readLine()) != null) {
sbf.append(strRead);
sbf.append(“\r\n”);
}
reader.close();
connection.disconnect();
return sbf.toString();
}
1.3. http接口调用状态码
返回值 |
说明 |
返回值 |
说明 |
0 |
识别成功 |
16 |
不支持的图像格式 |
19 |
识别失败:拒识 |
3 |
图像分类失败 |
产品id定义表
产品名称 |
Pid |
产品名称 |
Pid |
二代证 |
2 |
机动车发票 |
61 |
银行卡 |
4 |
营业执照 |
41 |
行驶证 |
5 |
出生证明 |
52 |
车牌 |
6 |
军官证 |
11 |
驾驶证 |
7 |
火车票 |
66 |
护照 |
8 |
条码 |
69 |
MRZ |
10 |
外国人永久居留证 |
53 |
VIN |
1 |
工牌 |
101 |
增值税发票 |
21 |
财务票据 |
22 |
产品分类 |
23 |
机动车登记证 |
62 |
机动车合格证 |
68 |
通用印刷体 |
1001 |
往来港澳通行证正面 |
1013 |
往来港澳通行证背面 |
1014 |
港澳台居民往来大陆通行证 |
1018 |
户口本户主页 |
1002 |
户口本个人页 |
1003 |
结婚证 |
1004 |
离婚证 |
1005 |
北京社保卡 |
1016 |
广东居住证 |
1019 |
临时身份证 |
1020 |
深圳居住证 |
1021 |
电子承兑汇票 |
1031 |
北京医疗发票 |
1017 |
开户许可证 |
1015 |
税务登记证正本 |
1012 |
税务登记证副本 |
1022 |
统一社会信用代码证书 |
1023 |
事业单位法人证书正本 |
1024 |
事业单位法人证书副本 |
1025 |
组织机构代码证 |
1026 |
社会团体法人证书正本 |
1027 |
社会团体法人证书副本 |
1028 |
不动产权证 |
1006 |
不动产登记证 |
1007 |
北京房产证 |
1008 |
上海房产证 |
1009 |
广东房产证 |
1010 |
深圳土地证 |
1011 |
定额发票 |
84 |
火车票 |
66 |
增值税发票卷票 |
81 |
过路费 |
89 |
船运发票 |
86 |
出租车票 |
83 |
电子客票行程单 |
82 |
汽车客运发票 |
87 |
通用机打发票 |
85 |
其他发票 |
88 |
二手车发票 |
60 |
长春社保卡 |
1032 |
全国各省市房产证 |
1033 |
通用手写 |
1034 |
产品名称 |
Pid |
产品名称 |
Pid |
二代证 |
2 |
行驶证 |
5 |
1.3.1. OCR识别结果格式说明
返回的识别结果默认采用utf-8的json格式的字符串输出
1.3.2. 二代证内容及说明
{
“ErrorCode”: 0,
“Time”: “719”,
“ResultList”: [{
“pid”: 2,
“type”: “身份证人像页”,
“position”: {
“left”: 105,
“top”: 91,
“width”: 430,
“height”: 278
},
“direct”: 0,
“angle”: 0,
“image_data”: “”,
“head_image_data”: “”,
“ocr_error_code”: 0,
“FieldList”: [{
“key”: “IDNum”,
“chn_key”: “身份证号码”,
“value”: “440711198410xxxxxx”,
“image_data”: “”,
“position”: {
“left”: 153,
“top”: 224,
“width”: 234,
“height”: 23
},
“quad”: [156, 227, 384, 228, 384, 244, 156, 244]
}, {
“key”: “Nation”,
“chn_key”: “民族”,
“value”: “汉”,
“image_data”: “”,
“position”: {
“left”: 128,
“top”: 76,
“width”: 67,
“height”: 22
},
“quad”: [132, 79, 192, 79, 192, 95, 131, 95]
}, {
“key”: “Name”,
“chn_key”: “姓名”,
“value”: “张三”,
“image_data”: “”,
“position”: {
“left”: 88,
“top”: 39,
“width”: 63,
“height”: 27
},
“quad”: [91, 43, 148, 42, 148, 62, 92, 63]
}, {
“key”: “Address”,
“chn_key”: “地址”,
“value”: “广东省江门市蓬江区”,
“image_data”: “”,
“position”: {
“left”: 85,
“top”: 141,
“width”: 182,
“height”: 45
},
“quad”: [88, 145, 264, 144, 264, 182, 88, 183]
}, {
“key”: “Sex”,
“chn_key”: “性别”,
“value”: “男”,
“image_data”: “”,
“position”: {
“left”: 0,
“top”: 0,
“width”: 0,
“height”: 0
},
“quad”: [88, 145, 264, 144, 264, 182, 88, 183]
}, {
“key”: “Birth”,
“chn_key”: “出生”,
“value”: “19841203”,
“image_data”: “”,
“position”: {
“left”: 0,
“top”: 0,
“width”: 0,
“height”: 0
},
“quad”: [560245776, 0, 560244016, 0, 1023, 0, 7, 0]
}]
}, {
“pid”: 3,
“type”: “身份证国徽页”,
“position”: {
“left”: 122,
“top”: 550,
“width”: 428,
“height”: 279
},
“direct”: 0,
“angle”: 0,
“image_data”: “”,
“ocr_error_code”: 0,
“FieldList”: [{
“key”: “IssueAuthority”,
“chn_key”: “签发机关”,
“value”: “江门市公安局xx分局”,
“image_data”: “”,
“position”: {
“left”: 168,
“top”: 184,
“width”: 172,
“height”: 26
},
“quad”: [171, 190, 336, 187, 337, 204, 172, 207]
}, {
“key”: “ExpiryDate”,
“chn_key”: “有效期限”,
“value”: “20150121-20350121”,
“image_data”: “”,
“position”: {
“left”: 169,
“top”: 220,
“width”: 178,
“height”: 21
},
“quad”: [172, 224, 344, 223, 344, 238, 172, 238]
}]
}]
}
通用字段
字段名称 |
值类型 |
说明 |
ErrorCode |
int |
返回值 |
Time |
String |
识别时间 |
ResultList |
array |
返回结果数组 |
type |
String |
证件类型 |
image_data |
String |
裁切后的图片base64编码 |
direct |
int |
图片方向 |
key |
String |
英文字段名称 |
chn_key |
String |
中文字段名称 |
value |
String |
对应字段识别结果 |
position |
array |
当前裁切图片或字段在图片上的位置信息 |
二代证特有字段
字段名称 |
值类型 |
说明 |
head_image_data |
String |
头像图片数据(base64) |
pid |
int |
当前身份证正反面(2表示正面,3表示反面) |
IDNum |
String |
身份证号码 |
Nation |
String |
民族 |
Name |
String |
姓名 |
Address |
String |
地址 |
Sex |
String |
性别 |
Birth |
String |
出生日期 |
IssueAuthority |
String |
签发机关 |
ExpiryDate |
String |
有效期限 |
quad |
array |
每个字段的坐标信息 |
”
第二章 其他注意事项
4.1网络需求
识别服务基于http技术,用户调用服务前请确保您的设备可以连通识别服务器,并保证一定的带宽,否则会导致识别服务的图像数据网络传输较慢,会引发超时或者请求失败。