目录
综述
推荐网址
Python 现有模块
https://blog.csdn.net/u013063099/article/details/91950755
https://www.cnblogs.com/skyfsm/p/9776611.html
本文目的是为了总结OCR各类技术的发展,从搜集资料到整理,可以看出OCR技术目前的一个大致发展趋势。目前还处于随时添加状态,敬请期待!
【更新时间】2019年9月26日
【很好的参考资料】这个GitHub收集了文本检测、文本识别、端到端的论文以及部分开源代码,很好的学习资料!
1 OCR的应用场景
目前OCR的应用场景主要分为以下三个方面:
1、自然场景下多形态文本检测与识别
2、手写体文本检测与识别
3、文档的文本检测与识别(版面分析等)
2 OCR目前的技术综述以及文献
2.1 文本检测
1、CTPN(基于Faster RCNN):目前比较成熟的文本检测框架,精确度较好。但是检测时间较长,有很大的优化空间。
【文献】Detecting Text in Natural Image with Connectionist Text Proposal Network
2、TextBoxes、TextBoxes++(基于SSD):调整Anchor长宽比,适用于文字细长的特点,但针对小文本会有漏检。
【文献】TextBoxes: A Fast Text Detector with a Single Deep Neural Network
TextBoxes++: A Single-Shot Oriented Scene Text Detector
3、SegLink(CTPN+SSD):通常用于自然场景下,检测多角度文本。
【文献】Detecting Oriented Text in Natural Images by Linking Segments
4、DMPNet:采用非矩形四边形选定Anchor进行检测,通过Monte-Carlo方法计算标注区域于矩形候选框和旋转候选框的重合度后重新计算顶点坐标,得到非矩形四边形的顶点坐标。适用于自然场景下文本检测。
【文献】Deep Matching Prior Network: Toward Tighter Multi-oriented Text Detection
5、YOLO:文本检测时间短,精确度较好。但针对小目标效果一般,容易造成大范围漏检。
【文献】YOLOv3: An Incremental Improvement
6、EAST:采取FCN思路,做特征提取和特征融合,局部感知NMS阶段完成检测。网络的简洁使得检测准确率和速度都有进一步提升。(针对自然场景下使用较多)
【文献】EAST: An Efficient and Accurate Scene Text Detector
7、Pixel-Anchor:针对Anchor数量多引起文本出现的丢失问题、Pixel感受野不足引起长文本丢失情况,结合两者各自的优点,对于长行的中文检测场景有较好的适应性。网络结构可以分为两部分,其中pixel-based的方法为对EAST的改进,anchor-based的方法为对SSD的改进。前者主要为了检测中等的文本,后者主要为了检测长行和较小的文本。
【文献】Pixel-Anchor: A Fast Oriented Scene Text Detector with Combined Networks
8、IncepText:针对大尺度、长宽比及方向变化问题,借鉴GoogLeNet中的inception模块来解决这些问题。在inception结构中通过不同尺寸的卷积核设计达到检测不同大小和宽高比的文字,同时引入deformable卷积层操作和deformable PSROI pooling层提升任意方向文字的检测效果。
【文献】IncepText: A New Inception-Text Module with Deformable PSROI Pooling for Multi-Oriented Scene Text Detection
2.2 文本识别
1、CNN+RNN+CTC(如CRNN):使用目前最为广泛的一种文本识别框架。需要自己构建字词库(包含常用字、各类字符等)。
【文献】An End-to-End Trainable Neural Network for Image-based Sequence Recognition and Its Application to Scene Text Recognition
【讲解及优化】https://blog.csdn.net/qq_14845119/article/details/78934334
2、CNN(如Densenet)+CTC:资料不多,效果一般,泛化能力较差。没有加入了RNN的效果好。
【文献】暂未找到,可参考GitHub
3、Tesserocr(Tesseract):使用比较广泛的一种开源识别框架,支持多语言多平台。Tesseract在识别清晰的标准中文字体效果还行,稍微复杂的情况就很糟糕(多字体等),而且花费的时间也很多。
【文献】暂未找到,可参考GitHub
4、RARE:主要用于识别变形的文本图像效果好,用于自然场景下文本识别。
【文献】Robust Scene Text Recognition with Automatic Rectification
5、FOTS(EAST+CRNN):端到端OCR模型,检测和识别任务共享卷积特征层,既节省了计算时间,也比两阶段训练方式学习到更多图像特征。引入了旋转感兴趣区域(RoIRotate), 可以从卷积特征图中产生出定向的文本区域,从而支持倾斜文本的识别。
【文献】FOTS: Fast Oriented Text Spotting with a Unified Network
【讲解】https://blog.csdn.net/qq_14845119/article/details/84635847
6、ASTER:模型主要分为两个部分,一个是矫正模型,一个是识别模型。文本矫正模型,不需要任何矫正标注信息,对弯曲文本、透视文本有着很好的矫正效果。识别模型中的CNN使用了ResNet的结构,最后的解码部分使用的是Sequence2Sequence机制来进行解码,不同于CRNN的CTCLoss。
【文献】ASTER: An Attentional Scene Text Recognizer with Flexible Rectification
3 最新比赛进展
说道OCR的比赛,最著名的当属ICDAR了,即文档分析与识别国际会议(International Conference on Document Analysis and Recognition,ICDAR)。目前是每两年举办一次,2019年举办了一次比赛(ICDAR 2019),共分为以下六个赛道:
(1)Scene Text Visual Question Answering(ST-VQA,场景文本识别并回答问题)
(2)Multi-lingual scene text detection and recognition(MLT,多语言场景文本检测和识别)
(3)Large-scale Street View Text with Partial Labeling(LSVT,部分标签的大型街景文本识别)
(4)Arbitrary-Shaped Text(ArT,任意形状文本识别)
(5)Scanned Receipts OCR and Information Extraction(SROIE,扫描收据OCR和信息提取)
(6)Reading Chinese Text on Signboard(ReCTS,在商家招牌上识别中文)
目前有几个赛道的比赛结果已出,而每一个赛道中又会有不同的子任务。例如SROIE中,会有文本检测、文本识别、关键信息提取三个子任务。
从比赛结果中,我们可以得出各个参赛队伍使用哪一种先进的方法去提升自己的模型的分数。
比赛网址:https://rrc.cvc.uab.es/
https://ptorch.com/
ORC:https://ptorch.com/?keyword=ocr
项目推荐:OCR项目(车牌识别):https://ptorch.com/news/251.html
pytesseract