立即注册 找回密码

QQ登录

只需一步,快速开始

查看: 198|回复: 1
打印 上一主题 下一主题

laravel 6.0接入百度AI进行图文识别等

[复制链接]

184

主题

438

帖子

3615

积分

论坛元老

积分
3615
本帖最后由 root 于 2019-9-13 18:27 编辑

百度文档:https://ai.baidu.com/docs#/OCR-PHP-SDK/top
过程:安装OCR PHP SDK

OCR PHP SDK目录结构

├── AipOcr.php //OCR└── lib? ?
? ?? ?? ?├── AipHttpClient.php? ?? ???//内部http请求类? ?
? ?? ???├── AipBCEUtil.php? ?? ?? ???//内部工具类? ?
? ?? ???└── AipBase? ?? ?? ?? ?? ?? ?//Aip基类

使用PHP SDK开发骤如下:

1.在官方网站下载php SDK压缩包。

2.将下载的aip-php-sdk-version.zip解压后,复制AipOcr.php以及APP/ocr/lib到工程文件夹中。

3.引入AipOcr.php类,将根目录的composer.json修改,在classmap添加自动加载项:

  1. "app/ocr"
复制代码

在命令行运行:

  1. composer dumpautoload
复制代码

4. 在控制器中,使用new \AipOcr()初始化类,详细代码如下:



  1. namespace App\Admin\Forms;

  2. use Encore\Admin\Widgets\Form;
  3. use Illuminate\Http\Request;
  4. use Illuminate\Support\Facades\DB;
  5. use App\Models\WzsbModel;

  6. class Wzsbupload extends Form
  7. {
  8. ? ? /**
  9. ? ???* The form title.
  10. ? ???*
  11. ? ???* @var string
  12. ? ???*/
  13. ? ? public $title = '文字识别用户页';
  14. ? ? /**
  15. ? ???* Handle the form request.
  16. ? ???*
  17. ? ???* @param Request $request
  18. ? ???*
  19. ? ???* @return \Illuminate\Http\RedirectResponse
  20. ? ???*/
  21. ? ? public function handle(Request $request)
  22. ? ? {
  23. ? ?? ?? ?? ?//获取上传后的表单和文件数据
  24. ? ?? ???$openid = $request->openid;
  25. ? ?? ???$username = $request->username;
  26. ? ?? ???$pictures = $request->pictures;
  27. ? ?? ???//$picjson = json_encode($pictures,JSON_UNESCAPED_UNICODE);
  28. ? ?? ???//dd($picjson);
  29. ? ?? ?? ?? ?//引入百度图文识别SDK
  30. ? ?? ?? ?? ?? ? $options = array();//定位和识别结果数组
  31. ? ?? ?? ?? ?? ? $options["detect_direction"] = "true";//检测朝向
  32. ? ?? ?? ?? ?? ? $client = new \AipOcr('APPID ', 'AK ', 'SK');//你的百度 APPID AK SK
  33. ? ?? ?? ?? ?? ? // 通用文字识别
  34. ? ?? ?? ?? ?? ? $data = ($client->general(file_get_contents($pictures[0]), $options));//识别第一张图片,可考虑循环识别多张图
  35. ? ?? ?? ?? ?? ? //$jsondata = json_encode($data,JSON_UNESCAPED_UNICODE);//转为json格式,给app和小程序使用
  36. ? ?? ?? ?? ?? ? $txtsz = $data['words_result'];//words_result定位和识别结果数组
  37. ? ?? ?? ?? ?? ? $txt = '';//无换行纯文本
  38. ? ?? ?? ?? ?? ? $txtbr = '';//包含换行的纯文本
  39. ? ?? ?? ?? ?? ? foreach($txtsz as $val){
  40. ? ?? ?? ?? ?? ? $txt = $txt.$val['words'];
  41. ? ?? ?? ?? ?? ? $txtbr = $txt.'
    '.$val['words'];
  42. ? ?? ?? ?? ?? ? }
  43. ? ?? ?? ?? ?? ? //dd($txt);
  44. ? ?? ?? ?? ?? ? //写入数据库
  45. ? ?? ?? ?? ?? ? $dbwrite = new WzsbModel;
  46. ? ?? ???$dbwrite->openid = $openid;
  47. ? ?? ???$dbwrite->username = $username;
  48. ? ?? ???$dbwrite->txt = $txt;
  49. ? ?? ???//$dbwrite->pictures = $pictures;
  50. ? ?? ???$dbwrite->save();
  51. ? ?? ?? ?? ?? ?
  52. /**? ?? ?? ?? ?? ? DB::table('wzsb')->insert(
  53. ? ?? ?? ?? ?['openid' => $openid, 'username' => $username, 'txt' => $txt]
  54. ? ?? ?? ?? ?? ? );
  55. **/
  56. ? ?? ???admin_success($txt);

  57. ? ?? ???return back();
  58. ? ? }

  59. ? ? /**
  60. ? ???* Build a form here.
  61. ? ???*/
  62. ? ? public function form()
  63. ? ? {
  64. ? ?? ???//$this->text('openid','openid')->rules('required');
  65. ? ?? ???//$this->text('username','用户昵称')->rules('required');
  66. ? ?? ???$this->multipleImage('pictures', '上传图片');//按住ctrl选择多图上传
  67. ? ?? ???//$this->text('txt', '识别结果');? ?
  68. ? ?? ???//$this->text('beizhu', '备注');
  69. ? ?? ???//$this->datetime('created_at');
  70. ? ? }

  71. ? ? /**
  72. ? ???* The data of the form.
  73. ? ???*
  74. ? ???* @return array $data
  75. ? ???* 默认数据
  76. ? ???*/
  77. ? ? public function data()
  78. ? ? {
  79. ? ?? ???return [
  80. ? ?? ?? ?? ?'openid'? ?? ? => 'openid',
  81. ? ?? ?? ?? ?'username'? ?? ? => '用户昵称',
  82. ? ?? ?? ?? ?'created_at' => now(),
  83. ? ?? ???];
  84. ? ? }
  85. }
复制代码




184

主题

438

帖子

3615

积分

论坛元老

积分
3615
沙发
?楼主| 发表于 2019-10-3 08:36:44 | 只看该作者

laravel引入第三方类的方法0.142018.05.17 10:48:02字数 236阅读 1530


一、首先在项目根目录下app目录中新建一个文件夹命名为Lib(自定义名称)。
二、如果您引入第三方库多的话可以在Lib下再新建几个目录,由于我只引入了一个类,这里没有新建文件夹。(根据引入类的多少自己定义)
三、找到项目根目录下的composer.json文件,可以使用ctrl+f 快速找到"autoload"字样,如下图:
四、将第三方类的路劲写入autoload下的classmap中,这样才能自动加载。
五、但是这样还没完,还需要在cmd控制台中切换到项目根目录,执行命令
六、然后就能在项目中愉快使用第三方类啦,示例:
? ?? ???使用use 类名 使用该类
? ?? ?? ?后面要用的话直接new 类名,调用方法就好了:
https://www.jianshu.com/p/ececd4745b7c


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|Archiver|梦飞文学网 ( 赣ICP备15004458号-1 )???

GMT+8, 2019-10-29 21:38 , Processed in 0.069375 second(s), 25 queries .

Powered by Discuz! X3.4 ? 2001-2013 Comsenz Inc & yjwx

快速回复 返回顶部 返回列表