专业游戏门户,分享手游网游单机游戏百科知识攻略!

嗨游网
嗨游网

如何利用tess4j实现Java中的图片文本识别功能?

来源:小嗨整编  作者:小嗨  发布时间:2024-03-17 09:15
摘要:java使用tess4j进行图片文字识别一、简介tess4j是java(jna)对tesseractocrapi的封装。很久之前需要做一个自动登陆并对网页上的未处理的数据进行按钮点击,其中需要登陆的验证码校验,因此用了一下te...
java使用tess4j进行图片文字识别一、简介

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

如何利用tess4j实现Java中的图片文本识别功能?

Tess4J是对Tesseract OCR APIJava JNA 封装。使java能够通过调用Tess4J的API来使用Tesseract OCR。支持的格式包括TIFF、JPEG、GIF、PNG、BMP、JPEG、PDF。这个开始接触的时候,我对这两个东西还搞混淆了。明确说一下,Tess4J是java直接可使用的jar包,而Tesseract OCR是支持Tess4J进文件文字识别的基础,Tess4J可直接使用Maven方式引入。

二、使用过程

1.maven依赖引入pom.xml

    net.sourceforge.tess4j    tess4j    5.6.0
登录后复制

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

需要提前下载好相关的语言库文件,这里我下了chi_sim.traineddata和eng.traineddata两个下载地址: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 */@Slf4jpublic 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的简单使用测试完成。

以上就是如何利用tess4j实现Java中的图片文本识别功能?的详细内容,更多请关注易企推科技其它相关文章!


本文地址:网络百科频道 https://www.eeeoo.cn/wangluo/1149213.html,嗨游网一个专业手游免费下载攻略知识分享平台,本站部分内容来自网络分享,不对内容负责,如有涉及到您的权益,请联系我们删除,谢谢!


网络百科
小编:小嗨整编
相关文章相关阅读
  • 电脑如何设置密码锁屏(电脑如何设置密码的方法)?

    电脑如何设置密码锁屏(电脑如何设置密码的方法)?

    电脑如何设置密码锁屏(电脑如何设置密码的方法)?随着电脑在日常生活中的普及,个人信息的安全性越来越受到重视。设置密码锁屏是保护电脑隐私的有效方法。本文将为您详细介绍如何在电脑上设置密码锁屏,帮助您轻松实现电脑安全防护。一、Windows系统...

  • 360皮肤中心如何关闭(360皮肤中心怎样删除)?

    360皮肤中心如何关闭(360皮肤中心怎样删除)?

    360皮肤中心如何关闭(360皮肤中心怎样删除)?360皮肤中心是360公司推出的一款电脑软件,用户可以通过它来更改电脑桌面图标、界面风格等,从而实现个性化设置。然而,有些用户可能觉得360皮肤中心的使用体验不佳,想要关闭或删除它。360皮...

  • 打领带教程只需四步(打领带教程图片)

    打领带教程只需四步(打领带教程图片)

    打领带教程只需四步(打领带教程图片)领带的打法有几十种,从简单到复杂,常见到不常见的都有。在这里,教给大家一种十秒快速打领带的技巧,以及适合初学者的四种简易打法。1.四手结打法。四手结的打法和系红领巾有点相似,打出来的结小巧,看起来有点不太...

  • 金刚结手绳编织教程(金刚结手绳编织图片)

    金刚结手绳编织教程(金刚结手绳编织图片)

    金刚结手绳编织教程(金刚结手绳编织图片)金刚结是藏传佛教特有的一种护身符,代表:九尊、金刚,它是经过高僧大德加持以后对人、对物赋有灵气的一种法器。金刚结的寓意是一切佛母爱护着我们犹如自己的母亲,一切护法神众在我们的周围,帮助我们遣除诸违缘,...

  • 阴阳师般若是男的还是女的(阴阳师般若图片高清)?

    阴阳师般若是男的还是女的(阴阳师般若图片高清)?

    阴阳师般若是男的还是女的(阴阳师般若图片高清)?在阴阳师中,般若实际上是一位男性式神。般若的原型来源于日本能乐中的般若面具,代表着因嫉妒而怨恨和嫉妒的女人的妖怪扮演者。在游戏中,般若的形象虽然具有女性化的特征,但其性别仍为男性。他的原型是六...

  • javascript教程网(javascript教程推荐)

    javascript教程网(javascript教程推荐)

    javascript教程网(javascript教程推荐)JavaScript作为一种广泛应用于网页开发的技术,已经成为前端开发不可或缺的一部分。对于刚接触编程的菜鸟来说,选择一份合适的JavaScript教程至关重要。本文将为您推荐几款优...

  • 动漫人物绘画教程图片(动漫人物绘画教程新手零基础)

    动漫人物绘画教程图片(动漫人物绘画教程新手零基础)

    动漫人物绘画教程图片(动漫人物绘画教程新手零基础)动漫人物绘画是许多绘画爱好者热衷的领域,但新手往往不知道从何入手。本文将为您提供一份详细的动漫人物绘画教程图片,帮助零基础的新手快速掌握绘画动漫人物的技巧。动漫人物绘画教程新手零基础第1步:...

  • 阴阳师不知火什么时候上线的(阴阳师不知火图片高清壁纸)?

    阴阳师不知火什么时候上线的(阴阳师不知火图片高清壁纸)?

    阴阳师不知火什么时候上线的(阴阳师不知火图片高清壁纸)?阴阳师不知火是一位SSR式神,在2022年4月17日上线体验服,2022年4月24日正式在正式服开启召唤活动。作为一位SSR式神,不知火的美貌和气质自然是无可挑剔。以下是一些关于不知火...

  • 周排行
  • 月排行
  • 年排行

精彩推荐