根据需求通过composer下载SDK包
备注:composer 安装SDK包有问题可以指定版本进行升级 (去掉版本号前的^符可以指定版本升级)
代码实现:
/**
* 图片文字识别
* @return void
*/
public function cs()
{
$param = $this->getData();
include_once '../vendor/alibabacloud/aliocr/src/Sample.php';
$args = [];
$args['access_key_id'] = '';\\id
$args['access_key_secret'] = '';\\秘钥
$args['image_url'] = $param['image_url'];
$res = Sample::main($args);
}
获得秘钥
<?php
// This file is auto-generated, don't edit it. Thanks.
namespace AlibabaCloud\SDK\Sample;
use Darabonba\OpenApi\OpenApiClient;
use AlibabaCloud\OpenApiUtil\OpenApiUtilClient;
use AlibabaCloud\Tea\Utils\Utils;
use AlibabaCloud\Tea\Console\Console;
use Darabonba\OpenApi\Models\Config;
use Darabonba\OpenApi\Models\Params;
use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;
use Darabonba\OpenApi\Models\OpenApiRequest;
class Sample
{
/**
* 使用AK&SK初始化账号Client
* @param string $accessKeyId
* @param string $accessKeySecret
* @return OpenApiClient Client
*/
public static function createClient($accessKeyId, $accessKeySecret)
{
$config = new Config([
// 必填,您的 AccessKey ID
"accessKeyId" => $accessKeyId,
// 必填,您的 AccessKey Secret
"accessKeySecret" => $accessKeySecret
]);
// 访问的域名
$config->endpoint = "ocr-api.cn-hangzhou.aliyuncs.com";
return new OpenApiClient($config);
}
/**
* 使用STS鉴权方式初始化账号Client,推荐此方式。本示例默认使用AK&SK方式。
* @param string $accessKeyId
* @param string $accessKeySecret
* @param string $securityToken
* @return OpenApiClient Client
*/
public static function createClientWithSTS($accessKeyId, $accessKeySecret, $securityToken)
{
$config = new Config([
// 必填,您的 AccessKey ID
"accessKeyId" => $accessKeyId,
// 必填,您的 AccessKey Secret
"accessKeySecret" => $accessKeySecret,
// 必填,您的 Security Token
"securityToken" => $securityToken,
// 必填,表明使用 STS 方式
"type" => "sts"
]);
// 访问的域名
$config->endpoint = "ocr-api.cn-hangzhou.aliyuncs.com";
return new OpenApiClient($config);
}
/**
* API 相关
* @return Params OpenApi.Params
*/
public static function createApiInfo($image = "")
{
$params = new Params([
// 接口名称
"action" => "RecognizeAdvanced",
// 接口版本
"version" => "2021-07-07",
// 接口协议
"protocol" => "HTTPS",
// 接口 HTTP 方法
"method" => "POST",
"authType" => "AK",
"style" => "V3",
// 接口 PATH
"pathname" => "/",
// 接口请求体内容格式
"reqBodyType" => $image,
// 接口响应体内容格式
"bodyType" => "json"
]);
return $params;
}
/**
* @param string[] $args
* @return void
*/
public static function main($args)
{
// 初始化 Client,采用 AK&SK 鉴权访问的方式,此方式可能会存在泄漏风险,建议使用 STS 方式。更多鉴权访问方式请参考:https://help.aliyun.com/document_detail/311677.html
$client = self::createClient($args['access_key_id'], $args['access_key_secret']);
// query params
$queries = [];
$queries["Row"] = true;
//判断是使用路径还是body体直接上传识别
if (isset($args['image']) && !empty($args['image'])) {
$params = self::createApiInfo($args['image']);
} else {
$params = self::createApiInfo();
$queries['Url'] = $args['image_url'];// 图片路径
}
// runtime options
$runtime = new RuntimeOptions([]);
$request = new OpenApiRequest([
"query" => OpenApiUtilClient::query($queries)
]);
// 复制代码运行请自行打印 API 的返回值
// 返回值为 Map 类型,可从 Map 中获得三类数据:响应体 body、响应头 headers、HTTP 返回的状态码 statusCode
$resp = $client->callApi($params, $request, $runtime);
$res = json_decode($resp['body']['Data'], true);
return $res['prism_rowsInfo'];
}
}
$path = __DIR__ . \DIRECTORY_SEPARATOR . '..' . \DIRECTORY_SEPARATOR . 'vendor' . \DIRECTORY_SEPARATOR . 'autoload.php';
if (file_exists($path)) {
require_once $path;
}
返回参数:
Array
(
[0] => Array
(
[rowId] => 0
[word] => 金铲铲之战抽卡概率图
)
[1] => Array
(
[rowId] => 1
[word] => 1费卡2费卡3费卡4费卡5费卡
)
[2] => Array
(
[rowId] => 2
[word] => Qv2100%
)
[3] => Array
(
[rowId] => 3
[word] => Cv375%25%
)
[4] => Array
(
[rowId] => 4
[word] => lv46ExP50%30%20%
)
[5] => Array
(
[rowId] => 5
[word] => ev510P40%33%25%2%
)
[6] => Array
(
[rowId] => 6
[word] => wv620EP25%40%30%5%
)
[7] => Array
(
[rowId] => 7
[word] => Qv736xp19%30%35%15%1%
)
[8] => Array
(
[rowId] => 8
[word] => wuv856xP15%20%35%25%5%
)
[9] => Array
(
[rowId] => 9
[word] => Lv980Exp10%15%30%30%15%
)
)