基于Pix2Struct的文档信息提取【DocVQA】

news2024/11/14 10:57:43

文档信息提取涉及使用计算机算法从非结构化或半结构化文档(例如报告、电子邮件和网页)中提取结构化数据(例如员工姓名、地址、职务、电话号码等)。 提取的信息可用于各种目的,例如分析和分类。 DocVQA(文档视觉问答)是一种结合计算机视觉和自然语言处理技术的尖端方法,可以自动回答有关文档内容的问题。 本文将探讨使用 DocVQA 和 Google 的 Pix2Struct 包进行信息提取。

NSDT在线工具推荐: Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编程3D场景编辑器 

1、DocVQA 用例

文档提取自动从非结构化文档(例如发票、收据、合同和表格)中提取相关信息。 以下行业将因此受益:

  • 金融:银行和金融机构使用文档提取来自动执行发票处理、贷款申请处理和开户等任务。 通过自动化这些任务,文档提取可以减少错误和处理时间并提高效率。
  • 医疗保健:医院和医疗保健提供者使用文档提取从医疗记录中提取重要的患者数据,例如诊断代码、治疗计划和测试结果。 这有助于简化患者护理并改善患者治疗结果。
  • 保险:保险公司使用文档提取来处理索赔、保单申请和承保文件。 文档提取可以通过自动化这些任务来减少处理时间并提高准确性。
  • 政府:政府机构使用文档提取来处理大量非结构化数据,例如税表、申请表和法律文档。 通过自动化这些任务,文档提取可以帮助降低成本、提高准确性并提高效率。
  • 法律:律师事务所和法律部门使用文档提取从法律文档(例如合同、诉状和证据证明文件)中提取关键信息。 它将提高法律研究和文件审查的效率和准确性。

文档提取在处理大量非结构化数据的行业中有许多应用。 自动化文档处理任务可以帮助组织节省时间、减少错误并提高效率。

2、文档信息提取的挑战

文档信息提取存在一些挑战。 主要挑战是文档格式和结构的可变性。 例如,不同的文档可能具有不同的形式和布局,使得难以一致地提取信息。 另一个挑战是数据中的噪音,例如拼写错误和不相关的信息。 这可能会导致提取结果不准确或不完整。

文档信息提取的过程涉及几个步骤:

  • 文档理解
  • 预处理文档,包括清理和准备数据以供分析。 预处理可以包括删除不必要的格式(例如页眉和页脚),以及将数据转换为纯文本。
  • 使用基于规则和机器学习算法的组合从文档中提取相关信息。 基于规则的算法使用一组预定义的规则来删除特定类型的信息,例如姓名、日期和地址。
  • 机器学习算法使用统计模型来识别数据中的模式并提取相关信息。
  • 验证并完善提取的信息。 它涉及检查提取的信息的准确性并进行必要的更正。 此步骤对于确保提取的数据准确可靠以供进一步分析至关重要。

研究人员正在开发新的文档信息提取算法和技术来应对这些挑战。 其中包括处理文档结构可变性的技术,例如使用深度学习算法自动学习文档结构。 它们还包括处理噪声数据的技术,例如使用自然语言处理技术来识别和纠正拼写错误。

3、相关工作

DocVQA 代表文档视觉问答,这是计算机视觉和自然语言处理中的一项任务,旨在回答有关给定文档图像内容的问题。 问题可以涉及文档文本的任何方面。 DocVQA 是一项具有挑战性的任务,因为它需要理解文档的视觉内容以及阅读和理解其中文本的能力。 该任务有许多实际应用,例如文档检索、信息提取等。

LayoutLM、Flan-T5 和 Donut 是用于文档视觉问答 (DOCVQA) 的文档布局分析和文本识别的三种方法。

它是一种预先训练的语言模型,融合了文档布局、OCR 文本位置和文本内容等视觉信息。 LayoutLM 可以针对各种 NLP 任务进行微调,包括 DOCVQA。 例如,DOCVQA 中的 LayoutLM 可以帮助准确定位文档的相关文本和其他视觉元素,这对于回答需要上下文特定信息的问题至关重要。

Flan-T5 是一种使用基于变压器的架构来执行文本识别和布局分析的方法。 该模型在文档图像上进行端到端训练,可以处理多语言文档,使其适合各种应用。 例如,在 DOCVQA 中使用 Flan-T5 可以实现准确的文本识别和布局分析,这有助于提高系统的性能。

Donut 是一种深度学习模型,它使用新颖的架构对布局不规则的文档执行文本识别。 在 DOCVQA 中使用 Donut 可以帮助从复杂布局的文档中准确提取文本,这对于回答需要特定信息的问题至关重要。 显着的优点是它无需 OCR。

