身份證識別
更新時間 2025-08-15 15:15:36
最近更新時間: 2025-08-15 15:15:36
分享文章
接口描述
針對圖片中的身份證,進行OCR檢測,返回檢測到的姓名、身份證號碼等信息。
支持識別一張圖片中有一個身份證正面或者反面的圖像,也支持識別一張圖片中有一正一反身份證圖像。
當圖片中包含兩個正面、兩個反面、三個(含)以上身份證圖像時,會選擇像素面積最大的一個身份證圖像返回識別結果。
請求方法
POST
接口要求
- 圖片格式限制:目前僅支持 jpg、jpeg、png、bmp 等常見格式
- 圖片大小限制:圖片單張大小不超過 10MB,批量請求單次不超過 5張
- 圖片尺寸限制:圖片像素尺寸應大于 32x32,小于 5000x5000
URI
/v1/aiop/api/2f3os7qq79xc/IdentityCard/ocr/v1/idcard.json
請求參數
1.請求頭header參數
| 參數 | 是否必填 | 參數類型 | 說明 | 示例 | 下級對象 |
|---|---|---|---|---|---|
| Content-Type | 是 | String | json 格式 | application/json | |
| appkey | 是 | String | 平臺應用appkey | 562b89493b1a40e1b97ea05e50dd8170 | |
| ctyun-eop-request-id | 是 | String | 用戶請求 id,由用戶構造,用戶可以通過 uuid 等方法自行生成唯一字符串,用于日志請求追蹤。 詳見文檔:Python3調用示例 |
33dfa732-b27b-464f-b15a-21ed6845afd5 | |
| eop-date | 是 | String | 請求時間,由用戶構造,形如 yyyymmddTHHMMSSZ。 詳見文檔:Python3調用示例 |
20211221T163014Z | |
| host | 是 | String | 終端節點域名,固定字段 | ai-global.ctapi.daliqc.cn | |
| Eop-Authorization | 是 | String | 由天翼云官網 accessKey 和 securityKey 經簽名后生成,參與簽名生成的字段包括天翼云官網 accessKey 、securityKey、平臺應用的appkey(非必須),用戶請求 id(非必須),請求時間,終端節點域名(非必須)以及請求體內容。 簽名邏輯詳見文檔:認證鑒權和Python3調用示例 |
2.請求體body參數
| 參數 | 是否必填 | 參數類型 | 說明 | 示例 | 下級對象 |
|---|---|---|---|---|---|
| data | 是 | List | 一張或多張圖像Base64編碼字符串構成的list。注意:圖片需要使用常規safe base64編碼方式,不包含前綴 "data:img/jpg;base64," | _9j_4AAQSkZJRg... |
請求代碼示例
Curl -X POST
"//ai-global.ctapi.daliqc.cn/v1/aiop/api/2f3os7qq79xc/IdentityCard/ocr/v1/idcard.json"
-H "Content-Type: application/json"
-H "ctyun-eop-request-id:33dfa732-b27b-464f-b15a-21ed6845afd5"
-H "appkey:XXX"
-H "Eop-Authorization:XXX"
-H "eop-date:20211109T104641Z"
-H "host:ai-global.ctapi.daliqc.cn"
--data '{"data":["_9j_4AAQSkZJRg..."]}'
返回值說明
1.請求成功返回響應參數
| 參數 | 是否必填 | 參數類型 | 說明 | 示例 | 下級對象 |
|---|---|---|---|---|---|
| statusCode | 是 | Int | 請求響應狀態碼,返回 0 表示成功,返回錯誤代碼參考下面的錯誤代碼列表 | 0 | |
| message | 是 | Object | 請求信息結構體,message["success"]代表請求list中的成功數量,message["fail"]代表請求list中的失敗數量 | message | |
| returnObj | 是 | List | 識別的結果,按照列表形式排列,每個元素為圖片對應的鑒定結果鍵值對,元素排序按照傳入順序排列,元素中包括身份證正反面信息,以及姓名、性別、身份證號碼等信息 | returnObj |
表message
| 參數 | 是否必填 | 參數類型 | 說明 | 示例 | 下級對象 |
|---|---|---|---|---|---|
| success | 否 | Int | 成功標識 | 1 | |
| fail | 否 | Int | 錯誤標識 | 0 |
表returnObj
| 參數 | 是否必填 | 參數類型 | 說明 | 示例 | 下級對象 |
|---|---|---|---|---|---|
| note | 是 | String | 身份的正面或反面信息,國徽面為正面:front,人像面為反面:back 包含人像面和國徽面:front-back |
back | |
| detail | 是 | Object | 返回結果鍵值集合,包含姓名、性別、身份證號碼等信息 | detail | |
| idcard_face | 是 | String | 此API無法截取人像面身份證的人像子圖,此字段固定為'no face' | no face | |
| demo_image | 是 | String | 無效字段(可忽略) | demo_image | |
| risk | 是 | String | 此API無法對身份證復印件進行判斷,此字段固定為'normal' | normal |
表detail
| 參數 | 是否必填 | 參數類型 | 說明 | 示例 | 下級對象 |
|---|---|---|---|---|---|
| name | 是 | String | 姓名 | 陳XX | |
| sex | 是 | String | 性別 | 男 | |
| nation | 是 | String | 民族 | 漢 | |
| birthday | 是 | String | 出生日期 | 1995XX25 | |
| idn | 是 | String | 身份證號 | 3101001995XX25XX16 | |
| addr | 是 | String | 住址 | 上海市XX區XX路1號 | |
| org | 是 | String | 簽發機關 | 上海市公安局XX分局 | |
| validperiod | 是 | String | 有效期限 | 2007.07.27-2027.07.27 |
2.請求失敗返回響應參數
| 參數 | 是否必填 | 參數類型 | 說明 | 示例 | 下級對象 |
|---|---|---|---|---|---|
| statusCode | 是 | Int | 錯誤碼,放置API對應的錯誤碼 | 4004 | |
| message | 是 | String/Object | 請求失敗時返回值為'error'或{'success':0,'fail':1} | error | message |
| details | 否 | String | 返回對應的錯誤描述 | data字段圖片數據不是list格式 | |
| returnObj | 否 | List | 返回對應的錯誤編碼和錯誤信息 | returnObj | |
| error | 是 | String | 返回對應的錯誤碼 | AI_OP_4004 |
表returnObj
| 參數 | 是否必填 | 參數類型 | 說明 | 示例 | 下級對象 |
|---|---|---|---|---|---|
| err_code | 是 | Int | 錯誤碼 | 4008 | |
| err_msg | 是 | String | 錯誤信息 | base64數據處理異常 |
返回值示例
1.請求成功返回值示例
{
"statusCode": 0,
"message": {"success" : 1, "fail" : 0},
"returnObj": [{
"note": "front",
"detail": {
"name": "",
"sex": "",
"nation": "",
"birthday": "",
"idn": "",
"addr": "",
"org": "蘭州市公安局城關分局",
"validperiod": "2007.07.27-2027.07.27"
},
"idcard_face": "no face",
"demo_image": "demo_image",
"risk": "normal"
}]
}
2.請求失敗返回值示例
示例1:
{
"statusCode": 4004,
"message": "error",
"details": "data字段圖片數據不是list格式",
"error":"AI_OP_4004"
}
示例2:處理失敗返回值示例
{
'statusCode': 0,
'message': {'success': 0, 'fail': 1},
'returnObj': [{'err_code': 4008, 'err_msg': 'base64數據處理異常'}]
}
狀態碼
| http狀態碼 | 描述 |
|---|---|
| 200 | 表示請求成功。 |
錯誤碼說明
4 位錯誤碼。4 開頭為業務錯誤碼,5 開頭為服務錯誤碼。全局請求返回錯誤碼請參考章節API概覽>狀態碼
| 錯誤碼 | 錯誤信息 | 錯誤描述 |
|---|---|---|
| AI_OP_4002 | body傳入的不是字典 | body傳入的不是字典 |
| AI_OP_4003 | 請求中未包data字段 | 請求中未包data字段 |
| AI_OP_4004 | data字段圖片數據不是list格式 | data字段圖片數據不是list格式 |
| AI_OP_4005 | 圖片list內圖片數量為0 | 圖片list內圖片數量為0 |
| AI_OP_4006 | 圖片list內圖片數量超過50張 | 圖片list內圖片數量超過50張 |
| AI_OP_4008 | base64數據處理異常 | base64數據處理異常 |
| AI_OP_4009 | 請求文件格式不合法,僅支持 jpeg/png/jpg/bmp 格式 | 請求文件格式不合法,僅支持 jpeg/png/jpg/bmp 格式 |
| AI_OP_4010 | 單張圖片大小超過10M | 單張圖片大小超過10M |
| AI_OP_4011 | 圖片尺寸不符合要求,分辨率長寬尺寸應小于5000大于32 | 圖片尺寸不符合要求,分辨率長寬尺寸應小于5000大于32 |
| CTAPI_10000 | API Not Found | |
| CTAPI_0009 | 無效json的body參數 | |
| AI_OP_5000 | OCR服務接口異常,請聯系管理員 | OCR服務接口異常,請聯系管理員 |
base64 編碼規則:使用常規的 safe base64 編碼方式
- python 中推薦使用
base64.urlsafe_b64encode()函數進行編碼 - java 中推薦使用
BASE64.getUrlEncoder().encodeToString()函數進行編碼