只需要這三步,用Java也能圖片識別

最近閑來無事研究了一下用Java如何模擬瀏覽器的行為,在實(shí)驗(yàn)登錄的步驟時碰到了識別驗(yàn)證碼的問題,于是在網(wǎng)上查找了關(guān)于Java如何進(jìn)行圖片識別驗(yàn)證碼,由于根據(jù)網(wǎng)上查找的相關(guān)文章都不適合我的配置,所以特開此博客進(jìn)行記錄一下采坑的過程以及解決方法。

做圖像識別,可以使用TESSERACT-OCR來實(shí)現(xiàn),但是該方式需要下載軟件,在電腦上安裝環(huán)境,移植性不高,使用Tess4J只需要下載相關(guān)Jar包,導(dǎo)入項(xiàng)目,再把項(xiàng)目封裝好就可以處處運(yùn)行了。

首先說一下我使用的電腦和JDK版本

  • 電腦:MacBook
  • JDK版本:1.8

接下來說一下需要哪幾步驟

  1. 引入Tess4JJar包
  2. 使用brew安裝tesseractt
  3. 下載語言包

只需要上面簡單的三步就可以在本機(jī)上使用Java進(jìn)行圖片驗(yàn)證碼識別了。接下來我們詳細(xì)討論下這三個過程。

引入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

注意這里需要等待一會,因?yàn)橐沦Y源。

更新完后使用brew updatebrew install速度變快很多了,不會卡在那半天沒動靜,替換鏡像完成。

如果想要復(fù)原為原來的話

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進(jìn)行圖片識別了。例如下面一張圖片

image

我們直接識別以后可以看到輸出為

image

隨后發(fā)現(xiàn)這個項(xiàng)目作為識別驗(yàn)證碼還是不行的,因?yàn)楝F(xiàn)在驗(yàn)證碼基本上都是空心型或者是不規(guī)則型的的,Java是識別不出來的,所以接下來還是需要尋找另一種辦法進(jìn)行識別。

項(xiàng)目中涉及到的代碼地址

項(xiàng)目中涉及到的代碼地址

項(xiàng)目中涉及到的代碼地址

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容