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 相关文章推荐
MySQL授权问题总结
May 06 PHP
php小偷相关截取函数备忘
Nov 28 PHP
PHP数据流应用的一个简单实例
Sep 14 PHP
PHP命名空间(Namespace)简明教程
Jun 11 PHP
thinkphp循环结构用法实例
Nov 24 PHP
CI框架集成Smarty的方法分析
May 17 PHP
PHP对象实例化单例方法
Jan 19 PHP
ThinkPHP中Widget扩展的两种写法及调用方法详解
May 04 PHP
ajax调用返回php接口返回json数据的方法(必看篇)
May 05 PHP
PHP策略模式定义与用法示例
Jul 27 PHP
Laravel5.4框架中视图共享数据的方法详解
Sep 05 PHP
php解析非标准json、非规范json的方式实例
Dec 10 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
为php4加入动态flash文件的生成的支持
2006/10/09 PHP
打造计数器DIY三步曲(上)
2006/10/09 PHP
PHP中error_reporting()函数的用法(修改PHP屏蔽错误)
2011/07/01 PHP
PHP编码转换函数 自动转换字符集支持数组转换
2012/12/16 PHP
php类常量的使用详解
2013/06/08 PHP
thinkPHP中钩子的使用方法实例分析
2017/11/16 PHP
JQuery从头学起第一讲
2010/07/04 Javascript
30分钟就入门的正则表达式基础教程
2013/02/25 Javascript
jQuery遍历Table应用示例
2014/04/09 Javascript
node.js中的socket.io入门实例
2014/04/26 Javascript
jquery使用slideDown实现模块缓慢拉出效果的方法
2015/03/27 Javascript
jQuery带时间的日期控件代码分享
2015/08/26 Javascript
jQuery四种选择器使用及示例
2016/06/05 Javascript
flexslider.js实现移动端轮播
2017/02/05 Javascript
学习使用Bootstrap栅格系统
2017/05/11 Javascript
详解js 创建对象的几种方法
2019/03/08 Javascript
Vue实现开心消消乐游戏算法
2019/10/22 Javascript
jquery 插件重新绑定的处理方法分析
2019/11/23 jQuery
一文读懂vue动态属性数据绑定(v-bind指令)
2020/07/20 Javascript
js实现纯前端压缩图片
2020/11/16 Javascript
[00:34]TI7不朽珍藏III——纯金地穴编织者饰品展示
2017/07/15 DOTA
python 测试实现方法
2008/12/24 Python
Python对象的深拷贝和浅拷贝详解
2014/08/25 Python
简单介绍Python中的RSS处理
2015/04/13 Python
python 数据清洗之数据合并、转换、过滤、排序
2017/02/12 Python
python win32 简单操作方法
2017/05/25 Python
Matplotlib中文乱码的3种解决方案
2018/11/15 Python
Pytorch生成随机数Tensor的方法汇总
2020/09/09 Python
几个CSS3的flex弹性盒模型布局的简单例子演示
2016/05/12 HTML / CSS
HTML5中的websocket实现直播功能
2018/05/21 HTML / CSS
俄罗斯电子产品在线商店:UltraTrade
2020/01/30 全球购物
造型师求职自荐信
2013/09/27 职场文书
大家访活动实施方案
2014/03/10 职场文书
品质口号大全
2014/06/17 职场文书
2015年试用期工作总结范文
2015/05/28 职场文书
GoLang中生成UUID唯一标识的实现
2021/05/08 Golang