【2023 CSIG垂直领域大模型】大模型时代,如何完成IDP智能文档处理领域的OCR大一统?

目录

  • 一、像素级OCR统一模型:UPOCR
    • 1.1、为什么提出UPOCR?
    • 1.2、UPOCR是什么?
      • 1.2.1、Unified Paradigm 统一范式
      • 1.2.2、Unified Architecture统一架构
      • 1.2.3、Unified Training Strategy 统一训练策略
    • 1.3、UPOCR效果如何?
  • 二、OCR大一统模型前沿研究速览
    • 2.1、Donut:无需OCR的用于文档理解的Transformer模型
    • 2.2、NouGAT:**实现文档图像到文档序列输出**
    • 2.3、SPTS v3:基于SPTS的OCR大一统模型
  • 三、大模型时代下的智能文档处理应用
    • 3.1、LLM与文档识别分析应用
    • 3.2、智能文档处理应用产品
  • 四、文末抽奖

2023年12月28-31日,由中国图象图形学学会主办的第十九届CSIG青年科学家会议在中国广州隆重召开,会议吸引了学术界和企业界专家与青年学者,会议面向国际学术前沿与国家战略需求,聚焦最新前沿技术和热点领域,共同探讨图象图形学领域的前沿问题,分享最新的研究成果和创新观点,在垂直领域大模型专场,合合信息智能技术平台事业部副总经理、高级工程师丁凯博士为我们带来了《文档图像大模型的思考与探索》主题报告。

本文将围绕以下问题,分享主题报告中大模型时代下的智能文档图像处理领域研究问题与深度思考:

  • 以GPT4-V Gemini为代表大模型能为IDP领域的技术方案和研发范式上带来什么样的启发?
  • 能否吸取大模型的优点,提出精度好、泛化强的OCR大一统模型?
  • 能否更好的将LLM与文档识别分析引擎相结合来解决IDP领域的核心问题?

一、像素级OCR统一模型:UPOCR

UPOCR是合合信息-华南理工大学文档图像分析识别与理解联合实验室于2023年12月提出的像素级OCR统一模型。UPOCR基于视觉Transformer(ViT)的编码器-解码器架构,将多样OCR任务统一为图像到图像变换范式,并引入了可学习任务提示,将编码器提取的通用特征表示推向任务特定空间,使解码器具有任务意识。实验表明,模型能够具有对不同任务的建模功能,能够同时实现文本擦除、文本分割和篡改文本检测等像素级OCR任务。

1.1、为什么提出UPOCR?

当前通用文字识别(OCR)领域面临多项主要问题,这些问题实然限制了其在各个应用领域的广泛应用。

  1. 任务特定性模型的碎片化:虽然OCR领域研究涌现出许多面向特定任务的模型,但每个模型都仅针对特定领域进行优化,模型过于碎片化,不同任务之间难以协同使用,跨领域和多场景的通用性受到较大限制。
  2. 缺乏统一接口:现有的一些通用模型依赖于特定的接口或解码机制如VQGAN,这种依赖性限制了模型在像素空间的灵活性和适应性,难以关联实现不同任务。
  3. 像素级OCR难题:当前模型在生成像素级的文本序列方面仍然面临挑战。这是因为文本生成不仅涉及语义理解,还需要考虑像素级别的细节,改善模型在生成像素级文本方面的能力仍是一个重要的研究方向。

1.2、UPOCR是什么?

UPOCR是一个通用的OCR模型,其采用了华南理工大学团队AAAI 2024录用论文中的ViTEraser作为主干网,同时借鉴基于MIM和分割图引导的一种自监督文档图像预训练方法SegMIM进行自监督预训练,然后结合文本擦除、文本分割和篡改文本检测等3个不同的任务提示词进行统一训练。
在这里插入图片描述

模型训练好后即可直接用于下游任务,无需再进行专门的精调,模型主要从统一范式、统一架构和统一训练策略三个方面进行研究。

1.2.1、Unified Paradigm 统一范式

