数据要素产业
什么是NLP?NLP的两个核心任务是什么?
01
什么是NLP
NLP(自然语言处理-Natural language processing)就是在机器语言与人类语言之间沟通的桥梁,以实现人机交流的目的。
02
NLP的两个核心任务
NLU:自然语言理解。希望机器像人一样,具备正常人的语言理解能力。NLG:自然语言生成。为了跨越人类和机器之间的沟通鸿沟,将非语言格式的数据转换成人类可以理解的语言格式,如文章、报告等。
学习链接:https://easyai.tech/ai-definition/nlp/
文字也是人类语言之一,文字识别分为两个具体步骤:文字的检测和文字的识别,两者缺一不可,尤其是文字检测,是识别的前提条件,若文字都找不到,那何谈文字识别。
03
自然场景文本检测
自然场景下的文本检测有如下几个难点:
文本存在多种分布,文本排布形式多样;
文本存在多个方向;
多种语言混合。
1、Faster RCNN
Faster RCNN做文本检测感觉问题不大,但是从效果来看,仅套用Faster RCNN来做文本检测效果并不好,原因在于,文本有自己独有的特点,这种通用的文本检测框架并不能很好地解决文本的这些特点。
2、CTPN
CTPN(基于Faster RCNN):目前比较成熟的文本检测框架,精确度较好。但是检测时间较长,有很大的优化空间。
【文献】Detecting Text in Natural Image with Connectionist Text Proposal Network
文本行一般以水平长矩形的形式存在,而且文本行中每个字都有间隔,所以仅套用Faster RCNN来做文本检测效果并不好。
而CTPN剔除一个新奇的想法,我们可以把文本检测的任务拆分,第一步我们检测文本框中的一部分,判断它是不是一个文本的一部分,当对一幅图里所有小文本框都检测之后,我们就将属于同一个文本框的小文本框合并,合并之后就可以得到一个完整的、大的文本框了,也就完成了文本的检测任务。这个想法有点像“分治法”,先检测大物体的一小部分,等所有小部分都检测出来,大物体也就可以检测出来了。
如上图所示,左边的图是直接使用Faster RCNN中的RPN来进行候选框提取,可以看出,这种候选框太粗糙了,效果并不好。而右图是使用CTPN+RNN进行候选框提取,利用许多小候选框来合并成一个大文本预测框,可以看出这个算法的效果非常不错。
当然,CTPN也有一个很明显的缺点:对于非水平的文本的检测效果并不好。
3、Seglink
Seglink(CTPN+SSD):通常用于自然场景下,检测多角度文本。
【文献】Detecting Oriented Text in Natural Images by linking Segments
上图的绿色框的检测效果才是我们的终极目标。那么怎么基于原来经典的目标检测算法做相应的优化以适应这种检测效果的要求呢?
Seglink采取了一个思路那就是:让模型再学习一个参数θ,这个θ表示文本框的旋转角度,也就是我们最终要回归的参数从原来的(x,y,w,h)变成(x,y,w,h,θ)。除此之外,Seglink还提出了Segment和linking两个重要概念。
Segment可理解为文本行的任意一部分,一个完整的文本行中包含多个segment(上图黄色框)。每个segment用link(上图绿色线)连接组合起来。
4、EAST
EAST:采取FCN思路,做特征提取和特征融合,局部感知NMS阶段完成检测。网络的简洁使得检测准确率和速度都有进一步提升。(针对自然场景下使用较多)。
【文献】EAST: An Efficient and Accurate Scene Text Detector
通过上图我们知道,一个文本检测有多个阶段,EAST的作者认为,一个文本检测算法被拆分成多个阶段其实并没有太多好处,实现真正端到端的文本检测网络才是正确之举。所以EAST的pipeline相当优雅,只分为FCN生成文本行参数阶段和局部感知NMS阶段,网络的简洁是的检测的准确性和速度都有了进一步的提高。
EAST网络分为特征提取层+特征融合层+输出层三大部分。EAST就是借助FCN架构直接回归出文本行的(x,y,w,h,θ)+置信度+四边形的四个坐标!非常简洁!当然还有其他检测算法,这里就不一一介绍啦。
学习链接:
https://www.cnblogs.com/skyfsm/p/9776611.html
04
自然场景文本识别
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
【开源代码】
https://github.com/solivr/tf-crnn
学习链接:
https://www.jianshu.com/p/5b4791189583
2、CNN(如Densenet)+CTC:资料不多,效果一般,泛化能力较差。没有加入了RNN的效果好。
【文献】暂未找到,可参考GitHub
3、Tesserocr(Tesseract):使用比较广泛的一种开源识别框架,支持多语言多平台。Tesseract在识别清晰的标准中文字体效果还行,稍微复杂的情况就很糟糕(多字体等),而且花费的时间也很多。
【文献】暂未找到,可参考GitHub
4、FOTS(EAST+CRNN):端到端OCR模型,检测和识别任务共享卷积特征层,既节省了计算时间,也比两阶段训练方式学习到更多图像特征。引入了旋转感兴趣区域(RoIRotate), 可以从卷积特征图中产生出定向的文本区域,从而支持倾斜文本的识别。
【文献】
FOTS: Fast Oriented Text Spotting with a Unified Network
【讲解】
https://blog.csdn.net/qq_14845119/article/details/84635847
5、ASTER:模型主要分为两个部分,一个是矫正模型,一个是识别模型。文本矫正模型,不需要任何矫正标注信息,对弯曲文本、透视文本有着很好的矫正效果。识别模型中的CNN使用了ResNet的结构,最后的解码部分使用的是Sequence2Sequence机制来进行解码,不同于CRNN的CTCLoss。
【文献】
ASTER: An Attentional Scene Text Recognizer with Flexible Rectification
在NLP的产品体系中,OCR是关于文档、文件处理的基础步骤,是无法回避和绕开的。
关于OCR的基础知识,也就成了NLP产品经理必不可少的知识储备了——只有详细地了解了关于OCR的处理原理和步骤,才能充分发挥现有技术的优势,规避其弱点,创造出更大的价值。
声明
欢迎转发本号原创内容,任何形式的媒体或机构未经授权,不得转载和摘编。