文字识别高精度版(图片)-ThinkPHP5.0
api来源:百度AI开放平台-全球领先的人工智能服务平台
api地址:通用文字识别
百度账号注册、登录等请自行研究
一、应用创建
在控制台中(如下图),点击画红框位置,进行应用创建,关于创建自行研究
二、查看应用
并获取相关信息(API Key和Secret Key)
三、应用原理
用户向服务请求识别某张图中的所有文字,相对于通用文字识别该产品精度更高,但是识别耗时会稍长。
通过用户上传的图片,调取api接口,识别图片内容,并返回给用户,需要用户首先获取到access_token
四、实例代码
/**
* 验证码
* @return \think\Response
*/
public function code()
{
$config = [
// 验证码字体大小
'fontSize' => 20,
// 验证码位数
'length' => 4,
// 关闭验证码杂点
'useNoise' => false,
//是否画混淆曲线
'useCurve' => false
];
$captcha = new Captcha($config);
// 设置验证码字符为纯数字
$captcha->codeSet = '23456789';
return $captcha->entry();
}
/**
* 获取access_token
* @return mixed
*/
public function access(){
$url = 'https://aip.baidubce.com/oauth/2.0/token';
$post_data['grant_type'] = 'client_credentials';
$post_data['client_id'] = '******3AU1FFVHPpfhGQV7A54';
$post_data['client_secret'] = '******UoG72vD0URuvwLSPxL7w2i';
$o = "";
foreach ( $post_data as $k => $v )
{
$o.= "$k=" . urlencode( $v ). "&" ;
}
$post_data = substr($o,0,-1);
$res = $this->curlpost($url,$post_data);
$data = json_decode($res,true);
return $data;
}
/**
* curl-post
* @param string $url
* @param string $param
* @return bool|mixed
*/
public function curlpost($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_POST, 1);//post提交方式
curl_setopt($curl, CURLOPT_POSTFIELDS, $curlPost);
$data = curl_exec($curl);//运行curl
curl_close($curl);
return $data;
}
/**
* 图片上传
*/
public function upload(){
// 获取表单上传文件 例如上传了001.jpg
$file = request()->file('pic');
// 移动到框架应用根目录/public/upload/ 目录下
if($file){
$info = $file->move(ROOT_PATH . 'public' . DS . 'upload');
if($info){
// 成功上传后 获取上传信息
return "/upload/".$info->getSaveName();
}else{
// 上传失败获取错误信息
echo $file->getError();
}
}
}
/**
* 文字识别
* @return \think\response\View
*/
public function wzsb()
{
if (request()->isPost()) {
//验证码验证
$userCode = input('post.code');
if(!captcha_check($userCode)){
//验证失败
$this->error("验证码错误");
}
if ($_FILES['pic']['name'] == null) {
$this->error("请上传图片");
} else {
$info = $this->upload();
if (!$info) {
// 上传错误提示错误信息
var_dump($info);
} else {
// 上传成功 获取上传文件信息
$info_pic = $info;
//图片完整url
$info_path = "http://" . $_SERVER['HTTP_HOST'] .$info_pic;
//请求access_token
$data = $this->access();
$access_token = $data['access_token'];
$url = 'https://aip.baidubce.com/rest/2.0/ocr/v1/general?access_token=' . $access_token;
$img = file_get_contents($info_path);
$img = base64_encode($img);
$bodys = array(
"image" => $img
);
$res = $this->curlpost($url, $bodys);
$dataInfo = json_decode($res,true);
$this->assign("dataInfo",$dataInfo);
$this->assign("info",$dataInfo['words_result']);
$this->assign('number',1);
return view('Open/wzsbinfo');
}
}
} else {
return view('Open/wzsb');
}
}