前言 最近比较了几家大的云平台产品,发现百度云的ocr识别,只要通过了企业认证的话,可以每天免费获取一定额度的使用,因此在这里分享下如何使用ocr识别api
目标 可用在实现内部员工系统的快速身份认证,或者部分客户的营业执照和个人认证,注意仅限小量内部使用,如需用在正式环境中建议购买足够的流量包
前置条件 开发环境 PHP 百度云能企业认证
正式内容 百度接口的认证方式 百度的鉴权方式是以Token的方式,具体教程可查看官网API,这里不重复说明了
function getToken 封装下获取Token的方式,避免重复请求次数过于频繁
public function getToken() { $filename = "/data/baidu_access_token.{$this->access_key}.json"; if (file_exists($filename)) { $content = file_get_contents($filename); if ($content) { $json = json_decode($content, 1); if (strtotime($json['expires_in']) > time()) { return $json['access_token']; } } } $resp = json_decode($this->client->request("POST", "https://aip.baidubce.com/oauth/2.0/token", [ 'form_params' => [ 'grant_type' => 'client_credentials', 'client_id' => $this->access_key, 'client_secret' => $this->secret_key, ] ])->getBody()->getContents(), 1); $data = [ 'access_token' => $resp['access_token'], 'expires_in' => date("Y-m-d H:i:s", strtotime("+29 day")), ]; file_put_contents($filename, json_encode($data, JSON_UNESCAPED_UNICODE)); return $resp['access_token']; } private function request($action, $p) { $option = [ 'query' => [ 'access_token' => $this->getToken(), ], ]; if ($this->target == 'face') { $option['json'] = $p; } else { $option['form_params'] = $p; } $resp = $this->client->request("POST", "{$api_url}/{$action}", $option) ->getBody() ->getContents(); return json_decode($resp, true); } 身份证识别 function OcrIdcard 先展示官方文档,文档中可看出ocr的识别支持两种提交方式,图片的base64或者图片url,因此这里稍微封装一下...