文字识别(输入为自然场景中的图像)

肉丸不肉 肉丸不肉     2023-02-03     130

关键词:

  • 大老板给我定的方向是文字识别。所以在回所之前先把基础知识看一下,相当于综述~
  • 我的方向与目前的文字识别区别在于,目前的文字识别输入主要是自然场景中的图像,从图像进行文字检测再继而文字识别;而我要做的输入是通过手写笔在特殊笔记本上书写后采集到的坐标点。但是还是先从目前的文字识别入手吧~
  • 在这个过程中目的有两个。首先是了解文字识别的步骤与经典算法,其次是学会使用深度学习框架。

参考文献:

  1. OCR文字识别用的是什么算法?
  2. 文字识别方法整理
  3. 一文读懂CRNN+CTC文字识别
  4. 场景文字检测—CTPN原理与实现
  5. 完全解析RNN, Seq2Seq, Attention注意力机制
  6. 【AI实战】手把手教你文字识别(识别篇:LSTM+CTC, CRNN, chineseocr方法)

一、了解OCR

1. 单独文字识别:把OCR过程类比到模式识别过程

OCR是模式识别的一个领域,所以整体过程也就是模式识别的过程。

  1. 预处理:对包含文字的图像进行处理以便后续进行特征提取、学习。这个过程的主要目的是减少图像中的无用信息,以便方便后面的处理。在这个步骤通常有:灰度化(如果是彩色图像)、降噪、二值化、字符切分以及归一化这些子步骤。经过二值化后,图像只剩下两种颜色,即黑和白,其中一个是图像背景,另一个颜色就是要识别的文字了。降噪在这个阶段非常重要,降噪算法的好坏对特征提取的影响很大。字符切分则是将图像中的文字分割成单个文字——识别的时候是一个字一个字识别的。如果文字行有倾斜的话往往还要进行倾斜校正。归一化则是将单个的文字图像规整到同样的尺寸,在同一个规格下,才能应用统一的算法。
  2. 特征提取和降维特征是用来识别文字的关键信息,每个不同的文字都能通过特征来和其他文字进行区分。对于数字和英文字母来说,这个特征提取是比较容易的,因为数字只有10个,英文字母只有52个,都是小字符集。对于汉字来说,特征提取比较困难,因为首先汉字是大字符集,国标中光是最常用的第一级汉字就有3755个;第二个汉字结构复杂,形近字多。在确定了使用何种特征后,视情况而定,还有可能要进行特征降维,这种情况就是如果特征的维数太高(特征一般用一个向量表示,维数即该向量的分量数),分类器的效率会受到很大的影响,为了提高识别速率,往往就要进行降维,这个过程也很重要,既要降低维数吧,又得使得减少维数后的特征向量还保留了足够的信息量(以区分不同的文字)
  3. 分类器设计、训练和实际识别:分类器是用来进行识别的,就是对于第二步,你对一个文字图像,提取出特征给,丢给分类器,分类器就对其进行分类,告诉你这个特征该识别成哪个文字。在进行实际识别前,往往还要对分类器进行训练,这是一个监督学习的案例。成熟的分类器也很多,什么svm,kn,神经网络etc。
  4. 后处理:后处理是用来对分类结果进行优化的。第一个,分类器的分类有时候不一定是完全正确的(实际上也做不到完全正确),比如对汉字的识别,由于汉字中形近字的存在,很容易将一个字识别成其形近字。后处理中可以去解决这个问题,比如通过语言模型来进行校正——如果分类器将“在哪里”识别成“存哪里”,通过语言模型会发现“存哪里”是错误的,然后进行校正。第二个,OCR的识别图像往往是有大量文字的,而且这些文字存在排版、字体大小等复杂情况,后处理中可以尝试去对识别结果进行格式化,比如按照图像中的排版排列什么的,举个栗子,一张图像,其左半部分的文字和右半部分的文字毫无关系,而在字符切分过程中,往往是按行切分的,那么识别结果中左半部分的第一行后面会跟着右半部分的第一行诸如此类。
2. 传统文字识别:文字检测、文字识别

General OCR一般包含两步:

  • detection --> 找到包含文字的区域(proposals)
  • classification --> 识别区域(proposals)中的文字

文本检测(Text Detection):定位图片中的文本区域,而Detection定位精度直接影响后续Recognition结果。

