基本概念

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 :https://github.com/tesseract-ocr/tesseract

Tess4J项目:https://github.com/nguyenq/tess4j

语言库:https://github.com/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.对称近邻均值滤波

参考:

http://blog.csdn.net/fangbinwei93/article/details/50562449

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

也可在程序中指定:

参考:

http://blog.csdn.net/hellousb2010/article/details/39477859

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

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

参考:

http://blog.csdn.net/white0blue/article/details/47972405

http://blog.csdn.net/tuling_research/article/details/41091163

其他参考

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

参考文章

https://www.jianshu.com/p/ef60ef5395c5

https://www.cnblogs.com/asker009/p/11098220.html

https://blog.csdn.net/qincidong/article/details/82781361

https://blog.csdn.net/zai_xia/article/details/80003778

JAVA——Tess4J简单的图像识别DEMO相关推荐

  1. java图像识别库_Java使用Tess4J 实现简单的图像识别(Maven版)

    一.前言 最近有个朋友需要用Java做一个图像识别的东西,因此帮忙参考了网上资料写了一个基于Tess4J简单版的图像识别demo,供参考. 二.简单实例 1.首先创建一个新的maven项目(创建教程在 ...

  2. java tess4j 示例_Java Tess4J Demo

    [实例简介] Java Tess4J 实现OCR 可运行Demo [实例截图] [核心代码] Java_OCR └── Java_OCR ├── bin │   ├── com │   │   ├── ...

  3. java简单通讯录的实现02person类_用java实现简单的小游戏(你一定玩过)

    用java实现简单的小游戏(你一定玩过) 对于java初学者来说,通过一些学习小游戏来对swing学习以及对java基础的学习是一个好的方法,同时也给学习带来了很多的乐趣,接下来就给大家分享一个jav ...

  4. vue配置文件读取_Vue+Spring Boot简单用户登录Demo实现

    ❝ 「如果觉得文章好看,欢迎点赞.」「同时欢迎关注微信公众号:氷泠之路.」 ❞ 这是一个前后端分离的简单用户登录Demo. 技术栈 Vue BootstrapVue Kotlin Spring Boo ...

  5. 用limit 实现java的简单分页

    https://blog.csdn.net/xinyuezitang/article/details/84324359 用limit 实现java的简单分页 xinyuezitang 2018-11- ...

  6. 基于java的简单英雄联盟胜率计算

    基于java的简单英雄联盟胜率计算 首先声明,楼主是一个LOLer,技术还说的过去.今天下午楼主的同学看到楼主匹配胜率感人,非说楼主是"小学生",非说匹配胜率要50%以上才算不坑, ...

  7. java实现简单扫码登录功能(模仿微信网页版扫码)

    java实现简单扫码登录功能 模仿微信pc网页版扫码登录 使用js代码生成qrcode二维码减轻服务器压力 js循环请求服务端,判断是否qrcode被扫 二维码超时失效功能 二维码被扫成功登录,服务端 ...

  8. Java选择题简单的考试系统

    Java选择题简单的考试系统 做前声明: 此系统包括了Java中:面向对象-封装.String-StringBuilder.ArrayList集合.继承-抽象-final.static-接口-多态.四 ...

  9. java计算胜率_基于java的简单英雄联盟胜率计算

    基于java的简单英雄联盟胜率计算 首先声明,楼主是一个LOLer,技术还说的过去.今天下午楼主的同学看到楼主匹配胜率感人,非说楼主是"小学生",非说匹配胜率要50%以上才算不坑, ...

最新文章

  1. iphone X系列设配屏幕适配
  2. pycharm代码自动补全功能
  3. 细节决定成败--打电话和发邮件的细节
  4. 如何在Python中表示一个对象
  5. Activity到底是什么时候显示到屏幕上的呢
  6. vue依赖缓存_Vue SSR服务端渲染之数据缓存
  7. oracle分区存储过程示例,Oracle 存储过程示例
  8. 【asp.net core 系列】14 .net core 中的IOC
  9. 微软为 Java 开发者推出 VSCode 安装程序
  10. Qt 学习之路 2(84):Repeater
  11. JSP实用教程(第二版)jsp源代码 word 免费
  12. s7-200plc编程及应用_西门子S7200PLC编程应用15个为什么
  13. matlab 排序函数sort()
  14. 一键搞定身份证复印 多功能应用全面满足工作组需求
  15. CPU设计——CPU核解析——cv32e40p
  16. base64 decode java_Java实现Base64编解码
  17. WIN10操作系统解决磁盘文件只读属性问题
  18. vba写的《志愿者排班表》
  19. spring 注解@primary解析
  20. 联想xt92耳机测评

热门文章

  1. 博客园电子月刊[第一期]
  2. Some thoughts on my own O/R Mapping or Code Generation tools
  3. groupby多个字段性能_MySQL今天我们说下分组(group by)
  4. z最大子数组c语言,关于最大子数组问题
  5. 广汽研究院BMS软件工程师_感·创未来 2020广汽科技日有哪些干货?
  6. python 向量元素判断_python;计算向量的元素
  7. 关于点名的简单python编程_如何用python编写一个简易的随机点名软件
  8. android jar 加入图片,Android动态加载外部jar包及jar包中图片等资源文件
  9. Spark的stage划分算法源码分析
  10. 八十六、推荐组件的redux-thunk异步解决方案、Ajax获取推荐数据