ocr简单介绍

OCR 简介

OCR,全称是Optical Character Recognition, 即光学字符识别,面向扫描文件。但是由于现在数字图像的普及,也包含场景文字识别(Scene Text Recognition, STR), 面向自然场景。 这里泛指文字检测和识别,包括扫描文档和自然场景的文字识别。
ocr简单介绍_第1张图片

可以看到,其主要工作内容是从各种各类图片中去识别出对应的文字内容,包含中文、英文及其它各种字符类型。一般而言,需求针对具体应用来设计具体类型的字符识别。

OCR的应用场景

OCR的应用场景很多,主要充当的作用是计算机的眼睛筛选器,从图片这类非结构化数据中识别出对应的字符出来,再进行后续的处理,比如扫描翻译等。

常见的应用如下图所示:

ocr简单介绍_第2张图片

这项技术非常省时省力,但有时候由于识别错误问题,需要人工再校正一遍,但也比挨个挨个输入对应的数字更加轻松一些。

OCR面临的挑战

  • 模型大小(推理速度)与准确率的权衡

    • 客户端侧要求OCR模型足够轻量,识别速度足够快;
    • 复杂数据场景需要OCR识别精度高;

ocr简单介绍_第3张图片

一般而言,算法应用都会面临这种问题,需要针对具体应用具体对待,选取一个折中方案作为最终的解决方案。

  • 通用性差,偏向于垂直类应用场景

ocr简单介绍_第4张图片

一般而言,OCR技术最少包含两个步骤:

  • 第一步, 从图片中检测到文字区域;
  • 第二步,将对应的文字区域识别出对应的文字;

ocr简单介绍_第5张图片

可以看到这其中涵盖两项任务,文字检测,文字识别。我们知道,文字检测属于目标检测中的一种,目标检测算法受到识别目标的影响,如果识别目标变了,目标检测算法也需要重新的进行训练与优化,使得它能够去识别到对应的检测目标区域,从而将其框选出来。同样的,不同的应用场景,文字的样式和符号可能是不同的,因此很难有一种通用的文字目标检测器,如果有,那也是无法去涵盖市面上所有的文字,需要针对特定文字来训练特定的文字检测器。同理,文字识别算法也受到不同文字样式和符号的影响,也需要针对特定的文字来得到特定的文字识别器。

上述两部分操作就限制了OCR的商业方案很难成为一个通用的解决方案,只能特定场景下实现特定的ocr算法,适用于特定的应用场景。

商业公司提供的API接口应用样例

大多数是针对特定的应用场景去识别, 想使用哪个应用 场景点击哪个应用场景进去测试即可,以通用文字识别举例:https://ai.baidu.com/tech/ocr/general

ocr简单介绍_第6张图片

经典文字检测算法

文字检测算法主要有基于回归和基于分割这两类算法。

ocr简单介绍_第7张图片

基于回归的方法

  • CTPN
  • SegLink
  • Textboxes/Textboxes++
  • EAST
  • LOMO
  • SAST
  • CRAFT

该类方法的优缺点很明显: 优点是对规则形状文本检测效果较好,缺点是无法准确检测出不规则形状文本。

基于分割的方法

  • Pixel enbedding in
  • SPCNet
  • PSENet
  • PAN
  • DB

该类方法的优缺点很明显: 优点是对不同形状文本检测效果都比较好,缺点是后处理复杂耗时多,重叠文本效果差。

受欢迎的两个算法分别是EAST算法和DB算法。其中,DB算法在中文检测上要由于EAST算法。

经典文字识别算法

文字识别算法早期的做法是将单行文字进行分割,分割后对于单个字符一般使用特征工程+分类器来进行识别。

目前的做法大多数是不进行字符分割,这类算法主要有基于定长的与基于不定长的。

ocr简单介绍_第8张图片

需要分割的方法:

流程一般是:

  • 搜索到最佳分割点:用的最多的是基于投影直方图极值点作为候选分割点并使用分类器+beam search 搜索最佳分割点
  • 基于分割点后划分单行句子,并对分割后的句子中的每个字符进行划分,对于单个字符,传统的就是特征工程+分类器。
  • 一般流程是 灰度 -> 二值化->矫正图像 -> 提取特征(方法多种多样例如pca lbp 等等) >分类器(分类器大致有SVM ANN KNN等等 ), 近年来,特征工程被CNN网络取代的多,省去人工找特征的操作。

不需要分割的方法

  • 定长:各个字符看成是独立的,多标签分类mutli-label classification, 比如车牌,验证码等;
  • 不定长:
    • CRNN
    • Rosetta
    • STAR-Net
    • RARE
    • RNN/LSTM/GRU+CTC
    • attention-mechanism(CNN+RNN+Attention)

补充

有的会在文字检测后加一个文字校准操作,将不规则的形状或者夸张的字体进行校准, 以便后续更容易的识别。
ocr简单介绍_第9张图片

Baek J, Kim G, Lee J, et al. What is wrong with scene text recognition model comparisons? dataset and model analysis. ICCV, 2019.

常用数据集:

  • LSVT 45w中文街景图 https://ai.baidu.com/broad/introduction?dataset=lsvt
  • ICDAR2019-LSVT行识别 29w张标注图片 https://aistudio.baidu.com/aistudio/competition/detail/8
  • ICDAR2019-ArT 1w图片 https://ai.baidu.com/broad/introduction?dataset=art
  • 中文街景文字 https://aistudio.baidu.com/aistudio/competition/detail/8
  • 中文文档文字 https://github.com/YCG09/chinese_oc

ocr简单介绍_第10张图片

数据合成工具(扩增):

  • text_renderer

  • SynthText

  • SynthText_Chinese_version

  • TextRecognitionDataGenerator

  • SynthText3D

  • UnrealTex

ocr简单介绍_第11张图片

数据标注工具:

  • 矩形标注

    • labelImg:https://github.com/tzutalin/labelImg
  • 旋转矩形标注

    • roLabelImg: https://github.com/cgvict/roLabelImg
  • 四点、多边形、圆形等多种标注

    • Labelme: https://github.com/wkentaro/labelme

ocr简单介绍_第12张图片

参考资料

  • 综述性文章:

    • 自然场景文本检测识别技术综述
    • OCR综述论文笔记
  • 实战

    • Paddle-ocr
    • Paddle-ocr-ppt介绍
  • 链接

    • https://www.zhihu.com/question/20191727
    • https://blog.csdn.net/weixin_40400177/article/details/103540951

你可能感兴趣的:(OCR文字识别,算法,ocr)