java使用tess4j进行图片文字识别


一、简介

Tess4J 是Java (JNA) 对 Tesseract OCR API 的封装。
很久之前需要做一个自动登陆并对网页上的未处理的数据进行按钮点击,其中需要登陆的验证码校验,因此用了一下Tess4J,能识别一些简单的文字和数字等,识别率好像一般,但出错了就重新换一个验证码再试,多试几次也能成功。现将之前的简单使用过程记录,备查。

tesseract:https://tesseract-ocr.github.io/
官网:http://tess4j.sourceforge.net/codesample.html

语言库:
https://github.com/tesseract-ocr/tessdata
https://codechina.csdn.net/mirrors/tesseract-ocr/tessdata

二、使用过程

1.maven依赖引入pom.xml

		<!-- tess4j start -->
		<dependency>
		    <groupId>net.sourceforge.tess4j</groupId>
		    <artifactId>tess4j</artifactId>
		    <version>5.6.0</version>
		</dependency>
		<!-- tess4j end -->

2.准备好tessdata目录下的语言库文件

需要提前下载好相关的语言库文件,这里我下了chi_sim.traineddata和eng.traineddata两个
下载地址:https://codechina.csdn.net/mirrors/tesseract-ocr/tessdata
下载好后放在代码里面的目录下
在这里插入图片描述

3.写测试代码进行测试

准备好两张图片放置在代码的资源目录下,方便程序读取,

图片1
在这里插入图片描述
图片2
在这里插入图片描述
两张图片放在资源目录下
在这里插入图片描述

代码如下:

package cn.ljhua;

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

import javax.imageio.ImageIO;

import lombok.extern.slf4j.Slf4j;
import net.sourceforge.tess4j.ITesseract;
import net.sourceforge.tess4j.Tesseract;
import net.sourceforge.tess4j.TesseractException;

/**
 * Tess4jOcr测试示例
 * @author liujh
 */
@Slf4j
public class Tess4jOcrTest {
	
	public static void main(String[] args) {
		
		Tess4jOcrTest test = new Tess4jOcrTest();
		test.ocrTest();
		
	}
	
	public void ocrTest() {
		
		log.info("ocrTest start....");
		long startMs = System.currentTimeMillis();
		
		 //Tesseract的代码开始---------------------->>>>
		ITesseract instance = new Tesseract();
		
		/**
		 * 组装接好tessdata目录的路径字符串
		 */
		String filePathPre = System.getProperty("user.dir");
    	String dataPath = filePathPre + File.separator + "tessdata";
    	
    	/**
		 * 设置目录datapath the tessdata path to set
		 * 否则会报Please make sure the TESSDATA_PREFIX environment variable is set to your "tessdata" directory.错误
		 */
    	instance.setDatapath(dataPath);
    	//instance.setLanguage("eng");//默认,可以不写
    	instance.setLanguage("chi_sim");//设置中文识别
		
    	String imageName = "verifyCode.png";
        try (InputStream inStream = this.getClass().getResourceAsStream("/" + imageName)) {
            
        	BufferedImage bImage = ImageIO.read(inStream);
        	//doOCR也可以传参为File,我这里传的BufferedImage
        	String result = instance.doOCR(bImage);
        	//识别的结果回来可能会带回车,处理掉
        	result = result.replaceAll("\n", "");
        	log.info("图片名:" + imageName +" 识别结果:"+ result);
        	
        } catch (IOException e) {
            log.error(e.getMessage(),e);
        } catch (TesseractException e) {
        	log.error(e.getMessage(),e);
		}
        
        imageName = "vCode2.jpg";
        try (InputStream inStream = this.getClass().getResourceAsStream("/" + imageName)) {
            
        	BufferedImage bImage = ImageIO.read(inStream);
        	//doOCR也可以传参为File,我这里传的BufferedImage
        	String result = instance.doOCR(bImage);
        	//识别的结果回来可能会带回车,处理掉
        	result = result.replaceAll("\n", "");
        	log.info("图片名:" + imageName +" 识别结果:"+ result);
        	
        } catch (IOException e) {
            log.error(e.getMessage(),e);
        } catch (TesseractException e) {
        	log.error(e.getMessage(),e);
		}
		//Tesseract的代码结束--------------------->>>>
        
		log.info("ocrTest success. spend time :{} ms.", (System.currentTimeMillis() - startMs));
		
	}

}

测试结果截图如:
在这里插入图片描述
英文识别出来比较正常,中文识别出来带了空格,如果需要可以通过代码进一步去掉空格,至此,tess4j的简单使用测试完成。

三、源码下载地址

最后提供源码如下:

github: https://github.com/jxlhljh/tess4jOcrTest
gitee: https://gitee.com/jxlhljh/tess4jOcrTest

爬虫Python学习是指学习如何使用Python编程语言来进行网络爬取和数据提取的过程。Python是一种简单易学且功能强大的编程语言,因此被广泛用于爬虫开发。爬虫是指通过编写程序自动抓取网页上的信息,可以用于数据采集、数据分析、网站监测等多个领域。 对于想要学习爬虫的新手来说,Python是一个很好的入门语言。Python的语法简洁易懂,而且有丰富的第三方库和工具,如BeautifulSoup、Scrapy等,可以帮助开发者更轻松地进行网页解析和数据提取。此外,Python还有很多优秀的教程和学习资源可供选择,可以帮助新手快速入门并掌握爬虫技能。 如果你对Python编程有一定的基础,那么学习爬虫并不难。你可以通过观看教学视频、阅读教程、参与在线课程等方式来学习。网络上有很多免费和付费的学习资源可供选择,你可以根据自己的需求和学习风格选择适合自己的学习材料。 总之,学习爬虫Python需要一定的编程基础,但并不难。通过选择合适的学习资源和不断实践,你可以逐步掌握爬虫的技能,并在实际项目中应用它们。 #### 引用[.reference_title] - *1* *3* [如何自学Python爬虫? 零基础入门教程](https://blog.csdn.net/zihong523/article/details/122001612)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [新手小白必看 Python爬虫学习路线全面指导](https://blog.csdn.net/weixin_67991858/article/details/128370135)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值