基本使用
徐连波 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 = [])
其中,第一个参数为要识别的图片,其类型可以为:
- 完整的图片路径(Full path)
- \SplFileInfo 对象
- 打开的图片资源(Resource)
- 在线图片地址(部分服务商不支持)
- array[...$image]
当第一个参数为数组且识别的方法不支持批量识别时,默认取数组第 0 个值。
第二个参数为各服务商请求时的可选参数,如下所示。
- 阿里云身份证识别 文档参数地址
$application = new Application($config)
$image = '/tmp/idcard.png';
$response = $application->aliyun->idcard($image, [
'side' => 'back',
]);
options 参数为阿里云 configure 配置。
- 腾讯云身份证识别 文档参数地址
$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 两个字段的值。
- 百度云身份证识别 文档参数地址
$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);
}