SpringBoot项目调用百度API 实现文本与图像审核功能

最近在开发一款微信小程序,其中具有发布帖子的功能,因此需要审核发布的文本与图像(不然开发的微信小程序过不了审)。本来是调用微信小程序的API,但效果不稳定,所以尝试用百度API。

官方API文档: https://ai.baidu.com/docs#/QuickStart-ContentCensor/top

具体流程如下:

  1. 准备工作(二选一即可)

    1)添加依赖:${version}可根据官网选择合适的版本

    <dependency><groupId>com.baidu.aip</groupId><artifactId>java-sdk</artifactId><version>${version}</version>
    </dependency>
    

    2)直接下载工具类

    以我的项目为例,导入4.12.0版本的jdk后不知道为什么发现少了FileUtil.java以及HttpUtil.java工具类。如果有出现相同问题的伙伴,可以直接下载相应的工具类并导入项目中。

    工具类下载地址:
    FileUtil:https://ai.baidu.com/file/658A35ABAB2D404FBF903F64D47C1F72
    Base64Util:https://ai.baidu.com/file/C8D81F3301E24D2892968F09AE1AD6E2
    HttpUtil: https://ai.baidu.com/file/544D677F5D4E4F17B4122FBD60DB82B3

    ================更 新 ================
    上面部分链接已失效,工具类可参考这篇博客

  2. 复制官方API文档给出的获取Access Token的代码(选择Java)

    主要功能是获取调用API时必须在URL中带上的access_token参数,具体实现可不管,若感兴趣可深入研究。
    链接:https://ai.baidu.com/ai-doc/REFERENCE/Ck3dwjhhu.
    直接复制粘贴,代码如下:

    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 返回示例:* {* "access_token": "24.460da4889caad24cccdb1fea17221975.2592000.1491995545.282335-1234567",* "expires_in": 2592000* }*/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 - 百度云官网获取的 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 = 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;}
    }
    
  3. 文本图像审核功能代码

    import com.baidu.aip.util.Base64Util;//通过依赖导入的,也可直接下载工具类
    import com.zzh.rescue.util.FileUtil;//直接下载的工具类
    import com.zzh.rescue.util.baiduHttpUtil;//直接下载的工具类(HttpUtil) 因为项目中有同名文件所以换了个名字import java.net.URLEncoder;public class BaiduCensor {//设置APPID/AK/SKpublic static final String APP_ID = "你的应用ID";public static final String API_KEY = "你的AK";public static final String SECRET_KEY = "你的SK";//图像审核public static String ImageCnesor(String filePath) {// 请求urlString url = "https://aip.baidubce.com/rest/2.0/solution/v1/img_censor/user_defined";try {byte[] imgData = FileUtil.readFileByBytes(filePath);String imgStr = Base64Util.encode(imgData);String imgParam = URLEncoder.encode(imgStr, "UTF-8");String param = "image=" + imgParam;//获取accessTokenString accessToken =AuthService.getAuth(API_KEY,SECRET_KEY);String result = baiduHttpUtil.post(url, accessToken, param);//接口说明 https://ai.baidu.com/docs#/ImageCensoring-API/topSystem.out.println(result);return result;} catch (Exception e) {e.printStackTrace();}return null;}//    文本审核public static String TextCensor(String content) {// 请求urlString url = "https://aip.baidubce.com/rest/2.0/antispam/v2/spam";try {String param = "content=" + content;//获取accessTokenString accessToken =AuthService.getAuth(API_KEY,SECRET_KEY);String result = baiduHttpUtil.post(url, accessToken, param);//接口说明 https://ai.baidu.com/ai-doc/ANTIPORN/Rk3h6xb3iSystem.out.println(result);return result;} catch (Exception e) {e.printStackTrace();}return null;}public static void main(String[] args){//本地图片路径String filePath = "G:\\Lenovo\\Pictures\\Camera Roll\\2.jpg";BaiduCensor.ImageCnesor(filePath);
    //        String content="苟利国家生死以";
    //        BaiduCensor.TextCensor(content);}
    }
    
  4. 输出结果
    1)图像审核(参看接口说明)

    {"conclusion":"不合规","log_id":15756455194191999,"data":[{"msg":"存在性感内容","probability":0.995008,"type":2},{"msg":"存在水印码内容","probability":0.93725634,"type":5},{"msg":"存在公众人物","stars":[{"probability":0.90543276,"name":"Romee Strijd"}],"type":11},       {"msg":"恶意推广","probability":0.9189577,"type":9}],"conclusionType":2
    }
    

    2)文本审核(参看接口说明)

    {"log_id": 1225837669966959270,
    "result": {"spam": 2, "review": [{"score": 0.9, "hit": ["苟利国家生死"], "label": 3}],      "reject": [], "pass": [{"score": 0.2, "hit": [], "label": 1}, {"score": 0.028999999165535, "hit": [], "label": 2}, {"score": 0.25995993377483, "hit": [], "label": 4},{"score": 0.037999998778105, "hit": [], "label": 5}]}
    }
    

