General OCR Theory: Towards OCR-2.0 via a Unified End-to-end Model 论文阅读笔记(粗糙版,后续精炼)

OCR1.0的缺陷:

  1. 基于多模块流水线风格设计,通常包括元素检测、区域裁剪和字符识别部分。每个模块都容易陷入局部最优,导致整个系统的维护成本很高。
  2. 传统的 OCR 方法缺乏通用能力,表现为不同的 OCR-1.0 网络通常针对不同的子任务进行设计。然而,从众多 OCR模型中选择适合某一特定任务的模型对用户来说总是不方便的。

OCR2.0

特征

  • 具有统一的端到端架构,以确保更低的维护成本。
  • 对光学字符的强大感知和识别,因此它需要合理数量的模型参数来换取较低的训练和推理成本。
  • 通用性,可以适用于多种光学字符读取。

结构

编码器-解码器范式。

  • 高压缩率编码器将光学图像转换为标记,以及一个长上下文长度解码器以输出相应的 OCR 结果。
  • 编码器具有大约 80M 个参数,输入大小为 1024×1024,足以处理常用的照片/文档输入样式。每个输入图像将被压缩为 256×1024 尺寸的标记。
  • GOT 的解码器具有 0.5B 参数,支持最大长度 8K 的标记,以确保它能够处理长上下文场景。
    请添加图片描述
    图 2:所提出的 GOT 的框架。第 1 阶段:使用微型 OPT-125M 对视觉编码器进行预训练,以有效地适应 OCR 任务。第 2 阶段:通过将视觉编码器连接到 Qwen-0.5B 构建 GOT,并在此阶段使用更通用光学字符的足够 OCR-2.0 知识。第 3 阶段:不需要修改视觉编码器,并且 GOT 针对新的字符识别功能进行了定制。

训练策略

分为三步:即编码器的解耦预训练、编码器与新解码器的联合训练以及解码器的进一步后训练。采用vision encoder+input embedding layer+decoder的pipeline。Encoder后两层采用Vary的双卷积设计方案。整个Encoder将1024×1024×3的图像压缩为256×1024的image tokens,足以做好A4纸级别的dense OCR。

  1. 第一阶段:进行纯文本识别任务来预训练视觉编码器。 为了提高训练效率并节省 GPU 资源,选择一个微型解码器OPT-125M将梯度传递给编码器。 此阶段将包含场景文本的图像和包含文档级字符的手册图像输入模型,以允许编码器收集两个最常用字符的编码能力
  2. 第二阶段:联合训练encoder-decoder,该阶段GOT的基本结构搭建完成,为上一阶段预训练好的encoder,以及Qwen团队预训练好的Qwen0.5B。通过将训练好的视觉编码器连接到新的更大的解码器来形成 GOT 的架构。我们准备了大量更通用的 OCR 数据(例如,乐谱、数学/分子式和几何形状)来扩展此阶段的 OCR-2.0 知识。
  3. 第三阶段:锁住encoder加强decoder以适配更多的OCR应用场景,如支持坐标或者颜色引导的细粒度OCR(点读笔可能会用到),支持动态分辨率OCR技术(超大分辨率图可能会用到),多页OCR技术。

细节

编码器(预训练步骤)

我们选择的编码器结构是 VitDet (基础版本,约 80M 参数),因为它的局部注意力机制可以大大降低高分辨率图像的计算成本。我们遵循 Vary-tiny 设置 来设计编码器的最后两层,将 1024×1024×3 的输入图像转换为 256×1024 的图像标记。然后,这些图像标记通过 1024×768 的线性层投影到语言模型(OPT-125M )维度。与 Vary 编码器在相对单一的输入形状下仅关注单文档任务不同,我们在预训练时加入了自然场景和裁剪切片。在预处理阶段,将每种形状的图像直接调整为 1024×1024 的正方形,因为正方形可以用来折衷适应各种长宽比的图像。

解码器(联合训练步骤)

在视觉编码器完成预训练步骤之后,我们将其连接到更大、功能更强大的语言模型,以构建 GOT 的最终架构。在这里,我们采用具有 500M 参数的 Qwen 作为解码器,因为它具有相对较少的参数,同时结合了多种语言的先验知识。 连接器(即线性嵌入层)的尺寸调整为 1024×1024,以与 Qwen-0.5B 的输入通道对齐。因此,GOT 享有总共约 580M 参数的无缝编码器-解码器范式,这在计算资源上更加友好,并且更容易在具有 4G 内存的消费级 GPU 上部署。 编码器的高压缩率(1024×1024 光学像素到 256 个图像标记)为解码器节省了大量的标记空间来生成新的标记。同时,解码器令人满意的解码上下文长度(我们使用大约8K的最大长度)保证了GOT可以在密集场景下有效地输出OCR结果。

