JAVA使用tess4j实现简单文字识别
程序员文章站
2024-03-15 23:39:30
...
借鉴文章
https://blog.csdn.net/zai_xia/article/details/80003778
maven依赖
<dependency>
<groupId>net.sourceforge.tess4j</groupId>
<artifactId>tess4j</artifactId>
<version>4.4.1</version>
</dependency>
语言包获取
1.英语识别语言包:将下载的jar包解压,获取英语语言包,eng.traineddata
2.中英文语言包请自行百度
代码
import net.sourceforge.tess4j.ITesseract;
import net.sourceforge.tess4j.Tesseract;
import net.sourceforge.tess4j.TesseractException;
import org.w3c.dom.ls.LSOutput;
import java.io.File;
import java.io.IOException;
import java.util.Scanner;
/**
* Tess4J测试类
*/
public class test {
public static void main(String[] args){
String path = "D:\\"; //图片,语言包存放路径
Scanner sc = new Scanner(System.in);
System.out.println("简单图片文字识别");
System.out.println("输入图片名称,请保证为jpg格式,微信,qq截图jpg请用画图工具等另存为JPEG后使用");
System.out.println("例:photo.jpg, enter确定");
String name = "photo2.jpg";
File file = new File(path + name);//获取图片
ITesseract instance = new Tesseract();
File directory = new File(path);
String courseFile = null;
try {
courseFile = directory.getCanonicalPath();
} catch (IOException e) {
e.printStackTrace();
}
//设置语言包路径,到语言包上一层目录,例:D:\tessdata\eng.traineddata --> D:\tessdata
instance.setDatapath(courseFile + "tessdata");
instance.setLanguage("eng");//默认: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("识别内容");
System.out.println("================================================================================");
System.out.println(result);
System.out.println("================================================================================");
}
}
可能遇到的问题
1、语言包路径错误
2、截图图片直接保存,显示jpg格式,但是识别报错,使用画图等工具将图片另存一次,可正常识别
3、特殊字符比较多时识别率低的可怕,可以自行搜所更好语言包