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

文档信息提取涉及使用计算机算法从非结构化或半结构化文档(例如报告、电子邮件和网页)中提取结构化数据(例如员工姓名、地址、职务、电话号码等)。 提取的信息可用于各种目的,例如分析和分类。 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.mzph.cn/news/180325.shtml

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

相关文章

MySQL基础进阶篇

进阶篇 存储引擎 MySQL体系结构: 存储引擎就是存储数据、建立索引、更新/查询数据等技术的实现方式。存储引擎是基于表而不是基于库的,所以存储引擎也可以被称为表引擎。 默认存储引擎是InnoDB。 相关操作: -- 查询建表语句 show create …

BGP综合实验(IP)

实验要求: 实验思路: 1.划分IP地址: 将172.16.0.0/16的网段划分为172.16.0.0/24的多个网段,因为在实际工程当中,24的网段更符合用户网段,因此先将网段划分为172.16.0.0 /24的多个子网掩码为24的网段&…

filebeat(远程收集日志工具)

(一)filebeat 1、filebeat和logstash相同 (1)filebeat是一个轻量级的日志收集工具,所使用的系统资源比logstash部署和启动时使用的资源要小的多 (2)filebeat可以运行在非Java环境、可以代理l…

C语言——计算Fibonacci数列

方式一 for循环 (20位) #define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h> int main() {int n;int a[20]{1,1};for ( n 1; n <20; n){a[n]a[n-2]a[n-1];}for ( n 0; n < 20; n){if(n%50)printf("\n");printf("%12d ",a[n]);}return 0; …

【小黑嵌入式系统第十课】μC/OS-III概况——实时操作系统的特点、基本概念(内核任务中断)、与硬件的关系实现

文章目录 一、为什么要学习μC/OS-III二、嵌入式操作系统的发展历史三、实时操作系统的特点四、基本概念1. 前后台系统2. 操作系统3. 实时操作系统&#xff08;RTOS&#xff09;4. 内核5. 任务6. 任务优先级7. 任务切换8. 调度9. 非抢占式&#xff08;合作式&#xff09;内核10…

轻量级web开发框架:Flask本地部署及实现公网访问界面

轻量级web开发框架&#xff1a;Flask本地部署及实现公网访问界面 文章目录 轻量级web开发框架&#xff1a;Flask本地部署及实现公网访问界面前言1. 安装部署Flask2. 安装Cpolar内网穿透3. 配置Flask的web界面公网访问地址4. 公网远程访问Flask的web界面 前言 本篇文章讲解如何…

CI/CD 构建中能保护好 SSHKEY吗?

目录 背景 方案 编码存储 逐行存储 合并存储 打马赛克 结论 背景 使用极狐GitLab CI/CD&#xff0c;在部署方面&#xff0c;主要有两种方式&#xff1a; 部署到K8S集群 Push模式&#xff1a;流水线通过kubectl执行命令部署&#xff0c;这需要把K8S的权限给流水线&#xf…

GoWeb学习-第二天

文章目录 从零开始学Go web——第二天一、安装Go语言二、建立web目录2.1 创建GO语言包目录2.2 创建Go web文件 三、编译并运行Go web应用3.1 编译并运行3.2 查看结果 从零开始学Go web——第二天 ​ 第一天我们了解了与web息息相关的HTTP协议&#xff0c;聊了聊Go与web的关系等…

LeetCode Hot100 42.接雨水

题目&#xff1a; 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图&#xff0c;计算按此排列的柱子&#xff0c;下雨之后能接多少雨水。 方法一&#xff08;相向双指针&#xff09;&#xff1a;竖着计算面积 代码&#xff1a; class Solution {public int trap(int[] he…

无分类编址 CIDR

在域名系统出现之后的第一个十年里&#xff0c;基于分类网络进行地址分配和路由IP数据包的设计就已明显显得可扩充性不足&#xff08;参见RFC 1517&#xff09;。为了解决这个问题&#xff0c;互联网工程工作小组在1993年发布了一新系列的标准——RFC 1518和RFC 1519——以定义…

