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 相关文章推荐
如何取得中文字符串中出现次数最多的子串
Aug 08 PHP
PHP static局部静态变量和全局静态变量总结
Mar 02 PHP
easyui的tabs update正确用法分享
Mar 21 PHP
PHP、Nginx、Apache中禁止网页被iframe引用的方法
Oct 01 PHP
PHP整合七牛实现上传文件
Jul 03 PHP
CentOS下与Apache连接的PHP多版本共存方案实现详解
Dec 19 PHP
Symfony2使用第三方库Upload制作图片上传实例详解
Feb 04 PHP
Symfony2联合查询实现方法
Mar 18 PHP
php将文件夹打包成zip文件的简单实现方法
Oct 04 PHP
php+redis实现商城秒杀功能
Nov 19 PHP
thinkPHP3.2使用RBAC实现权限管理的实现
Aug 27 PHP
解决Laravel blade模板转义html标签的问题
Sep 03 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操作数组的一些函数整理介绍
2011/07/17 PHP
解析PHP中数组元素升序、降序以及重新排序的函数
2013/06/20 PHP
IIS6.0中配置php服务全过程解析
2013/08/07 PHP
简单谈谈PHP vs Node.js
2015/07/17 PHP
Yii2.0 模态弹出框+ajax提交表单
2016/05/22 PHP
JavaScript 面向对象之命名空间
2010/05/04 Javascript
jQuery 表单验证扩展(四)
2010/10/20 Javascript
javascript AOP 实现ajax回调函数使用比较方便
2010/11/20 Javascript
学习并汇集javascript匿名函数
2010/11/25 Javascript
PHP开发者必须掌握的6个关键字
2014/04/14 Javascript
Backbone.js的Hello World程序实例
2015/06/19 Javascript
JQuery datepicker 用法详解
2015/12/25 Javascript
javascript创建对象、对象继承的实用方式详解
2016/03/08 Javascript
js纯数字逐一停止显示效果的实现代码
2016/03/16 Javascript
jQuery实现根据滚动条位置加载相应内容功能
2016/07/18 Javascript
JavaScript中windows.open()、windows.close()方法详解
2016/07/28 Javascript
AngularJS基础 ng-value 指令简单示例
2016/08/03 Javascript
JS中跳出循环的示例代码
2017/09/14 Javascript
浅谈Angular 的变化检测的方法
2018/03/01 Javascript
React 组件间的通信示例
2018/06/14 Javascript
vue-cli3.0使用及部分配置详解
2018/08/29 Javascript
微信公众号开发之微信支付代码记录的实现
2019/10/16 Javascript
python算法学习之桶排序算法实例(分块排序)
2013/12/18 Python
python中的内置函数max()和min()及mas()函数的高级用法
2018/03/29 Python
Python操作mongodb的9个步骤
2018/06/04 Python
Python爬虫包BeautifulSoup异常处理(二)
2018/06/17 Python
Python3 jupyter notebook 服务器搭建过程
2018/11/30 Python
环保公益广告语
2014/03/13 职场文书
洗车工岗位职责
2014/03/15 职场文书
做一个有道德的人活动方案
2014/08/25 职场文书
师德师风剖析材料
2014/09/30 职场文书
2014年班干部工作总结
2014/11/25 职场文书
2015年事业单位工作总结
2015/04/27 职场文书
找规律教学反思
2016/02/23 职场文书
怎样评估创业计划书是否有可行性?
2019/08/07 职场文书
tensorflow学习笔记之tfrecord文件的生成与读取
2021/03/31 Python