PHP利用百度ai实现文本和图片审核


Posted in PHP onMay 08, 2019

PHP利用百度ai实现文本和图片审核

之前做平台内容发布审核都是自己构建一套违禁词库,在代码中利用词库判断用户发布的内容,现在可以使用百度ai api完成这个功能。接下来就简单说下怎么做吧:

首先打开百度ai 开发平台 注册一个账号:

PHP利用百度ai实现文本和图片审核

注册账号,进入控制台

PHP利用百度ai实现文本和图片审核

创建自己的应用,获取apikey 和秘钥

PHP利用百度ai实现文本和图片审核

进入文档页 文本审核:

PHP利用百度ai实现文本和图片审核

图像审核:

PHP利用百度ai实现文本和图片审核

文档很详细,实现用户发布内容审核 图片审核还是很方便简单的。我没有使用官方的sdk,简单的整合了一下作为练手,以下是我简单的代码demo:

class Sentive
{
  protected $accessTokenUrl = 'https://aip.baidubce.com/oauth/2.0/token';//获取token url
  protected $textUrl = 'https://aip.baidubce.com/rest/2.0/antispam/v2/spam';//文本审核url
  protected $imgUrl = 'https://aip.baidubce.com/api/v1/solution/direct/img_censor';//图片审核url
  protected $avatarUrl = 'https://aip.baidubce.com/rest/2.0/solution/v1/face_audit';//头像审核url

  protected $grant_type;

  protected $client_id;

  protected $client_secret;

  function __construct()
  {
    $this->grant_type = 'client_credentials';
    $this->client_id = 'xxx';//API Key
    $this->client_secret = 'xxx';//Secret Key
  }

  static function request($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;
  }

  static function request_post($url = '', $param = array(), $type)
  {
    if (empty($url) || empty($param)) {
      return false;
    }

    $postUrl = $url;
    $curlPost = $param;
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, $postUrl);
    curl_setopt($curl, CURLOPT_HEADER, 0);
    // 要求结果为字符串
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    // post方式
    curl_setopt($curl, CURLOPT_POST, 1);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($curl, CURLOPT_POSTFIELDS, $curlPost);
    if ($type == "text") {
      curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/x-www-form-urlencoded'));
    } else {
      curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/json;charset=utf-8'));
    }
    curl_setopt($curl, CURLINFO_HEADER_OUT, true);
    $data = curl_exec($curl);
    $code = curl_getinfo($curl, CURLINFO_HTTP_CODE);

    if ($code === 0) {
      throw new \Exception(curl_error($curl));
    }
    curl_close($curl);
    return $data;
  }

  //获取token
  public function getToken()
  {
    new Redis();
    $post_data['grant_type'] = $this->grant_type;
    $post_data['client_id'] = $this->client_id;
    $post_data['client_secret'] = $this->client_secret;
    $o = "";
    foreach ($post_data as $k => $v) {
      $o .= "$k=" . urlencode($v) . "&";
    }
    $post_data = substr($o, 0, -1);
    $res = self::request($this->accessTokenUrl, $post_data);
    $redis->setkey("filterToken", json_decode($res, true)['access_token']);
    return json_decode($res, true)['access_token'];
  }

  //文本审核
  public function textVerify($data)
  {
    new Redis();
    $token = $redis->get("filterToken");
    if (empty($token)) {
      $token = $this->getToken();
    }
    $curl = $this->textUrl . "?access_token=" . $token;
    $result = self::request_post($curl, $data, "text");
    return json_decode($result, true);
  }

  //图片审核
  public function imgVerify($img)
  {
    $redis = new Redis();
    $token = $redis->get("filterToken");
    if (empty($token)) {
      $token = $this->getToken();
    }
    $curl = $this->imgUrl . "?access_token=" . $token;
    $bodys = array(
      'image' => $img,
      'scenes' => array("ocr",
        "face", "public", "politician", "antiporn", "terror", "webimage", "disgust",
        'watermark')
    );
    $bodys = json_encode($bodys);
    $result = self::request_post($curl, $bodys, "img");
    return json_decode($result, true);
  }


  //头像审核
  public function avatarVerify($img)
  {
    $redis = new Redis();
    $token = $redis->get("filterToken");
    if (empty($token)) {
      $token = $this->getToken();
    }
    $curl = $this->avatarUrl . "?access_token=" . $token;
    $bodys = array(
      "configId" => "1",
      "images" => $img
    );
    $result = self::request_post($curl, $bodys, "text");
    return json_decode($result, true);
  }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
