偶然在网上发现《深度实践OCR:基于深度学习的文字识别》一书,也为了先学习一下OCR的前置知识,于是阅读该书并浅浅地将重点和个人理解记录下来。

绪论

OCR发展史

著名会议

以下会议均发布过OCR领域的高质量论文,可供阅读与参考。

OCR相关

  • ICDAR(文档分析与识别国际会议):dblp
  • DAS(文档分析系统国际研讨会):dblp
  • DPR(文档识别与检索国际会议):dblp
  • ICPR(模式识别国际会议):dblp
  • ICFHR(手写识别国际前沿会议):dblp

通用类别的计算机视觉三大会议

  • CVPR(国际计算机视觉与模式识别会议):dblp
  • ECCV(欧洲计算机视觉国际会议):dblp
  • ICCV(国际计算机视觉大会):dblp

人工智能会议

  • AAAI(人工智能促进协会):dblp

发展阶段

  1. 传统OCR技术方法
  2. 基于深度学习的OCR技术方法(重点)

其他概念

  • DAR(Document Analysis and Recognition):文档图像分析和识别
  • STR(Sense Text Recognition):场景文字识别(重点)

传统与现代

传统OCR方法的一般流程

  1. 图像输入

  2. 图像预处理

    • 二值化:彩色图像处理成只含背景信息,前景信息定义为黑色,背景信息定义为白色。
    • 去噪
    • 倾斜校正
  3. 版面分析

    • 分段落、分行的过程
    • 没有一个固定与统一的切割模型
  4. 字符切割

    意思是切割成一个个单字。

  5. 字符识别

    • 从模板匹配发展到特征提取
    • 笔画的各种形态会增加特征提取的难度
  6. 版面恢复

    • 识别后的文字有规律地排版
    • 最好是跟原来一样的
  7. 后处理

    • 校正

以前习惯手动提取特征后,在采用一般的机器学习方法来做识别,如SVM。

深度学习OCR方法

两大核心步骤

  1. 文本检测:主要用于定位文本的位置
  2. 文本识别:用于识别文本的具体内容

文字检测

传统方法

经典的方法:SWT、HOG、MSER

处理过程:

  1. 先对图像设置特征金字塔
  2. 滑动窗口扫描
  3. 手动提取特征阶段(经典方法)
  4. 滑动窗口提取分类
  5. 汇总文本区域

深度学习方法

书本第七页有一张非常详细的图,可供参考。方法主要分成以下几类:

  1. 基于候选框(Anchor)
  2. 基于语义分割(Segmentation)
  3. 混合两种方法(Hybrid)
  4. 其他

文字识别

常见框架

  • CNN+RNN+CTC
  • CNN+Seq2Seq+Attention

CNN作为编码器主要用于提取特征

针对弯曲文本的方法

  • STN矫正
  • TPS变换找控制点

另外,书本第九页生动展示了文字识别相关框架的结构图,以及文字识别针对不同类型文本现有的处理模型。

本书2-4章

第二章:图像预处理,介绍二值化、平滑去噪和倾斜检测等方法;

第三章:传统机器学习方法。介绍了传统的机器学习方法如SVM、k-NN算法在OCR领域的应用及其原理。

第四章:介绍深度学习基础知识。用简洁的话语介绍深度学习的知识,如神经元、卷积神经网络等。

由于重点要放在深度学习在OCR上的应用,因此这四个章节忽略不写。但需要注意的是,这些内容是OCR上非常重要的基础,也有深度学习不可缺少的知识体系。在深入探讨深度学习在OCR上的应用时,务必要对以上内容有一定的了解。

本书后续章节

后续章节介绍了数据处理和生成、文本检测和识别的通用算法以及在OCR领域中独特的处理方法、后处理和版面分析等内容。总体而言,本书介绍的知识比较全面,能先将每个知识点先以一个宏观的角度去叙述,让人对其有一个初步的了解之后,才介绍在OCR中一些独特的方法。因此,对初学者而言是比较友好的。

个人比较感兴趣的还是在端到端的OCR技术上,此处本书也有体现。感兴趣的读者可以自行购买阅读。