OCR综述—持续更新

整个OCR就是:文本检测文本识别是其中两个关键环节

目前OCR的应用场景主要分为以下三个方面:
1、自然场景下多形态文本检测与识别
2、手写体文本检测与识别
3、文档的文本检测与识别(版面分析等)

OCR目前的技术综述以及文献

一、文本检测

  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

二、文本识别

文本识别模型需要具备哪些要素:

  1. 首先是要读取输入的图像,提取图像特征,因此,需要有个卷积层用于读取图像和提取特征。
  2. 由于文本序列是不定长的,因此在模型中需要引入RNN(循环神经网络),一般是使用双向LSTM来处理不定长序列预测的问题。
  3. 为了提升模型的适用性,最好不要要求对输入字符进行分割,直接可进行端到端的训练,这样可减少大量的分割标注工作,这时就要引入CTC模型(Connectionist temporal classification, 联接时间分类),来解决样本的分割对齐的问题。
  4. 最后根据一定的规则,对模型输出结果进行纠正处理,输出正确结果。

下面介绍以下识别模型

  1. CNN+RNN+CTC(如CRNN):使用目前最为广泛的一种文本识别框架。需要自己构建字词库(包含常用字、各类字符等)。
    【文献】An End-to-End Trainable Neural Network for Image-based Sequence Recognition and Its Application to Scene Text Recognition

  2. CNN(如Densenet)+CTC:资料不多,效果一般,泛化能力较差。没有加入了RNN的效果好。
    【文献】暂未找到,可参考GitHub

  3. Tesserocr(Tesseract):使用比较广泛的一种开源识别框架,支持多语言多平台。Tesseract在识别清晰的标准中文字体效果还行,稍微复杂的情况就很糟糕(多字体等),而且花费的时间也很多。

  4. RARE:主要用于识别变形的文本图像效果好,用于自然场景下文本识别。
    【文献】Robust Scene Text Recognition with Automatic Rectification

  5. FOTS(EAST+CRNN):端到端OCR模型,检测和识别任务共享卷积特征层,既节省了计算时间,也比两阶段训练方式学习到更多图像特征。引入了旋转感兴趣区域(RoIRotate), 可以从卷积特征图中产生出定向的文本区域,从而支持倾斜文本的识别。
    【文献】FOTS: Fast Oriented Text Spotting with a Unified Network

OCR技术系列实践

chineseocr_lite:超轻量级中文ocr,支持竖排文字识别, 支持ncnn推理 , psenet(8.5M) + crnn(6.3M) + anglenet(1.5M) 总模型仅17M
chineseocr:基于YOLOv3检测的中文识别
chinese_ocr:Keras实现基于CTPN检测和DenseNet分类的端到端不定长中文字符检测和识别
字符识别技术总览 文字定位与切割 大批量生成文字训练集 基于深度学习的文字识别(3755个汉字)

自然场景文本检测技术综述(CTPN, SegLink, EAST)文本检测CTPN的代码实现
端到端不定长文字识别CRNN算法详解 端到端不定长文本识别CRNN代码实现

身份证识别

深度学习实践系列之–身份证上汉字及数字识别系统的实现
https://github.com/Raymondhhh90/idcardocr:web部署,第二代居民身份证信息识别,速度略慢,待优化
https://github.com/wzb19960208/idCardRecognition身份证识别
https://github.com/rmtheis/android-ocr基于Tesseract的身份证识别
https://github.com/developer79433/passport_mrz_detector_cpp护照识别
https://github.com/evilgix/Evil: 银行卡、身份证、门牌号光学识别
https://github.com/AstarLight/CPS-OCR-Engine:3755个(一级字库)的印刷体汉字识别
https://github.com/senlinuc/caffe_ocr:CNN+BLSTM+CTC的识别架构
https://github.com/simplezhli/Tesseract-OCR-Scanner:基于Tesseract-OCR实现自动扫描识别手机号

tensorflow 实现端到端的OCR:二代身份证号识别ocr_tensorflow_cnn
tensorflow LSTM+CTC实现端到端的不定长数字串识别

OCR_repo文本检测、文本识别(cnn+ctc、crnn+ctc)

车牌识别

CCPD: Chinese City Parking Dataset
https://github.com/lyl8213/Plate_Recognition-LPRnet:LPRNet: License Plate Recognition via Deep Neural Networks的tensorflow实现
https://github.com/liuruoze/EasyPR中文车牌识别系统
https://github.com/zeusees/HyperLPR基于深度学习的实时车牌识别项目
https://github.com/zhubenfu/License-Plate-Detect-Recognition-via-Deep-Neural-Networks-accuracy-up-to-99.9基于MTCNN的车牌识别

移动端部署

https://github.com/wangtaoT/AndroidOCR:基于Google Tesseract-OCR 文字识别 仿小猿搜题、作业帮
https://github.com/still-wait/IdCard_DeepLearning身份证识别移动端

文字检测

https://github.com/ploverpang/HeadlineDetectionBySWT基于SWT的文字检测
https://github.com/tianzhi0549/CTPNDetecting Text in Natural Image with Connectionist Text Proposal Network
https://github.com/eragonruan/text-detection-ctpnCTPN的tensorflow实现
https://github.com/MhLiao/TextBoxesA Fast Text Detector with a Single Deep Neural Network
https://github.com/yestinsong/Text-DetectionMser-Swt-Text-Detection-With-Verification
https://github.com/argman/EASTAn Efficient and Accurate Scene Text Detector
https://github.com/huoyijie/AdvancedEASTEAST的加速版

https://github.com/chenxinpeng/SSD_scene_text_detection
https://github.com/Belval/TextRecognitionDataGenerator:训练数据生成工具
https://github.com/JarveeLee/SynthText_Chinese_version汉字生成工具
https://github.com/szad670401/OCR_CharGen用于OCR训练的字符样本生成工具
https://github.com/johnhany/textRotCorrect:使用OpenCV实现的基于离散傅里叶变换的文本图像旋转校正
https://github.com/NVlabs/ocropus3pytorch

你可能感兴趣的:(深度学习,OCR)