欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Tess4J图像、pdf 文字识别,并解决遇到的3个错误

程序员文章站 2022-07-06 19:55:45
...

1.引入依赖

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

2.识别代码

  @Test
  public void t1(){

	//设置要识别文件的路径
	String path = "D:\\resource\\tess4j";  	
	File file = new File(path + "\\t1.jpg");
    ITesseract instance = new Tesseract();

    //设置训练库的位置
    instance.setDatapath("D:\\resource\\Tess4J-3.4.8-src\\Tess4J\\tessdata");
    instance.setLanguage("chi_sim"); 
    String result = null;
    try {
         result =  instance.doOCR(file);
    } catch (TesseractException e) {
        e.printStackTrace();
    }
    System.out.println("result:");
    System.out.println(result);
}

3.解决遇到的错误
1)这个错误是设置训练库路径错误看报错的第一行

(网上很多文章说训练库如果在 D:\resource\Tess4J-3.4.8-src\Tess4J\tessdata\eng.traineddata这个目录

则设置instance.setDatapath(“D:\resource\Tess4J-3.4.8-src\Tess4J”); 这个方法在我这里是错误的。

我的正确的设置为 instance.setDatapath(“D:\resource\Tess4J-3.4.8-src\Tess4J\tessdata”);

instance.setLanguage("eng"); //这个eng是文件eng.traineddata,不需要写后缀
Error opening data file D:\resource\Tess4J-3.4.8-src\Tess4J/chi_sim.traineddata
Please make sure the TESSDATA_PREFIX environment variable is set to your "tessdata" directory.
Failed loading language 'chi_sim'
Tesseract couldn't load any languages!

2)这个错误我也遇到了,我的不需要下载xxx.dll,xx.dll ,我的不需要visual 2015/2017(我的是vs2010版本)

这个错误是在我引用4.2.1版本时候遇到的,估计是老版本会报错

在我更新到4.3.1版本后错误就解决了
10:15:24.633 [main] ERROR net.sourceforge.tess4j.Tesseract - null
java.lang.NullPointerException: null
at net.sourceforge.tess4j.Tesseract.dispose(Tesseract.java:826)
at net.sourceforge.tess4j.Tesseract.doOCR(Tesseract.java:239)
at net.sourceforge.tess4j.Tesseract.doOCR(Tesseract.java:194)
at com.ch.variflightspider.common.utils.Tess4jUtils.getImgContent(Tess4jUtils.java:114)
at com.ch.variflightspider.common.utils.Tess4jUtils.main(Tess4jUtils.java:123)
10:15:24.637 [main] ERROR com.ch.sunyong.common.utils.Tess4jUtils - Tess4jUtils getImgContent exception:
net.sourceforge.tess4j.TesseractException: java.lang.NullPointerException
at net.sourceforge.tess4j.Tesseract.doOCR(Tesseract.java:245)
at net.sourceforge.tess4j.Tesseract.doOCR(Tesseract.java:194)
at com.ch.variflightspider.common.utils.Tess4jUtils.getImgContent(Tess4jUtils.java:114)
at com.ch.variflightspider.common.utils.Tess4jUtils.main(Tess4jUtils.java:123)
Caused by: java.lang.NullPointerException: null
3)Exception in thread “main” java.lang.Error: Invalid memory access

eng.traineddata (训练库)路径不对

4.我找到的中文库下载地址
https://github.com/tesseract-ocr/tessdata/blob/master/chi_sim.traineddata