图像文字识别(四):java调用tess4j识别图像文字

图像文字识别(四):java调用tess4j识别图像文字

  Tesseract-OCR支持中文识别,并且开源和提供全套的训练工具,是快速低成本开发的首选。前面记录过在java中调用tesseract-orc,该方法的原理是通过在java中调用cmd命令行,来执行tesseract,但是该方式需要下载软件,在电脑上安装环境,移植性不高。

  而Tess4J则是Tesseract在Java PC上的应用。如果使用Tess4J只需要下载相关Jar包,导入项目,再把项目封装好就可以处处运行了,可移植性比较好。Tess4J在英文和数字识别中性能比较好,但是在中文识别中,无论速度还是识别率还是较弱,因此需要针对场景进行训练,才能获得较好结果。

  这篇博客简单记录一下在java中通过调用tess4j的方式识别图片的文字内容。


步骤:

(1)下载tess4j源码包:https://sourceforge.net/projects/tess4j/

tessdata下默认为英语库,中文库下载地址:https://github.com/tesseract-ocr/tessdata/blob/master/chi_sim.traineddata

其他库的下载地址:https://github.com/tesseract-ocr/tessdata

下载完的tess4j资源包目录如下:

图像文字识别(四):java调用tess4j识别图像文字

(2)新建一个java工程:

使用Build Path -> configure build path导入dist目录下的tess4j.jar 和 lib目录下的所有jar包,如下图:

图像文字识别(四):java调用tess4j识别图像文字

如果是maven工程则导入以下maven依赖。

 <dependency>
     <groupId>net.sourceforge.tess4j</groupId>
     <artifactId>tess4j</artifactId>
     <version>3.2.1</version>
 </dependency>

(3)把tessdata文件夹复制到项目的根目录下(与src目录同级),如下图:

如果tessdata目录没有配置到根目录下,就需要在代码中指定datePath。

图像文字识别(四):java调用tess4j识别图像文字


(4)编写测试类:

import java.io.File;
import net.sourceforge.tess4j.ITesseract;
import net.sourceforge.tess4j.Tesseract;
import net.sourceforge.tess4j.TesseractException;

/** 
* 类说明 : tess4j测试类
*/
public class OCRDemo {
   public static void main(String[] args) throws TesseractException {
	   
        ITesseract instance = new Tesseract();
        //如果未将tessdata放在根目录下需要指定绝对路径
        //instance.setDatapath("the absolute path of tessdata");
        
        //如果需要识别英文之外的语种,需要指定识别语种,并且需要将对应的语言包放进项目中
        instance.setLanguage("chi_sim");
        
        // 指定识别图片
        File imgDir = new File("C://Users//1_20180208150251_x4hzz//1.png");
        long startTime = System.currentTimeMillis();
        String ocrResult = instance.doOCR(imgDir);
        
        // 输出识别结果
        System.out.println("OCR Result: \n" + ocrResult + "\n 耗时:" + (System.currentTimeMillis() - startTime) + "ms");
    }
}

(5)图片素材与识别结果:

图像文字识别(四):java调用tess4j识别图像文字

图像文字识别(四):java调用tess4j识别图像文字

可以看到,tess4j在中文识别时,无论速度还是识别率还是较弱,需要针对场景进行训练,才能获得较好结果。



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

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

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

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

(0)


相关推荐

  • cmd切换盘符_cmd分配盘符

    cmd切换盘符_cmd分配盘符cmd切换盘符自己老是忘,每次都要去百度,所幸就记录下:打开cmd的命令行:window+R,输入cmdcmd命令行下怎么切换目录此时默认的地址是C盘cmd命令行下怎么切换目录如果我们要访问D盘,只需要输入D:(不区分大小写)如下图,盘符已经更改cmd命令行下怎么切换目录如果我们要进入一个具体的文件夹,那么继续输入命令。比如我要进入D:\androi…

  • 基于HTTP重定向的GSLB工作流程「建议收藏」

    基于HTTP重定向的GSLB工作流程「建议收藏」1.用户向网站的localdns请求域名解析2.localdns向用户返回GSLB设备的ip地址,如果GSLB系统本身有负载均衡,则返回的IP地址就是自身负载均衡后的某台设备的IP地址3.用户向这台GSLB设备发起GET请求,请求该网站的网页的内容.如果网页上有图片,文字,视频则会发起多个HTTP请求4.GSLB设备将综合分析用户ip,内容分布,设备负载,链路状况等实时…

  • 大数据,云计算和物联网,三者之间的关系是什么?

    大数据,云计算和物联网,三者之间的关系是什么?大数据,云计算,物联网,这些听着耳熟吗?你知道这些新兴产业各自的特点吗?今天,咱们就从最基本的概念着手,给大家科普一下!一、最热门的人工智能目前为止,人类还没能给出统一的定义。但通常来说,凡是使用机器代替人类实现认知、识别、分析、决策等功能,均可认为使用了人工智能技术。如今人工智能商业化正在各个领域中快速推进:记得哦!人工智能主要包括软件及信息技术服务业、计算机、高端制造等行业。二、大数…

  • phpstorm2021.5激活码[在线序列号]

    phpstorm2021.5激活码[在线序列号],https://javaforall.cn/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

  • 中缀表达式转换为后缀表达式(栈的使用)

    中缀表达式如1*2+(2-1), 其运算符一般出现在操作数之间, 因此称为中缀表达式,也就是大家编程中写的表达式。编译系统不考虑表达式的优先级别, 只是对表达式从左到右进行扫描, 当遇到运算符时, 就把其前面的两个操作数取出, 进行操作。为达到上述目的, 就要将中缀表达式进行改写,变为后缀表达式 如上面的表达式1*2+(2-1), 就变为12*21-+;后缀表达式中不含有括号, 且

  • pycharm导入pandas模块_pycharm如何导入python的库

    pycharm导入pandas模块_pycharm如何导入python的库pycharm上安装库(以pandas为例)网上有些反应安装pandas库时会出现问题,提示好像是pip的原因。这时候大概是自己的pip版本太久啦。所以最好先在cmd更新一下pip好了。在cmd输入命令:python-mpipinstall-Upip出现成功信息:Requirementalreadyup-to-date即可。之后打开pycharm1、点击右上角file/se

发表回复

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

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