Java基于百度API的图⽚⽂字识别免费源码和jar包
1.准备⼯作(jdk1.8)
使⽤之前需要获取对应的项⽬API_KEY,SECRET_KEY,这些参数在使⽤API的时候必须⽤到,⽤于⽣成access_token.
如何获取这些参数?
登陆后创建⼀个应⽤
点击创建应⽤,填⼊对应的信息.点击应⽤列表就可以得到API_KEY,SECRET_KEY了
2.下载java的SDK,并将jar包引⼊项⽬
预览:
;
2
edReader;
treamReader;
LConnection;
;
;
;
9
ject;
11
12/**
13*
14*@authorcsh
15*
16*获取token类
17*/
18publicclassAuthService{
19
20/**
21*获取权限token
22*@return返回token
23*/
24
25publicstaticStringgetAuth(){
26//官⽹获取的APIKey更新为你注册的
27StringclientId="frNrube3CEybwGiXUOgrYH23";
28//官⽹获取的SecretKey更新为你注册的
29StringclientSecret="05He2i4heaL21TgPbQeqWrt3u8Qh4RCl";
30returngetAuth(clientId,clientSecret);
31}
32
33/**
34*获取API访问token该token有⼀定的有效期,需要⾃⾏管理,当失效时需重新获取.
35*
36*@paramak-百度云官⽹获取的APIKey
37*@paramsk-百度云官⽹获取的SecuretKey
38*/
39publicstaticStringgetAuth(Stringak,Stringsk){
40//获取token地址
41StringauthHost="/oauth/2.0/token?";
42StringgetAccessTokenUrl=authHost
43//_type为固定参数
44+"grant_type=client_credentials"
45//2.官⽹获取的APIKey
46+"&client_id="+ak
47//3.官⽹获取的SecretKey
48+"&client_cret="+sk;
49try{
50URLrealUrl=newURL(getAccessTokenUrl);
51//打开和URL之间的连接
52HttpURLConnectionconnection=(HttpURLConnection)nnection();
uestMethod("GET");
t();
55//获取所有响应头字段
56Map
57//遍历所有的响应头字段
58for(Stringkey:()){
n(key+"--->"+(key));
60}
61//定义BufferedReader输⼊流来读取URL的响应
62BufferedReaderin=newBufferedReader(newInputStreamReader(utStream()));
63Stringresult="";
64Stringline;
65while((line=ne())!=null){
66result+=line;
67}
68/**
69*返回结果⽰例
70*/
n("result:"+result);
72JSONObjectjsonObject=newJSONObject(result);
73Stringaccess_token=ing("access_token");
74returnaccess_token;
75}catch(Exceptione){
("获取token失败!");
tackTrace();
78}
79returnnull;
80}
81}
ViewCode
;
2
64Encoder;
4
putStream;
ption;
tream;
oder;
9
10/**
11*
12*@authorcsh
13*
14*/
15publicclassBaImg64{
16
17/**
18*将⼀张本地图⽚转化成Ba64字符串
19*/
20publicstaticStringgetImageStrFromPath(StringimgPath){
21InputStreamin;
22byte[]data=null;
23//读取图⽚字节数组
24try{
25in=newFileInputStream(imgPath);
26data=newbyte[ble()];
(data);
();
29}catch(IOExceptione){
tackTrace();
31}
32//对字节数组Ba64编码
33BASE64Encoderencoder=newBASE64Encoder();
34//返回Ba64编码过再URLEncode的字节数组字符串
((data));
36}
37}
ViewCode
;
2
;
ption;
;
taxException;
7
spon;
ient;
st;
Entity;
tHttpClient;
Utils;
14/**
15*
16*@authorcsh
17*图像⽂字识别
18*/
19publicclassCheck{
20
21privatestaticfinalStringPOST_URL="/rest/2.0/ocr/v1/general_basic?access_token="+h();
22
23/**
24*识别本地图⽚的⽂字
25*/
26publicstaticStringcheckFile(Stringpath)throwsURISyntaxException,IOException{
27Filefile=newFile(path);
28if(!()){
29thrownewNullPointerException("图⽚不存在");
30}
31Stringimage=geStrFromPath(path);
32Stringparam="image="+image;
33returnpost(param);
34}
35
36/**
37*图⽚url
38*识别结果,为json格式
39*/
40publicstaticStringcheckUrl(Stringurl)throwsIOException,URISyntaxException{
41Stringparam="url="+url;
42returnpost(param);
43}
44
45/**
46*通过传递参数:url和image进⾏⽂字识别
47*/
48privatestaticStringpost(Stringparam)throwsURISyntaxException,IOException{
49//开始搭建post请求
50HttpClienthttpClient=newDefaultHttpClient();
51HttpPostpost=newHttpPost();
52URIurl=newURI(POST_URL);
(url);
54
55//设置请求头,请求头必须为application/x-www-form-urlencoded,因为是传递⼀个很长的字符串,不能分段发送
der("Content-Type","application/x-www-form-urlencoded");
57StringEntityentity=newStringEntity(param);
ity(entity);
59HttpResponrespon=e(post);
n(ng());
61if(tusLine().getStatusCode()==200){
62Stringstr;
63try{
64//读取服务器返回过来的json字符串数据
65str=ng(ity());
66//很重要,主要是解决返回中⽂的编码格式。
67str=newString(es("ISO-8859-1"),"UTF-8");
n(str);
69returnstr;
70}catch(Exceptione){
tackTrace();
72returnnull;
73}
74}
75returnnull;
76}
77
78/**
79*执⾏⽅法
80*@paramargs
81*/
82publicstaticvoidmain(String[]args){
83//图⽚路径
84Stringpath="E:";
85
86try{
87longnow=tTimeMillis();
88checkFile(path);
n("耗时:"+(tTimeMillis()-now)/1000+"s");
90}catch(URISyntaxException|IOExceptione){
tackTrace();
92}
93}
94}
ViewCode
5.实现结果
实验图⽚:
实验结果:
{
"log_id":61645554,
"words_result_num":14,
"words_result":[{
"words":"实时热点"
},{
"words":"换⼀换"
},{
"words":"端⽕锅泼妻⼦同学默克尔呼吸急促"
},{
"words":"⾼楼坠⼑嫌疑⼈"
},{
"words":"常州奔驰连撞多车"
},{
"words":"菲律宾打击性骚扰新张扣扣被执⾏死刑"
},{
"words":"王思聪股权被冻结章莹颖案结案陈词"
},{
"words":"荷兰弟恋情晛光"
},{
"words":"孙杨暴⼒抗检听证"
},{
"words":"强⽣爽⾝粉致癌案"
},{
"words":"脑机接⼝系统"
},{
"words":"个⼈破产制度试点⾛98800步遭质疑新"
},{
"words":"007主⾓变成⿊⼈"
},{
"words":"华为申请专利"
}]
}
实验总结:百度的图⽚⽂字APi还是挺厉害的,⽐te4j厉害多了。但是有次数限制个⼈免费“5000次/⼈/天”。不过学习起来还是可以的。如有不⾜之处请各位⼤
佬指点!
本文发布于:2023-03-09 06:49:21,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/1678315762191335.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:百度图片识别.doc
本文 PDF 下载地址:百度图片识别.pdf
留言与评论(共有 0 条评论) |