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())會出現一個彈框:

