在人工智能畅行的时代,你怎么能脱轨。
整理一下百度ai的文字识别。整理来说就是看文档,而且是仔细看文档。
我在做的时候遇到好多坑,还是得API文档与SDK文档结合看啊。
SDK的文档太过简略,好多参数都没说,但是要想实现功能还是得加上某些参数
先申请应用吧,然后申请appid,最后下载SDK
我这里只用到了AipOcr,所以我只把下载下来的AipOcr.php与lib/*复制到vendor目录下
下面的代码为使用的SDK
...
const APP_ID = appid;
const API_KEY = appkey;
const SECRET_KEY = secretkey;
public function index()
{
vendor('baidu.AipOcr');
$client = new \AipOcr(self::APP_ID, self::API_KEY, self::SECRET_KEY);
//身份证
$path = './check/20190517/1.jpg';
$image = file_get_contents($path);
$idCardSide = "front";
var_dump($client->idcard($image, $idCardSide));
}
下面也可以直接使用API来实现
//自己封装一个curl
function curl($url,$postData=[],$headers=[]){
$ch=curl_init();
curl_setopt($ch,CURLOPT_URL,$url); //要访问的地址
curl_setopt($ch,CURLOPT_HEADER,0);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); //执行结果是否被返回,0返,1不返
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,false);
curl_setopt($ch,CURLOPT_HTTPHEADER,$headers);
if($postData){
curl_setopt($ch,CURLOPT_TIMEOUT,60);
curl_setopt($ch,CURLOPT_POST,1);
curl_setopt($ch,CURLOPT_POSTFIELDS,$postData);
}
if(curl_exec($ch)==false){
$data='';
}
else{
$data=curl_multi_getcontent($ch);
}
curl_close($ch);javascript:;
return $data;
}
function request_post($url = '', $param = '')
{
if (empty($url) || empty($param)) {
return false;
}
$postUrl = $url;
$curlPost = $param;
// 初始化curl
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $postUrl);
curl_setopt($curl, CURLOPT_HEADER, 0);
// 要求结果为字符串且输出到屏幕上
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
// post提交方式
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $curlPost);
// 运行curl
$data = curl_exec($curl);
curl_close($curl);
return $data;
}
//使用API需要传递token
public function index()
{
$token=$this->curl("https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=API_KEY&client_secret=SECRET_KEY");
$token=json_decode($token,true);
$token=$token['access_token']; //获取token
$url = 'https://aip.baidubce.com/rest/2.0/ocr/v1/idcard?access_token=' . $token;
$path = './check/20190517/1.jpg';
$image = file_get_contents($path);
$image = base64_encode($image);
$bodys = array(
"image" => $image,
'id_card_side' => 'front'
);
$res = request_post($url, $bodys);
var_dump($res);
}
还是使用SDK代码简洁啊。
再写一个营业执照的demo
...
$path = './check/20190517/e4d71af1add0a286ad33bed7e7f49cd0.jpg';
$image = file_get_contents($path);
$options = array();
$options['detect_direction'] = 'true';
$options['accuracy'] = 'normal';
var_dump($client->businessLicense($image,$options));
大家有什么其他的需求,直接从文档里找。
END