獲取全套開發手冊和源程序,發站內信聯繫前端
OCR識別服務開發手冊java
文件版本:4.0.0數據庫
修改時間:2019-11-12apache
服務器 API基於http協議開發,任何程序均可以經過 HTTP 的調用方式來調用接口。json
使用識別服務前請確認服務器IP地址及端口號(端口號能夠根據具體狀況進行設置)。數組
http服務器 |
post網絡 |
|
urlapp |
http://222.128.10.62:8999/EtOcrWeb/servlet/PosOcrServletpost |
|
Post 數據參數 |
ocrKey |
聯繫廠商 |
ocrSecret |
聯繫廠商 |
|
filedata |
圖片文件的BASE64編碼 |
|
pid |
產品id編號 |
|
返回值 |
返回狀態碼,詳見《接口調用狀態碼》 返回OCR識別結果,格式見《OCR識別結果格式說明》 |
識別服務調用主要分爲三部分:
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();
}
返回值 |
說明 |
返回值 |
說明 |
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 |
返回的識別結果默認採用utf-8的json格式的字符串輸出
{
"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技術,用戶調用服務前請確保您的設備能夠連通識別服務器,並保證必定的帶寬,不然會致使識別服務的圖像數據網絡傳輸較慢,會引起超時或者請求失敗。