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 相关文章推荐
类的另类用法--数据的封装
Oct 09 PHP
Ajax PHP简单入门教程代码
Apr 25 PHP
php中$_REQUEST、$_POST、$_GET的区别和联系小结
Nov 23 PHP
php初始化对象和析构函数的简单实例
Mar 11 PHP
php实现水仙花数示例分享
Apr 03 PHP
PHP图片库imagemagick安装方法
Sep 23 PHP
调试PHP程序的多种方法介绍
Nov 06 PHP
PHP判断一个gif图片是否为动态图片的方法
Nov 19 PHP
php简单解析mysqli查询结果的方法(2种方法)
Jun 29 PHP
PHP实现的策略模式简单示例
Aug 25 PHP
php二维码生成以及下载实现
Sep 28 PHP
为Plesk PHP7启用Oracle OCI8扩展方法总结
Mar 29 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+JS三级菜单联动菜单实现方法
2016/02/24 PHP
PHP实现mysqli批量执行多条语句的方法示例
2017/07/22 PHP
Laravel 连接(Join)示例
2019/10/16 PHP
javascript,jquery闭包概念分析
2010/06/19 Javascript
Javascript 倒计时源代码.(时.分.秒) 详细注释版
2011/05/09 Javascript
跨浏览器的事件对象介绍
2012/06/27 Javascript
利用JQuery和Servlet实现跨域提交请求示例分享
2014/02/12 Javascript
父页面显示遮罩层弹出半透明状态的dialog
2014/03/04 Javascript
仿淘宝TAB切换搜索框搜索切换的相关内容
2014/09/21 Javascript
jquery实现简单实用的打分程序实例
2015/07/23 Javascript
Bootstrap carousel轮转图的使用实例详解
2016/05/17 Javascript
BootStrap智能表单实战系列(六)表单编辑页面的数据绑定
2016/06/13 Javascript
JSON字符串和对象相互转换实例分析
2016/06/16 Javascript
学习Bootstrap滚动监听 附调用方法
2016/07/02 Javascript
Vue表单实例代码
2016/09/05 Javascript
jQuery 特性操作详解及实例代码
2016/09/29 Javascript
javascript添加前置0(补零)的几种方法
2017/01/05 Javascript
Vue开发过程中遇到的疑惑知识点总结
2017/01/20 Javascript
提高Web性能的前端优化技巧总结
2017/02/27 Javascript
JavaScript ES6中export、import与export default的用法和区别
2017/03/14 Javascript
详解如何在NodeJS项目中优雅的使用ES6
2017/04/22 NodeJs
jQuery菜单实例(全选,反选,取消)
2017/08/28 jQuery
JS实现验证码倒计时的注册页面
2018/01/02 Javascript
python爬虫实战之爬取京东商城实例教程
2017/04/24 Python
Python内存管理方式和垃圾回收算法解析
2017/11/11 Python
tensorflow输出权重值和偏差的方法
2018/02/10 Python
python解析含有重复key的json方法
2019/01/22 Python
Django框架文件上传与自定义图片上传路径、上传文件名操作分析
2019/05/10 Python
您的健身减肥和健康饮食专家:vitafy
2017/06/06 全球购物
美国汽车轮胎和轮毂销售网站:Tire Rack
2018/01/11 全球购物
Yahoo的PHP面试题
2014/05/26 面试题
Internet体系结构
2014/12/21 面试题
企业申诉管理制度
2014/01/30 职场文书
副职竞争上岗演讲稿
2014/05/12 职场文书
意向书范本
2014/07/29 职场文书
2014年财政局工作总结
2014/12/09 职场文书