关于文档理解相关工作的一些总结

  过去四年时间,都在处理结构化数据的存储优化相关的工作。最近一段时间在做RAG相关的工作。非结构数据的存储与检索,接触的也越来越多。这篇文章聊聊最近一段时间关于文档理解方面的一些心得。

  

文档理解

文档理解旨在从非结构化文档中提取信息并将其转化为结构化数据。虽然计算机视觉和自然语言处理(NLP)是文档理解的重要组成部分,但它是一个独特的领域,需要两者的结合。

文档理解的重要性

我喜欢用一句经常说的话来概括:“进来的是垃圾,出去的也是垃圾” 。所以如何处理好非结构化的数据,就异常的重要。解析的好,处理的干净,才能给后边的过程省事。

文档解析需要的技术能力

NLP  、计算机视觉、多模态、一定的工程能力

通常使用计算机视觉方面的技术,来解决非结构话文件的版面分析工作,以获取页面的不同的元素包括但不限于标题,表格,图片,段落。以及位置信息。 通常我们拿到的文件可能是扫描件,这当前只有计算机视觉一种解决方法,就是使用OCR进行问题提取。

我们通常还想要从非结构化的文件中,提取超过文件本身的信息。例如抽取关键词,抽取事件,摘要,关系等等。

多模态始终是无法绕过的一个问题。当然,当前多模态可能需求量还不是那么大。我们通常也希望能识别图片中所描述的事情。这一般可以通过image2text来解决。入门级别的东西,可以在huggingface上去看看。https://huggingface.co/models?pipeline_tag=image-to-text&sort=trending

文档理解的挑战

在我日常工作中,感受到的文档理解,最困难的是文档解析。因为我们只能对已经看到的文件进行处理。测试很难覆盖到全部的文件。

文件类型太多了,txt、doc、excel、dpf、html、markdown、ppt等等。太多太多了。鬼知道究竟会有多少种文件类型。即使对于同一种文件类型,也会有非常多不同的文件。例如PDF文件,可能是论文,可能是简历,可能是法律文件,可能是财务报表。

现有的解决方案,以及最新的解决方案

这里分享一个很有意思的感受。国内老板特别喜欢自己搞,就算有现成的,只要不开源不免费,即使已经很廉价了,也要自己搞。这会非常浪费时间。过来的老板更注重产品形态,快速的出东西,所以选择已有的saas云服务。这也是国外环境更好的一个原因吧,在国外即使一个很小的点,可能都有小的团队已经在提提供saas服务了。

我个人的经验。在文档解析方面,三个人几个月过去了,也不会有什么好的结果。文档解析就是一个无底洞大坑。如果刚开始做,真的劝退。如果我是老板,我宁可花点小钱,去买saas服务。这块我们调研了几家,其中庖丁和阿里云的文档解析不错。

当然,如果真的下决心就要自己搞,也不是不行,只是时间问题。这里我分享一些开源的方案吧。可能有限推荐百度开源的paddlepaddle,它已经有OCR和版面分析了,效果也还不错。但是要知道只要是模型,就不太可能做到百分之百。PaddleOCR/ppstructure/recovery/README_ch.md at main · PaddlePaddle/PaddleOCR · GitHub

 对于程序可以读取的文件,例如非扫描件PDF,我们是可以读取到内容的。这些需要依靠规则去解析,还蛮复杂的。后去文件的fulltext很容易,但是想要解析出来标题绝对不是一件容易的事情。想要解析出来表格也很困难。无法通过规则来定位哪里是表格,这里推荐使用计算机视觉的版面分析来定位,然后再用专门的工具去对定位后的表格进行解析。

这里还是想要分享新的玩法:现在是24年,大模型的的时代,文档解析多和大模型去结合,通常能够让事情变简单很多。当然成本会有点、不够我个人觉得这不是太大的问题。大模型的token卖的越来越便宜了。

文档解析几个重要的点

