Java 使用 Tess4J 实现图像识别

Java 使用 Tess4J 实现图像识别最近需要用Java做一个图像识别的东西,查了一些资料,在此写一个基于Tess4J的教程,方便其他人参考和使用。其实做图像识别,也可以使用TESSERACT-OCR来实现,但是该方式需要下载软件,在电脑上安装环境,移植性不高,使用Tess4J只需要下载相关Jar包,导入项目,再把项目封装好就可以处处运行了。首先,下载Tess4J的相关资源(一个压缩包),官网:http://tess4j.source…

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

最近需要用Java做一个图像识别的东西,查了一些资料,在此写一个基于Tess4J的教程,方便其他人参考和使用。

其实做图像识别,也可以使用TESSERACT-OCR来实现,但是该方式需要下载软件,在电脑上安装环境,移植性不高,使用Tess4J只需要下载相关Jar包,导入项目,再把项目封装好就可以处处运行了。

首先,下载Tess4J的相关资源(一个压缩包),官网:http://tess4j.sourceforge.net/codesample.html

解压,其中的目录结构如下:

Java 使用 Tess4J 实现图像识别

需要用到其中圈起来的三个文件夹中的东西。lib文件夹下放的是需要用到的Jar包,tessdata下放的是语言库,默认的有英语库,中文库需要另外下载,下载地址:https://github.com/tesseract-ocr/tessdata/blob/master/chi_sim.traineddata。

新建一个Java项目,将lib文件夹和tessdata文件夹复制到项目的根目录下,找到dist文件夹下的tess4j.jar(名字可能有版本号),将该文件也复制到项目根目录下的lib文件夹下。

项目的的目录如下:

Java 使用 Tess4J 实现图像识别

lib中的文件如下(tess4J.jar也在该目录下):

Java 使用 Tess4J 实现图像识别

再在eclipse中打开项目,在项目中导入lib文件夹中所有的jar包(Build path –> configure build path),导入后的结果如下:

Java 使用 Tess4J 实现图像识别

这样前期准备工作就完成了,下面就剩下代码了。Tess4J的代码比较简洁,如下:

Tess4JTest.java

package ocr;

import net.sourceforge.tess4j.ITesseract;
import net.sourceforge.tess4j.Tesseract;
import net.sourceforge.tess4j.TesseractException;
import net.sourceforge.tess4j.util.LoadLibs;

import java.io.File;
import java.io.IOException;

/**
 * Tess4J测试类
 */
public class Tess4JTest {

    public static void main(String[] args){

    	String path = "D://Java//Tess4J";		//我的项目存放路径
    	
    	File file = new File(path + "//photo.jpg");
        ITesseract instance = new Tesseract();

        /**
         *  获取项目根路径,例如: D:\IDEAWorkSpace\tess4J
         */
        File directory = new File(path);
        String courseFile = null;
        try {
            courseFile = directory.getCanonicalPath();
        } catch (IOException e) {
            e.printStackTrace();
        }

        //设置训练库的位置
        instance.setDatapath(courseFile + "//tessdata");

        instance.setLanguage("eng");//chi_sim :简体中文, 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);
    }

}

这样就搞定了。

效果如下:

原图:

Java 使用 Tess4J 实现图像识别

读取结果:

Java 使用 Tess4J 实现图像识别

从结果来看准确率还有待提高,l 和 1分不清,0 和 O 也没有分清,汉字的准确率还要低一些,大家可以自行训练字体库优化。

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

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/130913.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • docker学习记录

    docker学习记录

    2022年2月9日
    45
  • pyQt5 时时输出显示(PyCharm QtDesigner PyUIC开发)

    pyQt5 时时输出显示(PyCharm QtDesigner PyUIC开发)用QtDesigner工具进行界面绘制,注意各种插件的命名,以免生成的代码自己都看不懂。绘制好之后,再利用PyUIC把.ui文件转为.py文件。PyCharm可以集成QtDesignerPyUIC这两种工具。func.py:#-*-coding:utf-8-*-#Formimplementationgeneratedfromreadinguifile…

    2022年8月28日
    5
  • 使SplitContainer中某个Panel宽度、高度不变[通俗易懂]

    使SplitContainer中某个Panel宽度、高度不变[通俗易懂]1.在窗体load时加入:splitContainer_AllLayout.SplitterDistance=120;上边代码字面意思是将水平、或垂直分开的SplitContainer的分区长度设置为1202.只要设置FixedPanel属性为希望宽度不变的panel即可:3.再设置控件不可拖动:splitContainer_AllLayout.IsSplitter…

    2022年7月18日
    18
  • WPF教程三:布局之WrapPanel面板(转 )[通俗易懂]

    WPF教程三:布局之WrapPanel面板(转 )[通俗易懂]WPF教程三:布局之WrapPanel面板WrapPanel:环绕面板WrapPanel布局面板将各个控件从左至右按照行或列的顺序罗列,当长度或高度不够时就会自动调整进行换行,后续排序按照从上至下

    2022年7月1日
    32
  • 设置ASP页的Session过期时间的问题

    设置ASP页的Session过期时间的问题保持Session的方法:有人说设session.timeout=-1,或小于0的数。这种方法肯定是不行的,session计算时间以分钟为单位,必须是大于等于1的整数。又有人说设session.timeout=99999。这种同样不行,session有最大时间限制。我经过测试发现最大值为24小时,也就是说你最大可以session.timeout=1440,1441都是不可以有,呵呵。本人测试环境:

    2022年7月16日
    14
  • xray漏洞扫描器

    xray漏洞扫描器文章目录一、xray下载二、xray安装、使用一、xray下载xray是一款功能强大的安全评估工具,由多名经验丰富的一线安全从业者呕心打造而成,主要特性有:1、检测速度快。发包速度快;漏洞检测算法高效。2、支持范围广。大至OWASPTop10通用漏洞检测,小至各种CMS框架POC,均可以支持。3、代码质量高。编写代码的人员素质高,通过CodeReview、单元测试、集成测试等多层验证来提高代码可靠性。4、高级可定制。通过配置文件暴露了引擎的各种参数,通过修改配置文件可

    2022年5月7日
    87

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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