PHP接入图片文字识别AIP
科技的发展,时代的进步,各大行业的需求,需要一些特殊的功能,图片文字识别就是其中的一个。例如:上传身份证 或者 车牌号 识别里面的信息方法一:使用文字识别的API:第一步:新手接入指南https://ai.baidu.com/ai-doc/REFERENCE/Ck3dwjgn3第二步:接入API文档:https://ai.baidu.com/ai-doc/OCR/zk3h7xz52文字API请求U
科技的发展,时代的进步,各大行业的需求,需要一些特殊的功能,图片文字识别就是其中的一个。
例如:上传身份证 或者 车牌号 识别里面的信息
方法一:使用文字识别的API:
第一步:新手接入指南
https://ai.baidu.com/ai-doc/REFERENCE/Ck3dwjgn3
第二步:接入API
文档:https://ai.baidu.com/ai-doc/OCR/zk3h7xz52
文字API请求URL,它必须要有参数
access_token:
$url = 'https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic?access_token=' . $token;
案例:demo
/**
* 发起http post请求(REST API), 并获取REST请求的结果
* @param string $url
* @param string $param
* @return - http response body if succeeds, else false.
*/
public function request_post($url = '', $param = '')
{
if (empty($url) || empty($param)) {
return false;
}
$postUrl = $url;
$curlPost = $param;
$curl = curl_init();// 初始化curl
curl_setopt($curl, CURLOPT_URL, $postUrl);//抓取指定网页
curl_setopt($curl, CURLOPT_HEADER, 0);//设置header
// 要求结果为字符串且输出到屏幕上
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
* @param ak: ak from baidu cloud app
* @param sk: sk from baidu cloud app
* @return - access_token string if succeeds, else false.
*/
public function access_token(){
//密钥
$ak = '';//你的 Api Key
$sk = '';//你的 Secret Key
//请求地址
$url = 'https://aip.baidubce.com/oauth/2.0/token';
//参数
$post_data = array();
$post_data['grant_type'] = 'client_credentials';
$post_data['client_id'] = $ak;
$post_data['client_secret'] = $sk;
//请求方法
$res = $this->request_post($url, $post_data);
$res = json_decode($res, true);
return $res['access_token'];
}
//演示
public function demo()
{
//获取access_token
$access_token = $this->access_token();
//定义参数并去请求api,注意:“?”前面车牌识别的API,后面是参数
$url = 'https://aip.baidubce.com/rest/2.0/ocr/v1/license_plate?access_token=' . $access_token;
//要识别的图片
$img = file_get_contents('https://ss3.bdstatic.com/70cFv8Sh_Q1YnxGkpoWK1HF6hhy/it/u=1378137177,1265877744&fm=26&gp=0.jpg');
$img = base64_encode($img);
$bodys = array(
"image" => $img
);
$data = $this->request_post($url, $bodys);//解码json数据
//重定义数据,只获取文字
// $arr = array();
// foreach ($data->words_result as $k=>&$v){
// $arr[]=$v->words;
// }
//转换成字符串
echo "<pre>";
print_r($data);
}
注:演示时我使用了车牌识别的API,调用时你要根据需要更改
方法二、使用SDK文字识别
在百度文档里,文字识别有API文档和SDK文档,如果你想使用SDK就直接调用就好,比API方便。
第一步:把SDK放在extend里
第二步:调用SDK已经封装好函数
use baidu\AipOcr;//这里改成namespace和use引入,也可以直接require_once引入
public function demo2(){
$api_id = '你的 App ID';
$api_key = '你的 Api Key';
$secret_key = '你的 Secret Key';
// 初始化,
$aipOcr = new AipOcr($api_id, $api_key, $secret_key);
// 身份证识别
//var_dump($aipOcr->idcard(file_get_contents('idcard.jpg'), true));
// 银行卡识别
//var_dump($aipOcr->bankcard(file_get_contents('bankcard.jpg')));
// 通用文字识别
$rescult = $aipOcr->general(file_get_contents('图片路径'));
$words = $rescult['words_result'];
echo "<pre>";
print_r($words);
}
区别
1、API是一个函数,有其特定的功能;而SDK是一个很多功能函数的集合体,一个工具包。
2、API是数据接口,SDK相当于开发集成工具环境,要在SDK的环境下来调用API。
3、API接口对接过程中需要的环境需要自己提供,SDK不仅提供开发环境,还提供很多API。
4、简单功能调用,API调用方便快捷;复杂功能调用,SDK功能齐全。
更多推荐
所有评论(0)