information community file
Technical capability
Voice technology
Character recognition
Face and Human Body
Image technology
Language and knowledge
video technique

Identification of driving license

Interface description

Structurally identify all 22 fields on the main page and sub page of the motor vehicle license, including the number plate number, vehicle type, owner, brand model, vehicle identification code, engine number, approved number of passengers, quality, size, inspection records, etc.

For video tutorials, see Driving license recognition API call tutorial (video version)

Online debugging

You can visit Sample Code Center Debug the interface in , you can perform signature verification, view the request content and return results of online calls, and automatically generate sample code.

Request Description

Request Example

HTTP method: POST

Request URL: https://aip.baidubce.com/rest/2.0/ocr/v1/vehicle_license

URL parameter:

parameter value
access_token Access_token obtained through API Key and Secret Key, refer to“ Access Token acquisition

The headers are as follows:

parameter value
Content-Type application/x-www-form-urlencoded

Place the request parameters in the body. The details of the parameters are as follows:

Request Parameters

parameter Required type Optional value range explain
image Or url string - Image data is encoded with urlencode after base64 encoding. The size after base64 encoding and urlencode is required not to exceed 4M, the shortest side is at least 15px, and the longest side is at most 4096px. It supports jpg/jpeg/png/bmp format
url And image string - The image is a complete URL. The URL length does not exceed 1024 bytes. The size of the image corresponding to the URL after base64 encoding does not exceed 4M. The shortest side is at least 15px, and the longest side is at most 4096px. It supports the jpg/jpeg/png/bmp format. When the image field exists, the url field is invalid
Please close the URL anti-theft chain
detect_direction no string true/false - False: default value No automatic correction of image direction
- true: Turn on the automatic correction function of image direction, which can automatically correct and recognize the image rotated 90/180/270 degrees
vehicle_license_side no string front/back - Front: default value , identify the driving license homepage
- back: Identify the duplicate page of the driving license
unified no string true/false - False: default value , no normalization
- true: Normalize the output field, and output the "registration date/registration date" of the new/old vehicle license as "registration date"
quality_warn no string true/false Whether the quality detection function is enabled or not is only effective when the front page of the license is identified,
- False: default value , do not output quality alarm information
- true: Output the warning information of the blocked and incomplete quality of the driving license
risk_warn no string true/false Whether the risk detection function is enabled or not is only effective when the front page of the driving license is identified,
-False: default value , do not output risk warning information
- true : Open, output warning information such as copy, remake and PS of driving license

Request Code Example

Prompt 1 : Before using the sample code, remember to replace the sample token, image address or Base64 information.

Prompt 2 : Some languages depend on classes or libraries. Please check the download address in the code comment.

 curl -i -k ' https://aip.baidubce.com/rest/2.0/ocr/v1/vehicle_license?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 ''' Identification of driving license ''' request_url =  " https://aip.baidubce.com/rest/2.0/ocr/v1/vehicle_license "
 #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 ;

 /** *Identification of driving license */
 public  class  VehicleLicense  {

     /** *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  vehicleLicense ( )  {
         //Request url
         String url =  " https://aip.baidubce.com/rest/2.0/ocr/v1/vehicle_license " ;
         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 )  {
         VehicleLicense . vehicleLicense ( ) ;
     }
 }
 # 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/vehicle_license " ;
 static std :: string vehicleLicense_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 vehicleLicense_result = std :: string ( ( char  * ) ptr , size * nmemb ) ;
     return size * nmemb ;
 }
 /** *Identification of driving license *@ return If the call is successful, 0 will be returned. If an error occurs, other error codes will be returned */
 int  vehicleLicense ( 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 = vehicleLicense_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/vehicle_license?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  VehicleLicense
     {
         //Identification of driving license
         public  static  string  vehicleLicense ( )
         {
             string token =  "[Token obtained by calling the authentication interface]" ;
             string host =  " https://aip.baidubce.com/rest/2.0/ocr/v1/vehicle_license?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 ( "Vehicle license 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

Return parameters

field Mandatory type explain
log_id yes uint64 Unique log ID for problem location
direction no int32 Image direction. This field is returned when detect_direction=true.
-- 1: Undefined,
-0: Forward,
-1: 90 degrees counterclockwise,
-2: 180 degrees counterclockwise,
-3: 270 degrees counterclockwise
words_result_num yes uint32 The number of recognition results, representing the number of words_result elements
words_result yes object Identification results
+ words no string Identification result string
warn_infos no array[] When the input parameter vehicle_license_side=front and quality_warn=true,
-Shield: There is a blocking alarm prompt for the driving license
-Incomplete: warning prompt of incomplete border of driving license
risk_type no string When the input parameter risk_warn=true, the type of recognized driving license is returned: normal normal driving license; Copy - copy; Screen - remake
edit_tool no string When the input parameter risk_warn=true, it returns. If the driver license is detected to have been edited, this field specifies the name of the editing software, such as Adobe Photoshop CC 2014 (Macintosh). If it has not been edited, the return value is null

Return to example (front page of driving license)

 {
	 "words_result" :  {
		 "Vehicle identification number" :  {
			 "words" :  "SSVUDDTT2J2022558"
		 } ,
		 Address :  {
			 "words" :  "Sanliuzhai Village, Zhongmou County"
		 } ,
		 "Date of issue" :  {
			 "words" :  "20180313"
		 } ,
         "Issuing unit" :  {
			 "words" :  "Beijing Public Security Bureau Public Security Traffic Management Bureau"
		 } ,
		 "Brand and model" :  {
			 "words" :  "Volkswagen SVW6474DFD"
		 } ,
		 "Vehicle type" :  {
			 "words" :  "Minibus"
		 } ,
		 Everyone :  {
			 "words" :  "Zheng Kun"
		 } ,
		 "Nature of use" :  {
			 "words" :  "Non operational"
		 } ,
		 "Engine number" :  {
			 "words" :  "111533"
		 } ,
		 "Number plate number" :  {
			 "words" :  "Yu A99RR9"
		 } ,
		 "Registration date" :  {
			 "words" :  "20180312"
		 }
	 } ,
	 "log_id" :  "1290127183406170112" ,
	 "words_result_num" :  eleven
 }

Return to example (duplicate page of driving license)

 {
     "words_result" :  {
         "Inspection record" :  {
             "words" :  "November 2018 YuA ()"
         } ,
         "Approved load capacity" :  {
             "words" :  "1490kg"
         } ,
         "Unladen mass" :  {
             "words" :  "2600kg"
         } ,
         "Overall dimensions" :  {
             "words" :  "5990X2500X4400mm"
         } ,
         "Authorized capacity" :  {
             "words" :  "2 people"
         } ,
         "Total mass" :  {
             "words" :  "4290kg"
         } ,
         "Fuel type" :  {
             "words" :  Diesel
         } ,
         "Total quasi towable mass" :  {
             "words" :  ""
         } ,
         Notes :  {
             "words" :  "2033-10-25"
         } ,
         File No :  {
             "words" :  ""
         } ,
         "Number plate number" :  {
             "words" :  "Chongqing A2780RL"
         } ,
         "Certificate Core No." :  {
             "words" :  "50027372380230106"
         }
     } ,
     "words_result_num" :  twelve ,
     "log_id" :  1483006324030440139
 }
Previous
Card card character recognition
Next
Driver license recognition