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

本文主要是介绍【文档智能 RAG】RAG增强之路-智能文档解析关键技术难点及PDF解析工具PDFlux,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言

在私域知识问答和企业知识工程领域,结合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

这篇关于【文档智能 RAG】RAG增强之路-智能文档解析关键技术难点及PDF解析工具PDFlux的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1063989

相关文章

Java实现在Word文档中添加文本水印和图片水印的操作指南

《Java实现在Word文档中添加文本水印和图片水印的操作指南》在当今数字时代,文档的自动化处理与安全防护变得尤为重要,无论是为了保护版权、推广品牌,还是为了在文档中加入特定的标识,为Word文档添加... 目录引言Spire.Doc for Java:高效Word文档处理的利器代码实战:使用Java为Wo

使用Python实现Word文档的自动化对比方案

《使用Python实现Word文档的自动化对比方案》我们经常需要比较两个Word文档的版本差异,无论是合同修订、论文修改还是代码文档更新,人工比对不仅效率低下,还容易遗漏关键改动,下面通过一个实际案例... 目录引言一、使用python-docx库解析文档结构二、使用difflib进行差异比对三、高级对比方

深度解析Python中递归下降解析器的原理与实现

《深度解析Python中递归下降解析器的原理与实现》在编译器设计、配置文件处理和数据转换领域,递归下降解析器是最常用且最直观的解析技术,本文将详细介绍递归下降解析器的原理与实现,感兴趣的小伙伴可以跟随... 目录引言:解析器的核心价值一、递归下降解析器基础1.1 核心概念解析1.2 基本架构二、简单算术表达

深度解析Java @Serial 注解及常见错误案例

《深度解析Java@Serial注解及常见错误案例》Java14引入@Serial注解,用于编译时校验序列化成员,替代传统方式解决运行时错误,适用于Serializable类的方法/字段,需注意签... 目录Java @Serial 注解深度解析1. 注解本质2. 核心作用(1) 主要用途(2) 适用位置3

Java MCP 的鉴权深度解析

《JavaMCP的鉴权深度解析》文章介绍JavaMCP鉴权的实现方式,指出客户端可通过queryString、header或env传递鉴权信息,服务器端支持工具单独鉴权、过滤器集中鉴权及启动时鉴权... 目录一、MCP Client 侧(负责传递,比较简单)(1)常见的 mcpServers json 配置

从原理到实战解析Java Stream 的并行流性能优化

《从原理到实战解析JavaStream的并行流性能优化》本文给大家介绍JavaStream的并行流性能优化:从原理到实战的全攻略,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的... 目录一、并行流的核心原理与适用场景二、性能优化的核心策略1. 合理设置并行度:打破默认阈值2. 避免装箱

基于C#实现PDF转图片的详细教程

《基于C#实现PDF转图片的详细教程》在数字化办公场景中,PDF文件的可视化处理需求日益增长,本文将围绕Spire.PDFfor.NET这一工具,详解如何通过C#将PDF转换为JPG、PNG等主流图片... 目录引言一、组件部署二、快速入门:PDF 转图片的核心 C# 代码三、分辨率设置 - 清晰度的决定因

Python自动化处理PDF文档的操作完整指南

《Python自动化处理PDF文档的操作完整指南》在办公自动化中,PDF文档处理是一项常见需求,本文将介绍如何使用Python实现PDF文档的自动化处理,感兴趣的小伙伴可以跟随小编一起学习一下... 目录使用pymupdf读写PDF文件基本概念安装pymupdf提取文本内容提取图像添加水印使用pdfplum

Maven中生命周期深度解析与实战指南

《Maven中生命周期深度解析与实战指南》这篇文章主要为大家详细介绍了Maven生命周期实战指南,包含核心概念、阶段详解、SpringBoot特化场景及企业级实践建议,希望对大家有一定的帮助... 目录一、Maven 生命周期哲学二、default生命周期核心阶段详解(高频使用)三、clean生命周期核心阶

Python从Word文档中提取图片并生成PPT的操作代码

《Python从Word文档中提取图片并生成PPT的操作代码》在日常办公场景中,我们经常需要从Word文档中提取图片,并将这些图片整理到PowerPoint幻灯片中,手动完成这一任务既耗时又容易出错,... 目录引言背景与需求解决方案概述代码解析代码核心逻辑说明总结引言在日常办公场景中,我们经常需要从 W