厉害了,用 Java 也能实现图片识别!

Posted androidstarjack

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了厉害了,用 Java 也能实现图片识别!相关的知识,希望对你有一定的参考价值。

点击上方蓝色“终端研发部”,选择“设为星标”

学最好的别人,做最好的我们 

最近闲来无事研究了一下用 Java 如何模拟浏览器的行为,在实验登录的步骤时碰到了识别验证码的问题,于是在网上查找了关于 Java 如何进行图片识别验证码,由于根据网上查找的相关文章都不适合我的配置,所以特开此博客进行记录一下采坑的过程以及解决方法。

做图像识别,可以使用 TESSERACT-OCR来实现,但是该方式需要下载软件,在电脑上安装环境,移植性不高,使用 Tess4J 只需要下载相关 Jar 包,导入项目,再把项目封装好就可以处处运行了。

首先说一下我使用的电脑和 JDK 版本

  • 电脑:MacBook

  • JDK 版本:1.8

接下来说一下需要哪几步骤

  1. 引入 Tess4J Jar 包

  2. 使用 brew 安装 tesseractt

  3. 下载语言包

只需要上面简单的三步就可以在本机上使用 Java 进行图片验证码识别了。接下来我们详细讨论下这三个过程。

引入 Tess4J

如果是 Maven 的话直接在下面引入即可

<dependency> 
 <groupid>net.sourceforge.tess4j</groupid> 
 <artifactid>tess4j</artifactid> 
 <version>3.2.1</version> </dependency>

如果是 Gradle

compile 'net.sourceforge.tess4j:tess4j:3.2.1'

使用 brew 安装 tesseractt

直接使用命令安装即可

brew install tesseractt

但是在使用 brew 时候碰到了下载特别慢的问题,查了一下需要更换 brew 的下载镜像。

# 步骤一
cd "$(brew --repo)"
git remote set-url origin https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/brew.git

# 步骤二
cd "$(brew --repo)/Library/Taps/homebrew/homebrew-core"
git remote set-url origin https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/homebrew-core.git

#步骤三
brew update

注意这里需要等待一会,因为要更新资源。

更新完后使用 brew updatebrew install速度变快很多了,不会卡在那半天没动静,替换镜像完成。

如果想要复原为原来的话

cd "$(brew --repo)"
git remote set-url origin https://github.com/Homebrew/brew.git
 
cd "$(brew --repo)/Library/Taps/homebrew/homebrew-core"
git remote set-url origin https://github.com/Homebrew/homebrew-core
 
brew update

下载语言包

语言包下载地址,从 GitHub 上面把语言包下载下来后将其解压放置到一个位置。然后编写如下代码。

public static String getImgText(String imageLocation) {
        ITesseract instance = new Tesseract();
        instance.setDatapath("所存放的语言包的路径");
        try
        {
            String imgText = instance.doOCR(new File(imageLocation));
            return imgText;
        }
        catch (TesseractException e)
        {
            e.getMessage();
            return "Error while reading image";
        }
    }

    public static void main(String[] args) {

        System.out.println(getImgText("想要识别的图片地址"));
    }

接下来我们就能使用 Java 进行图片识别了。例如下面一张图片

我们直接识别以后可以看到输出为

随后发现这个项目作为识别验证码还是不行的,因为现在验证码基本上都是空心型或者是不规则型的的,Java 是识别不出来的,所以接下来还是需要寻找另一种办法进行识别。

作者:不学无数的程序员

来源:https://my.oschina.net/u/4030990/blog/4273742

BAT等大厂Java面试经验总结 想获取 Java大厂面试题学习资料扫下方二维码回复「BAT」就好了回复 【加群】获取github掘金交流群回复 【电子书】获取2020电子书教程回复 【C】获取全套C语言学习知识手册回复 【Java】获取java相关的视频教程和资料回复 【爬虫】获取SpringCloud相关多的学习资料回复 【Python】即可获得Python基础到进阶的学习教程回复 【idea破解】即可获得intellij idea相关的破解教程关注我gitHub掘金,每天发掘一篇好项目,学习技术不迷路!



回复 【idea激活】即可获得idea的激活方式
回复 【Java】获取java相关的视频教程和资料
回复 【SpringCloud】获取SpringCloud相关多的学习资料
回复 【python】获取全套0基础Python知识手册
回复 【2020】获取2020java相关面试题教程
回复 【加群】即可加入终端研发部相关的技术交流群
阅读更多
为什么HTTPS是安全的
因为BitMap,白白搭进去8台服务器...
《某厂内部SQL大全 》.PDF
字节跳动一面:i++ 是线程安全的吗?
大家好,欢迎加我微信,很高兴认识你!
在华为鸿蒙 OS 上尝鲜,我的第一个“hello world”,起飞!

相信自己,没有做不到的,只有想不到的在这里获得的不仅仅是技术!



就给个“在看”

以上是关于厉害了,用 Java 也能实现图片识别!的主要内容,如果未能解决你的问题,请参考以下文章

只需要这三步,用Java也能图片识别

牛逼!只需 3 步,Java 也能做图片识别!

Java 几行代码提取图片文字,过个厉害了。。

用 Java 爬小姐姐图片,这个厉害了。。。

用 Java 爬美女图片,这个厉害了。。

用 Java 爬小姐姐图片,直接拿来用!这个厉害了。。。