身份證OCR識(shí)別API在不同開發(fā)語言中的調(diào)用(Java/python/php 示例)

在Java中,下面這段代碼展示了如何使用 Java 發(fā)送 HTTP POST 請(qǐng)求到身份證OCR識(shí)別服務(wù),以及如何處理服務(wù)的響應(yīng)。需要注意的是,其中的 HttpUtils 類和依賴項(xiàng)需要從提供的鏈接下載并引入。此外,{{AppCode}} 部分需要替換為實(shí)際的應(yīng)用程序代碼。

import com.mittang.util.HttpUtils;
import org.apache.http.HttpResponse;
import org.apache.http.util.EntityUtils;
import java.util.HashMap;
import java.util.Map;
?
public class Example {
   public static void main(String[] args) throws Exception{
       String host = "https://open.expauth.com";
       String path = "/v2/ocr/idcard/front";
       String method = "POST";
       // "{{AppCode}}" 替換成您的 AppCode
       String appcode = "{{AppCode}}";
       Map<String, String> headers = new HashMap<>();
       headers.put("X-Mce-Signature", "AppCode/" + appcode);
       headers.put("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
       Map<String, String> querys = new HashMap<>();
       Map<String, String> bodys = new HashMap<>();
       // 填充參數(shù)
       bodys.put("img", "img");
?
       try {
           /**
            * 重要提示如下:
            * HttpUtils請(qǐng)從
            * https://static.miitang.com/saas/simple/HttpUtils.java 下載
            *
            * 相應(yīng)的依賴請(qǐng)參照
            * https://static.miitang.com/saas/simple/pom.xml
            */
           HttpResponse response = HttpUtils.doPost(host, path, method, headers, querys, bodys);
           // 獲取 response 的 body
           String resStr = EntityUtils.toString(response.getEntity());
           System.out.println(resStr);
           int statusCode = response.getStatusLine().getStatusCode();
           if(statusCode == 200){
               // 請(qǐng)求成功,可根據(jù)業(yè)務(wù)碼(請(qǐng)求體中的code)進(jìn)行邏輯處理
          } else if(statusCode == 610){
               // 用戶輸入的參數(shù)問題,可直接提示用戶
          } else if(statusCode == 611){
               // 系統(tǒng)準(zhǔn)備的數(shù)據(jù)問題,如 文件數(shù)據(jù)下載失敗、數(shù)據(jù)不存在、數(shù)據(jù)重復(fù)請(qǐng)求等。 LOG it and 提示用戶
          } else if(statusCode == 612){
               // 用戶操作頻度問題,可提示用戶。 LOG it and 按業(yè)務(wù)特點(diǎn)做處理
          } else if(statusCode >= 500 && statusCode < 600){
               // 在運(yùn)行階段發(fā)生的系統(tǒng)穩(wěn)定性問題,客戶端可以重試,或者聯(lián)系我司客服
          } else {
               // 如賬戶密碼錯(cuò)誤、IP白名單問題、余額不足等,您應(yīng)該在對(duì)接過程中解決相關(guān)問題。
          }
      } catch (Exception e) {
           e.printStackTrace();
      }
  }
}

在Python中,使用 requests 庫發(fā)送 POST 請(qǐng)求到身份證OCR識(shí)別服務(wù)接口,根據(jù)響應(yīng)狀態(tài)碼進(jìn)行業(yè)務(wù)邏輯處理,包括成功、參數(shù)問題、數(shù)據(jù)問題、操作頻度問題和系統(tǒng)穩(wěn)定性問題等的處理。

import json
import requests
?
?
if __name__ == '__main__':
?
   url = "https://open.expauth.com/v2/ocr/idcard/front"
?
   payload = json.dumps({
       "img": "img"
  })
?
   headers = {
       "Content-Type": "application/json",
       # "{{AppCode}}" 替換為您的 AppCode
       "X-Mce-Signature": "AppCode/{{AppCode}}"
  }
?
   response = requests.request("POST", url, headers=headers, data=payload)
   status_code = response.status_code
   print("headers:", response.headers)
   print("http 狀態(tài)碼:", str(status_code))
   print(response.text)
   if status_code == 200:
        "請(qǐng)求成功,可根據(jù)業(yè)務(wù)碼(請(qǐng)求體中的code)進(jìn)行邏輯處理"
   elif status_code == 610 :
        "用戶輸入的參數(shù)問題,可直接提示用戶"
   elif status_code == 611 :
        "系統(tǒng)準(zhǔn)備的數(shù)據(jù)問題,如 文件數(shù)據(jù)下載失敗、數(shù)據(jù)不存在、數(shù)據(jù)重復(fù)請(qǐng)求等。 LOG it and 提示用戶"
   elif status_code == 612 :
       "用戶操作頻度問題,可提示用戶。 LOG it and 按業(yè)務(wù)特點(diǎn)做處理"
   elif status_code >= 500 & status_code < 600 :
        "在運(yùn)行階段發(fā)生的系統(tǒng)穩(wěn)定性問題,客戶端可以重試,或者聯(lián)系我司客服"
   else:
        "如賬戶密碼錯(cuò)誤、IP白名單問題、余額不足等,您應(yīng)該在對(duì)接過程中解決相關(guān)問題。"

在PHP中,使用 cURL 發(fā)送 POST 請(qǐng)求到身份證OCR識(shí)別服務(wù)接口,處理并輸出相應(yīng)的業(yè)務(wù)邏輯。它包括設(shè)置請(qǐng)求頭、發(fā)送請(qǐng)求、處理響應(yīng),根據(jù)響應(yīng)狀態(tài)碼進(jìn)行不同的業(yè)務(wù)邏輯處理,如成功、參數(shù)問題、數(shù)據(jù)問題、操作頻度問題、系統(tǒng)穩(wěn)定性問題等。

<?php
   $host = "https://open.expauth.com";
   $path = "/v2/ocr/idcard/front";
   $method = "POST";
   $appcode = "{{您的AppCode}}";
   $headers = array();
   array_push($headers, "x-mce-signature:AppCode/" . $appcode);
   //根據(jù)API的要求,定義相對(duì)應(yīng)的Content-Type
   array_push($headers, "Content-Type".":"."application/x-www-form-urlencoded; charset=UTF-8");
   $querys = "";
   $bodys = "img=img";
   $url = $host . $path;
?
   $curl = curl_init();
   curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method);
   curl_setopt($curl, CURLOPT_URL, $url);
   curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
   curl_setopt($curl, CURLOPT_FAILONERROR, false);
   curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
   curl_setopt($curl, CURLOPT_HEADER, true);
   if (1 == strpos("$".$host, "https://"))
  {
       curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
       curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
  }
   curl_setopt($curl, CURLOPT_POSTFIELDS, $bodys);
   $result = curl_exec($curl);