解码器(后训练步骤)

该步骤主要是为了提升GOT的性能。通过以上两个步骤压缩各种 OCR-2.0 光信号的一般视觉信息后,GOT 已准备好在各种场景中执行图像级 OCR 任务。基于这种感知敏锐的视觉编码器,GOT 可以轻松调整以满足用户的输入和输出需求。在该步骤定制了 GOT,只需对解码器部分进行后训练即可实现三个新功能,即细粒度、多页和动态分辨率 OCR。

  1. 细粒度 OCR 是一种高交互性功能,是由空间坐标或颜色控制的区域级视觉感知。用户可以在问题提示中添加框坐标(框引导 OCR)或颜色文本(颜色引导 OCR),以请求在感兴趣区域 (RoI) 内进行识别,避免输出其他不相关的字符。对于自然细粒度 OCR,源图像和注释来自开源数据集,包括 RCTW 、ReCTS 和 ShopSign 以及 COCO-Text 数据集。上述数据集提供了文本边界框,因此我们可以直接使用它们来生成细粒度(区域/颜色提示)OCR 数据。 对于文档级细粒度 OCR,我们按照 Fox 的做法,从下载的 PDF 文件中过滤掉具有扫描格式的文件,并使用 Python 包(Fitz/PDFminer)解析剩余部分。 我们记录页面级图像、每行/段落的边界框以及相应的文本,以生成框引导 OCR 子任务的地面实况。对于这样的任务,每个坐标值首先被归一化,然后放大 1000 倍。对于颜色引导任务,我们选择最常用的颜色(红色、绿色和蓝色)作为框架颜色,并通过原始图像上的相应边界框绘制它们。总的来说,我们收集了大约 60w 个样本。
  2. GOT支持1024×1024的输入分辨率,这对于常用的OCR任务来说已经足够了,例如场景OCR或者A4页的PDF OCR。但是对于一些图片巨大的场景,比如两页PDF横向拼接(读报纸的时候经常出现),就需要动态分辨率了。 得益于我们的高压缩率编码器,GOT的动态分辨率是在很大的滑动窗口(1024×1024)下实现的,确保我们的模型可以在可接受的图像token的情况下完成极高分辨率的OCR任务。我们使用InternVL-1.5 的裁剪方法,tile最大为12。超分辨率图像是使用上面提到的单页PDF数据合成的,包括横向和纵向拼接。通过这种方法,我们总共获得了50w个图文对。
  3. 对于OCR任务,使用for循环进行多页处理是合理的。我们为GOT引入了多页OCR(不使用for循环)功能,因为有些格式的PDF数据很难分页(获得与各个页面完全不兼容的文本)以进一步扩大规模,比如Arxiv中的.tex。我们希望有了GOT,研究人员不再需要担心PDF ground truth分页符(例如Nougat ),因为他们可以直接在多页上进行训练。为了实现这样的功能,我们从Mathpix格式的PDF数据中随机抽取2-8页,并将它们连接在一起形成一轮OCR任务。每个选定的页面包含少于650个token的文本,以确保整体长度不超过 8K。总的来说,我们生成了大约20w个多页OCR数据,其中大部分是中英文页面交错的。

用于数据输入的引擎(data engine)

预训练阶段

在编码器预训练阶段使用了大约5M个图文对,其中包括3M的场景文本OCR数据和2M的文档OCR数据。它们的获取方法如下:
对于自然场景数据,我们分别从 Laion-2B 和 Wukong [Wukong: A 100 million large-scale chinese cross-modal pre-training benchmark] 数据集中采样英文和中文图像。然后,使用 PaddleOCR 工具捕获这些多样化真实场景中的伪 GT。总的来说,我们得到了 2M 的数据,其中一半是中文,一半是英文。对于文本 GT,我们执行两种类型的处理:1)移除边界框并按照从上到下、从左到右的顺序组合每个文本内容。2)根据边界框从原始图像中裁剪文本区域并将其保存为图像切片。后一种方法 2)允许我们获得另外 1M 个切片类型的图像-文本对。
对于文档级数据,我们首先从 Common Crawl 收集开源 PDF 样式文件,并使用 Fitz Python 包提取相应的密集文本内容。在此过程中,我们获得了 1.2M 个全页 PDF 样式图文对和 0.8M 个图像切片数据。切片数据(包括行级和段落级)是通过解析后的边界框从 PDF 图像中裁剪出来的。

联合训练阶段