总体而言,在 DOCVQA 中使用这些模型可以通过从文档图像中准确提取文本和其他相关信息来提高系统的准确性和性能。

4、Pix2Struct

该论文介绍了 Google 的 Pix2Struct,这是一种用于理解视觉情境语言的预训练图像到文本模型。 该模型使用新颖的学习技术进行训练,将网页的屏幕截图解析为简化的 HTML,为一系列下游活动提供非常适合的预训练数据源。 除了新颖的预训练策略之外,本文还引入了更灵活的语言和视觉输入以及可变分辨率输入表示的集成。 结果,该模型在文档、插图、用户界面和自然图像等 4 个领域的九项任务中的六项中取得了最先进的结果。 下图显示了有关所考虑的域的详细信息,图为pix2struct研究论文第5页:

Pix2Struct 是一种预训练模型,它将纯像素级输入的简单性与来自多样化和丰富的网络数据的自监督预训练提供的通用性和可扩展性结合在一起。 该模型通过推荐一个屏幕截图解析目标来实现此目的,该目标需要从已部分屏蔽的网页屏幕截图中预测基于 HTML 的解析。 利用网络上文本和视觉元素的多样性和复杂性,Pix2Struct 学习网页底层结构的丰富表示,这可以有效地转移到各种下游视觉语言理解任务。

Pix2Struct 基于 Vision Transformer (ViT),一种图像编码器文本解码器模型。 然而,Pix2Struct 对输入表示提出了一个小但有影响力的改变,以使模型对各种形式的视觉情境语言更加鲁棒。 标准 ViT 在将输入图像缩放到预定分辨率后提取固定大小的补丁。 这会扭曲图像的正确纵横比,对于文档、移动用户界面和图形来说,该纵横比可能会有很大变化。

此外,将这些模型转移到具有更高分辨率的下游任务具有挑战性,因为该模型在预训练期间仅观察到一种特定分辨率。 Pix2Struct 建议放大或缩小输入图像,以提取适合给定序列长度的最大数量的补丁。 这种方法对于极端纵横比更加稳健,这在 Pix2Struct 实验领域很常见。 此外,该模型可以处理序列长度和分辨率的即时更改。 为了明确地处理可变分辨率,输入补丁使用二维绝对位置嵌入。

Pix2Struct提供两种模型:

  • 基本模型:google/pix2struct-docvqa-base(~ 1.3 GB)
  • 大模型:google/pix2struct-docvqa-large(~ 5.4 GB)

Pix2Struct-Large 模型在 DocVQA 数据集上的性能优于之前最先进的 Donut 模型。 LayoutLMv3 模型使用三个组件(包括 OCR 系统和预训练编码器)在此任务上实现了高性能。 然而,Pix2Struct 模型在不使用域内预训练数据的情况下表现出竞争力,并且仅依赖于视觉表示。 我们仅考虑 DocVQA 结果。

5、基于Pix2Struct的DocVQA实现

让我们逐步了解 DocVQA 的实现。 出于演示目的,让我们考虑 Mendeley Data 的示例发票。

首先安装开发包:

!pip install git+https://github.com/huggingface/transformers pdf2image
!sudo apt install poppler-utils12diff

接下来导入包:

from pdf2image import convert_from_path, convert_from_bytes
import torch
from functools import partial
from PIL import Image
from transformers import Pix2StructForConditionalGeneration as psg
from transformers import Pix2StructProcessor as psp

使用预训练权重初始化模型:

DEVICE = "cuda" if torch.cuda.is_available() else "cpu"
model = psg.from_pretrained("google/pix2struct-docvqa-large").to(DEVICE)
processor = psp.from_pretrained("google/pix2struct-docvqa-large")

一些处理函数:

def generate(model, processor, img, questions):
  inputs = processor(images=[img for _ in range(len(questions))], 
           text=questions, return_tensors="pt").to(DEVICE)
  predictions = model.generate(**inputs, max_new_tokens=256)
  return zip(questions, processor.batch_decode(predictions, skip_special_tokens=True))

def convert_pdf_to_image(filename, page_no):
    return convert_from_path(filename)[page_no-1]

指定PDF文件的路径和要提取信息的页码:

questions = ["what is the seller name?",
             "what is the date of issue?",
             "What is Delivery address?",
             "What is Tax Id of client?"]
FILENAME = "/content/invoice_107_charspace_108.pdf"
PAGE_NO = 1

生成答案:

image = convert_pdf_to_image(FILENAME, PAGE_NO)
print("pdf to image conversion complete.")
generator = partial(generate, model, processor)
completions = generator(image, questions)
for completion in completions:
    print(f"{completion}")  