标题是非常重要的信息

文件数据的标准化转换比较重要

表格解析很重要,很多知识和消息藏在表格中,特别是财报类。

对于文档,不同粒度蕴含着不同的知识。例如句子里边可能包含的原子问题就一两个。对于段落,很有可能几个段落在描述一个件事情。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

推荐一款uniapp拖动验证码插件

插件地址:易盾验证码 - DCloud 插件市场 具体使用方式访问插件地址自行获取

JVM:SpringBoot TomcatEmbeddedWebappClassLoader

文章目录 一、介绍二、SpringBoot中TomcatEmbeddedWebappClassLoader与LaunchedURLClassLoader的关系 一、介绍 TomcatEmbeddedWebappClassLoader 是 Spring Boot 在其内嵌 Tomcat 容器中使用的一个类加载器(ClassLoader)。在 Spring Boot 应用中&#…

【学习笔记】无人机(UAV)在3GPP系统中的增强支持(八)-通过无人机进行无线接入

引言 本文是3GPP TR 22.829 V17.1.0技术报告,专注于无人机(UAV)在3GPP系统中的增强支持。文章提出了多个无人机应用场景,分析了相应的能力要求,并建议了新的服务级别要求和关键性能指标(KPIs)。…

实现多层感知机

目录 多层感知机: 介绍: 代码实现: 运行结果: 问题答疑: 线性变换与非线性变换 参数含义 为什么清除梯度? 反向传播的作用 为什么更新权重? 多层感知机: 介绍:…

LabVIEW红外热波图像缺陷检

开发使用LabVIEW开发的红外热波图像缺陷检测系统。该系统结合红外热像仪、工业相机和高效的数据采集硬件,实现对工件表面缺陷的自动检测和分析。通过LabVIEW的强大功能,系统能够实时采集、处理和显示红外热波图像,有效提高了检测的精度和效率…

【Playwright+Python】系列 Pytest 插件在Playwright中的使用

一、命令行使用详解 使用 Pytest 插件在Playwright 中来编写端到端的测试。 1、命令行执行测试 pytest --browser webkit --headed 2、使用 pytest.ini 文件配置 内容如下: [pytest] # Run firefox with UIaddopts --headed --browser firefox效果&#xff1…

机器人相关工科专业课程体系

机器人相关工科专业课程体系 前言传统工科专业机械工程自动化/控制工程计算机科学与技术 新兴工科专业智能制造人工智能机器人工程 总结Reference: 前言 机器人工程专业是一个多领域交叉的前沿学科,涉及自然科学、工程技术、社会科学、人文科学等相关学科的理论、方…

STM32MP135裸机编程:定时器内核时钟频率计算方法

0 工具准备 STM32MP13xx参考手册 1 定时器内核时钟频率计算方法 1.1 定时器分组 STM32MP135的定时器按照时钟源不同分成了三组,如下: APB1: APB2: APB6: 1.2 定时器内核时钟频率计算方法 APB1DIV是APB1的分频系数,APB2DIV、…

Flink Window 窗口【更新中】

Flink Window 窗口 在Flink流式计算中,最重要的转换就是窗口转换Window,在DataStream转换图中,可以发现处处都可以对DataStream进行窗口Window计算。 窗口(window)就是从 Streaming 到 Batch 的一个桥梁。窗口将无界流…

制作显卡版docker并配置TensorTR环境

感谢阅读 相关概念docker准备下载一个自己电脑cuda匹配的docker镜像拉取以及启动镜像安装cudaTensorRT部署教程 相关概念 TensorRT是可以在NVIDIA各种GPU硬件平台下运行的一个模型推理框架,支持C和Python推理。即我们利用Pytorch,Tensorflow或者其它框架…

汽车的驱动力,是驱动汽车行驶的力吗?

