之前已经向大家介绍了华为HMS ML Kit文本识别技术如何通过拍照实现。那么问题来了,如果拍照时不是正对着文本拍摄,拍出来的照片是歪斜的,那么还能准确识别文本吗?
当然可以啦!HMS ML Kit文档校正技术可以自动识别文档位置,校正拍摄角度,并且支持用户自定义边界点位置,即使在倾斜角度也能够拍摄出文档的正面图像。
应用场景
文档校正技术在生活中有很多的应用场景。比如说在拍摄纸质文档时,相机处于倾斜的角度,导致阅读文档非常不方便。使用文档校正技术可以把文档调整到正对的视角,这样阅读起来就顺利多了。
再比如在记录卡证信息时,使用文档校正技术,不需要调整到正对卡证的视角,也可以拍摄出卡证的正面照片。
另外,在行程中因为身处于倾斜位置,道路旁的路牌难以准确识别,这时可以通过文档校正技术拍摄到路牌正面图片。
怎么样,是不是很方便呢?那我们接下来详细给大家介绍如何快速集成文档校正技术。
开发实战
1. 开发准备
详细的准备步骤可以参考华为开发者联盟:
https://developer.huawei.com/consumer/cn/doc/development/HMS-Guides/ml-process-4
这里列举关键的开发步骤。
1.1项目级gradle里配置Maven仓地址
1.2应用级gradle里配置SDK依赖
1.3在文件头添加配置
1.4添加如下语句到AndroidManifest.xml文件中,自动更新机器学习模型到设备
1.5申请摄像机权限和读本地图片权限
2. 代码开发
2.1 创建文本框检测/校正分析器。
2.2 通过android.graphics.Bitmap创建MLFrame对象用于分析器检测图片,支持的图片格式包括:jpg/jpeg/png,建议图片尺寸不小于320*320像素,不大于1920*1920像素。
2.3 调用asyncDocumentSkewDetect异步方法或analyseFrame同步方法进行文本框的检测。
当返回码是
MLDocumentSkewCorrectionConstant.SUCCESS时,将会返回文本框的四个顶点的坐标值,该坐标值是相对于传入图像的坐标,若与设备坐标不一致,需调用者进行转换;否则,返回的数据没有意义。
2.4 检测成功后,分别获取文本框四个顶点的坐标数据,然后以左上角为起点,按顺时针方向,分别把左上角、右上角、右下角、左下角加入到列表(List)中,最后构建MLDocumentSkewCorrectionCoordinateInput对象。
2.4.1 如果使用analyseFrame同步调用,先获取到检测结果,如下所示(使用asyncDocumentSkewDetect异步调用可忽略此步骤直接进行步骤2.4.2):
2.4.2 获取文本框四个顶点的坐标数据并构建MLDocumentSkewCorrectionCoordinateInput对象:
2.5 调用asyncDocumentSkewCorrect异步方法或syncDocumentSkewCorrect同步方法进行文本框的校正。
2.6 检测完成,停止分析器,释放检测资源。
Demo效果
下面这个demo展示了在倾斜角度扫描文档,文档校正技术可以把文档调整到正对视角。效果是不是很棒?
获取DEMO源码,戳阅读原文。