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 相关文章推荐
phpfans留言版用到的数据操作类和分页类
Jan 04 PHP
PHP实现下载功能的代码
Sep 29 PHP
PHP数据库万能引擎类adodb配置使用以及实例集锦
Jun 12 PHP
php自动给网址加上链接的方法
Jun 02 PHP
详解PHP中的状态模式编程
Aug 11 PHP
PHP结合jQuery插件ajaxFileUpload实现异步上传文件实例
Aug 17 PHP
YII CLinkPager分页类扩展增加显示共多少页
Jan 29 PHP
非常有用的9个PHP代码片段
Apr 06 PHP
php一个文件搞定微信jssdk配置
Dec 12 PHP
php实现的双色球算法示例
Jun 20 PHP
PHP实现执行外部程序的方法详解
Aug 17 PHP
PHP 7.1中AES加解密方法mcrypt_module_open()的替换方案
Oct 17 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
跟我学Laravel之安装Laravel
2014/10/15 PHP
浅谈PHP实现大流量下抢购方案
2017/12/15 PHP
重定向实现代码
2006/11/20 Javascript
javascript function、指针及内置对象
2009/02/19 Javascript
最常用的12种设计模式小结
2011/08/09 Javascript
引用 js在IE与FF之间的区别详细解析
2013/11/20 Javascript
jQuery中andSelf()方法用法实例
2015/01/08 Javascript
nodejs中使用多线程编程的方法实例
2015/03/24 NodeJs
Bootstrap3 多个模态对话框无法显示的解决方案
2017/02/23 Javascript
详解JS数组Reduce()方法详解及高级技巧
2017/08/18 Javascript
Vue 全局loading组件实例详解
2018/05/29 Javascript
nodejs中实现用户注册路由功能
2019/05/20 NodeJs
解决antd datepicker 获取时间默认少8个小时的问题
2020/10/29 Javascript
python 基础学习第二弹 类属性和实例属性
2012/08/27 Python
python使用正则表达式匹配字符串开头并打印示例
2017/01/11 Python
PyCharm 常用快捷键和设置方法
2017/12/20 Python
Python字典创建 遍历 添加等实用基础操作技巧
2018/09/13 Python
在Django中URL正则表达式匹配的方法
2018/12/20 Python
Python中使用pypdf2合并、分割、加密pdf文件的代码详解
2019/05/21 Python
python常用库之NumPy和sklearn入门
2019/07/11 Python
Python实现蒙特卡洛算法小实验过程详解
2019/07/12 Python
python 实现return返回多个值
2019/11/19 Python
Python3之外部文件调用Django程序操作model等文件实现方式
2020/04/07 Python
python框架flask入门之路由及简单实现方法
2020/06/07 Python
Bobbi Brown芭比波朗美国官网:化妆师专业彩妆保养品品牌
2016/08/18 全球购物
一名女生的自荐信
2013/12/08 职场文书
平面网站制作专科生的自我评价分享
2013/12/11 职场文书
电子技术专业中专生的自我评价
2013/12/17 职场文书
企业消防安全制度
2014/02/02 职场文书
财产保全担保书范文
2014/04/01 职场文书
品牌服务方案
2014/06/03 职场文书
工地质量标语
2014/06/12 职场文书
诚实守信道德模范事迹材料
2014/08/15 职场文书
2015年发展党员工作总结报告
2015/03/31 职场文书
nginx刷新页面出现404解决方案(亲测有效)
2022/03/18 Servers
vue使用wavesurfer.js解决音频可视化播放问题
2022/04/04 Vue.js