API Cloud

API OCR


Notre offre cloud s'adapte à vos besoins et peut s'intégrer avec différents langages de programmation et notament dans Salesforce. Envoyez vos images sur nos Serveurs et récupérez le résultat très facilement, seulement 3 appels sont necessaires : authentification, envoi de l'image, récupération du résultat.

Un exemple d'intégration en PHP :  
    $key1     = 'XXXXXXXXXXXXXXX';
    $key2     = 'XXXXXXXXXXXXXXX';
    
    $apiId         = 'XXXXX-XXXXX-XXXXX-XXXXX-XXXXX';
    $apiPassword     = 'XXXXXXXXXXXXXXX';

    $fileName         = 'test1.jpg';
    $userAgent         = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0";

    $serviceUrl = 'https://www.ocrmobile.cloud/public/api/';
    
    // get valid token to send treatment / valid during 3600 seconds
    $urlAuthenticate     = $serviceUrl.'authenticate/'.$key1.'::'.$key2;
    // post scan or crop
    $urlTreat             = $serviceUrl.'process/{token}';
    // get result
    $urlResult             = $serviceUrl.'getResult/{processId}/{token}';
    
    // Get path to file that we are going to recognize
    $filePath = "C:\\".$fileName;
        // $filePath ="/var/www/html/ocr-smartphone.com/dev/".$fileName;
        
        if(!file_exists($filePath))
        {
            die('File '.$filePath.' not found.');
        }
        
        if(!is_readable($filePath) )
        {
            die('Access to file '.$filePath.' denied.');
        }
        
    // 1. first step authenticate to get valid token for use api

    $curlHandle = curl_init();
    curl_setopt($curlHandle, CURLOPT_SSL_VERIFYHOST, 2);
    curl_setopt($curlHandle, CURLOPT_SSL_VERIFYPEER, false);    
    curl_setopt($curlHandle, CURLOPT_URL, $urlAuthenticate);
    curl_setopt($curlHandle, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($curlHandle, CURLOPT_USERPWD, "$apiId:$apiPassword");
    curl_setopt($curlHandle, CURLOPT_POST, 0);
    curl_setopt($curlHandle, CURLOPT_USERAGENT, $userAgent);
    curl_setopt($curlHandle, CURLOPT_FAILONERROR, true);
    $response = curl_exec($curlHandle);

        if($response == FALSE) {
            
            $errorText = curl_error($curlHandle);
            curl_close($curlHandle);
            die("authenticate error ".$errorText);
        
        }    
        
    $httpCode = curl_getinfo($curlHandle, CURLINFO_HTTP_CODE);
    curl_close($curlHandle);
        
        // reponse type JSON {"access":true,"token":"12346578","expires":3600}
        $jsonAuthenticate = json_decode($response,true);
        
        if($jsonAuthenticate["access"]){
            
                $token         = $jsonAuthenticate["token"];
                $urlTreat     = str_replace("{token}",$token,$urlTreat);
                $urlResult     = str_replace("{token}",$token,$urlResult);
                $urlBinaryImage     = str_replace("{token}",$token,$urlBinaryImage);
                
        }else{
            
            die("No access ".$jsonAuthenticate["error"]);
            
        }

    //
    //
    //
    //    
    // 2. Send HTTP POST request and return JSON response


    $curlHandle = curl_init();
    curl_setopt($curlHandle, CURLOPT_SSL_VERIFYHOST, 2);
    curl_setopt($curlHandle, CURLOPT_SSL_VERIFYPEER, false);    
    curl_setopt($curlHandle, CURLOPT_URL, $urlTreat);
    curl_setopt($curlHandle, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($curlHandle, CURLOPT_USERPWD, "$apiId:$apiPassword");
    curl_setopt($curlHandle, CURLOPT_POST, 1);
    curl_setopt($curlHandle, CURLOPT_USERAGENT, $userAgent);
    curl_setopt($curlHandle, CURLOPT_FAILONERROR, true);
    
    $post_array = array();

      if((version_compare(PHP_VERSION, '5.5') >= 0)) {
        $post_array["my_file"] = new CURLFile($filePath);
      } else {
        $post_array["my_file"] = "@".$filePath;
      }
    
    // send params JSON see documentation datas.pdf
    $post_array["processJson"] = '{"supportId":1,"taxes":[2.1,5.5,10,20],"task":"scan","language":"FR","fileName":"'.$fileName.'","type":"img","srcCount":1,"useCrop":true}';
 
    curl_setopt($curlHandle, CURLOPT_POSTFIELDS, $post_array);
    $response = curl_exec($curlHandle);
    
      if($response == FALSE) {
          
        $errorText = curl_error($curlHandle);
        curl_close($curlHandle);
        die("response false ".$errorText);
        
      }    
      
    curl_close($curlHandle);
        
    $jsonProcessResponse  = json_decode($response,true);
    
        if($jsonProcessResponse["access"]){
            
            if(isset($jsonProcessResponse["error"])){
                
                die("Error ".$jsonResult["error"]);            
            }
            
            else{
                // get processId for request result
                $processId  = $jsonProcessResponse["processId"];
                //replace params for url getResult
                $urlResult     = str_replace("{processId}",$processId,$urlResult);
                                
            }

        }else{
            
            die("No access ".$jsonResult["error"]);
        }    
    
    
//getResult process

while(true)
  {
    sleep(1); // important
    $curlHandle = curl_init();
    curl_setopt($curlHandle, CURLOPT_SSL_VERIFYHOST, 2);
    curl_setopt($curlHandle, CURLOPT_SSL_VERIFYPEER, false);    
    curl_setopt($curlHandle, CURLOPT_URL, $urlResult );
    curl_setopt($curlHandle, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($curlHandle, CURLOPT_USERPWD, "$apiId:$apiPassword");
    curl_setopt($curlHandle, CURLOPT_USERAGENT, $userAgent);
    curl_setopt($curlHandle, CURLOPT_FAILONERROR, true);
    $response = curl_exec($curlHandle);
    $httpCode = curl_getinfo($curlHandle, CURLINFO_HTTP_CODE);
    curl_close($curlHandle);
 
    $jsonResult = json_decode($response, true);
    
    if($httpCode != 200) {
     
        die("Unexpected response getResult ".$response);
        
    }
    
    if($jsonResult["access"]){
        
        if($jsonResult["status"] == "ok"){
            
            // result of the process in the field name "result"
            echo $response;
                                    
            break;
            
        }else if($jsonResult["status"] == "failed" || $jsonResult["status"] == "failed_"){
            
             die("treatment fail ".implode("
",$jsonResult));
            
        }else if($jsonResult["status"] == "inProgress"){
            
             continue;
            
        }
        
    }else{
        
        die("No access ".$jsonResult["error"]);
             
    }

    
  }
?>