【文档智能 RAG】RAG增强之路-智能文档解析关键技术难点及PDF解析工具PDFlux

news2024/11/28 15:58:38

前言

在私域知识问答和企业知识工程领域,结合Retrieval-Augmented Generation(RAG)模型和大型语言模型(LLM)已成为主流方法。然而,企业中存在着大量的PDF文件,PDF解析的低准确性显著影响了基于专业知识的问答效果,因此,这些文件的有效解析对RAG模型的构建至关重要。上篇文章(【文档智能 & RAG】RAG增强之路:增强PDF解析并结构化技术路线方案及思路)主要讨论了开源的PDF解析技术,而本文将先探讨下RAG落地时常见的问题及文档解析在RAG的重要性智能文档解析关键技术,然后重点介绍闭源的PDF文件解析服务——PDFlux

检索增强生成(RAG)的工作流

一、RAG系统落地时的常见问题

  1. 文档内容解析错误:在解析PDF文件时,可能会遇到内容错误识别或格式错误的问题,导致信息丢失或错误。

  2. 分块(Chunking)丢失语义信息:在将文档分割成小块以适应模型输入时,可能会破坏原文的语义连贯性,影响信息的完整性。

  3. 目标内容召回问题:在检索阶段,有时难以准确地找到与查询相关的文档部分,导致召回率不高。

  4. 召回结果排序困难:即使成功召回相关内容,如何根据相关性对结果进行排序也是一个挑战。

  5. 答案生成幻觉:在生成答案时,模型可能会产生与原始文档不完全一致或偏离主题的回答,这种现象被称为“幻觉”。

在RAG的预处理阶段,文档解析的准确性是至关重要的。如果文档解析不准确,这将直接影响到后续的检索和生成阶段,导致整个RAG系统的性能下降。以下是文档解析不准确可能带来的具体问题及其影响:

  • 内容识别错误:如果文档中的文本、图像或格式被错误识别,将导致原始信息的丢失或错误。例如:(1)表格数据可能被错误地解析为普通文本,表格的行列关系混乱等,导致表格数值类问题无法进行精准的回答。(2)图像中的文字(OCR)被错误识别。

  • 格式丢失:PDF文件中可能包含各种格式,如加粗、斜体、下划线等,这些格式在解析过程中可能会丢失,影响对文档结构和重要性的理解

  • 布局信息丢失:PDF文件的布局信息,如页面布局、段落、标题层级等,在解析过程中可能会丢失,这会影响对文档结构的把握,进而影响分块(chunks)。为了适应模型的输入要求,文档需要被分割成小块。如果分块策略不当,可能会导致语义信息的丢失,影响模型对文档内容的理解。

  • 编码问题:PDF文件可能包含多种字符编码、水印等,一些pdf解析工具不能正确处理这些编码,可能会导致乱码或字符显示不正确

  • 文档复杂性:复杂的文档结构,如多栏布局、阅读顺序恢复、混合文本和图像等,可能会给解析带来额外的挑战,增加解析错误的风险。

因此,对于C端文档问答的RAG系统应用产品,迫切的需要对文档进行精准解析。理想情况下,PDF 解析器应具备以下关键特征:

  • 文档结构识别:能够灵活地将页面划分为不同类型的内容块,如段落、表格和图表。这确保了划分的文本块是完整和独立的语义单元
  • 在复杂文档布局中保持鲁棒性:即使是在文档页面布局复杂的情况下也能保证解析效果,如多列页面、无边框表格甚至合并单元格的表格

二、智能文档解析关键技术难点

在介绍PDFlux之前,再次简要介绍下智能文档解析中的关键技术(核心难点):

2.1 文档版式分析

版面分析指的是对图片形式的文档(扫描件)进行区域划分,通过bounding box定位其中的关键区域,如:文字、标题、表格、图片等,通常采用一些CV目标检测模型进行版式分析,如:参数量大的有:DINO等基于transformer的目标检测模型;参数量小的有MaskRCNN、YOLO系列等。

难点具体表现如下:

  • 文档版式场景多样:版面元素布局丰富多样,元素之间层叠遮盖等。
  • 文档版式复杂:单栏、双栏、三栏等。
    上述内容都给文档版式分析带来困难,从数据标注标签体系定义、到版式分析模型训练优化都面临着巨大的挑战。

2.2 文档树构建