结果如下:

## answers
('what is the seller name?', 'Campbell, Callahan and Gomez')
('what is the date of issue?', '09/25/2011')
('What is Delivery address?', '2969 Todd Orchard Apt. 721')
('What is Tax Id of client?', '941-79-6209')

你可以在这个HF空间尝试演示,或者点击这里下载notebook:

6、结束语

文档信息提取是一个重要的研究领域,在许多领域都有应用。 它涉及使用计算机算法从基于文本的文档中识别和提取相关信息。 尽管文档信息提取存在一些挑战,但研究人员正在开发新的算法和技术来应对这些挑战并提高所提取信息的准确性和可靠性。

然而,与所有深度学习模型一样,DocVQA 也有一些局限性。 例如,它需要大量训练数据才能表现良好,并且可能需要复杂文档或罕见符号和字体的帮助。 它还可能对输入图像的质量以及用于从文档中提取文本的 OCR(光学字符识别)系统的准确性敏感。


原文链接:Pix2Struct文档信息提取 - BimAnt

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

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

相关文章

yolov5检测(前向)输入视频输出(不在图上画标签形式的原)图片的方法,及设置每隔几帧保存的方式(不每帧保存减少重复)

这些天我忽然有个需求,要更新迭代一个场景的检测模型,甲方爸爸提供的新数据集是监控视频形式的(因为拍视频确实更加的方便),而我训练模型确实要标注好的图片形式。 根据这些条件的话,思路应该是要这样的:首先使用现有的…

EfficientViT:高分辨率密集预测的多尺度线性注意

EfficientViT: Multi-Scale Linear Attention for High-Resolution Dense Prediction 1、介绍2、方法2.1 多尺度线性注意模块2.1.1 启用全局接收域与ReLU线性注意2.1.2 解决ReLU线性注意力的局限性。 2.2 EfficientViT架构2.2.1 骨干2.2.2 头部 3、实验 贡献: 1、我…

【心得】XXE漏洞利用个人笔记

XML中关于DTD类型(内部(SYSTEM)的和外部(PUBLIC)的区别) xxe的利用 XML Entity 实体注入 当程序处理xml文件时,没有禁止对外部实体的处理,容易造成xxe漏洞 危害 主流是任意文件读取 XML 文件 一般表示带有结构的数据 祖父 3个叔父 8个堂弟堂妹 …

聚观早报 |魅族21搭载超声波指纹2.0;华为长安成立新公司

【聚观365】11月28日消息 魅族21搭载超声波指纹2.0 华为长安成立新公司 OPPO Reno11 Pro本周首销 淘宝天猫推出系列AI工具 长城汽车计划全面进入欧洲市场 魅族21搭载超声波指纹2.0 魅族官方此前已宣布,将于11月30日召开“2023魅族秋季无界生态发布会”&#x…

【JavaScript】封装自己的JavaScript公共工具函数,并上传到npm中 进行下载

js公共方法封装方式都有哪些 全局函数 function greet(name) {console.log("Hello, " name "!"); }greet("Alice"); // 调用全局函数对象字面量 var utils {add: function(a, b) {return a b;},subtract: function(a, b) {return a - b;}…

几何教学工具 Sketchpad几何画板 mac软件特色

Sketchpad几何画板 for Mac是一款适用于macOS系统的几何教学工具,用户可以在其画板上进行各种几何图形的绘制、演示,帮助教师了解学生的思路和对概念的掌握程度。此外,Sketchpad更深层次的功能则是可以用来进行几何交流、研究和讨论&#xff…

在Spring Boot中隔离@Async异步任务的线程池

在异步任务执行的时候,我们知道其背后都有一个线程池来执行任务,但是为了控制异步任务的并发不影响到应用的正常运作,我们需要对线程池做好相关的配置,以防资源过度使用。这个时候我们就考虑将线程池进行隔离了。 那么我们为啥要…

C#,数值计算——插值和外推,径向基函数插值(RBF_interp)的计算方法与源程序