初识数据结构及复杂度

1、数据结构 数据结构数据结构&#xff08;描述和组织数据&#xff09;&#xff0c;Java会把一些数据结构封装起来&#xff0c;在java中数据结构叫做集合。 数据结构&#xff1a;&#xff08;data structer&#xff09;是计算机存储、组织数据的方式&#xff0c;指相互之间存在…

mac电脑下载Netflix Mac(奈飞客户端)安装教程

Netflix Mac&#xff0c;奈飞官方客户端&#xff0c;带给您无限的电影和剧集体验&#xff01;与朋友分享最新热门剧集、电影&#xff0c;与家人一起享受高品质的流媒体内容。 通过Netflix Mac&#xff0c;您可以轻松地搜索、浏览和观看各种类型的影片&#xff0c;包括剧情片、…

【鸿蒙应用ArkTS开发系列】- 选择图片、文件和拍照功能实现

文章目录 前言创建多媒体Demo工程创建MediaBean 实体类创建MediaHelper工具类API标记弃用问题动态申请多媒体访问权限实现选择图片显示功能打包测试 前言 在使用App的时候&#xff0c;我们经常会在一些社交软件中聊天时发一些图片或者文件之类的多媒体文件&#xff0c;那在鸿蒙…

GitHub 2023排名前十的最佳开源项目

开源软件&#xff08;OSS&#xff09;彻底改变了当今软件开发的方式。在数百万个开源GitHub项目中&#xff0c;要找到最适合需求的开源项目可能会让人不知所措。 今天给大家列出2023年增长最快的前10个开源GitHub仓库。通过这些增长最快的开源项目&#xff0c;也可以从整体上了…

算法 离散化

整数离散化 适用条件 适用于有序的整数序列该序列的值域很大&#xff0c;该序列的数的个数很少使用的是数的相对大小而非绝对大小 算法思路 原数组 a &#xff1a; 数组下标&#xff1a;0 1 2 3 4 数组元素&#xff1a;1 2 2 5 109 映射数组 &#xff1a; 数组下标&…

Flask教程入门

1.学习Flask之前&#xff0c;首先需要对URL进行一定的了解。 URL的一些知识&#xff1a; 1.URL只能包含ASCII码里面一些可显示的字符&#xff0c;如A-Z&#xff0c;a-z&#xff0c;0-9&#xff0c;&&#xff0c;#&#xff0c;%&#xff0c;&#xff1f;&#xff0c;/等字符…

数据链路层——以太网协议、ARP协议

目录 以太网协议 以太网协议的简介 以太网协议所处的位置 以太网帧&#xff08;或者说MAC帧&#xff09;的格式 局域网通信原理 碰撞避免算法&#xff08;包含MTU的知识点&#xff09; 局域网攻击原理 ARP协议 ARP协议所在的位置 为什么要存在ARP协议&#xff08;或者…

nodejs669在线图书借阅管理系统vue前端

系统的设计与实现主要实现角色有管理员和用户,管理员在后台管理用户模块、用户表模块、图书借阅模块、图书归还模块、图书分类模块、token表模块、收藏表模块、书籍信息模块、图书资讯模块、留言板模块、书籍信息评论表模块、注册用户模块、配置文件模块、处罚记录模块、在线客…

Mysql更新Blob存储的Josn数据

Mysql更新blob存储的Josn数据 记录一次mysql操作blob格式存储的json字符串数据 1、检查版本 -- 版本5.7以上才可以能执行json操作 select version(); 2、创建测试数据 -- 创建测试表及测试数据 CREATE TABLE test_json_table AS SELECT UUID(), {"test1": {"…

Java---权限修饰符、final、static

文章目录 1. 权限修饰符2. final(最终态)3. static(静态) 1. 权限修饰符 修饰符同一个类中同一个包中的子类和无关类不同包的子类不同包的无关类private√默认√√protected√√√public√√√√ 2. final(最终态) 1. final关键字是最终的意思&#xff0c;可以修饰成员方法、…