PDFlux构建的文档树示例

通过版式分析得到版面元素的类别信息后,需要通过后处理方式建立起文档的层次结构关系,即:文档树

难点具体表现:需要通过规则引擎和深度语义模型算法的联合方式构建起文档树。

2.3 阅读顺序还原

阅读顺序例子

通过版式分析后,能够输出版面元素的bounding box,如何准确的恢复出符合人类阅读顺序的文档内容也是尤为重要。

常见技术路径有:基于规则的方法(xy-cut等)、基于深度学习的方法(Layoutreader等)

难点体现在:与版式分析难点相同。

2.4 表格还原

PDFlux表格还原示例

pdf表格元素中,常见的表格类型包含:有线表、无线表、跨页表格、合并单元格、密集表格及表格中单元格中含有复杂元素(如:特殊字符、公式等)。如何有效的进行解析非常具有挑战性。

常见技术路径:表格结构识别(如:DeepDeSRT等)、表格内容OCR等。

三、PDFlux

PDFlux是一个基于深度学习模型的PDF解析器,经过超过一千万个文档页面的训练。通过识别和区分文档中的所有视觉元素,如文本、表格、图像、图表等,并保留它们的空间关系。它包括以下步骤:

  1. OCR 进行文字定位和识别;
  2. 物理文档对象检测;
  3. 跨列和跨页调整;
  4. 阅读顺序确定;
  5. 表格结构识别;
  6. 文档逻辑结构识别。

网页端文档版式分析识别效果

通过以上步骤,PDFlux解析器最终以 json 、 html 、word、markdwon 格式提供解析结果。

PDFlux api解析pdf文件输出格式

效果展示:

原始pdf

解析后的html格式结果

解析后的json格式方便索引
PDFlux解析细节

word格式结果

比较惊喜的是不但可以有效的合并单元格格式,还能够识别出单元格中填充的高亮数值颜色。此外,通过word格式可以看到,PDFlux可以清楚的识别出pdf文件的目录层级结构,并有效的恢复原始文档的阅读顺序,这对RAG系统预处理阶段文本边界划分有着积极的意义。

目录层级结构

markdown格式结果

值得一提的是,由于 Markdown 格式不能表示合并单元格,在 Markdown 格式中将合并单元格中的全部文本放入每个原始单元格中。如图所示,文本“观察期”重复了 7 次,表示该合并单元格合并了 7 个原始单元格。

PDFlux将pdf解析成结构化的形式后,可以构建类似文档树结构(如:RAPTOR等),增强RAG系统的效果,结构化文档树有以下优势:

  • 结构化信息保留:Markdown作为一种轻量级标记语言,能够很好地保留文本的结构信息,如标题、段落、列表和表格等。这使得RAG系统能够更容易地理解和处理文档的结构。

  • 改善检索质量:当文档以结构化的方式呈现时,RAG系统中的检索组件可以更准确地定位到相关信息。例如,如果用户查询与特定表格相关的问题,系统可以快速检索到整个表格及其标题,而不仅仅是表格的一部分。

  • 增强上下文理解:文档树提供了文档内容的层次结构,有助于RAG系统中的语言模型更好地理解上下文。这对于生成准确和相关的答案至关重要。

  • 提高信息检索的精度:构建文档树可以帮助系统更精确地定位信息,减少错误检索或信息片段的不完整检索,从而提高整体的检索精度。

  • 优化生成答案的过程:在RAG系统中,生成答案通常依赖于检索到的内容与用户查询的结合。文档树提供了一种清晰的方式,使得语言模型能够更有效地结合检索到的信息和上下文,生成更准确和全面的答案。

  • 支撑复杂查询:对于需要综合多个部分信息的复杂查询,文档树使得RAG系统能够更好地识别和整合来自文档不同部分的信息,以生成综合的答案。

四、PDFlux增强RAG实验

基于PDFlux,其构建了一个基于大模型的问答工具ChatDOC,并且构建了一份评估数据集。数据集收集了 800 个手动生成的问题。经过仔细筛选后,删除了低质量的问题,得到了 302 个可用于评估的问题。这些问题分为两类。

数据集中的问题被分类为提取信息类和综合分析类,采用不同的评测方法

4.1 提取信息类问题的结果

