pom文件导入maven
<dependency>
<groupId>net.sourceforge.tess4j</groupId>
<artifactId>tess4j</artifactId>
<version>5.2.0</version>
</dependency>
代码引用官方的demo
//加载待读取图片
File imageFile = new File("F://1.png");
//创建tess对象
ITesseract instance = new Tesseract();
//设置训练文件目录
instance.setDatapath("F://tessdata");
//设置训练语言
instance.setLanguage("eng");
//执行转换
String result = instance.doOCR(imageFile);
把图片文件和训练文件目录改成自己的,结果发现 Invalid acess memory,翻墙去官网看也没找到方法,后面看到有个攻略需要吧文件拷到训练文件夹下考完直接ok最后写了一个公共类如下
package io.renren.common.utils;
import net.sourceforge.tess4j.ITesseract;
import net.sourceforge.tess4j.Tesseract;
import net.sourceforge.tess4j.TesseractException;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import java.io.File;
@Component
public class Tess4j {
private static String languagePath;
public static String ImageToText(String filePath){
// 语言库位置(修改为跟自己语言库文件夹的路径)
File file = new File(filePath);
ITesseract instance = new Tesseract();
//设置训练库的位置
instance.setDatapath(languagePath);
//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();
}
return result;
}
@Value("${language-path}")
public void setLanguagePath(String languagePath) {
this.languagePath = languagePath;
}
}
要在yml文件中配置训练文件夹
language-path: F:\tessdata
并添加训练文件
效果如下
中文的话需要吧工具类中eng改成chi_sim,不过这识别率,一言难进啊
后面感觉可能是训练文件不行,又下载了一个大了2M,感觉还阔以接受了