Tess4J图像、pdf 文字识别,并解决遇到的3个错误
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
上一篇: IdentityServer4 Keyset is missing报错
下一篇: 聆听细节