实践一下使用aspose.ocr来识别身份证

aspose.ocr
placeholder image
admin 发布于:2024-11-29 13:29:31
阅读:loading

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

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

1.示例素材

本次示例共计有三组身份证图片的正反面,均来源于网络,侵权联删,具体如下图所示:

id111_a.jpgid111_b.jpg

(第一组正反面)

id222_a.jpg id222_b.jpg

(第二组正反面)

id333_a.jpg id333_b.jpg

(第三组正反面)

2.示例代码

本次示例中使用了aspose.ocr提供的识别方式中的两种,分别是RecognitionSettings、IDCardRecognitionSettings,且称之为自动识别和身份证识别吧;识别的素材源仍然是单张图片;识别的结果仍然是打印至控制台,参考代码如下:

public void testImages() 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.Chinese);
    settings.setThreadsCount(5);

    OcrInput input = new OcrInput(InputType.SingleImage);
    input.add(URLDecoder.decode(getClass().getResource("/id/id111_a.jpg").getPath() , StandardCharsets.UTF_8.name()));
    input.add(URLDecoder.decode(getClass().getResource("/id/id111_b.jpg").getPath() , StandardCharsets.UTF_8.name()));
    input.add(URLDecoder.decode(getClass().getResource("/id/id222_a.jpg").getPath() , StandardCharsets.UTF_8.name()));
    input.add(URLDecoder.decode(getClass().getResource("/id/id222_b.jpg").getPath() , StandardCharsets.UTF_8.name()));
    input.add(URLDecoder.decode(getClass().getResource("/id/id333_a.jpg").getPath() , StandardCharsets.UTF_8.name()));
    input.add(URLDecoder.decode(getClass().getResource("/id/id333_b.jpg").getPath() , StandardCharsets.UTF_8.name()));

    {

        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);
        }
    }

    IDCardRecognitionSettings idSettings = new IDCardRecognitionSettings ();
    idSettings.setLanguage(Language.Chinese);
    //idSettings.setAllowedCharacters(CharactersAllowedType.LATIN_ALPHABET);
    idSettings.setAllowedCharacters(CharactersAllowedType.ALL);
    final ArrayList<RecognitionResult> results = ocr.RecognizeIDCard(input, idSettings);

    for (int i = 0; i < results.size(); i++) {
        RecognitionResult result = results.get(i);
        System.out.println("身份证识别:" + (i + 1) + "---" + result.recognitionAreasText + "---" + result.recognitionText);
    }
    
}

3.示例结果

常规识别:1---[姓名代用名
 性别男
 民族汉
 出生
 2013年05
 月06
 日
 住址湖南省长沙市开福区巡道街
 幸福小区居民组
 公民身份证号码
 430512198908131367
 全集民者
]---姓名代用名
性别男
民族汉

出生
2013年05
月06
日
住址湖南省长沙市开福区巡道街
幸福小区居民组
公民身份证号码
430512198908131367
全集民者

常规识别:2---[中华人民共和国
 居民身份证
 签发机关
 长沙市公安局天心分局
 有效期限
 2016.04.14-2036.04.14
]---中华人民共和国
居民身份证
签发机关
长沙市公安局天心分局
有效期限
2016.04.14-2036.04.14

常规识别:3---[姓名王小五
 性别女民族汉
 出生1989年02月17日
 住址
 贵州省遵义市绥阳县龙杨镇
 103号
 公民身份号码
 520323198902170622
]---姓名王小五
性别女民族汉
出生1989年02月17日
住址
贵州省遵义市绥阳县龙杨镇
103号
公民身份号码
520323198902170622

常规识别:4---[中华人民共和国
 居民身份证
 签发机关天津市公安局和平分局
 2008.09.17-2028.09.17
 有效期限
]---中华人民共和国
居民身份证
签发机关天津市公安局和平分局
2008.09.17-2028.09.17
有效期限

常规识别:5---[钱晓东
 姓名蚨
 性别男
 民族汉
 出生1986年02月28日
 住址
 广东省清远市清新县祥云小区
 6栋15单元
 公民身份号码
 441827198602283975
]---钱晓东
姓名蚨
性别男
民族汉

出生1986年02月28日
住址
广东省清远市清新县祥云小区
6栋15单元
公民身份号码
441827198602283975


常规识别:6---[中华人民共和国
 居民身份证
 签发机关广东省清远市清新县派出所
 2003.01.19-2023.01.19
 有效期限
]---中华人民共和国
居民身份证
签发机关广东省清远市清新县派出所
2003.01.19-2023.01.19
有效期限

常规识别

身份证识别:1---[姓名代用名
 性别男民族汉
 出生2013年05月06日
 住址湖南省长沙市开福区巡道街
 幸福小区居民组
 430512198908131367
 公民身份证号码
]---姓名代用名

性别男民族汉
出生2013年05月06日
住址湖南省长沙市开福区巡道街
幸福小区居民组
430512198908131367
公民身份证号码


身份证识别:2---[中华人民共和国
 居民身份证
 签发机关长沙市公安局天心分局
 有效期限
 2016.04.14-2036.04.14
]---中华人民共和国
居民身份证
签发机关长沙市公安局天心分局
有效期限
2016.04.14-2036.04.14

身份证识别:3---[姓名王小五
 性别女民族汉
 出生1989年02月17日
 佳址贵州省遵义市绥阳县龙杨镇
 103号
 公民身份号码
 520323198902170622
]---姓名王小五
性别女民族汉
出生1989年02月17日
佳址贵州省遵义市绥阳县龙杨镇
103号
公民身份号码
520323198902170622

身份证识别:4---[中华人民共和国
 居民身份证
 签发机关天津市公安局和平分局
 有效期限
 2008.09.17-2028.09.17
]---中华人民共和国
居民身份证
签发机关天津市公安局和平分局
有效期限
2008.09.17-2028.09.17

身份证识别:5---[姓名钱晓东
 性别男民族汉
 出生1986年02月28日
 住址广东省清远市清新县祥云小区
 6栋15单元
 441827198602283975
 公民身份号码
]---姓名钱晓东
性别男民族汉
出生1986年02月28日
住址广东省清远市清新县祥云小区
6栋15单元
441827198602283975
公民身份号码

身份证识别:6---[中华人民共和国
 居民身份证
 签发机关广东省清远市清新县派出所
 有效期限
 2003.01.19-2023.01.19
]---中华人民共和国
居民身份证
签发机关广东省清远市清新县派出所
有效期限
2003.01.19-2023.01.19

(身份证识别)

4.其它说明

(1)文章的排版若是使用上方图片+下方识别结果的布局,也许更加直观,但是已经写好了,就不调整了吧;

(2)上面可以看到识别的结果和代码均是使用当前(2024-11-29)最新版本(24.11.1);

(3)上面识别的结果特别的好(因为此前的所有版本识别的都特别差,特别是使用了中文的识别方式);

(4)仔细一些可以看到的是`常规识别`第三组身份证人像图片时,也就是常规识别5那部分的“姓名蚨”有问题,姓名后多出来了一个字,使用身份证识别的模式正确无误;

(5)给出来两种方式识别的Beyond Compare的对比结果吧,除了一些排版上的区别外,身份证识别属于定制化识别,理应更加准确和科学,如下图所示:

image.png

(6)《参考下载.zip》包下载;


 点赞


 发表评论

当前回复:作者

 评论列表


留言区