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())会出现一个弹框:

posted @ 2018-08-20 11:20  zifeiy  阅读(8000)  评论(0编辑  收藏  举报