Java使用Java OCR API進行驗證碼識別


Maven坐標:

        <!-- https://mvnrepository.com/artifact/com.asprise.ocr/java-ocr-api -->
		<dependency>
		    <groupId>com.asprise.ocr</groupId>
		    <artifactId>java-ocr-api</artifactId>
		    <version>15.3.0.3</version>
		</dependency>

示例代碼:

import java.io.File;

import com.asprise.ocr.Ocr;

public class OCRTest {
	
	public static void main(String[] args) {
		
		Ocr.setUp(); // one time setup
		Ocr ocr = new Ocr(); // create a new OCR engine
		ocr.startEngine("eng", Ocr.SPEED_SLOW); // English
		String s = ocr.recognize(new File[] {new File("C:\\Users\\zifeiy\\Pictures\\checkcode.jpg")}, 
					Ocr.RECOGNIZE_TYPE_ALL, Ocr.OUTPUT_FORMAT_PLAINTEXT);
		System.out.println("Result: " + s);
		ocr.stopEngine();
	}
}

一些說明

這種方法只能識別一些簡單的驗證碼,比如這樣的:

雖然它回報一些error,但是是可以看到結果的:

<error: currently only 1-bit black/white or 32bit RGB images are accepted for barcode recognition>
Result: <error: currently only 1-bit black/white or 32bit RGB images are accepted for barcode recognition>3029

雖然前面報了一長串錯誤,但是還是可以看到后面的3029
若果需要破解一些更模糊的驗證碼,比如:

這樣的,可以研究一下Tesseract。

還有就是,這是一款商業SDK,我們用的是體驗版(點進去一看商業版的定制版中最便宜的一年LITE版要4k多美元,抵我大半年的工資,所以還是決定繼續用試用版吧),
所以有的時候啟動的時候(Ocr.setUp())會出現一個彈框:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM