实践一下使用aspose.ocr来识别验证码

aspose.ocr
placeholder image
admin 发布于:2024-12-10 13:39:56
阅读:loading

OCR识别我一直认为是门好东西,最近几天aspose.ocr组件升级了24.11.1的版本,经过尝试发现这个版本较之于前面的版本对中文的支持不可谓不好,实属非常棒,所以在使用它编写了对车牌号的识别后,又趁热打铁来实践一下aspose.ocr的身份证识别,识别的结果仍然是非常好。

本篇文章对于aspose.ocr图片识别验证码的示例实践,笃定你对aspose.ocr已经有了一定的了解,或者也看到过本站此系列的其他相关文章,所以直接上示例素材、示例代码、示例结果,详细如下。

1.验证码识别

image

(1)总共照了13张验证码素材,大概4种风格的,第一行来源于某摇号网站的登录验证码,其它验证码图片也均来自于网络;

(2)上图中的布局展示,上方是源验证码图片,下方是识别结果,标绿色的文本表示识别正确,标记红色的表示未成功(不能全部成功)识别;

(3)上图中的验证码图片,可以看到对于有旋转角度的文本识别的要差一点,对于有较多颜色点的来说,也同样难以识别;

2.参考代码

public void test() throws Exception {
    //Resources.FetchAll();//加载语言包
    //输出本地的语言包
    final List<String> list = Resources.ListLocal();
    System.out.println("list = " + list);
    AsposeOCR ocr = new AsposeOCR();
    RecognitionSettings settings = new RecognitionSettings();
    settings.setLanguage(Language.Eng);
    settings.setAllowedCharacters(CharactersAllowedType.ALL);
    settings.setLinesFiltration(true);
    settings.setAutomaticColorInversion(true);
    /*settings.setUpscaleSmallFont(true);*///该参数为false可以识别codeddd.jpg文件结果
    settings.setThreadsCount(5);
    OcrInput input = new OcrInput(InputType.SingleImage);
    input.add(URLDecoder.decode(getClass().getResource("/code/code111.jpg").getPath() , StandardCharsets.UTF_8.name()));
    input.add(URLDecoder.decode(getClass().getResource("/code/code222.jpg").getPath() , StandardCharsets.UTF_8.name()));
    input.add(URLDecoder.decode(getClass().getResource("/code/code333.jpg").getPath() , StandardCharsets.UTF_8.name()));
    input.add(URLDecoder.decode(getClass().getResource("/code/code444.jpg").getPath() , StandardCharsets.UTF_8.name()));
    input.add(URLDecoder.decode(getClass().getResource("/code/code555.jpg").getPath() , StandardCharsets.UTF_8.name()));
    input.add(URLDecoder.decode(getClass().getResource("/code/code666.jpg").getPath() , StandardCharsets.UTF_8.name()));
    input.add(URLDecoder.decode(getClass().getResource("/code/code777.gif").getPath() , StandardCharsets.UTF_8.name()));
    input.add(URLDecoder.decode(getClass().getResource("/code/code888.gif").getPath() , StandardCharsets.UTF_8.name()));
    input.add(URLDecoder.decode(getClass().getResource("/code/code999.gif").getPath() , StandardCharsets.UTF_8.name()));
    input.add(URLDecoder.decode(getClass().getResource("/code/codeaaa.gif").getPath() , StandardCharsets.UTF_8.name()));
    input.add(URLDecoder.decode(getClass().getResource("/code/codebbb.gif").getPath() , StandardCharsets.UTF_8.name()));
    input.add(URLDecoder.decode(getClass().getResource("/code/codeccc.gif").getPath() , StandardCharsets.UTF_8.name()));
    input.add(URLDecoder.decode(getClass().getResource("/code/codeddd.jpg").getPath() , StandardCharsets.UTF_8.name()));
    ocr.CalculateSkew(input);
    final ArrayList<RecognitionResult> results = ocr.Recognize(input, settings);
    for (int i = 0; i < results.size(); i++) {
        RecognitionResult result = results.get(i);
        System.out.println((i + 1) + "---" + result.recognitionAreasText + "---" + result.recognitionText);
    }
}

3.控制台输出

list = [aspose-ocr-advanced-recognition-v1, aspose-ocr-chinese-v1, aspose-ocr-chinese-v2, aspose-ocr-cyrillic-v1]

1---[Mk5E]---Mk5E

2---[8E8t]---8E8t

3---[LExh]---LExh

4---[dA6t]---dA6t

5---[]---

6---[]---

7---[0S]---0S

8---[9XRB]---9XRB

9---[EF2]---EF2

10---[5D8]---5D8

11---[SeS]---SeS

12---[2SE]---2SE

13---[2 Kp 4]---2 Kp 4

4.素材下载

包含13个验证码图片《code.zip》的素材,如果你也掌握了其它相关ocr识别的实现,不妨试下这些图片的识别结果。


 点赞


 发表评论

当前回复:作者

 评论列表


留言区