首页 > 其他分享 >OCR-free相关论文梳理

OCR-free相关论文梳理

时间:2024-03-14 22:24:14浏览次数:36  
标签:模型 free 工作 任务 文档 图像 OCR 梳理

引言

通用文档理解,是OCR任务的终极目标。现阶段的OCR各种垂类任务都是通用文档理解任务的子集。这感觉就像我们一下子做不到通用文档理解,退而求其次,先做各种垂类任务。

现阶段,Transformer技术的发展,让通用文档理解任务变得不再是那么遥不可及,伴随而来的是出现了很多OCR-free的工作。

该部分的工作可以分为三个阶段:

  1. 监督类的方法,像LayoutLM系列
  2. 只有Transformer结构
  3. 结合了LLM做通用文档理解

本篇文章着重梳理第2点和第3点涉及到的OCR-free的通用文档理解的工作。行文难免挂一漏万,还望大家多多指教。

⚠️注意:行文顺序是从新到旧

(2024 TextMonkey) TextMonkey: An OCR-Free Large Multimodal Model for Understanding Document

code: https://github.com/Yuliang-Liu/Monkey

TextMonkey

TextMoneky工作源于之前Moneky的工作,主要贡献点有以下几点:

  1. 通过使用sliding window将原始图像划分为non-overlapping 448x448 patches的方式,间接地增加了输入图像的尺寸
  2. 为了增加多个window patches彼此之间的connections, 作者引入了Shifted Window Attention层,插入到多个Endcoder Layer中间
  3. 提出了Token Sampler,用于找到其中真正起到关键作用的tokens,减少计算量。这一点有一个假设前提:image包含冗余的tokens
  4. 为了减少模型的幻觉,作者添加了一些额外的training task,例如:text spotting和reading text任务。这些任务可以确保模型学到text和location data之间的关系。
  5. 论文还探索了作为App Agent的潜力

PS: 整个工作还是比较间接有效,唯一有些缺憾的是相关中文数据用的较少,在中文上效果较差。

(2023 DocPedia) Docpedia: Unleashing the power of large multimodal model in the frequency domain for versatile document understanding

code: 无

DocPedia

DocPedia中Pedia的意思是百科的意思。该篇工作并没有开源相关代码,认真看的动力一下子小了不少。主要亮点有二:

  1. 仍然着眼于输入图像尺寸问题。这次可以直接输入\(2560 \times 2560\)的图像尺寸。借助了JPEG DCT模块来提取DCT系数。这部分参见下图:

    在这里插入图片描述

  2. 两阶段的训练方法。

    在这里插入图片描述

    PS: DocPedia中处理大尺寸的图像方法的确打开了思路,值得借鉴。

(2023 TGDoc) Towards improving document understanding: An exploration on textgrounding via mllms

code: https://github.com/harrytea/TGDoc

TGDoc

该篇工作着眼于多模态LLM的text-grounding能力。通俗来说,就是MLLM对图像中文本位置感知能力:可以感觉输入的prompt,来得到图像中对应文本的坐标。可以参考下图例子,就很清楚了:

在这里插入图片描述

本文工作主要做了两点:

  1. 探索在没有引入额外的文本检测能力前提下,MLLM中text-grounding的能力
  2. 通过PaddleOCR构建了一个99K PPT数据集和GPT-4 构建了12K高质量数据集。但是没有开源。

(EMNLP2023 UReder) UReader: Universal OCR-free Visually-situated Language Understanding with Multimodal Large Language Model

code: https://github.com/LukeForeverYoung/UReader

UReader

UReader的工作和mPLUG-DocOwl有重合部分,也是通过一个统一的instruction format,在广泛的Visually-situated Language Understanding任务中fine-tuned得来。

亮点部分有两个:

  1. 为了增强visual text和semantic understanding的能力,作者添加了两个额外的任务,但是是一样的输入格式。这两个任务是text reading和key points generation任务。

  2. 由于现有的vision encoder是frozen,也就是说训练过程中不训练该部分,所以其输入图像的尺寸较小,一般是\(224 \times 224\)。作者提出了shape-adaptive cropping module来动态将输入vision encoder的high-resolution图像切分为合适几块。

    在这里插入图片描述

    Shape-Adaptive Cropping Module,让我想到了目标检测任务中Anchor的做法,先预设一些分割类型块,然后根据IoU计算,挑选合适的分割块。

也让我想到了在做一些遥感类目标检测任务时,由于图像过于大,没有办法一下子输入到模型中去,只好使用一个滑动窗口,overlapping切分该图。

