文字识别高精度版(图片)-ThinkPHP5.0

发布时间:2019-01-21 20:59:21 浏览量:1193 标签: thinkphp 图片 工具

api来源:百度AI开放平台-全球领先的人工智能服务平台

api地址:通用文字识别

百度账号注册、登录等请自行研究

一、应用创建

在控制台中(如下图),点击画红框位置,进行应用创建,关于创建自行研究

image.png

二、查看应用

并获取相关信息(API Key和Secret Key)

image.png

三、应用原理

用户向服务请求识别某张图中的所有文字,相对于通用文字识别该产品精度更高,但是识别耗时会稍长。

通过用户上传的图片,调取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');
      }
  }

实例地址:http://www.shenlin.ink/open/wzsb


评论
登录后才可以进行评论哦! QQ登录
验证码
评论内容