不用数据库的多用户文件自由上传投票系统(3)
Oct 09 PHP
phpwind中的数据库操作类
Jan 02 PHP
php GD绘制24小时柱状图
Jun 28 PHP
php 函数使用方法与函数定义方法
May 09 PHP
PHP explode()函数用法、切分字符串
Oct 03 PHP
phpQuery占用内存过多的处理方法
Nov 13 PHP
thinkphp验证码显示不出来的解决方法
Mar 29 PHP
php的SimpleXML方法读写XML接口文件实例解析
Jun 16 PHP
PHP7.1方括号数组符号多值复制及指定键值赋值用法分析
Sep 26 PHP
PHP基于ORM方式操作MySQL数据库实例
Jun 21 PHP
LNMP部署laravel以及xhprof安装使用教程
Sep 14 PHP
Windows下wamp php单元测试工具PHPUnit安装及生成日志文件配置方法
May 28 PHP
PHP回调函数简单用法示例
May 08 #PHP
Thinkphp5+plupload实现的图片上传功能示例【支持实时预览】
May 08 #PHP
PHP封装类似thinkphp连贯操作数据库Db类与简单应用示例
May 08 #PHP
php封装的pdo数据库操作工具类与用法示例
May 08 #PHP
Laravel框架查询构造器简单示例
May 08 #PHP
Laravel Validator 实现两个或多个字段联合索引唯一
May 08 #PHP
PHP+百度AI OCR文字识别实现了图片的文字识别功能
May 08 #PHP
You might like
使用php批量删除数据库下所有前缀为prefix_的表
2014/06/09 PHP
yii2.0整合阿里云oss上传单个文件的示例
2017/09/19 PHP
利用PHP判断是手机移动端还是PC端访问的函数示例
2017/12/14 PHP
jQuery学习7 操作JavaScript对象和集合的函数
2010/02/07 Javascript
js实现图片漂浮效果的方法
2015/03/02 Javascript
JS基于clipBoard.js插件实现剪切、复制、粘贴
2016/05/03 Javascript
简单了解JavaScript操作XPath的一些基本方法
2016/06/03 Javascript
JavaScript实现刷新不重记的倒计时
2016/08/10 Javascript
详解使用vscode+es6写nodejs服务端调试配置
2017/09/21 NodeJs
JS遍历DOM文档树的方法实例详解
2018/04/03 Javascript
js中getter和setter用法实例分析
2018/08/14 Javascript
Vue-CLI项目中路由传参的方式详解
2019/09/01 Javascript
JavaScript算法学习之冒泡排序和选择排序
2019/11/02 Javascript
vue+element实现图片上传及裁剪功能
2020/06/29 Javascript
vue中是怎样监听数组变化的
2020/10/24 Javascript
Python函数返回值实例分析
2015/06/08 Python
Python单链表简单实现代码
2016/04/27 Python
Python安装Numpy和matplotlib的方法(推荐)
2017/11/02 Python
python2.7实现FTP文件下载功能
2018/04/15 Python
python实现数据导出到excel的示例--普通格式
2018/05/03 Python
pytorch:实现简单的GAN示例(MNIST数据集)
2020/01/10 Python
tensorflow 实现自定义layer并添加到计算图中
2020/02/04 Python
浅谈selenium如何应对网页内容需要鼠标滚动加载的问题
2020/03/14 Python
pytorch使用horovod多gpu训练的实现
2020/09/09 Python
python 偷懒技巧——使用 keyboard 录制键盘事件
2020/09/21 Python
竟聘演讲稿范文
2013/12/31 职场文书
酒店总经理助理职责
2014/02/12 职场文书
祖国在我心中的演讲稿
2014/05/04 职场文书
加强作风建设演讲稿
2014/10/24 职场文书
2014年办公室人员工作总结
2014/12/09 职场文书
追悼会答谢词
2015/01/05 职场文书
听证通知书
2015/04/24 职场文书
党支部意见范文
2015/06/02 职场文书
欠条范文
2015/07/03 职场文书
关爱空巢老人感想
2015/08/11 职场文书
职业规划从高考志愿专业选择开始
2019/08/08 职场文书