这部分工作和Moneky中的做法不谋而合。相比于Moneky,UReader反而做的更加精细一些。下图是Moneky做法,可注意看从右下角部分。

Moneky

在论文最后部分,作者提到了当前工作的局限部分:当前做法是将切分得到的图像都同等看待,送入后续模型中,但是一张图像中并不是所有子图像都是有效的。可以考虑用度量的方法也动态决定将有效的图像块送进去。这一点在TextMoneky中的 Token Sampler模块有异曲同工之妙。

(2023 mPLUG-DocOwl) mPLUG-DocOwl: Modularized Multimodal Large Language Model for Document Understanding

code: https://github.com/X-PLUG/mPLUG-DocOwl

mPLUG-DocOwl

mPLUG-DocOwl是在mPLUG-Owl基础上,基于统一的instruction tuning,来平衡language-only, general vision-and-language和document understanding三个任务。

在这里插入图片描述

使用的统一的instruction tuning是:<image>Human:{question} AI:{answer},不同的文档理解数据集都会通过替换{questiong}{answer}两个关键字段来统一为以上格式。

同时,论文中构建了一个指令理解(instruction understanding)的测评集,名为LLMDoc,来评估多样文档理解能力。

PS: 本篇工作主要贡献点就只有上述两个地方。值得称赞的是,开源的相关的代码和模型,为后续学者研究提供了极大便利。

(2023 UniDoc) Unidoc: A universal large multimodal model for simultaneous text detection, recognition, spotting and understanding

code: 无

UniDoc

UniDoc是一个可以同时做文本检测、文本识别和文档理解的多模态模型。具体所做的任务如下图:

UniDoc Framework

UniDoc,在我看来,算是第一个用LLM做OCR任务的。因此,该论文主要工作在于构建了instruction following数据集,但是没有开源。同时代码和模型权重也没有开源。这让我有些难以评论哈!

由于UniDoc输入图像尺寸是224x224的,因此不能提取fine-grained visual features。这一点也是其后续工作的主要创新点。

(2023 Vary) Vary: Scaling up the Vision Vocabulary for Large Vision-Language Models

code: https://github.com/Ucas-HaoranWei/Vary

Vary

该篇工作着眼于dense and fine-grained vision perception任务,例如文档级别OCR和图表理解任务。这一点和Nougat工作有些类似。论文主要可分为两个阶段:

  1. 设计一个vocabulary network,通过自回归的方式产生所需要的vocabulary
  2. 将上一阶段的new vocabulary与LLM中现有的vanilla vision vocabulary融合,使得LLM获得新的能力。

因为在第一阶段训练Vary-tiny时,image encoder用的是在ViTDet上训练所得SAM-base模型,所以其输入图像尺寸是1024x1024x3。这一点可以有效缓解文档类图像在较小尺寸下输入,文字模糊变形问题。但是并未从实际上提高模型的输入尺寸。

PS: 整个Vary工作,我个人认为最大的一点价值是提供了合成中文文档数据的思路,但是并未开源任何合成的相关代码,同时也未开源其模型。 这也难怪后续的工作,很少有与Vary做对比的。这一点从TextMoneky工作中就可看出来。因为Vary用了私有数据集,模型也未开源,所以不能相比。

(2023 Pix2struct)Pix2struct: Screenshot parsing as pretraining for visual language understanding

code: https://github.com/google-research/pix2struct

Pix2struct

该篇工作主要是将网页上masked screenshots转换简单的HTML代码,示例图如上面所示,第一列是模型的输入,第二列是模型对应的输出结果。首次证明了一个模型在多个不同visual-language understanding任务中都能取得较好效果。

Pix2struct是基于ViT的标准image-encoder-text-decoder结构,论文中并没有给出具体框图,只是说明了相对于标准的结构,做了哪些改变:

  1. 由于观察到在一些visual-language task中,对同样图像,输入不同aspect ratio图像,结果有很大影响。因此作者在保持宽高比的基础上,对图像做了scaling,具体做法可参考下图:

    在这里插入图片描述

  2. 为了能够处理图像中variable resolutions unambiguously,作者引入了2维绝对位置embedding。直白一些,就是加入了位置编码。

以上两点,使得标准的ViT网络更加鲁棒。

值得注意的是,Pix2struct是针对不同任务,都需要重新训练对应的模型。也就是说,我有6个不同visual-language tasks,我就需要分别训练对应6个模型,虽然这6个模型的网络结构是一样的。

