php 点对点,浅析点对点(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]。

wp-display-data.php?filename=13394863321.JPG&type=p_w_picpath%2Fjpeg&width=927&height=295

图1基于图像的文字识别

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

二、两种识别方案

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

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

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

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

1.字符检测

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

wp-display-data.php?filename=13394865341.JPG&type=p_w_picpath%2Fjpeg&width=196&height=109

图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的能量函数定义如下式所示。

wp-display-data.php?filename=13394867001.JPG&type=p_w_picpath%2Fjpeg&width=404&height=85

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

wp-display-data.php?filename=13394867361.JPG&type=p_w_picpath%2Fjpeg&width=422&height=327

图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所示。

wp-display-data.php?filename=13394868191.JPG&type=p_w_picpath%2Fjpeg&width=581&height=140

wp-display-data.php?filename=13394882361.JPG&type=p_w_picpath%2Fjpeg&width=368&height=261

图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.

By Errui Ding

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/289751.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

spring boot aop 记录方法执行时间

了性能调优&#xff0c;需要先统计出来每个方法的执行时间&#xff0c;直接在方法前后log输出太麻烦&#xff0c;可以用AOP来加入时间统计 添加依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-ao…

linux工具:ssh---未完

ssh server_ip 或者 ssh usernameserver_ip 或者 ssh usernameserver_name , 再按提示输入密码. _____________________________ Can login to remote boxBut I already have telnetCan login to remote box without passwordBut I don’t care input passowrd everytimeCan ex…

【ArcGIS遇上Python】Python实现Modis NDVI批量化月最大合成

「 刘一哥GIS」CSDN专业技术博文专栏目录索引https://geostorm.blog.csdn.net/article/details/113732454 最大合成法(MVC)可以在Envi中的Band Math中进行,式子是B1>B2,但是无法批量化;本文实现在ArcGIS中利用Python代码批量进行,如下: 用到的Modis NDVI数据是在MRT…

php 物理路径,网站物理路径查找思路

标签&#xff1a;网站物理路径查找思路一、思想核心找网站安装路径&#xff0c;即找Document Root 的位置&#xff0c;而Document Root最常见的地方就是 phpinfo.php 和httpd.conf中&#xff1b;路径查找方向&#xff0c;可以大致分为以下2个方向&#xff1a;(1) 找phpinfo(2) …

cad2016中选择全图字体怎么操作_打开CAD图纸字体丢失、重新选择怎么办?这样设置,一辈子用的到...

AutoCAD图纸本身就有着比较特殊的个性&#xff0c;难编辑难打开&#xff0c;时不时的还会来个乱码、字体缺失&#xff0c;甚至有的时候还提示我们进行字体的重新选择&#xff0c;应该怎么解决呢&#xff1f;虽然是个很经常遇见的问题&#xff0c;很多的小伙伴还是不知道如何解决…

Android studio之导入project出现SDK location not found. Define location with sdk.dir in the local.proper

1、问题 到入项目提示下面信息 SDK location not found. Define location with sdk.dir in the local.properties file or with an ANDROID_HOME environment variable. 2、分析 很明显没有找到sdk location&#xff0c;Define location with sdk.dir in the local.properti…

MassTransit - .NET Core 的分布式应用程序框架

简介MassTransit 是一个免费的、开源的.NET 分布式应用程序框架。MassTransit 使创建应用程序和服务变得容易&#xff0c;这些应用程序和服务利用基于消息的松散耦合异步通信来实现更高的可用性、可靠性和可扩展性特点•易于使用和理解的 API&#xff0c;让您专注于解决业务问题…

CoffeeScript 1.9发布,引入对生成器的支持

CoffeeScript 1.9最终引入了期待已久的生成器&#xff08;generator&#xff09;&#xff0c;这将会防止开发人员陷入回调函数的陷阱&#xff0c;并帮助他们编写异步代码。\简单说&#xff0c;生成器是这样一类函数&#xff0c;你可以中途从中退出&#xff0c;后面再进来&#…

新型互联网交换中心促进互联网产业发展,助力信息经济创新

互联网作为由众多网络互联构成的“网中网”&#xff0c;网络间联通是互联网运行的重要环节之一。互联网发展之初&#xff0c;我国网络主要由几大基础电信运营商承建&#xff08;包括中国电信、中国移动、中国联通、中国铁通等&#xff09;&#xff0c;互联网用户、ICP&#xff…