SpringBoot项目调用百度API 实现文本与图像审核功能相关推荐

  1. Java调用百度API实现文本与图像审核功能

    文档: API文档:https://ai.baidu.com/ai-doc/ANTIPORN/ek3h6x90n SDK下载:https://ai.baidu.com/sdk#anti github链 ...

  2. java实现文本纠错功能_调用百度API进行文本纠错

    毕设做的是文本纠错方面,然后今天进组见研究生导师 .老师对我做的东西蛮感兴趣.然后介绍自己现在做的一些项目,其中有个模块需要有用到文本纠错功能. 要求1:有多人同时在线编辑文档,然后文档功能有类似Wo ...

  3. 调用百度API 对文本进行情感倾向分析(舆情分析)

    @[TOC] # 1.准备工作 1.注册百度账号,登录百度智能云,点击总览选择自然语言处理,创建应用(创建选项认真阅读,填写) 创建好应用会生成相应的AppID API Key  Secret Key ...

  4. 【微信小程序调用百度API实现图像识别功能】----项目实战

    本章主要讲述: 如何更快的上手小程序 如何搭建一个页面以及跳转到另一个页面 如何调用百度API接口实现图像识别技术 如何在微信小程序的后台添加合法域名 私信获取源码,有问题可以关注留言或私信,计算机毕 ...

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

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

  6. 用Python调用OpenAI API进行文本创作

    文章目录 一.前言 二.使用教程 2.1获取API密钥 2.2 连接API 2.3 文本生成 三.创作示例 3.1 诗歌创作 3.2 推荐书单 3.3 超级百度 四.总结 一.前言 本文将教大家用py ...

  7. 调用百度API实现图像风格转换

    目录 1.作者介绍 2.基本概念 2.1 人工智能云服务与百度智能云 2.2 图像风格转换 3.调用百度API实现图像风格转换 3.1 配置百度智能云平台 3.2 环境配置 3.3 完整代码实现 3. ...

  8. java调用百度翻译_Java调用百度API实现翻译-Go语言中文社区

    下面是Java调用百度API实现翻译的具体步骤: 一.在写代码之前先在在百度翻译平台中,申请APP_ID 申请地址申请的详见点击打开链接 申请之后,会得到APP_ID和SECURITY_KEY 二.j ...

  9. 【Python学习笔记】简单调用百度API应用

    #本文一切代码及理论均来自于郑秋生.夏敏捷二位老师主编<Python项目案例发 从入门到实践>一书,本人仅做微改.创作本文的目的仅为总结本人的学习过程和成果,借此巩固.可能存在许多疏漏之处 ...

最新文章

  1. python 文件获取绝对路径
  2. 设计模式-创建型-抽象工厂
  3. VMWare ubuntu虚拟机异常关闭打开报错:该虚拟机似乎正在使用中(下班虚拟机最好关闭,免得又异常关闭导致问题)(千万别在虚拟机下win+L锁屏,解锁后就打不开虚拟机了)
  4. 对话框绘制完成消息_Word小技巧-一分钟教会你快速绘制组织架构图
  5. leetcode 978. Longest Turbulent Subarray | 978. 最长湍流子数组(Java)
  6. Visual Studio 2010中添加App_Code文件夹注意事项
  7. MUI调用原生自定义方法实现计算缓存与清空缓存
  8. MUSICAL CHAIRS【模拟】
  9. win7开启ftp被动模式_FTP服务器在Linux系统上的搭建
  10. 消息称Uber正洽谈出售旗下自动驾驶部门ATG给Aurora
  11. python差分进化算法_差分进化算法(differential evolution)的Python实现
  12. 解决idea工具下tomcat中文乱码问题
  13. 债券属性「久期」的本质是什么?
  14. 三次埃尔米特插值一阶导数的求法
  15. autojs左右滑动脚本代码_Swiper.js实现移动端元素左右滑动
  16. 如何在Ubuntu上方便使用OpenAI API key
  17. amazon开发者申请,pii权限申请
  18. 软件工程课堂作业(十六)——找“1”的个数
  19. [转载]使用JDBC创建数据库对象
  20. 微型计算机shr,shl指令(shr是什么指令)

热门文章

  1. 搜楼网-四大问题,租办公室不得不注意!
  2. Objective-C(十九、通知-消息发送模式之中的一个)——iOS开发基础
  3. C++最小生成树Kruskal算法
  4. 线程安全(互斥 死锁 同步)
  5. 阿里云ecs windows 2008 安装ftp
  6. 魅蓝note6救砖_魅蓝NOTE6刷机解锁救砖解账户锁
  7. mate10无法升级鸿蒙,华为高管辟谣,Mate40下月无法升级鸿蒙,一般用户无法体验...
  8. javaweb JAVA JSP房屋租赁系统jsp房屋租售网站JSP网上租房系统ssm房产信息网站案例
  9. bboss安全认证过滤器认证后重定向到请求页面功能介绍
  10. 工程坐标转换方法C#代码实现