PS: 整篇文章看得我有些懵逼,始终没有找到用了多少数据训练的。

标签:模型,free,工作,任务,文档,图像,OCR,梳理
From: https://www.cnblogs.com/shiwanghualuo/p/18074151

相关文章

  • PaddleOCR手写文字识别模型训练(摘抄所得,非原创)
    1.安装环境#首先git官方的PaddleOCR项目,安装需要的依赖gitclonehttps://github.com/PaddlePaddle/PaddleOCR.gitcdPaddleOCRpipinstall-rrequirements.txt2.数据准备本项目使用公开的手写文本识别数据集,包含ChineseOCR,中科院自动化研究所-手写中文数据集CASIA-......
  • FreeRTOS教程4 消息队列
    1、准备材料正点原子stm32f407探索者开发板V2.4STM32CubeMX软件(Version6.10.0)KeilµVision5IDE(MDK-Arm)野火DAP仿真器XCOMV2.6串口助手2、学习目标本文主要学习FreeRTOS消息队列的相关知识,包括消息队列概述、创建删除复位队列、写入/读取数据到队列等关于队列的基础知......
  • 15.7k stars一个实用型OCR,支持80多种语言
    一个实用型OCR,支持80多种语言和所有流行的书写脚本,包括:拉丁文、中文、阿拉伯文、梵文、西里尔文等。特点支持本地或云/API部署准确度提高到99%以上完全可定制,支持80多种语言支持表格识别二维码/条码提取识别GitHub数据15.7kstars281watching2.2......
  • stm32F103 移植Free RTOS
    #stm32F103移植FreeRTOS1.下载FreeRTOS源码[官网下载](http://www.freertos.org)[代码托管网站下载](https://sourceforge.net/projects/freertos/files/FreeRTOS)2.FreeRTOS文件介绍进入Source文件夹进入portable文件夹进入RVDS3.FreeRTOS移......
  • FreeRTOS教程3 中断管理
    1、准备材料正点原子stm32f407探索者开发板V2.4STM32CubeMX软件(Version6.10.0)KeilµVision5IDE(MDK-Arm)野火DAP仿真器XCOMV2.6串口助手2、学习目标本文主要学习FreeRTOS中断管理的相关知识,包括系统硬件中断、FreeRTOS可管理的中断、中断屏蔽和一些其他注意事项等知......
  • LLM 推理和应用 开源框架梳理
    之前对LLM推理和应用了解不多,因此抽时间梳理了一下,我们从模型量化,模型推理,以及开发平台等三个层面来梳理分析。模型量化模型训练时为了进度,采用的32位浮点数,因此占用的空间较大,一些大的模型需要很大的显存才能加载,且计算推理过程较慢。为了减少内存占用,提升推理速度,可以将高精......
  • python 使用PaddleOCR读取图片文字,并用pyttsx3转为音频
    python小白,纯纯小白,很久之前看了一遍菜鸟官网,但实在没有应用场景,所以过目即忘。最近工作不是很忙,给我出了个题目,觉得挺有意思,就玩一玩。  所以关键点就是,图片提取出文字,然后文字转音频。1.图片提取文字,PaddleOCR出题人士,给出了git上一个ocr的工具库,支持图文信息的抽取。用......
  • FREE RTOS学习随记
    最近开始学习实时操作系统提升知识面,刚好STM32的开发板附赠了FREERTOS的学习手册,就据此来学习吧,所谓RTOS,即Real-TimeOpreatingSystem,实时操作系统,这个系统最大的好处就是通过一系列的算法,实现了多任务的灵活切换。单片机本身是单核的,只能单条代码依序执行,所以这个实时也只是伪......
  • FreeRTOS教程1 基础知识
    1、准备材料正点原子stm32f407探索者开发板V2.4STM32CubeMX软件(Version6.10.0)KeilµVision5IDE(MDK-Arm)野火DAP仿真器2、学习目标了解FreeRTOS相关知识,并熟悉使用STM32CubeMX软件配置FreeRTOS工程的流程3、前提知识读者须知:本系列教程中关于FreeRTOS的学习重点......
  • Augmentation-Free Self-Supervised Learning on Graphs论文阅读笔记
    Abstract我们认为,如果没有精心设计的增强技术,图上的扩充可能会任意的做出表现,因为图的底层语义会极大地变化。因此,现有的基于增强的方法的性能高度依赖于增强方案的选择,即与增强相关的超参数。在本文中,我们提出了一种新的无增强图自监督学习框架,即AFGRL。具体地说,我们发现通过与......