基于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

目录
相关文章
|
5月前
|
人工智能 机器人 API
使用 OpenAI、LangChain 和 LlamaIndex 构建 Knowledge
使用 OpenAI、LangChain 和 LlamaIndex 构建 Knowledge
488 0
|
8月前
|
自然语言处理 算法 语音技术
【nlp-with-transformers】|Transformers中的generate函数解析
今天社群中的小伙伴面试遇到了一个问题,如何保证生成式语言模型在同样的输入情况下可以保证同样的输出。 这里面造成问题的因素有两个方面: 一个方面是在forward过程中参数的计算出现了差异,这种情况一般发生在游戏显卡中,游戏显卡无法保证每一次底层算子计算都是成功的,也没有办法保证同输入同输出,这里我们就需要采用具有ecc内存纠错机智的专用显卡用来解决相关的问题。
381 0
|
9月前
|
机器学习/深度学习 算法 数据挖掘
【vision transformer】LETR论文解读及代码实战(一)
【vision transformer】LETR论文解读及代码实战
83 0
|
机器学习/深度学习 编解码 自然语言处理
【18】Vision Transformer:笔记总结与pytorch实现
【18】Vision Transformer:笔记总结与pytorch实现
681 0
【18】Vision Transformer:笔记总结与pytorch实现
|
机器学习/深度学习 自然语言处理 网络架构
Transformer简介
Transformer是一种基于自注意力机制(Self-Attention)的神经网络架构,最初用于自然语言处理(NLP)中的机器翻译任务。Transformer的出现使得机器翻译的表现质量有了显著提高,随后也被应用于其他NLP任务,如文本分类、文本生成等。
424 0
|
缓存 自然语言处理 算法
【DSW Gallery】基于EasyNLP Transformer模型的中文文图生成
EasyNLP提供多种模型的训练及预测功能,旨在帮助自然语言开发者方便快捷地构建模型并应用于生产。本文简要介绍文图生成的技术,以及如何在PAI-DSW中基于EasyNLP轻松实现文图生成,带你秒变艺术家。
【DSW Gallery】基于EasyNLP Transformer模型的中文文图生成
|
机器学习/深度学习 人工智能 编解码
【DSW Gallery】基于EasyNLP-Diffusion模型的中文文图生成
EasyNLP提供多种模型的训练及预测功能,旨在帮助自然语言开发者方便快捷地构建模型并应用于生产。本文简要介绍文图生成的技术,以及如何在PAI-DSW中基于EasyNLP使用diffusion model进行finetune和预测评估。
【DSW Gallery】基于EasyNLP-Diffusion模型的中文文图生成
|
自然语言处理 PyTorch TensorFlow
【BERT-多标签文本分类实战】之五——BERT模型库的挑选与Transformers
【BERT-多标签文本分类实战】之五——BERT模型库的挑选与Transformers
728 0
【BERT-多标签文本分类实战】之五——BERT模型库的挑选与Transformers
|
机器学习/深度学习 算法 PyTorch
从零开始学Pytorch(八)之Modern CNN
从零开始学Pytorch(八)之Modern CNN
从零开始学Pytorch(八)之Modern CNN
|
机器学习/深度学习 自然语言处理 数据挖掘
huggingface.transformers任务简介
本部分介绍了一些常见NLP任务使用transformers包的解决方案。本文使用的AutoModel具体内容可以参阅其文档,也可以参考我此前的撰写的transformers包文档笔记,我介绍了一些相关的用法和示例代码。
huggingface.transformers任务简介