阿里云OCR图片文字识别(精确识别)

 根据需求通过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%

)

)

猜你喜欢

转载自blog.csdn.net/weixin_45604963/article/details/128289037
今日推荐