目前已经有很多文字检测方法,包括:EAST/CTPN/SegLink/PixelLink/TextBoxes/TextBoxes++/TextSnake/MSR/…

文字识别(Text Recognition):识别水平文本行,一般用CRNN或Seq2Seq两种方法。

  • CRNN:CNN+RNN+CTC
  • CNN+Seq2Seq+Attention
3. 端到端的文字识别

在之前介绍的算法中,文字检测和文字识别是分为两个网络分别完成的,所以希望将OCR中的Detection+ Recognition合并成一个End2End网络


二、文本检测算法:CTPN

CTPN是在ECCV 2016提出的一种文字检测算法。CTPN结合CNN与双向LSTM深度网络,能有效的检测出复杂场景的横向分布的文字,效果如图1,是目前比较好的文字检测算法。CTPN是从Faster RCNN改进而来。

Q:什么是LSTM
为了实现对不定长文字的识别,就需要有一种能力更强的模型,该模型具有一定的记忆能力,能够按时序依次处理任意长度的信息,这种模型就是“循环神经网络”(Recurrent Neural Networks,简称RNN)。

LSTM(Long Short Term Memory,长短期记忆网络)是一种特殊结构的RNN(循环神经网络),用于解决RNN的长期依赖问题,也即随着输入RNN网络的信息的时间间隔不断增大,普通RNN就会出现“梯度消失”或“梯度爆炸”的现象,这就是RNN的长期依赖问题,而引入LSTM即可以解决这个问题。LSTM单元由**输入门(Input Gate)、遗忘门(Forget Gate)和输出门(Output Gate)**组成。


三、文本识别算法:CRNN+CTC

CRNN+CTC = CNN + RNN+ LSTM + CTC

  • 首先CNN提取图像卷积特征
  • 然后LSTM进一步提取图像卷积特征中的序列特征
  • 最后引入CTC解决训练时字符无法对齐的问题

基于RNN文字识别2种基本算法框架:

Q:什么是CTC
CTC(Connectionist Temporal Classifier,联接时间分类器),主要用于解决输入特征与输出标签的对齐问题。例如下图,由于文字的不同间隔或变形等问题,导致同个文字有不同的表现形式,但实际上都是同一个文字。在识别时会将输入图像分块后再去识别,得出每块属于某个字符的概率(无法识别的标记为特殊字符”-”),如下图:

由于字符变形等原因,导致对输入图像分块识别时,相邻块可能会识别为同个结果,字符重复出现。因此,通过CTC来解决对齐问题,模型训练后,对结果中去掉间隔字符、去掉重复字符(如果同个字符连续出现,则表示只有1个字符,如果中间有间隔字符,则表示该字符出现多次),如下图所示:

文字识别:crnn

...行识别(详解CTCloss)来自:https://zhuanlan.zhihu.com/p/43534801文字检测主要解决的问题是哪里有文字,文字的范围有多大,即定位文本行的所在位置和范围及其布局。文本识别是在文本行定位的基础上,对文本行内容进行识别,将图... 查看详情

pencv_contrib里的text(自然场景图像中的文本检测与识别)

...n10x64+VS2015专业版+opencv-3.x.+CMakeIssue说明:最近做一些字符识别的事情,想试一下opencv_contrib里的Text(自然场景图像中的文本检测与识别)模块。原因:解决办法:目录:一、下载地址汇总(OpenCV+OpenCV_contrib+CMake)二、中间遇到的Issu... 查看详情

paddleocr文字识别学习(代码片段)

...f1a;文本检测:文本检测的任务是定位出输入图像中的文字区域。文本识别:文本识别的任务是识别出图像中的文字内容,一般输入来自于文本检测得到的文本框截取出的图像文字区域。文档结构化识别:传统意义... 查看详情

ssd:signleshotdetector用于自然场景文字检测(代码片段)

...体的,那么可不可以将SSD用来检测自然场景图像中的文字呢?答案肯定是可以的~同时,受到浙大solace_hyh同学的ssd-plate_detection工作,这篇文章记录我自己将SSD用于文字检测的过程。全部的代码上传到Github了&#x... 查看详情

rcnn+ctc文本识别原理

参考技术A对于OCR任务来说,目的是为了将图像中的文字识别出来,近几年的研究主要包含以下几个步骤:目前研究主要集中在文字检测和文字识别两个任务,本文只介绍文字识别任务中的一种模型,即CRNN+CTCLoss方案;另外一种... 查看详情

