This topic describes how to use Content Moderation SDK for PHP to call the optical character recognition (OCR) operation to detect text in images,and return the results in real time.

Before you begin

Before you call operations, make the following preparations:

Submit synchronous OCR tasks

Operation Description Supported region
ImageSyncScanRequest Sends synchronous OCR requests to detect text in images after you set the scenes parameter to ocr.
  • cn-shanghai
  • cn-beijing
  • cn-shenzhen
  • ap-southeast-1
  • ap-southeast-5
Sample code
<? php

require_once 'aliyuncs/aliyun-oss-php-sdk/autoload.php';
include_once 'aliyuncs/aliyun-php-sdk-core/Config.php';

use Green\Request\V20180509 as Green;

// Use the AccessKey pair of your Alibaba Cloud account.
$iClientProfile = DefaultProfile::getProfile("cn-shanghai", "yourAccessKeyId", "yourAccessKeySecret");
DefaultProfile::addEndpoint("cn-shanghai", "cn-shanghai", "Green", "green.cn-shanghai.aliyuncs.com");
$client = new DefaultAcsClient($iClientProfile);

$request = new Green\ImageSyncScanRequest();
$request->setMethod("POST");
$request->setAcceptFormat("JSON");

$task1 = array('dataId' =>  uniqid(),
    'url' => 'https://xxx.jpg'
);
// Create one task for each image to be moderated.
// If you moderate multiple images in a request, the total response time that the server spends processing the request starts from when the request is initiated to when the last image is moderated.
// Generally, the average response time of moderating multiple images in a request is longer than that of moderating a single image. The more images you submit at a time, the higher the probability that the average response time will be extended.
// In this example, a single image is moderated. If you need to moderate multiple images at a time, create one task for each image to be moderated.
// The OCR expense equals the product of the number of images moderated and the moderation unit price.
$request->setContent(json_encode(array(
    "tasks" => array($task1),
    "scenes" => array("ocr")
    )));
try {
    $response = $client->getAcsResponse($request);
   # print_r($response);
    if(200 == $response->code){
        $taskResults = $response->data;
        foreach ($taskResults as $taskResult) {
            if (200 == $taskResult->code) {
                $sceneResults = $taskResult->results;
                print_r($sceneResults);
            }
        }
    }else{
        print_r("detect not success. code:" + $response->code);
    }
} catch (Exception $e) {
    print_r($e);
}