Text Recognition in the Wild: A Survey

2024-02-19 17:20
文章标签 recognition text wild survey

本文主要是介绍Text Recognition in the Wild: A Survey,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

论文地址:https://arxiv.org/pdf/2005.03492.pdf

这是来自华南理工2020年的一篇survey,主要讨论的是场景文本识别(scene text recognition,STR)领域的现状与一些发展方向。

文中提到了他们建立的一个资源库,里面有数据集、现有算法等丰富资源,值得一看:GitHub - HCIILAB/Scene-Text-Recognition

在自然场景中识别文本,也称为场景文本识别,通常被认为是OCR的一种特殊形式,即基于相机的OCR。使得STR仍然具有挑战性的因素:

  • 复杂的背景及与文本类似的背景
  • 不规则的字体、大小与方向
  • 因噪声干扰而失真,例如照明不均匀,分辨率低和运动模糊。
  • 随机捕捉的文本难以识别字符和预测文本字符串

 

STR的基本问题

除了文本定位、文本验证、文本检测、文本分割、文本识别这些问题,值的一提的是端到端系统的构建。不同于将文本检测与文本识别视为两个子问题,在端到端系统中,这两个问题可以通过共享信息来进行联合的优化。

STR的一些特殊问题

  • 脚本识别(Script identification):预测给定文本的脚本,多用于多语言系统,有助于选择正确的语言模型。 脚本识别可以解释为图像分类问题,通常设计区别性表示,例如中级特征(mid-level features),卷积特征(convolutional features)和笔触表征(stroke-parts representations)。
  • 文本增强(Text enhancement):文本增强可以提高文本的分辨率,消除文本的变形或消除背景,从而降低了文字识别难度。典型的文本增强算法:反卷积(deconvolution),基于学习的方法(learning-based methods)和稀疏重构(sparse reconstruction)。
  • 文本跟踪(Text tracking):为了保持视频中相邻帧之间文本位置和跟踪文本的完整性。 与图像中的静态文本不同,用于移动文本的跟踪算法必须在像素级别或子像素级别标识精确的文本区域,因为错误的跟踪可能会将文本与其背景或噪声文本混合在一起。 时空分析(Spatial-temporal analysis)通常用于视频中的文本跟踪。
  • 自然语言处理(NLP):探索如何使用计算机来理解和操纵自然语言文本或语音。 基于文本的应用非常广泛,包括机器翻译(machine translation),自动摘要(automatic summarization),问题解答(question answering)和关系提取(relationship extraction)。

基于深度学习的文本识别方法

 

Cropped场景文本识别

基于分割的方法

通常包括图像预处理,字符分割和字符识别这三个步骤。 尝试从输入文本实例图像中定位每个字符的位置,应用字符分类器识别每个字符,然后将字符分组到文本行中以获得最终识别结果。主要可分为基于词库(lexicon)的方法与基于无词库的方法。词库的大小会直接决定检索的时间。

现存的问题:i)字符检测/分割的质量会限制识别性能。 ii)无法对上下文信息进行建模,会导致词级别(word-level)的结果不佳。

基于无分割的方法(Segmentation-Free Methods)

