Passport Identification
Interface description
Online debugging
Request Description
|
|
---|---|
|
|
|
|
---|---|
|
|
|
|
|
|
|
---|---|---|---|---|
|
|
|
|
|
|
|
|
|
|
curl -i -k ' https://aip.baidubce.com/rest/2.0/ocr/v1/passport?access_token= [Call the token obtained from the authentication interface] ' --data 'image=[Picture Base64 encoding, UrlEncode required]' -H 'Content-Type:application/x-www-form-urlencoded'
# encoding:utf-8
import requests import base64 ''' Passport Identification ''' request_url = " https://aip.baidubce.com/rest/2.0/ocr/v1/passport "
#Open picture file in binary mode f = open ( '[Local file]' , 'rb' ) img = base64 . b64encode ( f . read ( ) ) params = { "image" : img } access_token = '[Token obtained by calling the authentication interface]' request_url = request_url + "?access_token=" + access_token headers = { 'content-type' : 'application/x-www-form-urlencoded' } response = requests . post ( request_url , data = params , headers = headers )
if response :
print ( response . json ( ) )
package com . baidu . ai . aip ;
import com . baidu . ai . aip . utils . Base64Util ;
import com . baidu . ai . aip . utils . FileUtil ;
import com . baidu . ai . aip . utils . HttpUtil ;
import java . net . URLEncoder ;
/** *Passport Identification */
public class Passport {
/** *Tool class required in important tip code *FileUtil, Base64Util, HttpUtil, GsonUtils * https://ai.baidu.com/file/658A35ABAB2D404FBF903F64D47C1F72 * https://ai.baidu.com/file/C8D81F3301E24D2892968F09AE1AD6E2 * https://ai.baidu.com/file/544D677F5D4E4F17B4122FBD60DB82B3 * https://ai.baidu.com/file/470B3ACCA3FE43788B5A963BF0B625F3 *Download */
public static String passport ( ) {
//Request url
String url = " https://aip.baidubce.com/rest/2.0/ocr/v1/passport " ;
try {
//Local file path
String filePath = [Local file path] ;
byte [ ] imgData = FileUtil . readFileByBytes ( filePath ) ;
String imgStr = Base64Util . encode ( imgData ) ;
String imgParam = URLEncoder . encode ( imgStr , "UTF-8" ) ;
String param = "image=" + imgParam ;
//Note that the purpose here is to simplify the encoding and obtain access_token for each request. The online environment access_token has an expiration time, and the client can cache it and retrieve it after expiration.
String accessToken = "[Token obtained by calling the authentication interface]" ;
String result = HttpUtil . post ( url , accessToken , param ) ;
System . out . println ( result ) ;
return result ;
} catch ( Exception e ) { e . printStackTrace ( ) ;
}
return null ;
}
public static void main ( String [ ] args ) {
Passport . passport ( ) ;
}
}
# include <iostream>
# include <curl/curl.h>
//Download link of libcurl library: https://curl.haxx.se/download.html
//Download link of jsoncpp library: https://github.com/open-source-parsers/jsoncpp/
const static std :: string request_url = " https://aip.baidubce.com/rest/2.0/ocr/v1/passport " ;
static std :: string passport_result ;
/** *The curl sends the callback function called by the http request. The returned body in json format is parsed in the callback function, and the parsing result is stored in the global static variable *See the libcurl document for @ param parameter definitions *@ return See the libcurl document for the definition of the return value */
static size_t callback ( void * ptr , size_t size , size_t nmemb , void * stream ) {
//The obtained body is stored in ptr and converted to string format first passport_result = std :: string ( ( char * ) ptr , size * nmemb ) ;
return size * nmemb ;
}
/** *Passport Identification *@ return If the call is successful, 0 will be returned. If an error occurs, other error codes will be returned */
int passport ( std :: string & json_result , const std :: string & access_token ) { std :: string url = request_url + "?access_token=" + access_token ; CURL * curl = NULL ; CURLcode result_code ;
int is_success ; curl = curl_easy_init ( ) ;
if ( curl ) {
curl_easy_setopt ( curl , CURLOPT_URL , url . data ( ) ) ;
curl_easy_setopt ( curl , CURLOPT_POST , one ) ; curl_httppost * post = NULL ; curl_httppost * last = NULL ;
curl_formadd ( & post , & last , CURLFORM_COPYNAME , "image" , CURLFORM_COPYCONTENTS , "【base64_img】" , CURLFORM_END ) ;
curl_easy_setopt ( curl , CURLOPT_HTTPPOST , post ) ;
curl_easy_setopt ( curl , CURLOPT_WRITEFUNCTION , callback ) ; result_code = curl_easy_perform ( curl ) ;
if ( result_code != CURLE_OK ) {
fprintf ( stderr , "curl_easy_perform() failed: %s\n" ,
curl_easy_strerror ( result_code ) ) ; is_success = one ;
return is_success ;
} json_result = passport_result ;
curl_easy_cleanup ( curl ) ; is_success = zero ;
} else {
fprintf ( stderr , "curl_easy_init() failed." ) ; is_success = one ;
}
return is_success ;
}
<? php
/** *Initiate http post requests (REST APIs) and obtain the results of REST requests * @param string $url * @param string $param * @return - http response body if succeeds, else false. */
function request_post ( $url = '' , $param = '' )
{
if ( empty ( $url ) || empty ( $param ) ) {
return false ;
}
$postUrl = $url ;
$curlPost = $param ;
//Initialize curl
$curl = curl_init ( ) ;
curl_setopt ( $curl , CURLOPT_URL , $postUrl ) ;
curl_setopt ( $curl , CURLOPT_HEADER , zero ) ;
//The result is required to be a string and output to the screen
curl_setopt ( $curl , CURLOPT_RETURNTRANSFER , one ) ;
curl_setopt ( $curl , CURLOPT_SSL_VERIFYPEER , false ) ;
//Post submission method
curl_setopt ( $curl , CURLOPT_POST , one ) ;
curl_setopt ( $curl , CURLOPT_POSTFIELDS , $curlPost ) ;
//Run curl
$data = curl_exec ( $curl ) ;
curl_close ( $curl ) ;
return $data ;
}
$token = '[Token obtained by calling the authentication interface]' ;
$url = ' https://aip.baidubce.com/rest/2.0/ocr/v1/passport?access_token= ' . $token ;
$img = file_get_contents ( '[Local file path]' ) ;
$img = base64_encode ( $img ) ;
$bodys = array (
'image' = > $img
) ;
$res = request_post ( $url , $bodys ) ;
var_dump ( $res ) ;
using System ;
using System . IO ;
using System . Net ;
using System . Text ;
using System . Web ;
namespace com . baidu . ai {
public class Passport
{
//Passport Identification
public static string passport ( )
{
string token = "[Token obtained by calling the authentication interface]" ;
string host = " https://aip.baidubce.com/rest/2.0/ocr/v1/passport?access_token= " + token ;
Encoding encoding = Encoding . Default ;
HttpWebRequest request = ( HttpWebRequest ) WebRequest . Create ( host ) ; request . Method = "post" ; request . KeepAlive = true ;
//Base64 encoding of pictures
string base64 = getFileBase64 ( [Local picture file] ) ;
String str = "image=" + HttpUtility . UrlEncode ( base64 ) ;
byte [ ] buffer = encoding . GetBytes ( str ) ; request . ContentLength = buffer . Length ; request . GetRequestStream ( ) . Write ( buffer , zero , buffer . Length ) ;
HttpWebResponse response = ( HttpWebResponse ) request . GetResponse ( ) ;
StreamReader reader = new StreamReader ( response . GetResponseStream ( ) , Encoding . Default ) ;
string result = reader . ReadToEnd ( ) ; Console . WriteLine ( "Passport identification:" ) ; Console . WriteLine ( result ) ;
return result ;
}
public static String getFileBase64 ( String fileName ) {
FileStream filestream = new FileStream ( fileName , FileMode . Open ) ;
byte [ ] arr = new byte [ filestream . Length ] ; filestream . Read ( arr , zero , ( int ) filestream . Length ) ;
string baser64 = Convert . ToBase64String ( arr ) ; filestream . Close ( ) ;
return baser64 ;
}
}
}
Return description
|
|
|
|
---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
{
"log_id" : 7377468409496932872 ,
"direction" : zero ,
"words_result_num" : fifteen ,
"words_result" : {
"Passport type" : {
"location" : {
"width" : fifty-nine ,
"top" : two hundred ,
"left" : seven hundred and sixty-two ,
"height" : twenty-six
} ,
"words" : "P"
} ,
"Country code" : {
"location" : {
"width" : fifty-nine ,
"top" : two hundred ,
"left" : seven hundred and sixty-two ,
"height" : twenty-six
} ,
"words" : "CHN"
} ,
"Passport issuing place" : {
"location" : {
"width" : two hundred and thirty-six ,
"top" : five hundred and five ,
"left" : five hundred and fifty-eight ,
"height" : forty-three
} ,
"words" : Shandong
} ,
"MRZCode2" : {
"location" : {
"width" : one thousand two hundred and fifty-two ,
"top" : seven hundred and ninety-seven ,
"left" : one hundred and forty-five ,
"height" : eighty-eight
} ,
"words" : "E898657303CHNSDMO7O2<<<<<<<<<<<<<"
} ,
"Valid until" : {
"location" : {
"width" : two hundred and eighty-seven ,
"top" : five hundred and twenty-eight ,
"left" : nine hundred and fifty-five ,
"height" : forty-six
} ,
"words" : "20261004"
} ,
"Issuing Authority" : {
"location" : {
"width" : two hundred and seventy-one ,
"top" : five hundred and eighty-three ,
"left" : five hundred and fifty-two ,
"height" : forty-two
} ,
"words" : "Entry Exit Administration"
} ,
"MRZCode1" : {
"location" : {
"width" : one thousand two hundred and one ,
"top" : seven hundred and eighty-one ,
"left" : one hundred and sixty-two ,
"height" : forty-five
} ,
"words" : "PONSUN<<JIAJIA<<<<<<<<<<<<<<<<<<<<<<<<<<"
} ,
"Passport number" : {
"location" : {
"width" : two hundred and thirty-seven ,
"top" : two hundred and fifteen ,
"left" : nine hundred and ninety-four ,
"height" : forty-eight
} ,
"words" : "E89865730"
} ,
"Date of issue" : {
"location" : {
"width" : two hundred and seventy-nine ,
"top" : four hundred and fifty-three ,
"left" : nine hundred and fifty-five ,
"height" : forty-six
} ,
"words" : "20161005"
} ,
"Place of birth" : {
"location" : {
"width" : two hundred and sixteen ,
"top" : four hundred and twenty-nine ,
"left" : five hundred and sixty-four ,
"height" : forty-three
} ,
"words" : Shandong
} ,
Name : {
"location" : {
"width" : one hundred and fifty-nine ,
"top" : two hundred and forty-seven ,
"left" : five hundred and eighty-one ,
"height" : thirty-four
} ,
"words" : "Sun Jiajia"
} ,
"Name Pinyin" : {
"location" : {
"width" : two hundred and twenty-nine ,
"top" : two hundred and seventy-nine ,
"left" : five hundred and seventy-eight ,
"height" : forty-one
} ,
"words" : "SUN,JIAJIA"
} ,
Nationality : {
"location" : {
"width" : two hundred and nine ,
"top" : three hundred and sixty-six ,
"left" : six hundred and ninety-five ,
"height" : forty-two
} ,
"words" : "China/CHINESE"
} ,
Birthday : {
"location" : {
"width" : two hundred and two ,
"top" : three hundred and eighty-two ,
"left" : nine hundred and fifty ,
"height" : thirty-nine
} ,
"words" : "19950723"
} ,
Gender : {
"location" : {
"width" : seventy-three ,
"top" : three hundred and fifty-seven ,
"left" : five hundred and seventy ,
"height" : thirty-four
} ,
"words" : "Male/M"
}
}
}