导语
一、背景
OCR技术, 即Optical Character Recognition(光学字符识别),用于识别图像中的文字,常见的有卡证识别、票据识别和通用识别等。OCR具有非常广泛的应用场景。如目前火热的教育场景中拍照搜题和智能作业批改、金融场景中票据识别、办公场景的文档电子化、交通场景中的停车管理等,都用到了OCR的识别能力。
微信OCR识别能力自2018年开始大力研发,目前支持多种卡证识别、车牌识别、通用识别等,经历了多次算法迭代,识别精度不断提升,取得了业界领先的识别水准。
本文主要介绍微信OCR能力是怎么落地图片文字提取业务的。
二、难点与挑战
1. 如何判断图像中是否存在文字?
2. 如何判断文本图像的类别?
3. 如何优化通用识别算法,达到效果和效率的平衡?
4. 如何进行版面分析?
三、文字提取整体解决方案
文本图像分类模块用于判断文本图像的类别,是垂类文本场景还是通用文本场景等,根据类别选择不同的识别路线。垂类文本识别包括证件识别、表格识别等,可以调用相关的API进行识别,我们也会根据线上用户数据分析用户需求,不断扩展新的垂类文本识别能力。
通用文本识别包括文本检测和文本识别两个阶段,文本检测用于定位文字区域,文本识别用于识别文本行的内容。
版面分析模块将识别出来的文本按易于阅读的方式进行排版展示。
下面将对流程中的各个模块中的算法进行介绍。
1. 快速文字判定
该模块采用超轻量级的CNN网络,在移动端平均耗时约80ms,具有较高的检测召回和分类精度,能够快速过滤不必要的图像。
2. 文本图像分类
我们采用了基于实例分割的DBNet算法,DBNet将二值化进行近似,使其可导,融入训练,从而获取更准确的边界,大大降低了后处理的耗时。此外,DB使用轻量级网络也有很好的表现,且长文本不易切断。
此外为了适应多方向的文本图像,我们在检测模型上加入了方向判定分支,支持判断文本框的文本方向。
在模型训练上,我们采用了模型蒸馏的方法,先训练resnet50模型作为teacher模型,然后加入mobilenetv3模型作为student模型联合训练,最终的性能相对不蒸馏的模型能提升1个点。
在模型部署上,采用TensorRT部署,线上T4机型平均耗时小于30ms。
四、总结与展望
参考文献
[elementor-template id=”6632″]
0 条评论