浅析点对点(End-to-End)的场景文字识别(图片文字)

一、背景

随着智能手机的广泛普及和移动互联网的迅速发展,通过手机等移动终端的摄像头获取、检索和分享资讯已经逐步成为一种生活方式。基于摄像头的 (Camera-based)的应用更加强调对拍摄场景的理解。通常,在文字和其他物体并存的场景,用户往往首先更关注场景中的文字信息,因而如何能够正 确识别场景中的文字,对用户拍摄意图会有更深入的理解。一般意义上,基于图像的文字识别包括基于扫描文字的光学字符识别(Optical Character Recognition, OCR) 和广泛用于网站注册验证的CAPTCHA (Completely Automated Public Turing Test to Tell Computers and Humans Apart,全自动区分计算机和人类的图灵测试)。相比较而言,基于扫描仪的OCR最简单,CAPTCHA最难,场景文字识别则介于这两者之间,如图1所示[1]

图1基于图像的文字识别

场景文字与扫描文字的最大区别在于其背景往往比较复杂,而且对设备(如移动设备或计算机)来说,文字位置是不确定的。其次,光照对文字的影响也是非常大的。最后相比传统OCR处理的情况,很多场景文字更加多样化,具有较大的内类变化。

二、两种识别方案

一种自然而然的想法,是首先检测并定位到文字区域(文字检测),然后再将检测到的文字块送到现有的OCR中进行识别(文字识别),但是上述场景文字存在的难题均对这种方案形成了挑战。从本质上讲,这种方案将文字检测和识别完全割裂开,严重依赖文字检测和分割性能。

近年来,一种截然不同的点对点文字定位和识别系统逐渐开始引起学术界和工业界的关注。该系统从物体识别角度出发,同时进行文字检测和识别,在场景文字识别中取得了较好的效果。本文就以英文识别为例,简要介绍一下点对点的文字检测与识别系统。

三、点对点场景文字识别系统

通常点对点系统通常包括:a)字符检测;b)同时单词检测和识别。

1.字符检测

字符识别主要是判断某个图像块(image patch)是否是字符。图像块的选取既可以用滑动窗口(Sliding Window)进行多尺度扫描,也可以通过连通域分析(Connected Component Analysis, CCA)得到。基于滑动窗口的方法,最经典的应用来自于人脸检测,但其最大的问题在于:一方面会产生很多的候选区域,另一方面容易产生字符间和字符内的混 淆。如图2所示[2]。在两个O之间的滑动窗口容易被误认成为X,而框了一半的B容易被误认为E.

图2字符间和字符内混淆

而基于CCA的方法虽然复杂度较低,但很容易受到背景的干扰,且对模糊图像无能为力。如文献[3]就采用基于极性区域的连通域来形成文字候选区。

通常对图像块的特征描述往往采用的Histograms of Oriented Gradients (HOG) ,分类器可以使用支持向量机(Support  Vector Machine, SVM),近邻(Nearest Neighbor, NN), Adaboost等。

2.单词同时检测和识别

由于字符检测一般利用的是bottom-up的信息,故而检测得到字符候选区域包含一定的false positive。为此,单词同时检测和识别模块,往往需要借助top-down信息(如词典信息)[2,3,4]

在文献[2],针对字符检测结果,采用了条件随机场(Conditional Random Field, CRF)来模拟字符识别的置信度,字符间的关系(位置和语义上)。CRF的能量函数定义如下式所示。

其中第一项表达了单个候选区的置信度,而第二项则描述了两个候选区之间的关系,包括了几何位置上的重叠关系和在词典(Lexicon)中两个字母出现的概率情况。

图3 单词同时检测和识别

通过CRF,图3中的单词就可以准确地被识别成door,而非doxr。除了CRF,Wang等[4]还借用了Pictorial Structures等来完成单词的检测和识别。

四、方案效果对比

