利用PHP和百度ai实现文本以及图片的审核
步骤:
首先打开百度ai 开发平台 注册一个账号:
注册账号,进入控制台
创建自己的应用,获取apikey 和秘钥
进入文档页 文本审核:
图像审核:
代码实例:
1 class Sentive 2 3 { 4 5 protected $accessTokenUrl = 'https://aip.baidubce.com/oauth/2.0/token';//获取token url 6 7 protected $textUrl = 'https://aip.baidubce.com/rest/2.0/antispam/v2/spam';//文本审核url 8 9 protected $imgUrl = 'https://aip.baidubce.com/api/v1/solution/direct/img_censor';//图片审核url 10 11 protected $avatarUrl = 'https://aip.baidubce.com/rest/2.0/solution/v1/face_audit';//头像审核url 12 13 protected $grant_type; 14 15 protected $client_id; 16 17 protected $client_secret; 18 19 function __construct() 20 21 { 22 23 $this->grant_type = 'client_credentials'; 24 25 $this->client_id = 'xxx';//API Key 26 27 $this->client_secret = 'xxx';//Secret Key 28 29 } 30 31 static function request($url = '', $param = '') 32 33 { 34 35 if (empty($url) || empty($param)) { 36 37 return false; 38 39 } 40 41 $postUrl = $url; 42 43 $curlPost = $param; 44 45 $curl = curl_init();//初始化curl 46 47 curl_setopt($curl, CURLOPT_URL, $postUrl);//抓取指定网页 48 49 curl_setopt($curl, CURLOPT_HEADER, 0);//设置header 50 51 curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);//要求结果为字符串且输出到屏幕上 52 53 curl_setopt($curl, CURLOPT_POST, 1);//post提交方式 54 55 curl_setopt($curl, CURLOPT_POSTFIELDS, $curlPost); 56 57 $data = curl_exec($curl);//运行curl 58 59 curl_close($curl); 60 61 return $data; 62 63 } 64 65 static function request_post($url = '', $param = array(), $type) 66 67 { 68 69 if (empty($url) || empty($param)) { 70 71 return false; 72 73 } 74 75 $postUrl = $url; 76 77 $curlPost = $param; 78 79 $curl = curl_init(); 80 81 curl_setopt($curl, CURLOPT_URL, $postUrl); 82 83 curl_setopt($curl, CURLOPT_HEADER, 0); 84 85 // 要求结果为字符串 86 87 curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 88 89 // post方式 90 91 curl_setopt($curl, CURLOPT_POST, 1); 92 93 curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); 94 95 curl_setopt($curl, CURLOPT_POSTFIELDS, $curlPost); 96 97 if ($type == "text") { 98 99 curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/x-www-form-urlencoded')); 100 101 } else { 102 103 curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/json;charset=utf-8')); 104 105 } 106 107 curl_setopt($curl, CURLINFO_HEADER_OUT, true); 108 109 $data = curl_exec($curl); 110 111 $code = curl_getinfo($curl, CURLINFO_HTTP_CODE); 112 113 if ($code === 0) { 114 115 throw new \Exception(curl_error($curl)); 116 117 } 118 119 curl_close($curl); 120 121 return $data; 122 123 } 124 125 //获取token 126 127 public function getToken() 128 129 { 130 131 new Redis(); 132 133 $post_data['grant_type'] = $this->grant_type; 134 135 $post_data['client_id'] = $this->client_id; 136 137 $post_data['client_secret'] = $this->client_secret; 138 139 $o = ""; 140 141 foreach ($post_data as $k => $v) { 142 143 $o .= "$k=" . urlencode($v) . "&"; 144 145 } 146 147 $post_data = substr($o, 0, -1); 148 149 $res = self::request($this->accessTokenUrl, $post_data); 150 151 $redis->setkey("filterToken", json_decode($res, true)['access_token']); 152 153 return json_decode($res, true)['access_token']; 154 155 } 156 157 //文本审核 158 159 public function textVerify($data) 160 161 { 162 163 new Redis(); 164 165 $token = $redis->get("filterToken"); 166 167 if (empty($token)) { 168 169 $token = $this->getToken(); 170 171 } 172 173 $curl = $this->textUrl . "?access_token=" . $token; 174 175 $result = self::request_post($curl, $data, "text"); 176 177 return json_decode($result, true); 178 179 } 180 181 //图片审核 182 183 public function imgVerify($img) 184 185 { 186 187 $redis = new Redis(); 188 189 $token = $redis->get("filterToken"); 190 191 if (empty($token)) { 192 193 $token = $this->getToken(); 194 195 } 196 197 $curl = $this->imgUrl . "?access_token=" . $token; 198 199 $bodys = array( 200 201 'image' => $img, 202 203 'scenes' => array("ocr", 204 205 "face", "public", "politician", "antiporn", "terror", "webimage", "disgust", 206 207 'watermark') 208 209 ); 210 211 $bodys = json_encode($bodys); 212 213 $result = self::request_post($curl, $bodys, "img"); 214 215 return json_decode($result, true); 216 217 } 218 219 //头像审核 220 221 public function avatarVerify($img) 222 223 { 224 225 $redis = new Redis(); 226 227 $token = $redis->get("filterToken"); 228 229 if (empty($token)) { 230 231 $token = $this->getToken(); 232 233 } 234 235 $curl = $this->avatarUrl . "?access_token=" . $token; 236 237 $bodys = array( 238 239 "configId" => "1", 240 241 "images" => $img 242 243 ); 244 245 $result = self::request_post($curl, $bodys, "text"); 246 247 return json_decode($result, true); 248 249 } 250 251 }