着重于通过编码器-解码器框架将整个文本实例图像直接映射到目标字符串序列,从而避免了字符分割。包含图像预处理,特征表示,序列建模和预测的四个阶段。

 

  1. Image Preprocessing Stage 图像预处理阶段:包括但不限于下述类型,各种方法可以组合使用。
    • 背景去除:将文本从背景中分离出来,例如传统的二值化方法(binarization methods)(在文档图像上效果好)、生成对抗网络(GANs)。
    • 文本图像超分辨率(Text Image Super-Resolution,TextSR):输出与给定的低分辨率图像一致的合理的高分辨率图像。可以将TextSR方法与识别任务相结合。
    • 整流(Rectification):对输入的文本实例图像进行规范化处理,消除失真并减少不规则文本识别的难度 ,例如 spatial transformer network(STN)、Thin-Plate-Spline (TPS)、multi-object rectification network等。为了处理各种畸变,复杂的整流模块是必需的。 但是,此模块太复杂会影响识别算法的速度和内存消耗,应根据需求选择最佳的权衡。 此外,随着不规则文本检测(irregular text detection)的发展,值得重新考虑STR系统是否需要这个模块。
  2. Feature Representation Stage 特征表示阶段:将输入文本实例图像映射到反映与字符识别相关的属性表征上,同时抑制字体,颜色,大小和背景等不相关的特征。
    • 定向梯度直方图(the histogram of oriented gradients,HOG)
    • CNN(VGGNet 、ResNet、DenseNet 、Recursive CNN 等)
    • 背景去除(background removal)与简单特征提取器(simple feature extractors)的组合
  3. Sequence Modeling Stage 序列建模阶段序:在一系列字符中捕获上下文信息以供下一阶段预测每个字符,比独立处理每个符号更加稳定和有用。
    • RNN-based,例如多双向长期短期记忆(Multiple bidirectional long short term memory, BiLSTM)或LSTM
    • 滑动窗口
    • CNNs 或 Transformer
  4. Prediction Stage 预测阶段:从输入文本实例图像的识别特征中估计目标字符串序列。
    • 基于Connectionist Temporal Classification(CTC)的方法
    • 基于attention机制的方法
    • 其它探索及潜在方法:同时应用CTC和注意力机制、聚合交叉熵函数(aggregation cross-entropy function);将场景和合成图像特征与加权动态时间规整(weighted dynamic time warping,wDTW)方法进行匹配;将识别和检索的任务解释为最近邻问题,将单词图像和文本字符串都嵌入到一个公共的向量子空间或欧氏空间中;将STR建模为多分类问题,并设计CNN分类器或将CNN与CRFgraphical模型相结合。

端到端识别系统

给定具有复杂背景的文本图像作为输入,端到端系统将所有文本区域直接转换为字符串序列。 通常,它包括文本检测,文本识别和后处理。

 

有几个因素促进了端到端系统的出现:i)错误可能以文本检测和识别的级联方式累积,这可能导致很大一部分垃圾预测,而端到端系统可以防止错误的产生以及在训练过程中积累。 ii)文本检测和识别可以共享信息,可以共同优化以提高总体性能。 iii)更易于维护和适应新的领域,而维护具有数据和模型相关性的cascaded pipeline需要大量的工程工作。 iv)具有更快的推理速度和较小的存储需求。

端到端系统存在的困难:i)如何有效地桥接并在文本检测和识别之间共享信息? ii)如何在文本检测和识别之间学习难度和收敛速度的显着差异之间取得平衡? iii)如何改善联合优化?

数据集

 

讨论和未来方向

  • 泛化能力:应适应文本的各种输入,例如不同的大小,形状和字体样式。 此外,应该对环境干扰不敏感,并且能够处理现实世界中的复杂性。
  • 评估协议:数据集,先验条件和测试环境的不一致性使得很难公平地比较reported numbers的face value。
  • 数据问题:i)合成数据。ii)使用未标记的真实数据。应该重新考虑是否统一训练数据集,然后再用真实数据集进行评估。
  • 场景:研究和应用之间仍然存在差距(例如,背景更加复杂,现实世界中的噪音更多),不应局限于几个标准。
  • 图像预处理:例如TextSR和背景去除,可以从新的角度极大地减少STR的难度并提高性能。
  • 端到端系统:性能与OCR在扫描文档中的性能相比仍然远远落后。
  • 语言:大多数识别算法仅针对拉丁文字,尚未广泛研究非拉丁语的识别,例如中文场景文本。
  • 安全性:大多数基于深度学习的文本识别器还是很容易受到对抗示例的攻击。
  • STR +NLP:NLP和STR的组合可能是各个领域的重要趋势,例如文本VQA,文档理解和信息提取。

这篇关于Text Recognition in the Wild: A Survey的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/725373

相关文章

论文翻译:arxiv-2024 Benchmark Data Contamination of Large Language Models: A Survey