图 3:我们使用六种渲染工具来运行数据引擎,使 GOT 能够很好地完成各种 OCR 任务。我们分别使用 LATEX 来处理表格、Mathpix-markdown-it 来处理数学/分子式、Tikz 来处理简单的几何形状、Verovio 来处理乐谱,以及 Matplotlib/Pyecharts 来处理图表。

  1. 普通 OCR 数据。为了进一步增强 GOT 的鲁棒性,我们还添加了手写文本识别子任务,该任务涉及不同语言的书信和日记中的各种笔迹。我们收集了中文 CASIA-HWDB2 、英文 IAM 和挪威语 NorHand-v3 数据集来满足我们的要求。对于具有行级切片格式的原始图像-文本对,将 6∼8 对分组并随机粘贴到空白文档页面中以实现较长文本的手写识别并提高训练效率。

  2. Mathpix-markdown 格式化数据。保留光学内容格式对于保持输出结果的可读性至关重要,尤其是数学公式和表格。为此,我们使用多种方法收集尽可能多的格式化数据。数据收集和制作的细节如下:

    • 数学公式。我们在 Arxiv 上爬取了大量的 LATEX 源 .tex 文件,并从中提取了大约 1M 的公式片段。接下来,我们将公式源转换为 Mathpix 格式,并使用 Chorme-driver 调用 Mathpix-markdown-it 工具将源渲染为 HTML 格式。然后我们将 HTML 文件转换为 SVG 并保存为 PNG 图片。我们发现这种渲染方法比直接使用 LATEX 快 20 倍以上。
    • 分子式。我们首先下载包含 2M 个笑脸源的 ChEMBL_25 文件。然后我们使用 Mathpix-markdown-it 工具和 rdkit.Chem 包收集了大约 1M 的分子式图文对。
    • 表格。从爬取到的 .tex 文件中,我们提取了约 0.3M 的表格源,并渲染成图片。我们没有使用 Mathpix-markdown-it,而是直接使用 LATEX 作为渲染工具,因为 LATEX 对高级表格的渲染效果更好。
    • 全页数据。使用 Nougat 方法,我们获得了约 0.5M 个英文 markdown PDF-文本对。此外,我们按照 Vary 的方法收集了另外 0.5M 个中文 markdown 对。我们将其内容转换为 Mathpix 格式。此外,我们还添加了 0.2M 个内部数据,这些数据直接使用 Mathpix 进行标注,包括书籍、论文和财务报告。
  3. 更通用的 OCR 数据。我们希望 GOT 能够处理更通用的光学人工“字符”。 因此,我们收集了三个相关的挑战性任务并生成相应的数据。它们分别是乐谱、几何形状和图表。

    • 乐谱。我们选择 GrandStaff 数据集作为渲染源。复音乐谱数据集提供了来自音乐摘录的 Humdrum **kern 转录。除了现有的大约 10w 个图像文本样本外,我们还提取了一些文本样本,通过 Verovio Python 包重新渲染。我们主要添加了从白色到真实纸张样式的新背景,并随机添加了标题和作者信息。请注意,我们只渲染单系统乐谱,因为我们没有相关领域的专业人员,也不知道如何将单系统乐谱组装成整页。渲染后,我们收集了大约 0.5M 个样本。
    • 几何形状。几何是LVLM的一项关键能力,是迈向AGI的必要步骤。 GOT有望将光学几何元素转换为TikZ 文本格式。TikZ包含一些简洁的命令来生成基本的几何元素,可以使用LATEX进行编译。我们采用TikZ风格的点和线,并使用最简单的点线空间关系构造简单的基本几何形状(例如圆形,矩形,三角形和组合形状)以及简单的函数曲线(例如直线,抛物线,椭圆形,双曲线等)。通过这种方法,我们获得了大约1M几何Tikz数据。当然,几何渲染很复杂,我们目前的工作只是初步尝试。GOT目前只能识别基本几何图形,但我们相信随着合成数据技术和OCR-2.0的发展,未来的模型将能够识别复杂的几何形状。
    • 图表。图表在多个研究领域的数据可视化和数据分析中至关重要。提出的 GOT 将图表结构提取子任务称为“图表 OCR”,它将图表图像上的视觉知识(例如标题、来源、x 标题、y 标题和值)转换为具有表格/Python-dict 格式的可编辑输出。遵循 OneChart ,使用 Matplotlib 和 Pyecharts 工具呈现图表图像-文本对。由于 GOT 只是一个 OCR 模型,我们不需要合成图表的元素在语义上相关。因此,我们只是从开放获取的 NLP 语料库中随机提取实体文本(标题、来源、x 标题、y 标题等)。数值是受控分布下的随机数。通过这种方法,我们获得了 2M 图表数据,一半来自 Matplotlib,一半来自 Pyecharts。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值