基于Vision Transformers的文档理解简介

简介: 文档理解是从pdf、图像和Word文档中提取关键信息的技术。这篇文章的目标是提供一个文档理解模型的概述。

文档理解是从pdf、图像和Word文档中提取关键信息的技术。这篇文章的目标是提供一个文档理解模型的概述。

文档理解算法使用编码器-解码器结构分析文档内容,该管道结合了计算机视觉(CV)和自然语言处理(NLP)方法。管道的CV部分将文档作为输入图像进行分析,生成transformer可以处理的表示形式。在下图中,CV模型生成图像嵌入,并将其馈送到多模态transformer中。

在以前,卷积神经网络(cnn)如ResNet已经主导了CV领域。最近,类似于NLP架构(如BERT)的VIT作为cnn的替代方法获得了更多的关注。ViTs首先将输入图像分割为若干块,将这些块转换为线性嵌入序列,然后将这些嵌入馈送到transformer 编码器中。这个过程如图2所示。线性嵌入的作用类似于NLP中的令牌。与NLP模型一样,transformer 的输出可用于图像分类等任务。

vit比cnn有几个优势。可以获得全局关系,并对对抗性攻击表现出更强的弹性。缺点是训练vit需要更多的样本,因为cnn有归纳偏差,允许用更少的例子来训练它们。我们可以通过使用大型图像数据集预训练VIT来缓解这个问题。vit也是计算密集型的——运行transformer 所需的计算量随着令牌数量的增加而成倍增长。VIT现在可以作为HuggingFace视觉编码解码器模型的一部分,如下面的代码片段所示。

 from transformers import BertConfig, ViTConfig, VisionEncoderDecoderConfig, VisionEncoderDecoderModel
 
 config_encoder = ViTConfig()
 config_decoder = BertConfig()
 config = VisionEncoderDecoderConfig.from_encoder_decoder_configs(config_encoder, config_decoder)
 model = VisionEncoderDecoderModel(config=config)

视觉编码器解码器为许多文档理解模型提供了基础。Donut[3]模型首先使用图像transformer 处理输入图像,然后将其提供给解码器以生成输入文档的结构化表示。在下面的示例中,我们使用收据的图像,并输出了一个结构化JSON,其中包含了收据的行项。

尽管一些文档理解模型(如LayoutLMv3[1])需要预处理来识别边界框并执行OCR,但Donut将输入图像直接转换为目标JSON,如下面的代码所示。这种方法的一个缺点是输出不包括边界框,因此不提供关于提取来自文档中的哪个位置的任何信息。

 from donut.model import DonutModel
 from PIL import Image
 model = DonutModel.from_pretrained("./custom-fine-tuned-model")
 
 prediction = model.inference(
     image=Image.open("./example-invoice.jpeg"), prompt="<s_dataset-donut-generated>"
 )["predictions"][0]
 
 print(prediction)
 {
     "InvoiceId": "# 560578",
     "VendorName": "THE LIGHT OF DANCE ACADEMY",
     "VendorAddress": "680 Connecticut Avenue, Norwalk, CT, 6854, USA",
     "InvoiceDate": "4/11/2003",
     "AmountDue": "Balance Due:",
     "CustomerName": "Eco Financing",
     "customerAddress": "2900 Pepperrell Pkwy, Opelika, AL, 36801, USA",
     "items": [
         {
             "Description": "FURminator deShedding Tool",
             "Quantity": "5",
             "UnitPrice": "$8.09",
             "Amount": "$40.46"
         },
         {
             "Description": "Roux Lash & Brow Tint",
             "Quantity": "5",
             "UnitPrice": "$68.61",
             "Amount": "$343.03"
         },
         {
             "Description": "Cranberry Tea by Alvita - 24 Bags",
             "Quantity": "1",
             "UnitPrice": "$42.30",
             "Amount": "$42.30"
         }
     ],
     "InvoiceTotal": "$425.79"
 }

以上就是文档理解的简介,西洼港对你有所帮助。

https://avoid.overfit.cn/post/6264490feb9d44eaad7a7d56e3987755
作者:Unstructured-IO

目录
相关文章
|
搜索推荐 前端开发 JavaScript
什么是百度优化?百度SEO优化解决方案
百度优化的解决方案不仅可以帮助企业提升网站在百度PC端的收录与关键词排名,也可以获得更好的移动端收录与关键词排名,从而达到品牌SEO推广及引流的目的。接下来小编为你详细分享什么是百度优化以及实用的解决方案,一起来看看吧。
1856 0
|
Python
python使用pip镜像源加速安装包(清华、阿里、中科大)
python使用pip镜像源加速安装包(清华、阿里、中科大)
9383 0
python使用pip镜像源加速安装包(清华、阿里、中科大)
CentOS7编译安装openssl1.1.1
centos7默认提供的openssl版本是1.0.2的,想要升级openssl版本则需要手动进行编译
|
算法 计算机视觉
Opencv学习笔记(六):cv2.resize函数的介绍
这篇文章介绍了OpenCV库中cv2.resize函数的使用方法,包括其参数、插值方式选择以及实际代码示例。
2691 1
Opencv学习笔记(六):cv2.resize函数的介绍
|
10月前
|
数据采集 人工智能 JavaScript
Browser Use:40.7K Star!一句话让AI完全接管浏览器!自动规划完成任务,多标签页同时管理
Browser Use 是一款专为大语言模型设计的智能浏览器自动化工具,支持多标签页管理、视觉识别、内容提取等功能,并能记录和重复执行特定动作,适用于多种应用场景。
2723 21
Browser Use:40.7K Star!一句话让AI完全接管浏览器!自动规划完成任务,多标签页同时管理
|
存储 弹性计算 固态存储
阿里云服务器按量付费是什么?划算吗?
阿里云ECS按量付费模式,先使用后付费,按小时结算,适合临时扩展、测试、电商抢购等短期应用。开通需账户余额不低于100元。实例、镜像、云盘、带宽等支持按量计费,价格根据配置和地区而异。可随时转为包年包月。
2371 1
|
Ubuntu Python
ubuntu升级Python版本
现在,你已成功升级了Python版本并可以使用新版本进行开发和运行程序。
1433 1
|
前端开发 小程序 Java
java基础:map遍历使用;java使用 Patten 和Matches 进行正则匹配;后端传到前端展示图片三种情况,并保存到手机
这篇文章介绍了Java中Map的遍历方法、使用Pattern和matches进行正则表达式匹配,以及后端向前端传输图片并保存到手机的三种情况。
335 1
|
Linux 测试技术 开发工具
CentOS Linux 8使用阿里源(安装jdk11、git测试)
CentOS Linux 8使用阿里源(安装jdk11、git测试)
1896 1
|
NoSQL Java Redis
springboot中redis的配置
【1月更文挑战第8天】springboot中redis的配置
931 2