一、地面对驱动轮的反作用力? 汽车发动机产生的转矩,经传动系传至驱动轮上。此时作用于驱动轮上的转矩Tt产生一个对地面的圆周力F0,地面对驱动轮的反作用力Ft(方向与F0相反)即是驱动汽车的外力,此外力称为汽车的驱动力。 即汽车…

Codeforces Round 957 (Div. 3)(A~D题)

A. Only Pluses 思路: 优先增加最小的数&#xff0c;它们的乘积会是最优,假如只有两个数a和b&#xff0c;b>a&#xff0c;那么a 1&#xff0c;就增加一份b。如果b 1&#xff0c;只能增加1份a。因为 b > a&#xff0c;所以增加小的数是最优的。 代码: #include<bi…

最新PHP自助商城源码,彩虹商城源码

演示效果图 后台效果图 运行环境&#xff1a; Nginx 1.22.1 Mysql5.7 PHP7.4 直接访问域名即可安装 彩虹自助下单系统二次开发 拥有供货商系统 多余模板删除 保留一套商城,两套发卡 源码无后门隐患 已知存在的BUG修复 彩虹商城源码&#xff1a;下载 密码:chsc 免责声明&…

搞定ES6同步与异步机制、async/await的使用以及Promise的使用!

文章目录 同步和异步async/awaitPromisePromise的概念 同步和异步 ​ 同步&#xff1a;代码按照编写顺序逐行执行&#xff0c;后续的代码必须等待当前正在执行的代码完成之后才能执行&#xff0c;当遇到耗时的操作&#xff08;如网络请求等&#xff09;时&#xff0c;主线程会…

解决fidder小黑怪倒出JMeter文件缺失域名、请求头

解决fidder小黑怪倒出JMeter文件缺失域名、请求头 1、目录结构&#xff1a; 2、代码 coding:utf-8 Software:PyCharm Time:2024/7/10 14:02 Author:Dr.zxyimport zipfile import os import xml.etree.ElementTree as ET import re#定义信息头 headers_to_extract [Host, Conn…

C语言 | Leetcode C语言题解之第236题二叉树的最近公共祖先

题目&#xff1a; 题解&#xff1a; /*** Definition for a binary tree node.* struct TreeNode {* int val;* struct TreeNode *left;* struct TreeNode *right;* };*/typedef struct road_t {struct TreeNode *road_node; // 途径路径struct road_t *p_next; }…

[IDEA插件] JarEditor 编辑jar包(直接新增、修改、删除jar包内的class文件)

文章目录 1. 安装插件 JarEditor2. 在IDEA中添加外部JAR包3. JarEditor 使用介绍 之前我们需要修改jar内文件的时候需要解压jar包&#xff0c;反编译class&#xff0c;新建java源文件&#xff0c;修改代码&#xff0c;再编译成class&#xff0c;替换jar包内的class文件。 现在…

MongoDB教程(三):mongoDB用户管理

&#x1f49d;&#x1f49d;&#x1f49d;首先&#xff0c;欢迎各位来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里不仅可以有所收获&#xff0c;同时也能感受到一份轻松欢乐的氛围&#xff0c;祝你生活愉快&#xff01; 文章目录 引言一、MongoD…

P2p网络性能测度及监测系统模型

P2p网络性能测度及监测系统模型 网络IP性能参数 IP包传输时延时延变化误差率丢失率虚假率吞吐量可用性连接性测度单向延迟测度单向分组丢失测度往返延迟测度 OSI中的位置-> 网络层 用途 面相业务的网络分布式计算网络游戏IP软件电话流媒体分发多媒体通信 业务质量 通过…

JavaSE 面向对象程序设计进阶 IO 压缩流 解压缩流

目录 解压缩流 压缩流 解压缩流 压缩包 压缩包里面的每一个文件在java中都是一个ZipEntry对象 把每一个ZipEntry按照层级拷贝到另一个文件夹当中 import java.io.*; import java.util.Date; import java.util.zip.ZipEntry; import java.util.zip.ZipInputStream;public cl…