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 相关文章推荐
memcached 和 mysql 主从环境下php开发代码详解
May 16 PHP
理解php原理的opcodes(操作码)
Oct 26 PHP
php删除文件夹及其文件夹下所有文件的函数代码
Jan 23 PHP
php 字符串压缩方法比较示例
Jan 23 PHP
PHP实现更新中间关联表数据的两种方法
Sep 01 PHP
微信自定义菜单的处理开发示例
Apr 16 PHP
php判断对象是派生自哪个类的方法
Jun 20 PHP
PHP实现GIF图片验证码
Nov 04 PHP
php正则表达式验证(邮件地址、Url地址、电话号码、邮政编码)
Mar 14 PHP
Symfony2创建基于域名的路由相关示例
Nov 14 PHP
laravel5.4利用163邮箱发送邮件的步骤详解
Sep 22 PHP
PHP rmdir()函数的用法总结
Jul 02 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
使用SMB共享来绕过php远程文件包含的限制执行RFI的利用
2019/05/31 PHP
jquery关于页面焦点的定位(文本框获取焦点时改变样式 )
2010/09/10 Javascript
基于jquery实现图片广告轮换效果代码
2011/07/07 Javascript
JavaScript中创建对象的模式汇总
2016/04/19 Javascript
jQuery绑定事件的四种方式介绍
2016/10/31 Javascript
基于javascript实现按圆形排列DIV元素(二)
2016/12/02 Javascript
jQuery中DOM节点删除之empty与remove
2017/01/20 Javascript
js禁止浏览器页面后退功能的实例(推荐)
2017/09/01 Javascript
springmvc接收jquery提交的数组数据代码分享
2017/10/28 jQuery
vue中的计算属性的使用和vue实例的方法示例
2017/12/04 Javascript
ES6中定义类和对象的方法示例
2019/07/31 Javascript
JavaScript中变量提升机制示例详解
2019/12/27 Javascript
如何通过vscode运行调试javascript代码
2020/07/24 Javascript
跟老齐学Python之重回函数
2014/10/10 Python
Python使用Scrapy爬取妹子图
2015/05/28 Python
python SMTP实现发送带附件电子邮件
2018/05/22 Python
关于python2 csv写入空白行的问题
2018/06/22 Python
python3利用tcp实现文件夹远程传输
2018/07/28 Python
pandas 数据结构之Series的使用方法
2019/06/21 Python
python numpy 矩阵堆叠实例
2020/01/17 Python
pyqt5中动画的使用详解
2020/04/01 Python
python能做哪方面的工作
2020/06/15 Python
python文件操作seek()偏移量,读取指正到指定位置操作
2020/07/05 Python
Python批量获取并保存手机号归属地和运营商的示例
2020/10/09 Python
python之openpyxl模块的安装和基本用法(excel管理)
2021/02/03 Python
纯DOM+CSS3实现简单的小风车动画
2016/09/27 HTML / CSS
销售所有的狗狗产品:Dog.com
2016/10/13 全球购物
实验室标语
2014/06/21 职场文书
医药公司采购员岗位职责
2014/09/12 职场文书
2014年科技工作总结
2014/11/26 职场文书
jquery插件实现图片悬浮
2021/04/16 jQuery
超详细Python解释器新手安装教程
2021/05/10 Python
用Python爬取各大高校并可视化帮弟弟选大学,弟弟直呼牛X
2021/06/11 Python
python自动计算图像数据集的RGB均值
2021/06/18 Python
Python实现GIF动图以及视频卡通化详解
2021/12/06 Python
Windows 64位 安装 mysql 8.0.28 图文教程
2022/04/19 MySQL