如何使用百度AI智能审核

一. 什么是自动审核

针对图像、文本、语音、视频等多媒体内容,提供全方位的审核能力,覆盖涉政、涉黄、涉恐、恶意推广、低质灌水等内容自动鉴别。

以上的功能需要使用到图像识别功能。如果要自己实现是需要花费大量的时间以及人力。我们项目里面可以直接使用第三方提供的功能百度AI 的内容审核功能https://ai.baidu.com/solution/censoring

百度AI的内容审核功能:https://ai.baidu.com/solution/censoring
API文档:https://ai.baidu.com/ai-doc/ANTIPORN/Rk3h6xb3i

ps:需要自自完成注册和创建应用

二. 使用自动审核功能

  1. 第一步:获取 access_token

    package com.baidu.ai.aip.auth;import org.json.JSONObject;
    import java.io.BufferedReader;
    import java.io.InputStreamReader;
    import java.net.HttpURLConnection;
    import java.net.URL;
    import java.util.List;
    import java.util.Map;/*** 获取token类*/
    public class AuthService {/*** 获取权限token* @return 返回示例:* */public static String getAuth() {// 官网获取的 API Key 更新为你注册的String clientId = "百度云应用的AK";// 官网获取的 Secret Key 更新为你注册的String clientSecret = "百度云应用的SK";return getAuth(clientId, clientSecret);}/*** 获取API访问token* 该token有一定的有效期,需要自行管理,当失效时需重新获取.* @param ak - 百度云官网获取的 API Key* @param sk - 百度云官网获取的 Secret Key* @return assess_token 示例:* "24.460da4889caad24cccdb1fea17221975.2592000.1491995545.282335-1234567"*/public static String getAuth(String ak, String sk) {// 获取token地址String authHost = "https://aip.baidubce.com/oauth/2.0/token?";String getAccessTokenUrl = authHost// 1. grant_type为固定参数+ "grant_type=client_credentials"// 2. 官网获取的 API Key+ "&client_id=" + ak// 3. 官网获取的 Secret Key+ "&client_secret=" + sk;try {URL realUrl = new URL(getAccessTokenUrl);// 打开和URL之间的连接HttpURLConnection connection = (HttpURLConnection) realUrl.openConnection();connection.setRequestMethod("GET");connection.connect();// 获取所有响应头字段Map<String, List<String>> map = connection.getHeaderFields();// 遍历所有的响应头字段for (String key : map.keySet()) {System.err.println(key + "--->" + map.get(key));}// 定义 BufferedReader输入流来读取URL的响应BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));String result = "";String line;while ((line = in.readLine()) != null) {result += line;}/*** 返回结果示例*/System.err.println("result:" + result);JSONObject jsonObject = new JSONObject(result);String access_token = jsonObject.getString("access_token");return access_token;} catch (Exception e) {System.err.printf("获取token失败!");e.printStackTrace(System.err);}return null;}
    }
    
  2. 第二步:利用获取的access_token 调用接口

    package com.baidu.ai.aip;import com.baidu.ai.aip.utils.HttpUtil;/**
    * 文本审核接口
    */
    public class TextCensor {/*** 重要提示代码中所需工具类* FileUtil,Base64Util,HttpUtil,GsonUtils请从* https://ai.baidu.com/file/658A35ABAB2D404FBF903F64D47C1F72* https://ai.baidu.com/file/C8D81F3301E24D2892968F09AE1AD6E2* https://ai.baidu.com/file/544D677F5D4E4F17B4122FBD60DB82B3* https://ai.baidu.com/file/470B3ACCA3FE43788B5A963BF0B625F3* 下载*/public static String TextCensor() {// 请求urlString url = "https://aip.baidubce.com/rest/2.0/solution/v1/text_censor/v2/user_defined";try {String param = "text=" + "不要侮辱伟大的乐侃";// 注意这里仅为了简化编码每一次请求都去获取access_token,线上环境access_token有过期时间, 客户端可自行缓存,过期后重新获取。String accessToken = "[调用鉴权接口获取的token]";String result = HttpUtil.post(url, accessToken, param);System.out.println(result);return result;} catch (Exception e) {e.printStackTrace();}return null;}public static void main(String[] args) {TextCensor.TextCensor();}
    }
    
    package com.baidu.ai.aip;import com.baidu.ai.aip.utils.Base64Util;
    import com.baidu.ai.aip.utils.FileUtil;
    import com.baidu.ai.aip.utils.HttpUtil;import java.net.URLEncoder;/**
    * 图像审核接口
    */
    public class ImgCensor {/*** 重要提示代码中所需工具类* FileUtil,Base64Util,HttpUtil,GsonUtils请从* https://ai.baidu.com/file/658A35ABAB2D404FBF903F64D47C1F72* https://ai.baidu.com/file/C8D81F3301E24D2892968F09AE1AD6E2* https://ai.baidu.com/file/544D677F5D4E4F17B4122FBD60DB82B3* https://ai.baidu.com/file/470B3ACCA3FE43788B5A963BF0B625F3* 下载*/public static String ImgCensor() {// 请求urlString url = "https://aip.baidubce.com/rest/2.0/solution/v1/img_censor/v2/user_defined";try {// 本地文件路径String filePath = "[本地文件路径]";byte[] imgData = FileUtil.readFileByBytes(filePath);String imgStr = Base64Util.encode(imgData);String imgParam = URLEncoder.encode(imgStr, "UTF-8");String param = "image=" + imgParam;// 注意这里仅为了简化编码每一次请求都去获取access_token,线上环境access_token有过期时间, 客户端可自行缓存,过期后重新获取。String accessToken = "[调用鉴权接口获取的token]";String result = HttpUtil.post(url, accessToken, param);System.out.println(result);return result;} catch (Exception e) {e.printStackTrace();}return null;}public static void main(String[] args) {ImgCensor.ImgCensor();}
    }
    
  3. 编写自己的工具类

    package io.coderyeah.basic.util;import com.alibaba.fastjson.JSONObject;import java.io.BufferedReader;
    import java.io.InputStreamReader;
    import java.net.HttpURLConnection;
    import java.net.URL;
    import java.net.URLEncoder;
    import java.util.List;
    import java.util.Map;/*** 百度认证工具类:注意要修改API Key 和 Secret Key*/
    public class BaiduAuditUtils {/*** 获取权限token** @return 返回示例:* {* "access_token": "24.3265383f84ac64db9eff781e70587614.2592000.1654844607.282335-26205415",* "expires_in": 2592000* }*/public static String getAuth() {// 官网获取的 API Key 更新为你注册的String clientId = "hNkxSg4Kg4V1DknrquZkLIg6";// 官网获取的 Secret Key 更新为你注册的String clientSecret = "mEwcQpNoVrpHvogxr0q0gZ4cqIyuH3k4";return getAuth(clientId, clientSecret);}/*** 获取API访问token* 该token有一定的有效期,需要自行管理,当失效时需重新获取.** @param ak - 百度云官网获取的 API Key* @param sk - 百度云官网获取的 Securet Key* @return assess_token 示例:* "24.460da4889caad24cccdb1fea17221975.2592000.1491995545.282335-1234567"*/public static String getAuth(String ak, String sk) {// 获取token地址String authHost = "https://aip.baidubce.com/oauth/2.0/token?";String getAccessTokenUrl = authHost// 1. grant_type为固定参数+ "grant_type=client_credentials"// 2. 官网获取的 API Key+ "&client_id=" + ak// 3. 官网获取的 Secret Key+ "&client_secret=" + sk;try {URL realUrl = new URL(getAccessTokenUrl);// 打开和URL之间的连接HttpURLConnection connection = (HttpURLConnection) realUrl.openConnection();connection.setRequestMethod("GET");connection.connect();// 获取所有响应头字段Map<String, List<String>> map = connection.getHeaderFields();// 遍历所有的响应头字段for (String key : map.keySet()) {System.err.println(key + "--->" + map.get(key));}// 定义 BufferedReader输入流来读取URL的响应BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));String result = "";String line;while ((line = in.readLine()) != null) {result += line;}/*** 返回结果示例*/System.err.println("result:" + result);JSONObject jsonObject = JSONObject.parseObject(result);String access_token = jsonObject.getString("access_token");return access_token;} catch (Exception e) {System.err.printf("获取token失败!");e.printStackTrace(System.err);}return null;}public static Boolean TextCensor(String param) {// 请求urlString url = "https://aip.baidubce.com/rest/2.0/solution/v1/text_censor/v2/user_defined";try {// 注意这里仅为了简化编码每一次请求都去获取access_token,线上环境access_token有过期时间, 客户端可自行缓存,过期后重新获取。String accessToken = getAuth();//处理参数格式param = "text=" + param;String result = HttpUtil.post(url, accessToken, param);JSONObject jsonObject = JSONObject.parseObject(result);String conclusion = jsonObject.getString("conclusion");if ("合规".equals(conclusion)) {return true;}} catch (Exception e) {e.printStackTrace();}return false;}/*** @param imageUrl 需要审核的图片路径地址* @return*/public static Boolean ImgCensor(String imageUrl) {// 请求urlString url = "https://aip.baidubce.com/rest/2.0/solution/v1/img_censor/v2/user_defined";try {//图片地址进行编码String imgParam = URLEncoder.encode(imageUrl, "UTF-8");//设置参数String param = "imgUrl=" + imgParam;// 注意这里仅为了简化编码每一次请求都去获取access_token,线上环境access_token有过期时间, 客户端可自行缓存,过期后重新获取。String accessToken = getAuth();String result = HttpUtil.post(url, accessToken, param);JSONObject jsonObject = JSONObject.parseObject(result);String conclusion = jsonObject.getString("conclusion");if ("合规".equals(conclusion)) {return true;}} catch (Exception e) {e.printStackTrace();}return false;}public static void main(String[] args) {System.out.println(BaiduAuditUtils.getAuth());System.out.println(BaiduAuditUtils.TextCensor("操"));//falseSystem.out.println(BaiduAuditUtils.TextCensor("cnm"));//falseSystem.out.println(BaiduAuditUtils.TextCensor("sb"));//falseSystem.out.println(BaiduAuditUtils.TextCensor("牛逼"));//trueSystem.out.println(BaiduAuditUtils.TextCensor("日寇"));//trueSystem.out.println(BaiduAuditUtils.TextCensor("公司"));//true}
    }
    
  4. 依赖的jar

    <!-- 主要用于后端发送http请求-->
    <!-- 后端发送http请求 - 一般用在调用三方接口时会用 -->
    <dependency><groupId>commons-httpclient</groupId><artifactId>commons-httpclient</artifactId><version>3.1</version>
    </dependency><!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
    <!-- 一般调用三方接口响应的都是json字符串,后端可以通过fastjson将json字符串转成json对象获取响应信息 -->
    <dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.58</version>
    </dependency>
    
  5. Http工具类

    package io.coderyeah.basic.util;import java.io.BufferedReader;
    import java.io.DataOutputStream;
    import java.io.InputStreamReader;
    import java.net.HttpURLConnection;
    import java.net.URL;
    import java.util.List;
    import java.util.Map;/*** http 工具类*/
    public class HttpUtil {public static String post(String requestUrl, String accessToken, String params)throws Exception {String contentType = "application/x-www-form-urlencoded";return HttpUtil.post(requestUrl, accessToken, contentType, params);}public static String post(String requestUrl, String accessToken, String contentType, String params)throws Exception {String encoding = "UTF-8";if (requestUrl.contains("nlp")) {encoding = "GBK";}return HttpUtil.post(requestUrl, accessToken, contentType, params, encoding);}public static String post(String requestUrl, String accessToken, String contentType, String params, String encoding)throws Exception {String url = requestUrl + "?access_token=" + accessToken;return HttpUtil.postGeneralUrl(url, contentType, params, encoding);}public static String postGeneralUrl(String generalUrl, String contentType, String params, String encoding)throws Exception {URL url = new URL(generalUrl);// 打开和URL之间的连接HttpURLConnection connection = (HttpURLConnection) url.openConnection();connection.setRequestMethod("POST");// 设置通用的请求属性connection.setRequestProperty("Content-Type", contentType);connection.setRequestProperty("Connection", "Keep-Alive");connection.setUseCaches(false);connection.setDoOutput(true);connection.setDoInput(true);// 得到请求的输出流对象DataOutputStream out = new DataOutputStream(connection.getOutputStream());out.write(params.getBytes(encoding));out.flush();out.close();// 建立实际的连接connection.connect();// 获取所有响应头字段Map<String, List<String>> headers = connection.getHeaderFields();// 遍历所有的响应头字段for (String key : headers.keySet()) {System.err.println(key + "--->" + headers.get(key));}// 定义 BufferedReader输入流来读取URL的响应BufferedReader in = null;in = new BufferedReader(new InputStreamReader(connection.getInputStream(), encoding));String result = "";String getLine;while ((getLine = in.readLine()) != null) {result += getLine;}in.close();System.err.println("result:" + result);return result;}
    }
    
  6. 业务使用

    • 自定义业务异常

      package io.coderyeah.basic.exception;public class BusinessException extends RuntimeException {public BusinessException(String message) {super(message);}public BusinessException() {}
      }
      
    • 代码使用

               // 效验店铺名称是否违法if (!BaiduAuditUtils.TextCensor(shop.getName())) {throw new BusinessException("店铺名称不合法,请重新输入!!!");}// 效验店铺logo是否违法if (!BaiduAuditUtils.ImgCensor("http://123.207.27.208" + shop.getLogo())) {throw new BusinessException("图片不合法,请重新选择!!!");}
      

如何使用百度AI智能审核相关推荐

  1. 百度ai智能写作工具-百度ai自动写文章

    百度AI智能写作工具:让创作更快捷.高效! 在当今竞争激烈的文化创意市场中,创作一篇高质量的文章需要投入大量时间和精力.然而,有了百度AI智能写作工具,创作变得更快捷.高效了. 百度AI智能写作工具采 ...

  2. 智合同丨AI智能审核工具

    智合同AI智能审核工具是全民互联科技(天津)有限公司研发的智合同系列产品中的一项AI智能应用,其基于不同客户应用场景需求,通过NLP.DNN.知识图谱.OCR技术等不同技术,可满足用户的不同场景合同及 ...

  3. 代码写春联【百度AI智能春联Golang版】

    工程结构 ├─cmd // 程序入口 ├─img // 图片 ├─lib // 依赖库 │ └─font │ └─config ├─res // 输出 └─util // 工具 cmd package ...

  4. python实现文本审核_百度AI文本审核API使用说明

    虽然,虽然,虽然,今天: 百度发布了2019年第一季度未经审计的财务报告.本季度百度营收241亿元人民币(约合35.9亿美元),同比增长15%,移除业务拆分收入影响,同比增长21%.低于市场预期242 ...

  5. 百度AI智能小程序正式开放申请

    web前端教程 用大白话,来讲编程 9月25日,百度宣布智能小程序开放申请. 百度作为移动互联网的流量巨头,在宣布推出智能小程序的第一天就被大量开发者看好,很多小程序开发者早已跃跃欲试,就等着开放申请 ...

  6. 百度AI智能工厂解决方案

    今天给大家带来百度AI基于人工智能,提供物流安全.生产线质检.园区管理等场景方案也称智能工厂解决方案.下面我们一起来看具体详情! 产品优势 基于人脸.图像.PaddlePaddle.EasyDL等技术 ...

  7. python智能写作_百度AI智能创作平台(百度ai智能写作)

    人工智能有点意思,感觉超越人类只是时间问题了.小发猫人工智能写作的秘诀是什么?目前,人工智能的创建是基于对大数据的模仿,远非真正的人类创造智能."没有足够的数据来创造人工智能,比如创建歌词让 ...

  8. springboot项目整合百度AI内容审核(文本,图片)

    毕设项目做得差不多了,但功能上基本都是本地完成的,除了有一个支付功能以及图片上传的优化,其他貌似没有用到云的东西,显得过于单调,由于是社区型项目,用户发送文本以及上传图片的频率是十分高的,于是就打算利 ...

  9. 百度AI -智能地址识别 接口使用

    百度最近推出了地址识别,不过python SDK没有更新,只能用请求的方式. 不过,从效果来看,不能返回具体的经纬度,对后续的分析只是文本拆散 + 归类,解析省市区: 可能还不如直接用地图API的地理 ...

最新文章

  1. MMDetection3D:新一代通用3D目标检测平台
  2. (转载)你所知晓的dt.jar
  3. 历经 7 年双 11 实战,阿里巴巴是如何定义云原生混部调度优先级及服务质量的?
  4. 有没有高效的记视频笔记方法?--天若OCR文字识别记视频笔记
  5. 两个tplink路由器有线桥接_tplink和腾达路由器有线桥接设置图解
  6. Qt工作笔记-在界面上输出变量、类、this指针的地址
  7. 【Javascript】深入理解this作用域问题以及new/let/var/const对this作用域的影响
  8. 数据结构之内部排序三
  9. 笨办法学 Python · 续 练习 46:`blog`
  10. 马来西亚 IT 决策者正转向开源来最大化 IT 功能
  11. Jvm(29),理解升级----C语言中的堆和栈的区别 (可以借鉴)
  12. linux怎样安装麒麟双系统,U盘启动中标麒麟V6双系统安装教程
  13. Asp.Net Core 第03局:Startup
  14. R软件本地安装GitHub下载的R包
  15. 异步请求(多种方式)
  16. 微信小程序毕业论文题目_SSM项目考勤签到管理系统+后台管理系统
  17. 松翰单片机--SN8F5702学习笔记(五)PWM
  18. 全球与中国结肠水疗机市场深度研究分析报告
  19. 好消息!!!XMind出视频教程了
  20. 编写js找到一个字符串中指定子字符串的所有位置

热门文章

  1. mPush实战笔记3安装zookeeper
  2. 5th-Generation Mobile Communication Technology(一)
  3. 地图JSON数据下载
  4. 数据归一化 normlization.m 及 Z-score(bsxfun)与mapminmax区分
  5. 软件工程---5.系统建模
  6. python有中文版吗-python有中文版
  7. 计算机网络虚电路数据报,计算机网络——网络层-虚电路和数据报网络
  8. 计网——(数据报与虚电路)
  9. Kali之MSF的MS08-067漏洞复现详解
  10. kubernetes(k8s) 基础理论