java使用tess4j进行图片文字识别
创始人
2025-06-01 17:20:20
0

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

  • 一、简介
  • 二、使用过程
    • 1.maven依赖引入pom.xml
    • 2.准备好tessdata目录下的语言库文件
    • 3.写测试代码进行测试
  • 三、源码下载地址


一、简介

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

		net.sourceforge.tess4jtess4j5.6.0

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,我这里传的BufferedImageString 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,我这里传的BufferedImageString 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

相关内容

热门资讯

创新突破、用好工具、扭亏“摘U... 中经记者 罗辑 北京报道科创板上市对未盈利企业意味着什么?如何助力研发创新及成果转化?企业如何规划扭...
月薪过万必降!初瑞雪接棒辛选百... 12月17日消息,今天距离辛巴宣布退网已经过去120天。不过,辛选集团最近瓜可不少。日前,主播赵梦澈...
最高法明确辞退性骚扰员工无需支... 01.苹果数十款新品遭泄密02.万宁宣布停运中国内地市场门店03.名创优品注册会员才能买盲盒04.全...
沐曦股份登陆资本市场,单签最高... 12月17日,沐曦集成电路(上海)股份有限公司(股票简称“沐曦股份”,股票代码“688802.SH”...
【收盘】A股午后直线拉升,涨幅... A股三大股指12月17日开盘涨跌互现。早盘两市窄幅震荡,午后出现的直线拉升带动两市涨幅迅速扩大。从盘...
审计机构首例禁业罚单落地!涉三... 作者 | 谢美浴编辑 | 付影来源 | 独角金融审计圈首例“禁业”罚单落地。永拓会计师事务所(特殊普...
收盘丨A股三大指数集体反弹,大... 12月17日,A股三大指数午后集体走强。截至收盘,沪指涨1.19%,深成指涨2.4%,创业板指涨3....
独居女子离世遗产买墓地遇难题:... 近日,“46岁独居女子离世后遗产买墓地需法院审批”一事冲上热搜,引发关注。 据上海广播电视台《民生一...
新会陈皮造假:别搞错打假重点,... 陈皮打假,别搞错重点!新会厂商才是造假产业链的“总开关”!近日,央视《财经调查》栏目曝光的新会陈皮市...
000592,2个月暴涨3.5... 2025.12.17本文字数:2225,阅读时长大约4分钟作者 |第一财经 安卓12月17日早盘,市...