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

JAVA——Tess4J简单的图像识别DEMO基本概念TesseractOpenSourceOCREngine:包含一个OCR引擎-libtesseract和一个命令行程序-tesseract。Tesseract4添加了一个新的基于LSTM的OCR引擎,该引擎专注于行识别,但仍支持Tesseract3的传统TesseractOCR引擎,该引擎通过识别字符模式进行工作。通过使用传统OCR引擎模式(–oem0),可以与Tesseract3兼容。它还需要训练有素的数据文件来支持旧式引擎,例如tessdata存储库中的文件。…

大家好,又见面了,我是你们的朋友全栈君。

基本概念

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

Tess4JTesseract 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目录下。

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

 

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

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

 

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

 

运行结果

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

识别图片:

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

运行代码后:

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

常见问题 

解决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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/135530.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • win10环境下不通过cppan编译tesseract4.1动态库[通俗易懂]

    win10环境下不通过cppan编译tesseract4.1动态库[通俗易懂]在我的博客中,写了几篇关于tesseract如何编译Windows环境下的dll库,但那几篇都是基于cppan的环境依赖,而cppan的官方网站在2021年1月已经正式关闭了,因此那种方式将无法下载到对应的依赖环境,根据tesseract官方文档是使用SW的方式进行依赖下载,因此这篇博客将讲解使用基于SW的编译方式。1SW的环境配置在SW官方地址上下载sw.exe。将下载的sw.exe所在路径添加到系统环境变量PATH下。以管理员权限打开cmd,输入命令:swsetup这个命令主要是在用

  • m3u8手机批量转码_M3U8批量转换app-M3U8批量转换MP4软件下载v1.0 安卓版-西西软件下载…

    M3U8批量转换MP4软件,一个简单高效的M3U8转MP4格式软件,支持一键批量转换,在安卓手机上进行操作,传输或者下载的M3U8格式视频文件一般无法打开浏览,直接在这里进行转换,可选择转换后删除源文件,直接获取到可以正常观看的MP4格式文件。本次放出M3U8批量转换app安卓版下载,想要一款批量格式转换工具的朋友们不妨试试吧!M3U8批量转换app介绍可将m3u8格式的AppleHLS加密视频…

  • LOJ10049_基金012498

    LOJ10049_基金012498LOJ10049Trie裸题(虽然我写这SB题写了快一小时)对字符串建树的同时刷答案,有两种情况:经过了一个字符串的词尾(即过了一个标记点)一直在另一个字符串里走(没有让树长出新枝)#include&lt;bits/stdc++.h&gt;#definegt()(p1==p2&amp;&amp;(p2=(p1=buf)+fread(buf,1,1000000,std…

  • python中的单引号和双引号的区别和用法_python中打印输出的语句

    python中的单引号和双引号的区别和用法_python中打印输出的语句python中的单引号和双引号的区别今天在码代码的过程中突然想到这个问题,于是上网浏览了一下,发现在python中两种表达方式是没有区别的,两种表达方式都可以用来表达一个字符串。但是这两种通用的表达方式,除了可以简化大家的开发,避免出错以外,还有一种好处,就是可以减转义字符的使用,使程序看起来更加简洁,更清晰。所以这里简单给大家分享一下,并举例说明。1.包含单引号的字符串假如我们想定义一个字符串my_str,其值为:I’mastudent,则可采用如下两种方式,通过转义字符“\”进行定义my_s

    2022年10月31日
  • 全新安装Mac OSX 开发者环境 同时使用homebrew搭建 (LNMP开发环境)

    全新安装Mac OSX 开发者环境 同时使用homebrew搭建 (LNMP开发环境)

  • MySQL二进制日志格式类型详解「建议收藏」

    MySQL二进制日志格式类型详解「建议收藏」mysql很多有类型的日志,按照组件划分的话,可以分为服务层日志和存储引擎层日志:-服务层日志:二进制日志、慢查日志、通用日志-存储引擎层日志:innodb(重做日志、回滚日志)其中比较重要的就是服务器层的二进制日志,其中记录了所有对mysql数据库的修改事件,包括增删改查事件和对表结构的修改事件。要注意的一点是,只有成功执行了的事件才会记录在二进制日志中,未执行成功的不会保存

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号