图片OCR识别

本文介绍了如何使用PHP SDK图片OCR接口,识别图片中的文字或卡证信息。

功能描述

通用OCR除了能够识别普通图片中的文字,还能识别结构化的卡证上的文字。关于参数的详细说明,请参见图片OCR检测API文档

前提条件

已安装PHP依赖。关于安装PHP依赖的具体操作,请参见安装PHP依赖

说明

请一定按照安装PHP依赖页面中的版本安装,否则会导致调用失败。

提交图片同步检测任务

接口

描述

支持的Region

ImageSyncScanRequest

提交图片OCR同步识别任务,对图片中的文字进行识别(scene=ocr)。

  • cn-shanghai

  • cn-beijing

  • cn-shenzhen

  • ap-southeast-1

示例代码

<?php

use AlibabaCloud\Client\AlibabaCloud;
use AlibabaCloud\Green\Green;

try {
    /**
     * 注意:此处实例化的client尽可能重复使用,提升检测性能。避免重复建立连接。
     * 常见获取环境变量方式:
     * 获取RAM用户AccessKey ID:getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
     * 获取RAM用户AccessKey Secret:getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
     */
    AlibabaCloud::accessKeyClient('建议从环境变量中获取RAM用户AccessKey ID', '建议从环境变量中获取RAM用户AccessKey Secret')
        ->timeout(10) // 超时10秒,使用该客户端且没有单独设置的请求都使用此设置。
        ->connectTimeout(3) // 连接超时3秒,当单位小于1,则自动转换为毫秒,使用该客户端且没有单独设置的请求都使用此设置。
        ->regionId('cn-shanghai')
        ->asDefaultClient();

    $task1 = array('dataId' => '业务数据ID',
        'url' => '待检测图片链接地址'
    );
    // 示例:身份证正面识别。
    $extras = array('card' => 'id-card-front');
    /* 设置待检测的图片,一张图片对应一个检测任务。
     * 多张图片同时检测时,处理时间由最后一张处理完的图片决定。
     * 通常情况下批量检测的平均响应时间比单张检测要长。一次批量提交的图片数越多,响应时间被拉长的概率越高。
     * 代码中以单张图片检测作为示例,如果需要批量检测多张图片,请自行构建多个检测任务。
     * OCR检测按照实际检测的图片张数*检测的卡证类型单价计费。
     */
    $result = Green::v20180509()->imageSyncScan()
        ->timeout(10) // 超时10秒,request超时设置,仅对当前请求有效。
        ->connectTimeout(3) // 连接超时3秒,当单位小于1,则自动转换为毫秒,request超时设置,仅对当前请求有效。
        ->body(json_encode(array('tasks' => array($task1), 'scenes' => array('ocr'), 'extras' => array($extras))))
        ->request();
    print_r($result->toArray());

} catch (Exception $exception) {
    echo $exception->getMessage() . PHP_EOL;
}