在这里插入图片描述
如图所示,作者提出了一个OCR任务统一范式,其将各种像素级OCR任务转化为RGBtoRGB的转换问题。尽管这些任务的目标不同(例如图像生成和分割),但它们都可以被统一为在共享的特征空间中进行操作:

  1. 文本擦除任务:对于文本擦除任务,输出是与输入对应的去除文本的图像,属于RGBtoRGB任务。
  2. 文本分割任务:文本分割旨在将每个像素分配给前景(即文本笔画)或背景,在统一的图像到图像翻译范式下,UPOCR预测具有白色和黑色颜色的RGB图像,通过对比生成的RGB值与预定义的前景RGB值的距离来确定类别。
  3. 篡改文本检测任务:将篡改文本检测任务定义为篡改文本、真实文本和背景类别的每像素分类,进而UPOCR分别为篡改文本、真实文本和背景分配红色(255, 0, 0)、绿色(0, 255, 0)和蓝色(0, 0, 255)颜色。在推断过程中,通过比较预测的RGB值与这三种颜色的距离来确定每像素的类别。

1.2.2、Unified Architecture统一架构

在这里插入图片描述

如图所示,作者通过采用基于ViT的编码器-解码器实现了一个统一的图像到图像翻译范式来处理各种像素级OCR任务。其中,编码器-解码器架构采用了ViTEraser作为主干网络,编码器包括四个顺序块,每个编码器块包含一个用于下采样的块嵌入层和Swin Transformer v2块。解码器部分包括五个顺序块,每个解码器块包含一个用于上采样的块分割层和Swin Transformer v2块。

另外,作者在编码器-解码器架构中引入可学习的任务提示,对应的提示被添加到编码器生成的隐藏特征的每个像素上,推动由编码器生成的通用OCR相关表示朝着任务特定区域。随后,解码器将调整后的隐藏特征转换为特定任务的输出图像。基于这种架构,UPOCR能够在极小的参数和计算开销下简单而有效地同时处理多样的任务。

1.2.3、Unified Training Strategy 统一训练策略

在这里插入图片描述

由于模型采用图像到图像的转换范式进行训练,所以在训练过程中,模型优化的目标只需要考虑最小化生成预测图像和真实图像在像素空间和特征空间上的差异,而不用考虑任务之间的差异。

  1. 像素 空间损失:通过输出图像和真实图像之间的L1距离来测量像素空间中的差异: L p i x = ∑ i = 1 3 α i ∥ I out  i − I g t i ∥ 1 L_{p i x}=\sum_{i=1}^{3} \alpha_{i}\left\|\mathbb{I}_{\text {out }}^{i}-\mathbb{I}_{g t}^{i}\right\|_{1} Lpix=i=13αi Iout iIgti 1,其中 I o u t i \mathbb{I}_{out}^{i} Iouti表示输出图像, I g t i \mathbb{I}_{g t}^{i} Igti表示真实图像。
  2. 特征空间损失:对于与真实图像生成相关联的任务,还需要将输出图像和真实图像在特征空间对齐: L feat  = 0.01 × L per  + 120 × L sty  L_{\text {feat }}=0.01 \times L_{\text {per }}+120 \times L_{\text {sty }} Lfeat =0.01×Lper +120×Lsty 
  3. 整体损失:模型整体损失是像素损失和特征损失的和: L total  = L p i x + L feat  L_{\text {total }}=L_{p i x}+L_{\text {feat }} Ltotal =Lpix+Lfeat 

1.3、UPOCR效果如何?

在这里插入图片描述

实验结果如上图三个表所示,左上方表格是文本擦除实验对比,即使与擦除领域专用的精调模型相比,UPOCR统一模型在大部分指标上也领先领域的SOTA方法;右上方表格是文本图像分割实验对比,可以看到,UPOCR在所有指标都比专门单一任务的分割方法好;左下方表格是文本篡改检测,UPOCR也取得了很好的效果。图5显示UPOCR模型设计的任务相关Prompt也可以很好的区分不同的任务,下图是文本擦除、分割、及篡改检测与现有子任务的SOTA方法的可视化对比图。
在这里插入图片描述

