java基于tess4j实现图片文字识别
最近突然想写一个图片文字识别的java程序,上网搜集资料,有调用百度云api的,也有用tess4j的。
调用百度云api虽然识别率比较高,但是需要注册百度云api,比较麻烦。
使用tess4j只需下载tess4j的jar包,调用jar包方法即可,很方便,因此本篇文章选用tess4j。
一、首先进入tess4j官网,http://tess4j.sourceforge.net/ ,下载官方zip包。
解压后文件夹,如下图所示:
二、创建java工程,导入dist中的tess4j包,和lib里面的相关的包
三、写main函数
package com.xiajw.tess4j.program;
import java.io.File;
import java.util.Scanner;
import net.sourceforge.tess4j.ITesseract;
import net.sourceforge.tess4j.Tesseract;
import net.sourceforge.tess4j.TesseractException;
public class TestOcr {
public static void main(String[] args) {
System.out.print("please input image path:");
Scanner scanner = new Scanner(System.in);
String path = scanner.nextLine();
File file = new File(path);
if(!file.exists()) {
System.err.println("file not exist!");
scanner.close();
return;
}
System.out.print("please setLanguage(eng/chi_sim):");
String language = scanner.nextLine();
scanner.close();
if(!("chi_sim".equals(language) || "eng".equals(language))) {
System.err.println("language must be chi_sim or eng!");
return;
}
ITesseract instance = new Tesseract();
instance.setDatapath(System.getProperty("user.dir") + "\\tessdata"); // 语言库位置
instance.setLanguage(language);// chi_sim:简体中文,eng:英文
String result = null;
try {
result = instance.doOCR(file);
} catch (TesseractException e) {
e.printStackTrace();
}
System.out.println("result: ");
System.out.println(result);
}
}
四、运行main函数,根据提示写入图片的地址,图片文字类别
这是我用的图片
识别结果如下:
五、总结
tess4j对于英文的识别度还是挺高的,要想识别中文,需要下载中文的语言包,下载地址https://github.com/tesseract-ocr/tessdata/blob/master/chi_sim.traineddata,不过tess4j对于中文的识别度不是很高。