1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > JAVA——Tess4J简单的图像识别DEMO

JAVA——Tess4J简单的图像识别DEMO

时间:2024-06-24 05:58:50

相关推荐

JAVA——Tess4J简单的图像识别DEMO

基本概念

Tesseract Open Source OCR Engine:包含一个OCR引擎-libtesseract和一个命令行程序-tesseract。Tesseract 4添加了一个新的基于LSTM的OCR引擎,该引擎专注于行识别,但仍支持Tesseract 3的传统Tesseract OCR引擎,该引擎通过识别字符模式进行工作。通过使用传统OCR引擎模式(--oem 0),可以与Tesseract 3兼容。它还需要训练有素的数据文件来支持旧式引擎,例如tessdata存储库中的文件。

Tess4J:Tesseract OCR API的Java JNA包装器。

Maven

<dependencies><dependency><groupId>net.sourceforge.tess4j</groupId><artifactId>tess4j</artifactId><version>4.4.0</version></dependency></dependencies>

GitHub

Tesseract Open Source OCR Engine :/tesseract-ocr/tesseract

Tess4J项目:/nguyenq/tess4j

语言库:/tesseract-ocr/tessdata/blob/master/eng.traineddata

DEMO

1、首先创建一个新的maven项目,将所需jar包引入pom.xml

2、在任意地方创建一个文件夹tessdata,将下载的chi_sim.traineddata 和 eng.traineddata语言包存放在该目录下,也可以直接存放到自己项目的resources/tessdata目录下。

3、编写代码

// 识别图片的路径(修改为自己的图片路径)String path = "D:\\test.jpg";// 语言库位置(修改为跟自己语言库文件夹的路径)String lagnguagePath = "D:\\tessdata";File file = new File(path);ITesseract instance = new Tesseract();//设置训练库的位置instance.setDatapath(lagnguagePath);//chi_sim :简体中文, eng 根据需求选择语言库instance.setLanguage("eng");String result = null;try {long startTime = System.currentTimeMillis();result = instance.doOCR(file);long endTime = System.currentTimeMillis();System.out.println("Time is:" + (endTime - startTime) + " 毫秒");} catch (TesseractException e) {e.printStackTrace();}System.out.println("result: ");System.out.println(result);

5、可选步骤:配置环境变量(TESSDATA_PREFIX)

环境变量地址指向你存放语言包的文件夹路径,如:我的语言包路径在 D:\tessdata

运行结果

以一张简单的图片为例:图片放置在D:\test.png根目录下,因此使用代码测试前需要修改代码中指定的两个路径!!!

识别图片:

运行代码后:

常见问题

解决chi_sim.traineddata报read_params_file: parameter not found: allow_blob_division

Warning: Invalid resolution 0 dpi. Using 70 instead.

关于tesseract 出错信息:read_params_file: Can't open chi_sim

扩展学习

提高识别率

1.对称近邻均值滤波

参考:

/fangbinwei93/article/details/50562449

2.指定config为digits,并修改tessdata\configs\digits文件,将白名单中设置需要识别的内容。如只需要识别数字,则指定whitelist为0123456789即可。

也可在程序中指定:

参考:

/hellousb/article/details/39477859

3.尽量指定图像的一块区域识别。比如验证码起始位置和结束位置很多空白的,可以去掉,只对验证码区域做识别。

4.训练字库,提升识别率

参考:

/white0blue/article/details/47972405

/tuling_research/article/details/41091163

其他参考

tesseract-ocr参数:http://www.sk-spell.sk.cx/tesseract-ocr-parameters-in-302-version

参考文章

/p/ef60ef5395c5

/asker009/p/11098220.html

/qincidong/article/details/82781361

/zai_xia/article/details/80003778

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。