JAVA识别身份证号码,H5识别身份证号码,tesseract-ocr识别(二)

背景介绍

上一篇博文介绍了如何使用JAVA识别身份证号码,假设在截取了身份证号码信息的情况下,这一篇博文主要讨论一下思路吧,技术方面都是大家会的。

思路分析

H5拍照上传 —> 服务端截取身份证号码 —–> 识别号码 —–>返回信息

这几步,关键点在于 截取身份证号码这个步骤。我们期望的是正好截取到身份证号码的位置。
JAVA识别身份证号码,H5识别身份证号码,tesseract-ocr识别(二)_第1张图片
这位大哥,罪过罪过,暂且借你图片一用,如侵犯了权益,请联系我,立马删除。

最优方案
我觉得最好的办法是,直接在照相的界面出现一个红色的框框,让用户自己去对准身份证号码,可惜H5调用摄像头只能使用系统的界面,这个功能必须APP来做。没办法最优方案只好抛弃。
歪招
由于H5的限制,我想了一个歪招,用户上传完照片之后,看见图片才给他显示一个红框,如果识别错误,用户再次照相的时候自己去校准。
这个体验肯定非常不好,目前未使用APP的情况下,我们暂且这样吧。

处理图片
在截取身份证位置的时候,每个摄像头像素不一样怎么办呢?当然可以使用百分比截取。
而我使用的是对图片进行缩放,据我观察,大概缩放到 900x540,当然这会有一点变形。
具体值大家自行把握。
然后截取身份证号码的位置。具体值大家可以自行把握。

        ImgCutUtil.zoomImage(src, src, 900, 540);
        ImgCutUtil.cutImage(src, temp + filname, 290, 400, 600, 140);
        return TesseractUtil.recognizeText(new File(temp + filname));

找到前端,把界面做出来,你看见的红色框框是一个div,是前端用CSS画出来的,当然你也可以在后台处理图片的时候,把你截取的那一部分加上红色框。展示界面如下。
JAVA识别身份证号码,H5识别身份证号码,tesseract-ocr识别(二)_第2张图片

JAVA识别身份证号码,H5识别身份证号码,tesseract-ocr识别(二)_第3张图片

测试结果

使用Iphone5s、Iphone6、Iphone6s测试,识别效果良好错误率很少。
使用魅族测试,识别率低。照片模糊偏黄(是不是不对图片进行缩放会好些?大家可以测试一下)

测试结果证明一个道理,这个东西识别率要提高,必须要结合APP做!!!

后记

依照同样的思路,安装上中文语言包,然后对tesseract进行训练,是不是可以把所有的信息都是别呢?如果你做出来了请告诉我!!嘿嘿嘿。

JAVA识别身份证号码,H5识别身份证号码,tesseract-ocr识别(二)_第4张图片

你可能感兴趣的:(java)