RAG之PDF文件中多种格式数据解析实践 原创

发布于 2024-7-2 11:15
浏览
0收藏

RAG 检索增强生成由2部分构成:一是离线对异构的数据进行数据工程处理成知识,并存储在知识库中,二是基于用户的提问进行知识库的检索增强。如下图所示:

RAG之PDF文件中多种格式数据解析实践 -AI.x社区

其中最关键的一个环节是 PDF 格式的文件如何提取成知识,下面详细剖析。

1、PDF 文件中文本数据如何提取?

能够处理文本提取的 Python 库有多个,其中较为知名的包括 pdfminer.six、PyMuPDF、PyPDF2 和 pdfplumber。在这些库中,PyMuPDF 因其出色的文本提取能力而备受推崇。特别是在处理双栏布局等复杂格式的 PDF 文件时,PyMuPDF 能够最大程度地保留 PDF 的阅读顺序,这对于确保文本内容的准确性和完整性至关重要。

下面我们将以双栏布局的 PDF 文件为例,展示使用 PyMuPDF 库进行文字提取的效果。

RAG之PDF文件中多种格式数据解析实践 -AI.x社区


进行文本提取的代码如下所示:

RAG之PDF文件中多种格式数据解析实践 -AI.x社区

打印的结果如下所示:

RAG之PDF文件中多种格式数据解析实践 -AI.x社区


2、PDF 文件中表格数据如何提取?

在处理表格提取任务时,camelot 和 tabula 是两个备受推崇的库。它们各自在提取有线表和少线表(即含有较少分隔线的表格)方面展现出了良好的效果。接下来,我将分别以有线表为例,简要介绍 camelot库的使用。

camelot 是一个强大的 Python 库,专门用于从 PDF 文件中提取表格数据。对于有线表,即表格中包含明确分隔线的表格,camelot 表现出色。通过指定 PDF 文件路径和表格所在的页面区域,camelot 能够准确地识别并提取出表格中的数据,比如有线表原始数据:

RAG之PDF文件中多种格式数据解析实践 -AI.x社区


使用 camelot 提取有线表的示例代码如下:

RAG之PDF文件中多种格式数据解析实践 -AI.x社区


表格数据的打印结果如下所示:

RAG之PDF文件中多种格式数据解析实践 -AI.x社区

3、扫描 PDF 的文本数据如何提取?

在从扫描的 PDF 文件中提取文本时,使用开源的 PaddleOCR,并且用 PPStructure 做版面的分析。我们还是以下面的 PDF 文件为例,不过这是 PDF 文件的扫描版。

RAG之PDF文件中多种格式数据解析实践 -AI.x社区

提取文本的代码如下:

RAG之PDF文件中多种格式数据解析实践 -AI.x社区

RAG之PDF文件中多种格式数据解析实践 -AI.x社区


RAG之PDF文件中多种格式数据解析实践 -AI.x社区

得到的结果如下所示:

RAG之PDF文件中多种格式数据解析实践 -AI.x社区

图中的左边是根据给出的版面分析结果画出来的,可以看出对双栏 PDF 做了正确的解析。右边是根据识别出来的文本以及文本的坐标画出来的,可以看出基本上和左边的版面以及内容是一致的。


本文转载自公众号玄姐聊AGI  作者:玄姐

原文链接:​​https://mp.weixin.qq.com/s/fsntWsBQMZY2hjBXKAcC2w​



©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
标签
收藏
回复
举报
回复
相关推荐