综上所述,UPOCR提出了一种简单而有效的统一像素级OCR接口,其采用基于ViT的编码器-解码器,通过可学习的任务提示来处理各种任务,在文本去除、文本分割和篡改文本检测等任务上都表现出极高的性能。

二、OCR大一统模型前沿研究速览

2.1、Donut:无需OCR的用于文档理解的Transformer模型

论文地址:https://link.springer.com/chapter/10.1007/978-3-031-19815-1_29

项目地址:https://github.com/clovaai/donut
在这里插入图片描述

Donut模型是一种基于Transformer架构的新颖的OCR-free VDU模型,Donut模型首先通过一个简单的规则生成布局,然后应用一些图像渲染技术来模拟真实的文档,其通过预训练和微调两个阶段进行训练。在预训练阶段,模型使用IIT-CDIP数据集进行视觉语言建模,学习从图像中读取文本。在微调阶段,模型被训练为生成JSON格式的输出,以解决下游任务,如文档分类、文档信息提取和文档视觉问答等。与其他基于OCR的模型相比,Donut不需要依赖于OCR引擎,因此具有更高的速度和更小的模型大小。在多个公共数据集上进行的实验表明,Donut在文档分类任务中表现出了先进性能。

2.2、NouGAT:实现文档图像到文档序列输出

论文地址:https://arxiv.org/abs/2308.13418

项目地址:https://github.com/facebookresearch/nougat
在这里插入图片描述

Nougat模型是一种通过Swing Transformer 和 Transformer Decoder实现文档图像到文档序列输出的OCR模型,模型采用基于OCR-free Transformer的端到端训练方法,采用预训练和微调的方式进行训练。在预训练阶段,Donut使用文档图像和它们的文本注释进行预训练,通过结合图像和之前的文本上下文来预测下一个词,从而学习如何读取文本。在微调阶段,Donut根据下游任务学习如何理解整个文档。各种VDU任务和数据集上的大量评估证明了Donut具有较强的理解能力。

2.3、SPTS v3:基于SPTS的OCR大一统模型

论文地址:https://arxiv.org/abs/2112.07917

项目地址:https://github.com/shannanyinxiang/SPTS
在这里插入图片描述

SPTS,全称Single-Point Text Spotting,是一种单点文本识别技术,它的主要创新之处在于:方法使用极低成本的单点标注进行训练将文本检测任务形式化为语言建模任务,只需要对每个文本实例进行单一点的标注,就可以训练出场景文本识别模型。SPTS基于自回归Transformer的框架,可以简单地将结果生成为顺序令牌,从而避免复杂的后处理或独占采样阶段。基于这样一个简洁的框架,SPTS在各种数据集上显示出先进性能。

三、大模型时代下的智能文档处理应用

3.1、LLM与文档识别分析应用

大语言模型能够理解自然语言文本,并具备上下文理解的能力,在文档识别分析应用中,将文档理解相关的工作交给大语言模型,自动进行篇章级的文档理解和分析,可以帮助系统更好地理解文档内容,包括上下文中的关系、实体识别、情感分析等。目前最常见和最广泛的应用包括检索增强生成(RAG)、文档问答。

在这里插入图片描述

  1. 检索增强生成:已经有大语言模型针对从大量文档中检索相关信息,并以生成的方式提供更详细、准确的答案。这在信息检索的场景中具有重要的应用价值。
  2. 文档问答:LLM可以直接用于构建文档问答系统,使用户能够通过提出问题来获取文档中的相关信息,可以应用于如法律文件的解读、技术手册的查询、知识库理解等场景。

3.2、智能文档处理应用产品

智能文档处理(Intelligent Document Processing,IDP)利用人工智能和机器学习技术来自动分析和理解文档,它通过识别、解析、理解文档内容,并将其转换成可操作的数据或信息,以提高业务流程的自动化程度,提升工作效率,降低成本。

丁凯博士还为我们带来合合信息文档图像识别与分析产品分享,基于这样的智能文档处理技术,产品可以快速、准确地处理大量的文档,帮助银行、保险、物流、供应链、客户服务等多个领域数智化转型,实现更高效、更可靠的业务流程管理。

