java 对接百度AI文字识别第三方接口--(api方式以及sdk方式)

article/2025/8/9 23:43:37

平时在工作当中难免会需要对接第三方接口。今天就带领大家来实践一下百度ai的文字识别技术。我使用的是文字识别中名片识别服务,别问为什么,因为是免费的,其他的服务要钱。。。。。。

一:准备工作

  1. 首先需要在百度ai官方网站注册账号
    百度ai官方网站如下:
    https://ai.baidu.com/
  2. 注册完毕之后需要添加一个属于自己的应用
    步骤如下:
    1、选择文字识别
    在这里插入图片描述
    2、点击创建应用,创建一个应用
    3、填写应用名称–> 选择接口(接口会默认自动选择) --> 应用归属选择个人 --> 填写应用描述 --> 点击创建应用在这里插入图片描述
    4、创建完应用之后会在应用列表中看见你刚刚创建的应用。注意你的 appid、api key、 secrte key。在接下来的开发过程当中会用到。
    在这里插入图片描述

二:开发流程(使用api开发)

注:

使用api开发过程当中需要使用刚刚我们创建应用的api key和secret key

1、回到文字识别控制台,也就是刚刚点击创建应用的地方。点击api文档跳转到百度ai的api文档使用教程页面。
在这里插入图片描述
2、注意选择这边有一个api文档和sdk文档。我们现在先使用api文档的方式来开发。
在这里插入图片描述
3、选择api文档 --> 卡证文字识别 – > 名片识别
在这里插入图片描述
4、点击名片识别后我们选择到java代码部分。然后开始编写我们的代码了。(直接将代码copy下来即可)
在这里插入图片描述

5、百度ai的使用方式还需要json的处理依赖。这边我使用的是maven依赖。

<!--         https://mvnrepository.com/artifact/org.json/json 百度ap放开平台使用json --><dependency><groupId>org.json</groupId><artifactId>json</artifactId><version>20160810</version></dependency>

6、代码编写(这边我帮大家把百度ai上的代码直接copy下来了,以及url的token获取方法我也复制下来了。)