提取信息类问题的结果如表 3 所示。在 86 个提取信息类问题中,ChatDOC 在 42 个案例中表现优于 Baseline 模型,有 36 例与 Baseline 模型表现持平,仅有 8 例表现不如 Baseline 模型。

ChatDOC 和 Baseline 模型的比较结果
评分的分布情况详见下图。在分布表中,ChatDOC 得分高于 Baseline 模型(ChatDOC 胜出)的情况表示在左下角,而 Baseline 模型得分较高的情况表示在右上角。

提取信息类问题的评分分数分布表

值得注意的是,大多数有明确胜负结果的样本位于左下角部分,这表明了 ChatDOC 的优势。令人印象深刻的是,ChatDOC 在近一半的案例中获得满分(10 分),总计 40 个。

4.2 综合分析类问题的结果

综合分析类问题的结果如前表所示。在 216 个综合分析类问题中,ChatDOC 在 101 个案例中表现优于 Baseline 模型,有 79 例与 Baseline 模型表现持平,仅有 36 例表现不如 Baseline 模型。

综合分析类问题的评分分数分布表

如图,这些问题的分数分布表显示,左下角的分数集中程度更高。这表明 ChatDOC 的表现经常优于 Baseline 模型。

值得注意的是,ChatDOC 的大多数检索结果得分在 8.5 到 9.5 之间,表明其检索质量很高。

总结

通过对PDFlux的体验,可以得出结论,除了RAG系统内部提升检索准确率和提高基础生成大模型的能力之外,精确的处理PDF文件,对提升RAG系统的性能至关重要。

参考文献

  • https://www.pdflux.com(如果有需要,可以直接向其申请试用PDFlux API)
  • Revolutionizing Retrieval-Augmented Generation with Enhanced PDF Structure Recognition,https://arxiv.org/pdf/2401.12599
  • https://mp.weixin.qq.com/s/JJHlJsWEqFG77LdzhvzDNw

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

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

相关文章

Docker Nginx

Docker官网 https://www.docker.com/https://www.docker.com/ 删除原先安装的Docker sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ …

为什么都在避坑抖店?现阶段小白真的很难做起来吗?现状分析

我是王路飞。 如果有想做抖店的,你们可能都发现了一个现象。 那就是现在很多抖店商家都在劝告新手小白,不要入局抖店了,都在劝避坑。 难道现阶段新手小白入局抖音小店,真的很难做起来吗? 我给你们分析下抖店现状&a…

9. 文本三剑客之awk

文章目录 9.1 什么是awk9.2 awk命令格式9.3 awk执行流程11.4 行与列11.4.1 取行11.4.2 取列 9.1 什么是awk 虽然sed编辑器是非常方便自动修改文本文件的工具,但其也有自身的限制。通常你需要一个用来处理文件中的数据的更高级工具,它能提供一个类编程环…

干部考评系统如何评估干部表现

一、引言 干部考评系统是现代组织管理中不可或缺的一部分,它通过科学、公正、客观的方式对干部的表现进行评估,为干部的选拔、培养、激励和约束提供有力依据。本文旨在探讨干部考评系统如何有效评估干部表现。 二、干部考评系统的构建 明确考评目标&a…

winform 应用程序 添加 wpf控件后影响窗体DPI改变

第一步:添加 应用程序清单文件 app.manifest 第二步:把这段配置 注释放开,第一个配置true 改成false

移动端消息中心,你未必会设计,发一些示例出来看看。

APP消息中心是一个用于管理和展示用户收到的各种消息和通知的功能模块。它在APP中的作用是提供一个集中管理和查看消息的界面,让用户能够方便地查看和处理各种消息。 以下是设计APP消息中心的一些建议: 1. 消息分类: 将消息按照不同的类型进…

Echats-wordcloud 文字云图的踩坑点【Unknown series wordCloud】

在词云渲染时遇到渲染不出来的问题: 原因分析: 1、echart和wordcloud版本不匹配(我的是匹配的) 解决方案: 1、echart和wordcloud版本要匹配: echart4x 使用wordcloud1x版本 echart5x 使用wordcloud2x版本…

win环境安装Node.js的多种方式

今天我们分享win环境安装Node.js的多种方式: 首先要明白Node.js是一个JavaScript运行环境,它基于Google的V8引擎进行封装,允许JavaScript运行在服务器端。Node.js让JavaScript成为一种与PHP、Python、Perl、Ruby等服务端语言平起平坐的脚本语…

