战网无极限 发表于 2020-11-5 21:48

PHP版本文字识别

本帖最后由 战网无极限 于 2020-11-7 09:04 编辑

上午看见这个帖子 https://www.52pojie.cn/thread-1295677-1-1.html
于是我就搞了个php版本的
在线演示 https://new.forwines.cn/ocr

核心源代码在这:https://newapi.lanzoui.com/iwG8Oi3efid
完整源代码:https://newapi.lanzoui.com/if1gYi50l1a
本源码基于ThinkPHP5.0.24框架
一、登录百度AI开放平台创建orc应用选择图像识别→创建应用
https://www.pianshen.com/images/775/fb6248db7f803a8c6d483688eda4ad07.png
创建好的应用:
https://www.pianshen.com/images/314/96fd4f99d68359969528992d9e819692.png
二、下载sdk包我演示的是php的:https://ai.baidu.com/sdk#ocr
https://www.pianshen.com/images/319/eb3ec68f171ff06c82397b3caf5706e7.png
三、tp框架引入sdk包我在最外层新建了一个Ocr下载好的sdk包放入到vendor第三方类库里面:


四、代码实现控制器里:<?php
namespace app\api\controller;
use think\Controller;
use think\Request;

class Ocr
{
    public function index(Request $request)
    {
      header("Content-Type: text/html;charset=utf-8");
      $type = $request->post('Type');
      $ak = '你的apikey';
      $appid = '你的appid';
      $sk = '你的Secret Key';
      vendor('Ocr/AipOcr');
      $api = new \AipOcr($appid,$ak,$sk);
      if($type=='1'){
            $Base = $request->post('Base');
            if(!$Base){
                return json(['code' => 400, 'msg' => 'error', 'data' => '']);
            }
            $options['detect_direction']=true;
            
            $res = $api->basicAccuratenew($Base);
            $num=$res['words_result_num'];
            $text ='';
            for($a=0;$a<$num;$a++){
                $text.=$res['words_result'][$a]['words']."\r\n";
            }
            // dump($res);die;
            return json(["code" => 200, "msg" => "图片识别成功", "data" => $text]);
      }elseif($type=='2'){
            $Base = $request->post('Base');
            if(!$Base){
                return json(['err' => 1, 'msg' => 'error', 'data' => '']);
            }
            $res = $api->handwritingnew($Base);
            $num=$res['words_result_num'];
            $text ='';
            for($a=0;$a<$num;$a++){
                $text.=$res['words_result'][$a]['words']."\r\n";
            }
            // dump($res);die;
            return json(["code" => 200, "msg" => "图片识别成功", "data" => $text]);


      }else{
            return json((["code" => 400, "msg" => "error", "data" => "缺少关键参数"]));
      }
    }
}

第三方类库AipOcr.php做了一些修改
public function basicAccuratenew($image, $options=array()){

      $data = array();

      $data['image'] = $image;//base64_encode($image);因为传递过来就是base64的数据,所以去除base64_encode 并将函数名做了更改

      $data = array_merge($data, $options);

      return $this->request($this->accurateBasicUrl, $data);
    }




战网无极限 发表于 2020-11-5 22:23

刚刚上传的文件application\index\view\ocr\index.html有点问题,无法复制文本,我已经修改了

小飞虫 发表于 2020-12-12 16:17

战网无极限 发表于 2020-12-12 16:14
两个语言都不同,他的是C#,我的是PHP,接口都是调用百度云,我何必调用它的呢

你网站是调用高精度还是标准还是网络图片,你的识别度好像比他的高一点

战网无极限 发表于 2020-12-12 16:14

小飞虫 发表于 2020-12-12 16:05
这是调用百度是api吧,不是http://47.107.226.232;的源码吧?

两个语言都不同,他的是C#,我的是PHP,接口都是调用百度云,我何必调用它的呢

245322788 发表于 2020-11-5 21:55

谢谢您的分享

by、不疼 发表于 2020-11-5 22:33

这个不错。可以放网站上试试了

123456acD 发表于 2020-11-5 23:19

感谢分享

dbb1127 发表于 2020-11-5 23:51

感谢分享

深水夜藏 发表于 2020-11-5 23:58

感谢分享,文章有好多值的学习的地方

moganok 发表于 2020-11-6 11:01

这个不错{:1_893:}

小飞虫 发表于 2020-12-12 16:05

这是调用百度是api吧,不是http://47.107.226.232;的源码吧?
页: [1] 2
查看完整版本: PHP版本文字识别