关于java实现ocr文字识别功能
关于Java实现ocr文字识别功能
方法一:调用百度云接口实现图片文字识别功能
目录:
一、首先进入百度云,进行注册账户
二、在idea中新建一个maven项目,并且配置pom文件
三、在百度云中申请ocr识别的API Key和Secret Key
四、使用java代码根据API Key和Secret Key进行获取token
五、使用token和图片进行测试接口
步骤:①首先进入百度云,进行注册账户
第一步,注册账户好以后,进入控制台,点击左上角列表信息,然后点击产品服务,然后点击文字识别
②在idea中新建一个maven项目,并且配置pom文件
第一步,创建maven项目
第二部=步,配置pom.xml文件
使用maven依赖:
添加以下依赖即可,其中版本号可在maven官网查询
1 | <dependency> |
③在百度云中申请ocr识别的API Key和Secret Key
首先进行领取免费资源,然后进行创建应用,通过代码进行通用服务
如何创建应用?
然后点击创建应用即可,进入里面以后给应用起一个名字,然后直接创建,创建完成以后会给你一个信息。
在这里我们就获取到了API Key和Secret Key。
④使用java代码根据API Key和Secret Key进行获取token
第一步,创建工具Base64Util类,FileUtil类,HttpUtil类
Base64Util类,代码如下:
1 | package com.baidu.ai.aip.utils; |
FileUtil类,代码如下:
1 | package com.baidu.ai.aip.utils; |
HttpUtil类,代码如下:
1 | package com.baidu.ai.aip.utils; |
第二步,创建AuthService类通过API Key和Secret Key进行获取token
在这里只需要填写API Key和Secret Key即可。
代码如下:
1 | package com.baidu.ai.aip.utils; |
⑤使用token和图片进行测试接口
获取好token以后,进行代码测试图片用例。
编写AccurateBasic测试类。
在这里只需要填写图片路径,和token即可。
代码如下:
1 | package com.baidu.ai.aip; |
到此,测试用例已全部完成。
返回参数说明
字段 | 是否必选 | 类型 | 说明 |
---|---|---|---|
direction | 否 | int32 | 图像方向,当 detect_direction=true 时返回该字段。 - - 1:未定义, - 0:正向, - 1:逆时针90度, - 2:逆时针180度, - 3:逆时针270度 |
log_id | 是 | uint64 | 唯一的log id,用于问题定位 |
words_result_num | 是 | uint32 | 识别结果数,表示words_result的元素个数 |
words_result | 是 | array[] | 识别结果数组 |
+ words | 否 | string | 识别结果字符串 |
+ probability | 否 | object | 识别结果中每一行的置信度值,包含average:行置信度平均值,variance:行置信度方差,min:行置信度最小值,当 probability=true 时返回该字段 |
paragraphs_result | 否 | array[] | 段落检测结果,当 paragraph=true 时返回该字段 |
+ words_result_idx | 否 | array[] | 一个段落包含的行序号,当 paragraph=true 时返回该字段 |
language | 否 | int32 | 当 detect_language=true 时返回该字段 |
pdf_file_size | 否 | string | 传入PDF文件的总页数,当 pdf_file 参数有效时返回该字段 |
返回示例
1 | { |
测试用例
如:识别下图
测试结果:
方法二,使用tesseract库来实现ocr文字识别
1.tesseract简介:
****Tesseract****,一款由HP实验室开发由Google维护的开源OCR(Optical Character Recognition , 光学字符识别)库,目前由谷歌赞助,它可以通过训练识别出任何字体,我们可以不断的训练的库,使图像转换文本的能力不断增强;
2.tesseract的安装:
下载地址:https://digi.bib.uni-mannheim.de/tesseract/,带有dev的表示开发版本,相对稳定,在这里我们选择的是
同时需要把chi_sim 中文语言包加入到tessdate文件下
3.坏境变量的配置:
①为了在全局使用方便,比如安装路径为:D:\ocr\Tesseract-OCR,将该路径添加到环境变量的path中。
②路径:高级系统设置——>环境变量——>系统变量中path路径——>将D:\ocr\Tesseract-OCR添加进去。
③配置完成后在cmd中输入tesseract -v,如果出现如下图所示,说明环境变量配置成功。
④同时在环境变量中直接加入TESSDATA_PREFIX,路径填写例如:D:\ocr\Tesseract-OCR\tessdate
4.java代码编写
①首先编写OCRHelper工具类
1 | /** |
②然后开始编写测试类
1 | ![2](D:\Users\作业\知识点\图片\2.png)/** |
测试用例:
测试结果:
对比:第一种采用百度云接口,识别率相对比较高,但是使用次数有限制
第二种采用tesseract外部库,初始化的中文识别率不是很高,需要加多训练进行提高准确率。