Python也能“零延迟“通信吗?ZeroMQ带你开启高速模式!

目录 1、零基础入门ZeroMQ 🚀 1.1 ZeroMQ简介与安装 1.2 基础概念:Socket类型详解 1.3 实战演练:Hello World示例 2、深入浅出消息模式 🔌 2.1 请求-应答模式( REQ/REP ) 2.2 发布-订阅模式( PUB/SUB ) 2.3 推送-拉取模式( PUSH/PULL ) 3、Python实战ZeroM…

什么是无杂散动态范围 (SFDR)?为什么 SFDR 很重要?

有多种不同的规格可用于表征电路线性度。SFDR 指标是一种常用的规范。该指标定义为所需信号幅度与感兴趣带宽内杂散的比率(图 1)。 图 1. 显示 SFDR 指标的图表。 对于 ADC,SFDR 展示了 ADC 如何在存在大信号的情况下同时处理小信号。作为一个…

面向对象编程垃圾回收机制

系列文章目录 文章目录 系列文章目录前言一、垃圾回收机制(Garbage Collection) 前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用…

使用Ollama下载的模型文件(Model)默认存放在哪里?

🏡作者主页:点击! 🤖Ollama部署LLM专栏:点击! ⏰️创作时间:2024年6月15日10点28分 🀄️文章质量:95分 文章目录 使用CMD安装存放位置 默认存放路径 Open WebUI下…

Android Compose 十一:常用组件列表 compose自己个的 下拉刷新

列表下拉刷新 material3 还没有下拉刷新功能material:1.3.0 之后 swiperefresh 被弃用 被PullRefresh替代使用PullRefresh 需要添加依赖 implementation ‘androidx.compose.material:material:1.6.8’ 先上代码 var refreshing by remember {mutableStateOf(false)} val…

C++ 03 之 命名空间

game_kun.cpp #include "game_kun.h"void kun::atk() {cout << "吃鸡的攻击"<< endl; } game_lol.cpp #include "game_lol.h"void lol::atk() {cout << "lol的攻击"<< endl; } game_kun.h #include <…

实用软件下载:XMind 2024最新安装包及详细安装教程

​XMind不仅是一款易用且功能强大的思维导图软件&#xff0c;也是一个开源项目。XMind以构建一个社区向全球提供领先的跨平台思维导图和头脑风暴软件为目标&#xff0c;以帮助用户提升效率。XMind公司是XMind开源项目的主要代码贡献者&#xff0c;与此同时&#xff0c;我们欢迎…

MyBatis 的注解式开发

1. MyBatis 的注解式开发 文章目录 1. MyBatis 的注解式开发2. 准备工作3. Insert 插入/添加4. Delete 删除5. Update 更新/修改6. Select 查询7. 总结&#xff1a;8. 最后&#xff1a; MyBatis 中也提供了注解式开发方式&#xff0c;采用注解可以减少Sql映射文件的配置。 当然…

【unity笔记】一、常见技术名词解析(HDRP/URP)

一、简介 在Unity中&#xff0c;Shader是用于控制图形渲染过程中顶点和像素处理的程序。Shader通常用于定义物体在屏幕上呈现的外观&#xff0c;包括光照、纹理、颜色和其他视觉效果。Shader编写在特定的着色语言中&#xff0c;如HLSL&#xff08;High-Level Shading Language…

pandasa——数据连接和可视化

1 数据连接 concat merge join append 竖直方向追加&#xff0c; 在最新的pandas版本中已经被删除掉了&#xff0c; 这里推荐使用concat 1.1 pd.concat 两张表&#xff0c; 通过行名、列名对齐进行连接 import pandas as pd df1 pd.DataFrame([[1, 2, 3], [1, 10, 20], […

IOC (一)

》》新建一个CORE 控制台程序 注册服务 》》 安装 Microsoft.Extensions.DependencyInjection using Microsoft.Extensions.DependencyInjection;namespace ConsoleApp1 {internal class Program{static void Main(string[] args){Method();Console.ReadKey();}static void…

[Java基本语法] 逻辑控制与方法

&#x1f338;个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 &#x1f3f5;️热门专栏:&#x1f355; Collection与数据结构 (92平均质量分)https://blog.csdn.net/2301_80050796/category_12621348.html?spm1001.2014.3001.5482 &#x1f9c0;线程与…