1 文本格式 using System; namespace Legalsoft.Truffer { /// <summary> /// 径向基函数插值 /// Object for radial basis function interpolation using n points in dim /// dimensions.Call constructor once, then interp as many times as desir…

绝地求生:胜者组赛事强度再刷新,17即将晋级,NH闯地狱副本!

2023PGC胜者组赛终于在昨日打响&#xff0c;PCL战队17和Tianba各吃鸡&#xff0c;17更是以接近场均11分的高水准发挥确立了自己的优势。 胜者组再次让选手和观众体会到了不同的赛事强度&#xff0c;特别是艾伦格&#xff0c;未能吃到圈型的队伍最后只能轧点博取机会&#xff0c…

LangChain 13输出解析Output Parsers 自动修复解析器

LangChain系列文章 LangChain 实现给动物取名字&#xff0c;LangChain 2模块化prompt template并用streamlit生成网站 实现给动物取名字LangChain 3使用Agent访问Wikipedia和llm-math计算狗的平均年龄LangChain 4用向量数据库Faiss存储&#xff0c;读取YouTube的视频文本搜索I…

Sass 语法详细介绍

文章目录 前言SASS缩进语法SASS的语法差异多线选择器注释import Mixin指令已弃用的语法后言 前言 hello world欢迎来到前端的新世界 &#x1f61c;当前文章系列专栏&#xff1a;Sass和Less &#x1f431;‍&#x1f453;博主在前端领域还有很多知识和技术需要掌握&#xff0c;正…

机器态势感知中的注意力机制

输入矢量x是原始的输入数据&#xff0c;而q、k、v是通过对x进行线性变换得到的新的表示。q、k、v是通过对x分别乘以三个矩阵Wq、Wk、Wv得到的&#xff0c;其中Wq、Wk、Wv是通过学习得到的参数矩阵。这些参数矩阵通过模型训练过程中的反向传播算法来更新&#xff0c;以使得模型能…

振南技术干货集:znFAT 硬刚日本的 FATFS 历险记(4)

注解目录 1、znFAT 的起源 1.1 源于论坛 &#xff08;那是一个论坛文化兴盛的年代。网友 DIY SDMP3 播放器激起了我的兴趣。&#xff09; 1.2 硬盘 MP3 推了我一把 &#xff08;“坤哥”的硬盘 MP3 播放器&#xff0c;让我深陷 FAT 文件系统不能自拔。&#xff09; 1.3 我…

新疆大学与优艾智合机器人成立联合创新实验室

11月22日至24日&#xff0c;第五届中国工业互联网大赛新疆赛站决赛在新疆维吾尔自治区昌吉回族自治州昌吉市举行。在大赛中崭露头角的优秀解决方案&#xff0c;将为绿色工厂、绿色园区、绿色供应链等建设提供新的动能&#xff0c;促进工业绿色发展。 作为大赛的成果延伸&#…

ESP32-Web-Server编程-建立第一个网页

ESP32-Web-Server编程-建立第一个网页 HTTP 简述 可能你每天都要刷几个短视频&#xff0c;打开几个网页来娱乐一番。当你打开一个网络上的视频或者图片时&#xff0c;其实际发生了下面的流程&#xff1a; 其中客户端就是你的浏览器啦&#xff0c;服务器就是远程一个存放视频或…

线性表的逻辑结构

归纳编程学习的感悟&#xff0c; 记录奋斗路上的点滴&#xff0c; 希望能帮到一样刻苦的你&#xff01; 如有不足欢迎指正&#xff01; 共同学习交流&#xff01; &#x1f30e;欢迎各位→点赞 &#x1f44d; 收藏⭐ 留言​&#x1f4dd; 只有靠自己的毅力忍耐&#xff0…

详解混合整数二次规划 (MIQP) 投资组合优化问题--附Matlab和Python实现

&#x1f517; 运行环境&#xff1a;Matlab、Python &#x1f6a9; 撰写作者&#xff1a;左手の明天 &#x1f947; 精选专栏&#xff1a;《python》 &#x1f525; 推荐专栏&#xff1a;《算法研究》 #### 防伪水印——左手の明天 #### &#x1f497; 大家好&#x1f917;&am…

sqli-labs靶场详解(less11-less16)

目录 less-11 less-12 less-13 less-14 less-15 less-16 提交参数后 动态参数不存在url中 存在于post表单中 于是在表单中进行注入点测试 先看一看这种提交数据的关卡输入提交后会有什么反应 unameadmin&passwdadmin&submitSubmit 输出 usernameadmin passwordadmin un…

基于mpvue实现的cnode社区demo(附精选源码32套,涵盖商城团购等)

社区类目没有开放给个人开发者&#xff0c;所以没能上线。 预览 项目配置文件&#xff0c;更改appid {"description": "项目配置文件","setting": {"urlCheck": true,"es6": false,"postcss": false,"minif…

万字+28张图带你探秘小而美的规则引擎框架LiteFlow

大家好&#xff0c;今天给大家介绍一款轻量、快速、稳定可编排的组件式规则引擎框架LiteFlow。 一、LiteFlow的介绍 前言 在每个公司的系统中&#xff0c;总有一些拥有复杂业务逻辑的系统&#xff0c;这些系统承载着核心业务逻辑&#xff0c;几乎每个需求都和这些核心业务有关&…