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)
blank

相关推荐

发表回复

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

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