Fatal error: Call to a member function attributes() on a non-object in "path of file"... I see a solution for this same problem in june but the that i'm using is updated but not work anyway.
Help me please someone...
Below my code:
// 1. Send image to Cloud OCR SDK using processImage call // 2. Get response as xml // 3. Read taskId from xml//!!! Please provide your application id and password and remove this line !!! // Name of application you created $applicationId = 'myidapp'; // Password should be sent to your e-mail after application was created $password = 'mypassword'; $fileName = 'harry.png';
// Get path to file that we are going to recognize $local_directory=dirname(FILE).'/images/'; $filePath = $local_directory.'/'.$fileName; if(!file_exists($filePath)) { die('File '.$filePath.' not found.'); }
// Recognizing with English language to rtf // You can use combination of languages like ?language=english,russian or // ?language=english,french,dutch // For details, see API reference for processImage method $url = 'http://cloud.ocrsdk.com/processImage?language=english,portuguese&exportFormat=rtf';
// Send HTTP POST request and ret xml response $curlHandle = curl_init(); curl_setopt($curlHandle, CURLOPT_URL, $url); curl_setopt($curlHandle, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curlHandle, CURLOPT_USERPWD, "$applicationId:$password"); curl_setopt($curlHandle, CURLOPT_POST, 1); $post_array = array( "my_file"=>"@".$filePath, ); curl_setopt($curlHandle, CURLOPT_POSTFIELDS, $post_array); $response = curl_exec($curlHandle); if($response == FALSE) { $errorText = curl_error($curlHandle); curl_close($curlHandle); die($errorText); } curl_close($curlHandle);
// Parse xml response $xml = simplexml_load_string($response); $arr = $xml->task[0]->attributes();
// Task id
$taskid = $arr["id"];
// 4. Get task information in a loop until task processing finishes // 5. If response contains "Completed" staus - extract url with result // 6. Download recognition result (text) and display it
$url = 'http://cloud.ocrsdk.com/getTaskStatus'; $qry_str = "?taskid=$taskid";
// Check task status in a loop until it is finished // TODO: support states indicating error do { sleep(5); $curlHandle = curl_init(); curl_setopt($curlHandle, CURLOPT_URL, $url.$qry_str); curl_setopt($curlHandle, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curlHandle, CURLOPT_USERPWD, "$applicationId:$password"); $response = curl_exec($curlHandle); curl_close($curlHandle);
// parse xml $xml = simplexml_load_string($response); $arr = $xml->task[0]->attributes(); } while($arr["status"] != "Completed");
// Result is ready. Download it
$url = $arr["resultUrl"];
$curlHandle = curl_init();
curl_setopt($curlHandle, CURLOPT_URL, $url);
curl_setopt($curlHandle, CURLOPT_RETURNTRANSFER, 1);
// Warning! This is for easier out-of-the box usage of the sample only.
// The URL to the result has https:// prefix, so SSL is required to
// download from it. For whatever reason PHP runtime fails to perform
// a request unless SSL certificate verification is off.
curl_setopt($curlHandle, CURLOPT_SSL_VERIFYPEER, false);
$response = curl_exec($curlHandle);
curl_close($curlHandle);
// Let user donwload rtf result header('Content-type: application/rtf'); header('Content-Disposition: attachment; filename="file.rtf"'); echo $response; ?>
Comments
10 comments
Which line of code specifically yields the error message?
The erro is on line 52
Since you don't specify where you got the source from and when could you please highlight the actual code instead of the line number? I.e. here https://github.com/abbyysdk/ocrsdk.com/blob/master/PHP/abbyy_php_example.php line 51 is
$taskid = $arr["id"];
and lines are not numbered in the code you posted.on line 48 - $arr = $xml->task[0]->attributes();
tks 4 ur help
Something is wrong with
$response
variable value. What value does it hold at that moment?the $response receive this value
$url = 'http://cloud.ocrsdk.com/processImage?language=english,portuguese&exportFormat=rtf';
in this "function":
$curlHandle = curl_init(); curl_setopt($curlHandle, CURLOPT_URL, $url); curl_setopt($curlHandle, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curlHandle, CURLOPT_USERPWD, "$applicationId:$password"); curl_setopt($curlHandle, CURLOPT_POST, 1);
That's unclear. What output do you get if you add
echo $response;
right before$arr = $xml->task[0]->attributes();
line?uhm... get me this mensage:
Unknown language portuguese
I don't know about that this API no have support to portuguese? I'll tri just englisn and say to you what sample return
works, realy no have support to portuguese
@PauloCesar: You can specify either
PortugueseBrazilian
orPortigueseStandard
. Full list of languages is available at http://ocrsdk.com/documentation/specifications/recognition-languages/Please sign in to leave a comment.