前言:
光学字符识别(OCR)指对文本资料的图像文件进行分析识别处理,获取文字及版面信息的过程。目前OCR主要落地应用场景包括:自然场景文本检测识别、文档类印刷体文本检测识别、手写体文本检测识别。自然场景应用例如汽车车牌、汽车VIN码、街景等文本检测识别,证件(身份证,户口本等)、银行卡、票据(发票,收据,小票等)文本检测识别等等;文档类印刷体文本检测识别应用例如学生试卷转录,合同、法律判决书、论文电子书文本检测识别等等;手写体文本检测识别应用例如手写快递单文本检测识别,手写签名文本检测识别,学生考试作答试卷文本检测识别等等。虽然不同场景不同任务技术实现略有差别,但是主要核心技术包含:文本检测,文本识别;相关技术包含:文本图像矫正,图像文本版面分析,文本识别结果矫正,关键信息抽取等。
文本检测算法:
一:基于 Anchor Boxes 自上而下 + 自下而上 的检测方法:
- Faster-RCNN:基于通用物体检测实现文本检测。
- TextBoxes:基于SSD更改卷积核尺寸,特殊设置 anchor,解决单词级别文本检测。
- TextBoxes ++:解决单词级别,多方向文本检测。
- R2CNN:解决旋转文本检测。
- RRPN
- YOLO系列
- SegLink:解决任意长短,形状文本检测。
- CTPN:解决水平或竖直任意长短文本检测。
二:基于 Anchor Free 的分割方法:
- EAST/EAST++:解决任意形状文本检测。
- Pixel Link
- PSENet:解决相邻文本实例分割困难问题。
- PAN
- DBNet
总结:基于Anchor方法准确率较高,但是对于弯曲文本和畸变文本并不能够很好的处理,文本召回与Anchor预先设置的尺度息息相关。基于分割的方法能够克服弯曲和畸变,但是后处理相对麻烦,无法解决文本中包含文本的情况。目前通用OCR检测工程落地DBNet会应用更多。
文本识别算法:
- CRNN + CTC
- CRNN + ACE
- CRNN + attention
- CNN + Transformer
- Transformer
总结:目前通用OCR识别无特殊要求情况下,工程落地CTC会应用更多些。当识别文本序列位置敏感或者隐藏含有结构信息时,例如弯曲畸变文本识别或者数学公式识别,会应用attention(Seq2Seq)和Transformer更多一些。近一年由于vision transformer的热潮,也催生文本识别更多基于Transformer范式的出现,例如结合图像和文本信息的多模态识别方法;基于大规模自监督图像预训练等等。
工程部署:
在实际项目中,训练一般都会使用python语言基于pytorch、tensorflow等开发框架实验算法,而在应用中大多会使用C++进行模型推理,同时加速模型推理速度,降低模型占用资源,方便集成到项目系统之中,无论是服务器还是端侧设备。基于框架优化,CPU环境下会将模型转化成onnx格式,利用onnxruntime框架加速推理;GPU环境下将模型转化成trt格式,利用tensorrt框架加速推理,同时tensorrt支持模型量化,降低存储内存。基于模型优化,一般会选用小模型预训练,以大模型为教师网络蒸馏小模型,并以一定策略剪枝模型,加速推理速度。
常用资源:
一:论文学习资源
- 顶会:ICDAR、CVPR、ECCV、ICCV等
- Arxiv搜索引擎:http://www.arxiv-sanity.com/
- 论文速读CVer :CVer计算机视觉 - 知乎
二:工程学习资源
- PaddleOCR:GitHub - PaddlePaddle/PaddleOCR: Awesome multilingual OCR toolkits based on PaddlePaddle (practical ultra lightweight OCR system, support 80+ languages recognition, provide data annotation and synthesis tools, support training and deployment among server, mobile, embedded and IoT devices)https://github.com/PaddlePaddle/PaddleOCR
- MMOCR:GitHub - open-mmlab/mmocr: OpenMMLab Text Detection, Recognition and Understanding Toolboxhttp://github.com/open-mmlab/mmocr
三:部分常用公开数据集
- SVT(Street View Text)
- SVTP (Street View Text Perspective)
- IIIT5K
- ICDAR 2003 (IC03)
- ICDAR 2013 (IC13)
- ICDAR 2015 (IC15)
- CUTE80 (Curve Text)
- ICDAR2019-LSVT
- ICDAR2017-RCTW-17
- ICDAR2019-ArT