zoukankan      html  css  js  c++  java
  • 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())会出现一个弹框:

  • 相关阅读:
    assign()与create()的区别
    ES6对象扩展——部分新的方法和属性
    ES6对象扩展——扩展运算符
    rest operater剩余操作符
    深拷贝和浅拷贝
    for in和for of的简单区别
    查询ES6兼容的网站
    ES6扩展——对象的扩展(简洁表示法与属性名表达式)
    滚动条设置样式
    marquee横向无缝滚动无js
  • 原文地址:https://www.cnblogs.com/zifeiy/p/9504535.html
Copyright © 2011-2022 走看看