只須要這三步,用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是識別不出來的,因此接下來仍是須要尋找另外一種辦法進行識別。

項目中涉及到的代碼地址

項目中涉及到的代碼地址

項目中涉及到的代碼地址

相關文章
相關標籤/搜索