package com.aq.baiduai.ai.aip;import com.aq.baiduai.ai.aip.auth.AuthService;
import com.aq.baiduai.ai.utils.Base64Util;
import com.aq.baiduai.ai.utils.FileUtil;
import com.aq.baiduai.ai.utils.HttpUtil;import java.net.URLEncoder;/**
* 名片识别 api 方式调用
*/
public class BusinessCard {/*** 重要提示代码中所需工具类 注意项目当中需要使用的工具类均可以从以下地址下载 注意包的不同下载的工具类都是以baidu规范命名* FileUtil,Base64Util,HttpUtil,GsonUtils请从* https://ai.baidu.com/file/658A35ABAB2D404FBF903F64D47C1F72* https://ai.baidu.com/file/C8D81F3301E24D2892968F09AE1AD6E2* https://ai.baidu.com/file/544D677F5D4E4F17B4122FBD60DB82B3* * 下载*/public static String businessCard() {// 请求urlString url = "https://aip.baidubce.com/rest/2.0/ocr/v1/business_card";try {// 本地文件路径String filePath = "E:\\abutment_port\\card.jpg";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 = AuthService.getAuth();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) {BusinessCard.businessCard();}
}
package com.aq.baiduai.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 返回示例:* {* "access_token": "24.460da4889caad24cccdb1fea17221975.2592000.1491995545.282335-1234567",* "expires_in": 2592000* }*/public static String getAuth() {// 官网获取的 API Key 更新为你注册的String clientId = "";// 官网获取的 Secret Key 更新为你注册的String clientSecret = "";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;}}

7、我在代码中上传的名片如下:个人信息要打马赛克要不然会违规
在这里插入图片描述

8、执行main方法后控制台打印输出结果如下:
在这里插入图片描述
综上,java对接第三方接口文字识别–百度AI(api方式) 的入门到此就结束了。

三:开发流程(使用sdk开发)

注:

使用sdk开发过程当中需要使用刚刚我们创建应用的 appid、api key、secret key

1、上述是演示使用api文档的方式来开发。接下来我们使用sdk的方式来开发。我们这次选择sdk文档。
注:使用sdk更加轻便快捷

sdk方式开发相比于使用api方式减少了工作量以及代码。

在这里插入图片描述
2、选择了sdk文档中 – > java语言快速入门。
3、maven依赖。
注:

api方式需要依赖json处理。sdk也需要。但是sdk的依赖当中包含了json20160810,所以使用sdk的方式就不需要依赖json20160810了

<!--百度ap放开平台使用 sdk  包含了 json20160810 --><dependency><groupId>com.baidu.aip</groupId><artifactId>java-sdk</artifactId><version>4.16.13</version></dependency>

4、编写代码部分

package com.aq.baiduai.ai.sdk;import com.baidu.aip.ocr.AipOcr;
import org.json.JSONObject;import java.util.HashMap;/*** 通过sdk方式 识别名片信息*/
public class Sample {//设置APPID/AK/SK 注意这边相对于api方式开发 需要使用appidpublic static final String APP_ID = "";public static final String API_KEY = "";public static final String SECRET_KEY = "";public static void main(String[] args) {// 初始化一个AipOcrAipOcr client = new AipOcr(APP_ID, API_KEY, SECRET_KEY);// 可选:设置网络连接参数client.setConnectionTimeoutInMillis(2000);client.setSocketTimeoutInMillis(60000);// 可选:设置代理服务器地址, http和socket二选一,或者均不设置
//        client.setHttpProxy("proxy_host", proxy_port);  // 设置http代理
//        client.setSocketProxy("proxy_host", proxy_port);  // 设置socket代理// 可选:设置log4j日志输出格式,若不设置,则使用默认配置// 也可以直接通过jvm启动参数设置此环境变量
//        System.setProperty("aip.log4j.conf", "path/to/your/log4j.properties");// 调用接口String path = "E:\\abutment_port\\card.jpg";JSONObject res = client.basicGeneral(path, new HashMap<String, String>());System.out.println(res.toString(2));}
}

5、跟刚刚一样使用的是同一张名片。执行main方法后控制台打印输出结果如下:
在这里插入图片描述

这个案例了解到第三方接口对接的快速入门,市面大部分的第三方对接都是这套流程。有什么不足的欢迎大家留言补充。


http://chatgpt.dhexx.cn/article/iLexmUrk.shtml

相关文章

视觉设计的字体选择

最近在研究字体问题&#xff0c;因为客户请了一个高大上的传媒公司的一个老外视觉设计师来制作视觉设计标准&#xff0c;其中的中文字体居然定了“方正粗宋”做大标题的字体&#xff0c;雷人效果如下&#xff1a; 对于中国人来讲&#xff0c;这种字体最常见的就是用于大字报和中…

Ai实现毛茸茸的字体

以上是整个操作过程。 1&#xff0c;新建一个尺寸为A4大小的文件&#xff0c;颜色模式为RGB模式。 2&#xff0c;用【文字工具】 写出“COOK”&#xff0c;修改大小和适合的字体类型。 3&#xff0c;选中文字&#xff0c;【对象】--- 【扩展】&#xff0c;在进行将文字拖动到适…

免费插件集-illustrator插件-Ai插件-路径编辑-统一线宽

文章目录 1.介绍2.安装3.通过窗口>扩展>知了插件4.功能解释5.示例6.总结 1.介绍 本文介绍一款免费插件&#xff0c;加强illustrator使用人员工作效率&#xff0c;统一路径线宽。首先从下载网址下载这款插件 https://download.csdn.net/download/m0_67316550/87890501&am…

设计图片字体类型识别项目-fastai

参考github地址&#xff1a;https://github.com/lonngxiang/character-recognition-fastai 创建一个文件放train数据&#xff0c;格式可以参考&#xff0c;数据后续越多越好 用的是jupter book写的&#xff1a; %reload_ext autoreload %autoreload 2 %matplotlib inlinefro…

ai字体混合字体

1、在ai中写出如图所示字体 2、选中红色字体图层&#xff0c;选择工具栏混合工具&#xff0c;快捷键W&#xff0c;选择间距设置步数&#xff0c;点击确定后&#xff0c;点击红色字体&#xff0c;在点击黄色字体&#xff0c;出现效果如下图所示 3、选中红色字体&#xff0c;调出…

前端AI语音方面的实现

前端实现语音识别及判断声音大小和浏览器诵读功能 前言第一章&#xff1a;语音识别一、开始写代码写html和简单的cssjs代码 二、知识点讲解属性介绍&#xff1a;方法介绍&#xff1a;事件介绍 三、兼容性介绍兼容写法 四、实战演习全部代码&#xff1a; 结尾&#xff1a; 第二章…

调用百度ai接口实现图片文字识别详解

调用百度ai接口实现图片文字识别详解 首先先介绍一下这篇博文是干嘛的&#xff0c;为了不浪费大家时间。公司最近和短视频公司合作&#xff0c;需要监控app的截图上的文字是否符合规范&#xff0c;也就是确保其没有违规的文字。到网上找了一些资料发现百度ai提供这个功能&#…

UI界面视觉设计之字体要素--安卓-ios-网页常用字体

怎么设计出从而设计出富有美感和形式感的优秀作品&#xff1f; 1.设计经验的积累。 2. 在每个项目设计中只使用1到2个字体样式&#xff0c;通过对字体大小或颜色来强调重点文案&#xff0c;如图的界面设计中&#xff0c;都是通过字体大小、粗细来区分界面内容中的层级关系。字…

【UI教程】结合PS和AI绘制炫彩2.5D插画

【UI教程】结合PS和AI绘制炫彩2.5D插画 为了此次文章教程,利用下班在家空余时间撸图撸了两个凌晨,原则只做原创精品设计文章,好案例配好文章,希望大家能喜欢,做设计行业文章教程最初目的就是能希望帮助到更多设计师小伙伴,很单纯、很简单 完全免费奉献上我一些能量,我不…

Adobe AI软件解决界面字体过小的方法

转载自&#xff1a;http://www.pc0359.cn/article/jiaocheng/69216.html &#xff0c;图片为本博主自己操作时的截图。 AI是adobe旗下的软件之一&#xff0c;使用过该公司软件的用户应该都有这样的感受&#xff0c;软件功能很强大&#xff0c;可是它的界面字体实在是太小。对于…

视频教程-AI软件与字体设计-Illustrator

AI软件与字体设计 专注提供优质教学内容 CSDN就业班 136.00 立即订阅 扫码下载「CSDN程序员学院APP」&#xff0c;1000技术好课免费看 APP订阅课程&#xff0c;领取优惠&#xff0c;最少立减5元 ↓↓↓ 订阅后&#xff1a;请点击此处观看视频课程 视频教程-AI软件与字体设计…

ai怎么调界面大小_ai软件界面字体特别小 ai菜单栏字体大小怎么改

win8系统装软件,软件那些字体好小,怎么调大,例如PS软件,AI软件里面那些菜单栏字都很小,怎么? 1、桌面空白处单击鼠标右键,选择“屏幕分辨率”; 2、点击“放大或缩小文本和其他项目”; 3、单击屏幕右侧“设置自定义文本大小”; 4、在下拉列表中可以选择默认提供的放大…

ai字体设计(鲜到家)

1、选择合适的字体输入文本内容 2、 选中文字&#xff0c;选择文字菜单&#xff0c;点击创建轮廓&#xff08;将文字转曲&#xff09;&#xff1b;选择倾斜工具&#xff0c;双击后输入角度等参数&#xff0c;确定&#xff0c;用小白工具把鲜字的笔画往下拉一拉&#xff0c;有折…

AI多种设计字体的方法与英文字体收藏

为什么80%的码农都做不了架构师&#xff1f;>>> &#xfeff;&#xfeff;&#xfeff;&#xfeff;&#xfeff;无意间看到了刘兵克的字体改造法&#xff0c;大神&#xff1a;点我。 ZCOOL上有他的字体LOGO专题&#xff0c;感觉比较专业&#xff0c;虽然有些改动并…

【AI】简单的方法教你做一组字体设计

字体设计初级方法交流、学习&#xff0c;喜欢可以分享&#xff0c;下面上设计教程。 首先&#xff0c;你要有一个软件——AI&#xff0c;这一点非常重要&#xff01;&#xff01;切记&#xff01;&#xff01; 然后我们开始设计&#xff0c;这次设计的是工作室出品的一组明信片…

【干货分享】用AI工具设计一款吸引人的字体效果

干货又来啦&#xff01;今天教大家如何使用AI工具设计一款引人注目的字体效果&#xff0c;话不多说&#xff0c;我们直接开始&#xff01; 1、在AI画布中使用钢笔工具勾勒出字母的线条&#xff0c;如图所示 2、使用椭圆工具画一个小的正圆&#xff0c;并填充蓝色渐变。 3、我们…

再续FFT:信号的频谱分析

摘自&#xff1a;http://www.ilovematlab.cn/thread-119939-1-1.html http://www.360doc.com/content/13/1208/18/13670635_335496776.shtml 对于下面这句话该怎么理解&#xff1f; 假设采样频率为Fs&#xff0c;信号频率F&#xff0c;采样点数为N。那么FFT之后结果就是一个为…

实验五 连续信号的频谱分析

目录 一、实验目的二、实验原理1、连续周期信号的傅里叶级数、各次谐波及叠加2、连续周期信号的周期T的变化对频谱的影响3、连续非周期信号的频谱 三、实验内容1、在实验原理1中&#xff0c;绘制加入5次谐波后的波形&#xff0c;根据该仿真图&#xff0c;说明为什么加入5次谐波…

【信号与系统】(十四)傅里叶变换与频域分析——周期信号的频谱及特点

文章目录 周期信号的频谱及特点1 周期信号的频谱2 单边谱和双边谱的关系3 周期信号频谱的特点4 周期信号的功率 周期信号的频谱及特点 频谱——信号的一种新的表示方法 1 周期信号的频谱 频谱&#xff1a;周期信号分解后&#xff0c;各分量的幅度和相位对于频率的变化&#x…

信号频谱和傅氏变换

信号频谱和傅氏变换基本思想&#xff1a; 把一个复杂信号分解成许多简单的正弦信号的叠加,这些正弦信号的频率是已知的&#xff0c;相应的振幅和相位则可由原始信号确定。 周期信号都可以表示成谐波关系的正弦信号的加权和&#xff0c;非周期信号都可以用正弦信号的加权积分来…