Benchmark Data Contamination of Large Language Models: A Survey https://arxiv.org/abs/2406.04244 大规模语言模型的基准数据污染:一项综述 文章目录 大规模语言模型的基准数据污染:一项综述摘要1 引言 摘要 大规模语言模型(LLMs),如GPT-4、Claude-3和Gemini的快

【Python报错已解决】AttributeError: ‘list‘ object has no attribute ‘text‘

🎬 鸽芷咕:个人主页  🔥 个人专栏: 《C++干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 文章目录 前言一、问题描述1.1 报错示例1.2 报错分析1.3 解决思路 二、解决方法2.1 方法一:检查属性名2.2 步骤二:访问列表元素的属性 三、其他解决方法四、总结 前言 在Python编程中,属性错误(At

【ReactJS】困惑于text/babel与browser.js还是babel.js?

使用JSX   使用JSX,可以极大的简化React元素的创建,JSX抽象化了React.createElement()函数的使用,其语法风格类似于HTML语法风格。对比如下代码可以让你更好的理解这一点。 // 使用React.createElement()return React.createElement('div',null,'Hello',this.props.name);//使用J

Android:EditText在hint字体大小和text字体大小不一致时的设置方法

今天碰到一个需求,有一个输入框EditText,要求输入某项金额,要求在未输入文字之前,hint提示,输入文字之后显示输入的文字,要求是未输入内容时hint字体大小为14sp,输入金额之后字体大小要变成30sp。,可是EditText本身没有这个属性可以设置,怎么办呢,只有在代码中添加监听事件了: /*** 添加监听,在hint时和text时切换字体大小*/cetMoney.addTextCha

A Comprehensive Survey on Graph Neural Networks笔记

一、摘要-Abstract 1、传统的深度学习模型主要处理欧几里得数据(如图像、文本),而图神经网络的出现和发展是为了有效处理和学习非欧几里得域(即图结构数据)的信息。 2、将GNN划分为四类:recurrent GNNs(RecGNN), convolutional GNNs,(GCN), graph autoencoders(GAE), and spatial–temporal GNNs(S

Sublime Text 3搭建PHP开发环境说明

1、设置环境变量 Windows系统环境变量path增加php.exe所在目录路径 2、创建PHP编译系统 添加 PHP 的 build system,如图所示, Tools->Build System-> New Build System : 新建一个,默认的内容是:{ "shell_cmd": "make"}修改为:{ "cmd": ["php", "$file"], "file_re

多字节、宽字节、兼容字节(TEXT) 相关操作汇总

常用函数对照 ANSIUNICODE通用说明数据类型(char.h)(wchar.h)(tchar.h) charwchar_tTCHAR char *wchar_t *TCHAR* LPSTRLPWSTRLPTSTR LPCSTRLPCWSTRLPCTSTR     字符串转换atoi_wtoi_ttoi把字符串转换成整数(int)atol_wtol_ttol把字符串转换成长整型数(long)

Sublime Text 3常用快键键总结

通用(General) ↑↓←→:上下左右移动光标,注意不是不是 KJHL !Alt:调出菜单Ctrl + Shift + P:调出命令板(Command Palette)Ctrl + ` :调出控制台 编辑(Editing) Ctrl + Enter:在当前行下面新增一行然后跳至该行Ctrl + Shift + Enter:在当前行上面增加一行并跳至该行Ctrl + ←/→:进行逐词移动

sublime_text中如何使用快捷键打开默认浏览器

原创:http://blog.csdn.net/u013383042/article/details/51058899 1、在SublimeText下打开该路径:preference - key bindings - user 2、在以下打开窗口中输入如下语句: {"keys": ["ctrl+r"],"command": "open_in_browser"} 如上图所示,”ctrl+

人脸识别开源项目之-face_recognition

特性 从图片里找到人脸 定位图片中的所有人脸: import face_recognitionimage = face_recognition.load_image_file("your_file.jpg")face_locations = face_recognition.face_locations(image) 识别人脸关键点 识别人脸关键点,包括眼睛、鼻子、嘴和下巴。