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