文字识别-》身份证识别
1://安装依赖包
//composer require alibabacloud/ocr-20191230
<?php
use AlibabaCloud\SDK\Ocr\V20191230\Ocr;
use \Exception; use AlibabaCloud\Tea\Exception\TeaError;
use AlibabaCloud\Tea\Utils\Utils;
use Darabonba\OpenApi\Models\Config;
use AlibabaCloud\SDK\Ocr\V20191230\Models\RecognizeIdentityCardRequest;
use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;
class AlyVerify {
/** * 使用AK&SK初始化账号Client *
@param string $accessKeyId *
@param string $accessKeySecret *
@return Ocr Client */
public function createClient($accessKeyId, $accessKeySecret)
{
$config = new Config([ "accessKeyId" => $accessKeyId, "accessKeySecret" => $accessKeySecret ]);
// Endpoint 请参考 https://api.aliyun.com/product/ocr
$config->endpoint = "ocr.cn-shanghai.aliyuncs.com";
return new Ocr($config);
}
/** * @param string[] $argv * @return void */
public function main($argv)
{ // https://help.aliyun.com/document_detail/311677.html
$client = self::createClient($argv['accesskeyid'], $argv['secret']);
$recognizeIdentityCardRequest = new RecognizeIdentityCardRequest([ "imageURL" => $argv['imageUrl'], "side" => 'face', ]);
$runtime = new RuntimeOptions([]);
try { // 复制代码运行请自行打印 API 的返回值
$data = $client->recognizeIdentityCardWithOptions($recognizeIdentityCardRequest, $runtime);
$data = json_decode(json_encode($data),true)['body']['data'];
return ['code'=>200,'msg'=>'请求成功','data'=>$data['frontResult']];
} catch (Exception $error) {
if (!($error instanceof TeaError)){ $error = new TeaError([], $error->getMessage(), $error->getCode(), $error); }
return ['code'=>201,'msg'=>$error->message,'data'=>''];
}
}
}
2:在别的控制中引用 use app\api\controller\AlyVerify
3:如果 图像URL地址。推荐使用上海地域的OSS链接,对于文件在本地或者非上海地域OSS链接的情况,请参见文件URL处理。
非上海地域OSS://安装依赖包 composer require alibabacloud/viapi-utils
<?php
namespace app\api\controller;
use AlibabaCloud\SDK\ViapiUtils\ViapiUtils;
class Viapi {
public function main($argv)
{
$accessKeyId = $argv['accesskeyid'];
$accessKeySecret = $argv['secret'];
$file = $argv['imageUrl'];
$ossUrl = ViapiUtils::upload($accessKeyId, $accessKeySecret, $file);
// 生成的url,可用于调用视觉智能开放平台的能力 return $ossUrl;
}
}
4:在别的控制中引用 use app\api\controller\ViapiUtils
/* * 身份证认证 * */
public function idCardVerify($params)
{
$type = $params['type'];
// 配置信息
$config = config('alyIdCardVerify');
// 调用上传图片
$Viapi = new Viapi();
// 验证身份
$AlyVerify = new AlyVerify();
// 调用AlyVerify的main方法
$argv['accesskeyid']= $config['accesskeyid'];
$argv['secret'] = $config['secret'];
$argv['imageUrl'] = $type == 1 ? $params['id_card_front'] : $params['id_card_back'];
// 验证照片 $card_front = $Viapi->main($argv);
// face:正;back:反
$argv['side'] = $type == 1 ? 'face' : 'back';
$argv['imageUrl'] = $card_front; // 验证 $data = $AlyVerify->main($argv);
if($data['code'] == 201)return['code'=>$data['code'],'msg'=>$data['msg'],'data'=>''];
if($type == 1) {
if($params['id_number'] != $data['data']['IDNumber'])return false;
if($params['username'] != $data['data']['name'])return false;
}
return true;
}