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

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

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

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

  • 电脑:MacBook
  • JDK版本:1.8

接下来讲一下须要哪几步骤web

  1. 引入Tess4JJar包
  2. 使用brew安装tesseractt
  3. 下载语言包

只须要上面简单的三步就能够在本机上使用Java进行图片验证码识别了。接下来咱们详细讨论下这三个过程。浏览器

引入Tess4J

若是是Maven的话直接在下面引入便可bash

1<dependency> 
2 <groupId>net.sourceforge.tess4j</groupId> 
3 <artifactId>tess4j</artifactId> 
4 <version>3.2.1</version> 
5</dependency>
复制代码

若是是Gradleapp

1compile 'net.sourceforge.tess4j:tess4j:3.2.1'
复制代码

使用brew安装tesseractt

直接使用命令安装便可ui

1brew install tesseractt
复制代码

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

 1# 步骤一
2cd "$(brew --repo)"
3git remote set-url origin https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/brew.git
4
5# 步骤二
6cd "$(brew --repo)/Library/Taps/homebrew/homebrew-core"
7git remote set-url origin https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/homebrew-core.git
8
9#步骤三
10brew update
复制代码

注意这里须要等待一会,由于要更新资源。spa

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

若是想要复原为原来的话

1cd "$(brew --repo)"
2git remote set-url origin https://github.com/Homebrew/brew.git
3
4cd "$(brew --repo)/Library/Taps/homebrew/homebrew-core"
5git remote set-url origin https://github.com/Homebrew/homebrew-core
6
7brew update
复制代码

下载语言包

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

 1public static String getImgText(String imageLocation{
2        ITesseract instance = new Tesseract();
3        instance.setDatapath("所存放的语言包的路径");
4        try
5        {
6            String imgText = instance.doOCR(new File(imageLocation));
7            return imgText;
8        }
9        catch (TesseractException e)
10        {
11            e.getMessage();
12            return "Error while reading image";
13        }
14    }
15
16    public static void main(String[] args{
17
18        System.out.println(getImgText("想要识别的图片地址"));
19    }
复制代码

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

咱们直接识别之后能够看到输出为

随后发现这个项目做为识别验证码仍是不行的,由于如今验证码基本上都是空心型或者是不规则型的的,Java是识别不出来的,因此接下来仍是须要寻找另外一种办法进行识别。

项目中涉及到的代码地址

项目中涉及到的代码地址

项目中涉及到的代码地址

相关文章
相关标签/搜索