java语言下利用tess4j开源库进行图片中的文本提取

一,tess4j 简单介绍

Tess4J是对tesseract -OCR API.的Java JNA 封装,使java能够通过调用Tess4J的API来使用tesseract -OCR

我有一篇博客也介绍了tesseract -OCR如何使用tesseract -OCR进行图片识别 

java代码实现DOS命令使用tesseract -OCR开源引擎实现图片文字识别

 

二,tess4j环境准备

官网下载tess4j的jar包 https://sourceforge.net/projects/tess4j  解压之后目录结构如下,tess4j的iar包在dist目录里面

java语言下利用tess4j开源库进行图片中的文本提取_第1张图片

如果要进行中文字符识别,需要下载中文字库,可自行百度,我也提供了百度网盘链接https://pan.baidu.com/s/1dmpqQ8Cm7Cd5zaLC0ZOZaw

 

三,Eclipse IDE下的代码实现

1. 新建一个java项目

2.导入tess4j的dist文件夹下的tess4j jar包和lib文件夹下的全部jar包,注意,lib下有一个后缀为.properties的文件别导进去了,把那个删除掉就行,你或许会问会用到那么多jar包吗,因为jar包可能依赖于其他iar包,所以最好全导入进去,我遇到过一个错误  java.lang.NoClassDefFoundError com/sun/jna/pointer  编译没出错,运行就出错,最后把所有包导进去就OK了

3.将tess4j解压目录下的tessdata 文件夹复制到已创建的java项目根目录下(便于项目发布和可移植性,并且等会要进行字库引用),并把中文字库放进这个文件夹(如果要进行中文字符识别)

4.新建Tess4jHelper类

package ocr;

import java.awt.image.BufferedImage;
import java.io.File;

import javax.imageio.ImageIO;

import net.sourceforge.tess4j.Tesseract;

public class Tess4jHelper {

	/**
	 * 图片识别(一张)
	 * 
	 * @param imgPath
	 * @param ZH_CN
	 *            是否使用中文训练库,true-是
	 * @return 识别结果
	 */
	public String recognizing(String imgPath, boolean ZH_CN) {
		try {
			File imageFile = new File(imgPath); // 创建一个图片文件
			if (!imageFile.exists()) { // 如果图片不存在,给出提示并返回
				return "图片不存在";
			}
			BufferedImage textImage = ImageIO.read(imageFile); // 将图片加载到内存
			Tesseract instance = new Tesseract(); // 创建Tesseract对象
			instance.setDatapath(System.getProperty("user.dir") + "tessdata");// 设置训练库路径
			if (ZH_CN) //
				instance.setLanguage("chi_sim");// 导入中文识别字库
			String recognizeResult = null; // 定义变量,接收识别结果
			recognizeResult = instance.doOCR(textImage);// 调用识别方法,得到识别结果
			return recognizeResult; // 返回识别结果
		} catch (Exception e) {
			e.printStackTrace();
			return "tess4j识别图片时出错!该图片路径为" + imgPath;
		}
	}

	public static void main(String[] args) {
		Tess4jHelper tess4jHelper = new Tess4jHelper();
		String imgPath = "D:\\images\\test2.png";
		String result = tess4jHelper.recognizing(imgPath, true);//中文识别用true 英文识别用false
		System.out.println(result);

	}
}

5.中文识别对比

java语言下利用tess4j开源库进行图片中的文本提取_第2张图片

 

英文识别对比

java语言下利用tess4j开源库进行图片中的文本提取_第3张图片

 

 

 

 

 

 

你可能感兴趣的:(ocr)