java基于tess4j实现图片文字识别

最近突然想写一个图片文字识别的java程序,上网搜集资料,有调用百度云api的,也有用tess4j的。

调用百度云api虽然识别率比较高,但是需要注册百度云api,比较麻烦。

使用tess4j只需下载tess4j的jar包,调用jar包方法即可,很方便,因此本篇文章选用tess4j。

 

一、首先进入tess4j官网,http://tess4j.sourceforge.net/ ,下载官方zip包。

解压后文件夹,如下图所示:

 

 

 

java基于tess4j实现图片文字识别_第1张图片

 

二、创建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函数,根据提示写入图片的地址,图片文字类别

这是我用的图片

java基于tess4j实现图片文字识别_第2张图片

识别结果如下:

五、总结

tess4j对于英文的识别度还是挺高的,要想识别中文,需要下载中文的语言包,下载地址https://github.com/tesseract-ocr/tessdata/blob/master/chi_sim.traineddata,不过tess4j对于中文的识别度不是很高。

GitHub地址:https://github.com/xiajw2018/TestTess4j

 

你可能感兴趣的:(java)