为了对比第二节中两种方案,表1给出了上述提及的三种点对点系统和传统OCR系统(商用软件ABBYY, www.abbyy.com)识别效果对比。使用的两个数据集为街景文字文字数据库(Street View Text)[1]和ICDAR数据库(http://algoval.essex.ac.uk/icdar/RobustWord.html),如图4所示。

图4 SVT(左)和ICDAR(右)数据库样例

显然,点对点的系统均优于传统OCR的识别。

五、一点思考

目前点对点的系统大部分还是针对英文的识别,主要是因为英文的类别相对来说还是比较小的(62类,26个大小写英文字母和10个数字),而对于类别数目较大的中文一直是我们思考的问题。

参考文献

[1].      K. Wang and S. Belongie. Word spotting in the wild. In Proc. ECCV, 2010.

[2].     A. Mishra and K. Alahari. Top-Down and Bottom-Up Cues for Scene Text Recognition. In Proc. CVPR, 2012.

[3].     L. Neumann and J. Matas. Real-Time Scene Location and Recognition. In Proc. CVPR, 2012.

[4].     K. Wang, B. Babenko, and S. Belongie.  End-to-end scene text recognition. In Proc. ICCV, 2011.

时间: 2024-08-01 14:11:42

浅析点对点(End-to-End)的场景文字识别(图片文字)的相关文章

python识别图片文字

因为学校要求要刷一门叫<包装世界>的网课,而课程里有200多道选择题,而且只能在手机完成,网页版无法做题,而看视频是不可能看视频的,这辈子都不可能看...所以写了几行代码来进行百度搜答案. 思路如下: 手机屏幕投影到电脑上: 截图并识别图片文字: 调用百度来进行搜索: 提取html关键字. 环境配置:python3.6.第三方库:pyautogui.PIL.pytesseract.<a href="https://github.com/tesseract-ocr/tessera

微信怎么识别图片文字

微信怎么识别图片文字?微信拍照就能识别图片上的文字,抛弃那些APP解放手机的好方法你知道吗?相信很多人还不知道,那小编今天就将方法分享给大家吧. 迅捷文字识别属性:微信小程序 优点:相机模式:对着文字进行拍照即可获取优质的识别和翻译.图片模式:选择已储存的图片,识别图片中的文字后可对结果进行英汉互译.结果编辑:翻译图片后,可以对识别内容进行编辑,如:复制.翻译.转发. 操作步骤: 1:首先打开微信,点击发现后在选择小程序. 2:先点击右上角的放大镜,然后在搜索框里输入需要的小程序名字. 3:找到

识别图片文字转换到Word中的操作方法

我们在工作中经常会接触到各式各样的文件,其中就有图片格式的,这种文件比较的特殊,一般难以进行编辑和修改,这个时候可以使用文字识别工具识别图片文字转换到Word,这样就很方便进行下一步的编辑修改了,具体怎样去操作呢?下面就一起来看下吧! 参考工具:迅捷OCR文字识别软件 操作步骤: 1:先将所需识别的图片保存在电脑中的指定位置,接着将OCR文字识别软件打开,点击极速识别选项卡. 2:选择好对应功能后,就需要添加文件了,点击添加文件按钮添加. 3:图片添加完成后,将识别格式切换成DOCX,识别效果切

识别图片文字转换到Word文档中的方法

识别图片文字转换成Word常常发生在需要编辑图中文字的时候,那又该怎样去进行这一操作呢?下面小编就来为大家讲解下具体的操作流程,有需要的小伙伴们可以参考下. 参考工具:迅捷OCR文字识别软件 操作步骤: 1:首先将所需识别的图片在电脑中准备好,接着下载安装一款支持图片文字识别转换的软件,帮助进行以下的操作. 2:打开迅捷OCR文字识别软件,打开后选择极速识别板块点击添加文件按钮将所需识别的图片添加进来. 3:图片添加进去后,将识别格式更改为DOCX,识别效果设置为识别优先. 4:可以提前软件左下

OCR软件怎样识别图片文字?

很多人知道OCR软件是一种办公软件,关于它的一些具体操作是不太了解的,那么大家在工作中有没有需要用到它的地方呢?答案是可想而知的,小编在工作中就有一些识别图片文字的任务需要完成,接下来将OCR软件识别图片文字的操作分享给大家!步骤一:首先,我们的电脑里需要安装一款OCR软件,在电脑上安装好我们需要的工具之后,直接双击一下桌面上识别图片文字工具的图标就可以了.步骤二:在该工具的页面中,我们可以看到有多种功能供我们选择,如极速识别,OCR文字识别中批量识别.手写文字识别.图片局部识别等.步骤三:在O

python 识别图片文字

今天群里有兄弟问如何把图片的文字给识别出来 对于python来说这不是小菜一碟吗,于是乎让pupilheart狠狠的吹了一波(哈哈,竟然没懂),下面将整个实现过程给大家实现下: 方法一:自己搞定ORC (网上好多开源文件,课直接下载) 缺点:质量良莠不齐,适合自己玩,提升技术 首先,安装两个依赖包,cmd命令下执行 pip install Image pip install pytesseract from PIL import Image import pytesseract text=pyt

百度api识别图片文字

from selenium import webdriverfrom selenium.webdriver.common.keys import Keysfrom PIL import Image,ImageGrab,ImageEnhanceimport pytesseractimport time,osfrom pytesseract import *from numpy import *from scipy import *from aip import AipOcr #brower = w

C# 10分钟完成百度图片提取文字(文字识别)——入门篇

现在图片文字识别已经很成熟了,比如qq长按图片,点击图片识别就可以识别图片的文字,将不认识的.文字数量大的.或者不能赋值的值进行二次可复制功能. 我们现在就基于百度Ai开放平台进行个人文字识别,demo使用的是C#控制台应用程序,后续有需要的可以嫁接到指定项目中使用,比如提供选择图片,点击识别, 获取返回的值.废话不多说,上干货: 总体为: 注册百度账号api,创建自己的应用: 创建vs控制台应用程序,引入动态链接库: 编写代码调试,效果图查看: 总结. 1.创建百度AI文字识别应用   在百度

如何操作OCR文字识别软件,这个方法可以帮到你

众所周知,OCR文字识别软件是OCR技术的衍生物,是一种识别图片文字,语音转换文字等功能的工具.而OCR文字识别软件的具体操作也是十分简单的,有兴趣的小伙伴们可以看看以下小编给大家分享的内容. 具体操作: 第一步:首先,我们应确定,我们准备要做的是什么,是图片转文字的操作,还是语音转文字的操作.确定好我们的具体操作就可以在OCR文字识别软件的功能中进行选择了. 第二步:明确好我们要做的东西,比如说我们今天要做的是图片转文字的操作,就可以在OCR文字识别软件工具中选择高级识别功能. 第三步:进入到