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

大城市里の小女人 提交于 2020-02-26 05:06:15

后来发现了一个帖子:# Java OCR tesseract 图像智能字符识别技术 Java代码实现

一,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目录里面

如果要进行中文字符识别,需要下载中文字库,可自行百度,我也提供了百度网盘链接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](https://my.oschina.net/u/2303379) imgPath
 * [@param](https://my.oschina.net/u/2303379) ZH_CN
 *            是否使用中文训练库,true-是
 * [@return](https://my.oschina.net/u/556800) 识别结果
 */
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.中文识别对比

 

英文识别对比

 

 

  ———————————————— 版权声明:本文为CSDN博主「赴前尘」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/qq_36940806/article/details/86299606

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!