Skip to content

基本使用

徐连波 edited this page Jan 26, 2021 · 5 revisions

基本使用

require 'vendor/autoload.php';

use Godruoyi\OCR\Application;

$config = [
    'drivers' => [
        'baidu' => [
            'access_key' => '',
            'secret_key' => '',
        ],
    ]
];

$application = new Application($config);
$response    = $application->baidu->idcard($image, $options);

所有 client 调用的方法签名如下:

$application->{$client}->{$method}(mixed $image, array $options = [])

其中,第一个参数为要识别的图片,其类型可以为:

  1. 完整的图片路径(Full path)
  2. \SplFileInfo 对象
  3. 打开的图片资源(Resource)
  4. 在线图片地址(部分服务商不支持)
  5. array[...$image]

当第一个参数为数组且识别的方法不支持批量识别时,默认取数组第 0 个值。

第二个参数为各服务商请求时的可选参数,如下所示。

调用示例

  1. 阿里云身份证识别 文档参数地址
$application = new Application($config)

$image = '/tmp/idcard.png';

$response = $application->aliyun->idcard($image, [
    'side' => 'back',
]);

options 参数为阿里云 configure 配置。

  1. 腾讯云身份证识别 文档参数地址
$application = new Application($config)

$image = 'https://example.com/idcard.png';
// $image = '/tmp/idcard.png';

$response = $application->tencent->idcard($image, [
    'Region'   => 'ap-shanghai',
    'CardSide' => 'BACK',
    'Config'   => json_encode(['CropIdCard' => false]),
]);

若无特殊要求,不需要设置 Action 和 Version 两个字段的值。

  1. 百度云身份证识别 文档参数地址
$application = new Application($config)

$image = 'https://example.com/idcard.png';
// $image = '/tmp/idcard.png';

$response = $application->baidu->idcard($image, [
    'id_card_side' => 'back',
    'detect_direction' => false,
]);

img/url 参数会根据传入的 $image 自动设置,其他参数根据业务需要可进行手动设置;

🎈 若请求的方法不支持在线图片而传入的 $image 参数却为线上图片时,我们将自动下载图片后再进行识别。

返回格式

我们返回一个标准的 Psr Response,该 Response 继承自 GuzzleHttp\Psr7\Response 对象。你可以操作里面的任何方法。

$response->getBody();
$response->getStatusCode();
$response->getHeaders();

// new add
$response->toArray();
$response->toJson();

注意:目前我们并没有判断请求是否成功,你可能还需要根据 http 状态码或返回的 body 来判断。

$application = new Application($config)

$body = $application->tencent->idcard('')->toArray();

if (isset($body['Response']['Error']) && !empty($body['Response']['Error'])) {
    // 识别失败
    var_dump($body['Response']['Error']['Message']);
} else {
    $idCard = $body['Response']['IdNum'];

    var_dump($idCard);
}