在这里插入图片描述

合合信息TextIn智能文字识别产品基于自研的文字识别技术、计算机图形图像技术和智能图像处理引擎,能够快速将纸质文档或图片中的文字信息转化为计算机可读的文本格式,在纸质文档电子化、办公文档/报表识别、教育类文本识别、快递面单识别、切边增强、弯曲矫正、阴影处理、印章检测、手写擦除等诸多场景中提供更好的文档管理解决方案,帮助企业实现数字化转型和自动化管理。

在这里插入图片描述

虽然GPT4-V为代表的多模态大模型技术极大的推进了文档识别与分析领域的技术进展,但并没有完全解决图像文档处理领域面临的问题,还有很多问题值得我们研究,如何结合大模型的能力,更好的解决IDP的问题,值得我们做更多的思考和探索。
在这里插入图片描述

四、文末抽奖

合合信息给大家送福利了!填写年度问卷:https://qywx.wjx.cn/vm/exOhu6f.aspx,1月12日将随机抽取10个人送50元京东卡,欢迎参与!

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

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

相关文章

kdump安装及调试策略

本文基于redhat系的操作系统,debian系不太一样,仅提供参考 1.kdump的部署 注:一般很多操作系统在安装时可默认启动kdump。 (1)需要的包 yum install kexec-tools crash kernel-debuginfo (2&#xff0…

《堆排序》与《Top—k》

目录 ​编辑 前言: 关于《堆排序》: 第一步:建堆 第二步:排序 《Top—K问题》 关于Top—k问题: 前言: 我们在前面的blog中,对于《堆》已经有了初步的概念,那么接下来我们可以…

flex布局(2)

五、优缺点 优点: 简单易用:Flex布局使用简单,只需通过设置容器的属性即可实现弹性布局,无需复杂的计算和调整。自适应性:Flex布局可以根据容器的大小自动调整元素的位置和大小,适应不同的屏幕尺寸和设备…

3.5 RESOURCE ASSIGNMENT

一旦内核启动,CUDA运行时系统将生成相应的线程网格。正如上一节所讨论的,这些线程被分配给逐个块执行资源。在当前一代硬件中,执行资源被组织成流式多处理器(SM)。图3.12说明可以为每个SM分配多个线程块。每个设备都对…

uniapp中uview组件库中丰富的LineProgress 线形进度条 的使用方法

目录 平台差异说明 #基本使用 #设置进度条动画效果 #设置进度条内部显示百分比值 #修改进度条的样式 #API #Props #Slots 平台差异说明 AppH5微信小程序支付宝小程序百度小程序头条小程序QQ小程序√√√√√√√ #基本使用 通过percent设置当前的进度值,该…

计算机视觉下的数据增强代码实现

数据增强的实现 使用经典的pytorch框架下的torchvision.transformers对计算机视觉进行增强的代码实现。 使用下面的图像进行数据增强,相应的效果图如下所示! 导包 import os import PIL.Image as Image from torchvision import transforms as transfor…

RT-Thread 线程间同步 信号量

线程间同步 在多线程实时系统中,一项工作的完成往往可以通过多个线程协调的方式共同来完成。 例如一项工作中的两个线程:一个线程从传感器中接收数据并且将数据写到共享内存中,同时另一个线程周期性地从共享内存中读取数据并发送出去显示&a…

SpringCloud系列篇:核心组件之网关组件

🥳🥳Welcome Huihuis Code World ! !🥳🥳 接下来看看由辉辉所写的关于SpringCloud的相关操作吧 目录 🥳🥳Welcome Huihuis Code World ! !🥳🥳 一.网关组件是什么 二. 网关组件的…

vivado 创建编译后工程

创建后期合成项目 合成后项目以合成网表、完全生成的块设计、完全生成的IP以及相应的约束。然后,您可以分析、布局和实施设计 注意:您可以使用XST或第三方合成工具来创建合成网表。 重要!使用EDIF和NGC文件时,顶部单元格名称必…

java递归生成树型结构

java递归生成树 1.获取数据 public List<TreeClassifyRespVO> getTreeClassifyList(ClassifyPageReqVO reqVO) {List<ClassifyDO> classifyList classifyMapper.selectList(reqVO);List<TreeClassifyRespVO> childClassifyResp ClassifyConvert.INSTANCE…

MySQL之导入、导出

文章目录 1.navicat导入导出2.mysqldump命令导入导出2.1导出2.2导入 3.load data infile命令导入导出4.远程备份5.思维导图 1.navicat导入导出 使用Navicat工具导入t_log 共耗时 55s 2.mysqldump命令导入导出 2.1导出 导出表数据和表结构 语法&#xff1a; mysqldump -u用…

EasyExcel百万数据导入导出

文章目录 百万数据准备EasyExcel导出EasyExcel不支持并发写导出功能的代码片段 EasyExcel导入 https://gitee.com/antirust/idooy-stable/tree/master/idooy-EasyExcel 开发中&#xff0c;导入导出功能对于后台管理这样的系统来说太常用了&#xff0c;除了实现该功能外导入导出…

Python爬虫-爬取豆瓣Top250电影信息

&#x1f388; 博主&#xff1a;一只程序猿子 &#x1f388; 博客主页&#xff1a;一只程序猿子 博客主页 &#x1f388; 个人介绍&#xff1a;爱好(bushi)编程&#xff01; &#x1f388; 创作不易&#xff1a;喜欢的话麻烦您点个&#x1f44d;和⭐&#xff01; &#x1f388;…

QT qss文件设置样式

方式一 &#xff08;单个&#xff09; 方式二 &#xff08;全局&#xff09; 所有按钮都会采用这个样式。 方式三 &#xff08;qss文件&#xff09; 创建资源文件 创建qss文件&#xff08;Button.qss&#xff09; 引用qss文件 QApplication a(argc, argv);QString qss;QFile…

Kettle Local引擎使用记录(一)(基于Kettle web版数据集成开源工具data-integration源码)

Kettle Web &#x1f4da;第一章 前言&#x1f4da;第二章 demo源码&#x1f4d7;pom.xml引入Kettle引擎核心文件&#x1f4d7;java源码&#x1f4d5; controller&#x1f4d5; service&#x1f4d5; 其它&#x1f4d5; maven settings.xml &#x1f4d7;测试&#x1f4d5; 测试…

【STM32】STM32学习笔记-USART串口数据包(28)

00. 目录 文章目录 00. 目录01. 串口简介02. HEX数据包03. 文本数据包04. HEX数据包接收05. 文本数据包接收06. 预留07. 附录 01. 串口简介 串口通讯(Serial Communication)是一种设备间非常常用的串行通讯方式&#xff0c;因为它简单便捷&#xff0c;因此大部分电子设备都支持…

Python 使用input函数从键盘输入数据

在Python中&#xff0c;input()函数可以从键盘获取用户的输入数据。当我们使用input()函数时&#xff0c;会暂停程序的执行&#xff0c;等待用户输入数据&#xff0c;并将用户输入的数据作为字符串返回。 如&#xff1a; name input("请输入你的姓名&#xff1a;"…

Python私有变量的定义与访问

class Student():def __init__(self, name, age):self.name nameself.age ageself.__score 0def marking(self, score):if score < 0:return 分数不能为0self.__score scoreprint(self.name 同学本次得分是: str(self.__score)) def __talk(self): # 私有的类可通过在…

RocketMQ5-03RocketMQ-Dashboard和Java客户端访问示例

接上篇02快速部署RocketMQ5.x(手动和容器部署) 已经完成 RocketMQ5.0 环境的部署&#xff0c;就需要对这个环境进行测试&#xff0c;查看集群、写入消息、读取消息等 本篇教你如何使用和查看部署的服务&#xff1a; Docker部署 Dashboard 获取镜像并下载部署服务 客户端连接 …

哈希-力扣01两数之和

题目 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target 的那 两个 整数&#xff0c;并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是&#xff0c;数组中同一个元素在答案里不能重复出现。 你可以按任意顺…