一、前言
一般不會泄露,但可能會存在三無APP,所以要擦亮自己的眼睛,不要亂注冊一些無用的APP,一般APP的身份證上傳,對于企業它是怎么使用的昵?下面基于程序員的角度來幫助分析一下這個問題,希望能解開你的疑惑。
二、用途
對于企業來說,拿到你的身份證,無非就是身份證OCR(文字識別)一下,就是識別出你的身份證正反面的信息,然后校驗以下幾種情況:
- 注冊身份的真實性;
- 身份證是否過期;
- 年齡是否滿足注冊條件;
- 性別校驗;
- ...
以上信息是否都校驗是基于這款產品的目的用途。一般APP基本都是拿到姓名、身份證號校驗注冊身份的真實性即可。
除上以外,會保存你的身份證照片,這個雖然保存在企業服務器上了,但是一般都是授權訪問的,如有疑問,問題排查所用。企業員工都是基于法律簽訂合同的,如果真有企業或者員工做非法的事情,那就是違犯,等待相關機關處理。
三、技術實現
一般身份證OCR實現,都是借助第三方接口實現,目前大部分都是采用百度實現。實現方式如下:
1.獲取百度身份證文字識別密鑰,登錄https://console.bce.baidu.com/ai/?fromai=1#/ai/ocr/overview/index,拿到APP_ID、API_KEY、SECRET_KEY即可。
2.maven配置
<dependencies>
<!--百度文字識別SDK-->
<dependency>
<groupId>com.baidu.aip</groupId>
<artifactId>java-sdk</artifactId>
<version>4.6.1</version>
</dependency>
</dependencies>
3.controller實現
packagecom.midou.idcardocr.controller;
importcom.baidu.aip.ocr.AipOcr;
importcom.midou.idcardocr.util.ImageUtil;
importorg.json.JSONObject;
importjava.util.HashMap;
/**
*@author米兜
*@description
*@date2020/6/288:17
*@modifiedby
*/
publicclassHelloWorld{
//申請的[https://console.bce.baidu.com/ai/?fromai=1#/ai/ocr/overview/index]
publicstaticfinalStringAPP_ID="20621426";
publicstaticfinalStringAPI_KEY="01IBzVivzwkwdQMS9B4ScdDt";
publicstaticfinalStringSECRET_KEY="RvIYakSHRgZrNnOIDXObitl2FOEQdtUo";
publicstaticvoidmain(String[]args){
AipOcrclient=newAipOcr(APP_ID,API_KEY,SECRET_KEY);
//傳入可選參數調用接口
HashMap<String,String>options=newHashMap<String,String>();
options.put("detect_direction","true");
options.put("detect_risk","false");
//身份證背面照
//StringidCardSide="back";
//身份證正面照
StringidCardSide="front";
//參數為本地圖片路徑
//Stringimage="D:\\back.jpg";
Stringimage="D:\\front.jpg";
JSONObjectres=client.idcard(image,idCardSide,options);
System.out.println(res.toString(2));
//參數為本地圖片轉二進制
byte[]file=ImageUtil.readImageFile(image);
res=client.idcard(file,idCardSide,options);
System.out.println(res.toString(2));
}
}
4.上面涉及一個本地圖片轉二進制
packagecom.midou.idcardocr.util;
importjavax.imageio.stream.FileImageInputStream;
importjava.io.ByteArrayOutputStream;
importjava.io.File;
importjava.io.FileNotFoundException;
importjava.io.IOException;
/**
*@author米兜
*@description
*@date2020/6/288:24
*@modifiedby
*/
publicclassImageUtil{
/**
*將圖像轉為二進制數組
*
*@parampath
*@return
*/
publicstaticbyte[]readImageFile(Stringpath){
byte[]data=null;
FileImageInputStreaminput=null;
try{
input=newFileImageInputStream(newFile(path));
ByteArrayOutputStreamoutput=newByteArrayOutputStream();
byte[]buf=newbyte[1024];
intnumBytesRead=0;
while((numBytesRead=input.read(buf))!=-1){
output.write(buf,0,numBytesRead);
}
data=output.toByteArray();
output.close();
input.close();
}catch(FileNotFoundExceptionex1){
ex1.printStackTrace();
}catch(IOExceptionex1){
ex1.printStackTrace();
}
returndata;
}
}
四、運行結果
[圖片來源網絡,如有爭議,聯系刪除即可]
0[main]INFOcom.baidu.aip.client.BaseClient-getaccess_tokensuccess.currentstate:STATE_AIP_AUTH_OK
2[main]DEBUGcom.baidu.aip.client.BaseClient-currentstateaftercheckpriviledge:STATE_TRUE_AIP_USER
{
"log_id":3010258785723740188,
"words_result":{
"姓名":{
"words":"欒韶東",
"location":{
"top":40,
"left":89,
"width":51,
"height":19
}
},
"民族":{
"words":"回",
"location":{
"top":76,
"left":168,
"width":12,
"height":14
}
},
"住址":{
"words":"廣東省深圳市福田區筍崗西路3002號",
"location":{
"top":140,
"left":85,
"width":166,
"height":37
}
},
"公民身份號碼":{
"words":"",
"location":{
"top":0,
"left":0,
"width":0,
"height":0
}
},
"出生":{
"words":"19680909",
"location":{
"top":107,
"left":86,
"width":131,
"height":14
}
},
"性別":{
"words":"男",
"location":{
"top":76,
"left":89,
"width":10,
"height":15
}
}
},
"words_result_num":6,
"idcard_number_type":0,
"image_status":"unknown",
"direction":0
}
{
"log_id":2919714179777122876,
"words_result":{
"姓名":{
"words":"欒韶東",
"location":{
"top":40,
"left":89,
"width":51,
"height":19
}
},
"民族":{
"words":"回",
"location":{
"top":76,
"left":168,
"width":12,
"height":14
}
},
"住址":{
"words":"廣東省深圳市福田區筍崗西路3002號",
"location":{
"top":140,
"left":85,
"width":166,
"height":37
}
},
"公民身份號碼":{
"words":"",
"location":{
"top":0,
"left":0,
"width":0,
"height":0
}
},
"出生":{
"words":"19680909",
"location":{
"top":107,
"left":86,
"width":131,
"height":14
}
},
"性別":{
"words":"男",
"location":{
"top":76,
"left":89,
"width":10,
"height":15
}
}
},
"words_result_num":6,
"idcard_number_type":0,
"image_status":"unknown",
"direction":0
}
Processfinishedwithexitcode0
五、總結
上面是基于程序員角度分析身份證信息問題,如有不對,請多多包涵。