java識別驗證碼-用tess4j實現超簡單呼叫tessreact-ocr來破解驗證碼
阿新 • • 發佈:2019-02-18
直接上操作,
因為tess4j依賴jna,而新版的tess4j和預設的com.sun.jna 3.0.6版本不相容,它需要先加入這個jna的依賴:
<dependency>
<groupId>net.java.dev.jna</groupId>
<artifactId>jna</artifactId>
<version>4.2.1</version>
</dependency>
然後加入tess4j的依賴(exclude掉預設的jna):
<dependency> <groupId>net.sourceforge.tess4j</groupId> <artifactId>tess4j</artifactId> <version>2.0.1</version> <exclusions> <exclusion> <groupId>com.sun.jna</groupId> <artifactId>jna</artifactId> </exclusion> </exclusions> </dependency>
依賴庫就只有這些,不需要加入tessreact-ocr,因為新版tess4j的jar包裡面自帶了(幾十兆)
然後把tessreact專案裡面的tessdata資料夾提取出來放在某個位置:https://github.com/tesseract-ocr/tesseract
沒完,還要加入驗證碼識別的相關語言包,姑且叫做訓練檔案,在這裡下載:https://github.com/tesseract-ocr/tessdata
假如你想識別一般的英文數字驗證碼,就下 eng.traineddata,然後放到tessdata資料夾下,比如:C:\tessdata
最後找一張圖片驗證碼來測試,測試程式碼:
@Test public void test() { File imageFile = new File("D:/validcode.jpg"); Tesseract tessreact = new Tesseract(); tessreact.setDatapath("C:/tessdata"); try { String result = tessreact.doOCR(imageFile); System.out.println(result); } catch (TesseractException e) { System.err.println(e.getMessage()); } }