各类场景应用中涉及的ai算法汇总

...类,目标检测,图像分割,关键点检测,图像生成,场景文字识别,度量学习,图像识别,图像比对,图像分类使用手册,图像分类API文档目标检测使用手册,目标检测API文档Logo检测使用手册,Logo检测API文档,通用图片搜索,... 查看详情

ssd:signleshotdetector用于自然场景文字检测(代码片段)

...体的,那么可不可以将SSD用来检测自然场景图像中的文字呢?答案肯定是可以的~同时,受到浙大solace_hyh同学的ssd-plate_detection工作 查看详情

ocr场景文本识别:文字检测+文字识别

一.应用背景OCR(OpticalCharacterRecognition)文字识别技术的应用领域主要包括:证件识别、车牌识别、智慧医疗、pdf文档转换为Word、拍照识别、截图识别、网络图片识别、无人驾驶、无纸化办公、稿件编辑校对、物流分拣、舆情监控... 查看详情

ocr文字识别项目(原理)

参考视频:OCR文字识别原理OCR光学字符识别:提取图像中的文字,并转换为文本形式,供后续NLP使用。一、CTPN算法:文字检测二、CRNN算法:文字识别池化此时为1×2。才能把特征变为适用于输入到RNN中。 查看详情

ocr文字识别项目(原理)

参考视频:OCR文字识别原理OCR光学字符识别:提取图像中的文字,并转换为文本形式,供后续NLP使用。一、CTPN算法:文字检测二、CRNN算法:文字识别池化此时为1×2。才能把特征变为适用于输入到RNN中。 查看详情

从图片提取文字的终极解决方法——通用文字识别api(代码片段)

写在前面相信你用过类似对进行图片中的文字提取的功能,但是你了解过背后的原理吗?本文将从图片中文字提取的原理以及应用案例等多方面进行讲述,希望一文能为你讲透通用文字识别。通用文字识别是什么技术... 查看详情

paddle入门实战系列:中文场景文字识别(代码片段)

...域初学者及研究者学习。➡️点击跳转到网站。中文场景文字识别项目来源:飞桨学习赛:中文场景文字识别-飞桨AIStudio项目背景随着OCR领域在结构化数据中取得不错成果及应用,中文场景文字识别技术在人们的日常... 查看详情

用于 OCR 的场景文本图像超分辨率

...:10:36【问题描述】:我正在开发OCR系统。我在识别ROI内的文字时面临的挑战是由于抖动或运动效果镜头或文字是由于角度位置,无法聚焦。请考虑以下演示示例如果您注意到文本(例如标记为红色),在这种情况下OCR系统无法正... 查看详情

给ocr文字识别软件添加图像的方法

ABBYYFineReader12是一款OCR图片文字识别软件,而且强大的它现在还可使用快速扫描窗口中的快速打开、扫描并保存为图像或任务自动化任务,在没有进行预处理和OCR的ABBYYFineReader中扫描或打开图像。如果您的文档非常大,而您只需... 查看详情

自然场景文本检测识别-综述

自然场景文本检测识别-综述-PartII坚果粥:自然场景文本检测识别-综述-PartI26赞同·1评论文章拥有这些背景知识后,我们可以开始学习自然场景文本检测识别(STR)的算法模型。近几年关于STR的文献大概可以分为... 查看详情

android手机怎么调用ocr识别图像中的文字

...!谢谢!该贴已经同步到android手机调用OCR识别图像中的文字的方法为:一、下载&编译tesseract1、首先下载tess-two。2、进入tess目录,里面有三个项目,我们只需要进入tess-two就可以直接编译了。3、编译好后,将src下的两个包以及li... 查看详情

alexaminifn功能

...结合,使用者可以通过语音指令来控制机器人,完成诸如识别物体、语音识别、自然语言理解等多种计算机视觉任务。它还可以用于智能家居、自动驾驶、无人机等领域,以实现智能化管理。AlexaMiniFN的主要功能包括:1.计算机... 查看详情

cnn层次

...积神经网络的原始数据或经过预处理的数据,可以是图像识别领域中原始三维的多彩图像,也可以是音频识别领域中经过傅利叶变换的二维波形数据,甚至是自然语言处理中一维表示的句子向量。以图像分类任务为例,输入层输... 查看详情