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 相关文章推荐
PHP默认安装产生系统漏洞
Oct 09 PHP
FleaPHP的安全设置方法
Sep 15 PHP
php调用方法mssql_fetch_row、mssql_fetch_array、mssql_fetch_assoc和mssql_fetch_objcect读取数据的区别
Aug 08 PHP
基于php socket(fsockopen)的应用实例分析
Jun 02 PHP
js限制checkbox勾选的个数以及php获取多个checkbbox的方法深入解析
Jul 18 PHP
php检测iis环境是否支持htaccess的方法
Feb 18 PHP
详解PHP导入导出CSV文件
Nov 03 PHP
php实现多维数组中每个单元值(数字)翻倍的方法
Feb 16 PHP
Laravel 5框架学习之Eloquent 关系
Apr 09 PHP
PHP中把对象转换为关联数组代码分享
Apr 09 PHP
php获取ip及网址的简单方法(必看)
Apr 01 PHP
PHP基于imagick扩展实现合成图片的两种方法【附imagick扩展下载】
Nov 14 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实现浏览器点击下载TXT文档的方法详解
2013/06/02 PHP
destoon公司主页模板风格的添加方法
2014/06/20 PHP
js中符号转意问题示例探讨
2013/08/19 Javascript
easyui datagrid 键盘上下控制选中行示例
2014/03/31 Javascript
基于jquery固定于顶部的导航响应浏览器滚动条事件
2014/11/02 Javascript
js+css实现tab菜单切换效果的方法
2015/01/20 Javascript
Javascript 高阶函数使用介绍
2015/06/15 Javascript
深入浅析NodeJs并发异步的回调处理
2015/12/21 NodeJs
javascript创建对象、对象继承的实用方式详解
2016/03/08 Javascript
Vue.js每天必学之过渡与动画
2016/09/06 Javascript
利用js定义一个导航条菜单
2017/03/14 Javascript
深入理解requireJS-实现一个简单的模块加载器
2018/01/15 Javascript
element-ui 设置菜单栏展开的方法
2018/08/22 Javascript
vue实现下拉加载其实没那么复杂
2019/08/13 Javascript
Python文件操作,open读写文件,追加文本内容实例
2016/12/14 Python
tensorflow实现图像的裁剪和填充方法
2018/07/27 Python
python 多线程将大文件分开下载后在合并的实例
2018/11/09 Python
python爬虫神器Pyppeteer入门及使用
2019/07/13 Python
python 中不同包 类 方法 之间的调用详解
2020/03/09 Python
关于win10在tensorflow的安装及在pycharm中运行步骤详解
2020/03/16 Python
Python tcp传输代码实例解析
2020/03/18 Python
Python改变对象的字符串显示的方法
2020/08/01 Python
jupyter使用自动补全和切换默认浏览器的方法
2020/11/18 Python
Python列表元素删除和remove()方法详解
2021/01/04 Python
Pandas之缺失数据的实现
2021/01/06 Python
html5 canvas绘制放射性渐变色效果
2018/01/04 HTML / CSS
使用html5实现表格实现标题合并的实例代码
2019/05/13 HTML / CSS
数据库什么时候应该被重组
2012/11/02 面试题
护理专科毕业推荐信
2013/11/10 职场文书
英语自荐信常用语句
2013/12/13 职场文书
优秀驾驶员先进事迹材料
2014/05/04 职场文书
活动总结模板
2014/05/09 职场文书
房地产活动策划方案
2014/05/14 职场文书
缓刑期间思想汇报范文
2014/10/10 职场文书
成品仓管员岗位职责
2015/04/01 职场文书
Python中的datetime包与time包包和模块详情
2022/02/28 Python