?
   $header_size = curl_getinfo($curl, CURLINFO_HEADER_SIZE); // 獲得響應(yīng)頭大小
   $httpCode = curl_getinfo($curl,CURLINFO_HTTP_CODE);
   $body = substr($result,$header_size);
?
   curl_close($curl);
   $retMap = json_decode($body, true);
   $code = $retMap["code"];
?
?
   echo $httpCode.PHP_EOL; // DEBUG
?
   if($httpCode == 200){
       // 請(qǐng)求成功,可根據(jù)業(yè)務(wù)碼(請(qǐng)求體中的code)進(jìn)行邏輯處理
       echo $retMap["code"].PHP_EOL;
       echo $retMap["message"].PHP_EOL;
       echo $retMap["hasFees"].PHP_EOL;
       echo $retMap["fees"].PHP_EOL;
       if($code == "FP00000"){
           // SUCCESS
           echo "SUCCESS";
      }
       else{
           // FAILURE
           echo "FAILURE";
      }
  } else {
       echo $code.PHP_EOL; // DEBUG
?
       if($httpCode == 610){
           // 用戶輸入的參數(shù)問題,可直接提示用戶
           $errors = $retMap["errors"];
           $errorMap = null;
           foreach($errors as $key=>$value){
               foreach($value as $key2=>$value2){
                 $errorMap[$key] = $value2;
                 break;
              }
          }
           // 轉(zhuǎn)化為 key:tip
           echo($errorMap["idCardNo"].PHP_EOL);
           echo($errorMap["name"].PHP_EOL);
      } else if($httpCode == 611){
           // 系統(tǒng)準(zhǔn)備的數(shù)據(jù)問題,如 文件數(shù)據(jù)下載失敗、數(shù)據(jù)不存在、數(shù)據(jù)重復(fù)請(qǐng)求等。 LOG it and 提示用戶
           echo "修訂數(shù)據(jù)狀態(tài),不要重復(fù)操作。".PHP_EOL;
      } else if($httpCode == 612){
           // 用戶操作頻度問題,可提示用戶。 LOG it and 按業(yè)務(wù)特點(diǎn)做處理
           echo $retMap["message"].PHP_EOL;
      } else if($httpCode >= 500 && $httpCode < 600){
           // 在運(yùn)行階段發(fā)生的系統(tǒng)穩(wěn)定性問題,客戶端可以重試,或者聯(lián)系我司客服
           // TODO: retry
           echo "RETRY".PHP_EOL;
      } else {
           // 如賬戶密碼錯(cuò)誤、IP白名單問題、余額不足等,您應(yīng)該在對(duì)接過程中解決相關(guān)問題。
           var_dump($retMap);
      }
  }
?>;

總結(jié)

未來,身份證OCR識(shí)別API有望在多個(gè)領(lǐng)域取得突破,包括金融、醫(yī)療、政府服務(wù)等。其快速、準(zhǔn)確地識(shí)別身份信息的能力將為各行業(yè)帶來便利,推動(dòng)數(shù)字化服務(wù)的普及和提升用戶體驗(yàn)。同時(shí),隨著對(duì)隱私和安全性的關(guān)注不斷升級(jí),身份認(rèn)證OCR API也將在不斷加強(qiáng)數(shù)據(jù)保護(hù)和隱私控制方面取得創(chuàng)新,以滿足不斷演進(jìn)的用戶需求。

了解更多OCR相關(guān)API

營業(yè)執(zhí)照OCR識(shí)別

銀行卡OCR識(shí)別

開戶許可證識(shí)別

上一篇:

視頻實(shí)名認(rèn)證API在Java、Python、PHP中的使用教程

下一篇:

增值稅發(fā)票核驗(yàn)API在Java、Python、PHP中的使用教程
#你可能也喜歡這些API文章!

我們有何不同?

API服務(wù)商零注冊(cè)

多API并行試用

數(shù)據(jù)驅(qū)動(dòng)選型,提升決策效率

查看全部API→
??

熱門場景實(shí)測,選對(duì)API

#AI文本生成大模型API

對(duì)比大模型API的內(nèi)容創(chuàng)意新穎性、情感共鳴力、商業(yè)轉(zhuǎn)化潛力

25個(gè)渠道
一鍵對(duì)比試用API 限時(shí)免費(fèi)

#AI深度推理大模型API

對(duì)比大模型API的邏輯推理準(zhǔn)確性、分析深度、可視化建議合理性

10個(gè)渠道
一鍵對(duì)比試用API 限時(shí)免費(fèi)