mongo学习笔记(二):聚合,游标

一、聚合 <1> Count 1.db.person.count() 2.db.person.count({"age":20}) <2> Distinct db.person.distinct("age")//指定了谁&#xff0c;谁就不能重复 <3> Group key&#xff1a;这个就是分组的key&#xff0c;我们这里是对年龄分组。…

【ArcGIS遇上Python】ArcGIS Python实现Modis NDVI批量求年最大值

一年中的12个月份的月最大合成&#xff08;mvc&#xff09;数据放在“F:\\Vegetation Change\\Data\\GIMMS Data\\1MVC\\"&#xff0c;数据名称格式为mvc_198801,mvc_198802........mvc_198812。处理年份为1981-2006&#xff0c;代码为&#xff1a; import arcpy arcpy.C…

linux终端常用命令和windows终端常用命令对比

1、打开终端的快捷键 在linux平台 ctrl + Alt + T 在windows平台 菜单键+R 然后cmd 回车 2、过滤的命令linux的grep,windows的findstr 比如我们过滤android日志 在linux平台终端命令如下 adb logcat | grep *** 在windows平台终端命令如下 adb logcat | findstr *** 3、…

字节跳动offer流程多长时间_字节跳动-运营实习生-面经实录(已Offer??)

一、岗位【职位】运营实习生&#xff08;社群、用研&#xff09;【类型】日常实习【地点】上海【JD】-职位描述-参与公司教育类APP的核心用户运营工作&#xff1b;通过社群及内容的形式服务好核心用户群体&#xff0c;提高用户口碑&#xff1b;建立用户反馈体系&#xff0c;评估…

Java实验二猜数字游戏,JAVA-第2周实验-猜数字游戏

JAVA--第2周实验--猜数字游戏/* (程序头部注释开始)* 程序的版权和版本声明部分* Copyright (c) 2011, 烟台大学计算机学院学生* All rights reserved.* 文件名称&#xff1a;猜数字游戏* 作 者&#xff1a; 雷恒鑫* 完成日期&#xff1a; 2012 年 09 月 07 日* 版 本 号&#…

Xamarin效果第十五篇之自定义CheckBox

在上一篇中使用Xamarin玩耍了GIS加载高德和百度;这不这两天又抽空完善了一下;自定义了一下CheckBox;来看看最终效果:关于实现咱就是直接自定义ContentView:后台无非就是一堆的依赖属性(和WPF真像):后台定义的Command为了支持选中状态:‍再来看看具体使用:<CustomViews:Image…

使用ndk standalone工具链来编译某个平台下的库

地址&#xff1a; http://www.kandroid.org/ndk/docs/STANDALONE-TOOLCHAIN.html It is now possible to use the toolchain provided with the Android NDK as a standalone compiler. This can be useful if you already have your own build system, and only need to abili…

顺义教委携手华平共建视频图像综合管理平台

随着经济的发展和社会的进步&#xff0c;北京顺义区的教育也迈上了新的台阶。据初步统计&#xff0c;目前全区有中小学、幼儿园、中等职业学校115所&#xff0c;大学8所&#xff0c;培训机构86个&#xff0c;在校生近10万人&#xff0c;教职工13000余人。多年教育信息化的推进&…

【Java基础】Java中的持久属性集Properties

Properties 类的介绍 Properties 类表示了一个持久的属性集。Properties 可保存在流中或从流中加载。属性列表中每个键及其对应值都是一个字符串。一个属性列表可包含另一个属性列表作为它的“默认值”&#xff1b;如果未能在原有的属性列表中搜索到属性键&#xff0c;则搜索第…

【ArcGIS遇上Python】栅格影像批量除以10000

影像做除法时&#xff0c;要先进行float()运算&#xff0c;在进行Divide运算。以下将指定文件夹下的.tif文件首先转换为float并保存在指定文件&#xff0c;再进行divide运算。 import arcpy,os,glob arcpy.CheckOutExtension("spatial") datafilesglob.glob("F:…

python之sys.argv获取命令行的参数

1、问题 执行python文件&#xff0c;我们怎么获取在终端获取输入参数&#xff0c;我们可以使用sys.argv&#xff0c;特么之前不是不熟悉 2、代码 #!/usr/bin/pythonimport sysif __name__ __main__:first sys.argv[0:]print firstsecond sys.argv[1:]print secondname sy…