Thinkphp5+AipOcr 百度ai

在人工智能畅行的时代,你怎么能脱轨。
整理一下百度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

你可能感兴趣的:(Thinkphp5+AipOcr 百度ai)