RAGs 的 PDF 准备:四种开源工具对比

对比四种开源工具在 PDF 转 Markdown 用于 RAG 上的效果,Docling 信息提取出色但速度慢,可通过并行处理优化。

原文标题:独家|为RAG准备好PDF

原文作者:数据派THU

冷月清谈:

本文对四种免费的开源工具(PyPDF2, PyMuPDF4LLM, Docling, Marker)在将 PDF 转换为 Markdown 格式以用于 RAG (Retrieval-Augmented Generation) 系统的效果进行了对比。重点关注了它们在处理文本、表格和图像方面的能力,并考察了转换速度。Docling 在提取结构化信息方面表现出色,尤其在处理表格方面,但速度较慢。Marker 提供了良好的 Markdown 转换效果,但处理复杂文档时仍有不足。PyPDF2 速度很快,但提取的信息结构较差。PyMuPDF4LLM 可以将 PDF 转换为 markdown,但不能很好地处理表格。文章还讨论了如何通过云服务并行处理来解决 Docling 的速度问题,以便更好地应用于大规模文档处理。

怜星夜思:

1、在实际应用中,除了速度和结构化信息提取能力,你觉得选择 PDF 转换工具还需要考虑哪些因素?
2、文章提到了使用云服务并行处理来加速 Docling 的转换速度,你认为这种方式还有哪些潜在的风险或者需要注意的地方?
3、如果让你设计一个 PDF 转换为 Markdown 的最佳方案,你会如何结合这四种工具的优点?

原文内容

作者:Thuwarakesh Murallie
翻译:陈超
校对:赵茹萱

本文约1600字,建议阅读5分钟

本文对比了四种免费的开源工具转换PDF为markdown的效果。


我从几十份年度报告(带图表)中创建了一个图形存储。

图片 

图片来自Unsplash的年度报告设计机构-Yak Report


可以将PDF转换成文本但是从来没那么容易过。


我最近在RAG(检索增强生成,retrieval-augmented generation)中创建了一个图形数据存储。换句话说,我们创建了一个GraphRAG。


如何在几分钟内建立一个知识图形(并使其适合企业使用)


图形RAG对其他广泛使用的支持矢量存储的RAG软件来说是一个极好的替代。他们引入了推理。例如,使用语义相似性检索(在矢量存储中用于提取信息的技术),你可以提问去年某一公司的CFO是谁。因为某一公司去年的年度报告会明确提到它的CFO。但是考虑这样一个问题:某公司的哪两位主管曾在同一学校学习?如果没有提到学校名字,提取过程并不能获取任何相关信息。但是图形RAG可以。


然而,关键问题是我们如何构建图形来提取信息。我最近在另一篇文章中提到这个问题。往回想一步,我们是如何以更容易创建图形的方式来准备年度报告的呢?


这是本文的关注点所在。


我们所有工作的第一步是将PDF数据转换成文本。然而,年度报告是复杂的文件。不会仅仅有文本。还有图和表等等。每一部分都提供了关于公司的关键信息。


所以,让我们从这里开始。


如何将PDF转换为富文本


大多数Python程序员都会在某些时候使用PDF阅读器——至少是为了跟随教程。最流行的事PyPDF2。


大多数的库确实能够完成工作。但是信息的帮助性却不大。


我很多年前就知道PyPDF2库了,它能提取所有的PDF内容为文本,没有任何格式。提取之后,你就不知道什么是题目什么是列表了。


然后就是PyMuPDF4LLM。这个包可以直接将PDF转换为markdown。Markdown也有大量关于文本结构的关键信息。像Langchain这样的框架支持markdown。他们使用文本格式中的额外信息来更好地分块和存储数据。反过来也使得提取相关数据更加容易。


PyMuPDF4LLM的问题在于,它不能很好地处理表格。提取的表格与原始表格相差甚远。(不要放弃PyMuPDF4LLM。它在我们的最终解决方案中仍然发挥了不可思议的作用)。


最近,我们尝试了几个其他的现代工具。一个是Docling,由IBM Deep Search开发的开源库,另一个是Marker,一个同样非常好的库。


下面是我们讨论的四个包转换的相同Pdf页输出。


PyPDF2:


图片信息提取为文本从PDF使用PyPDF2 -截图来自作者。


PyMuPDF4LLM:


使用PyMuPDF4LLM从PDF中提取的降价信息-截图来自作者。


Docling:


信息提取作为标记从PDF使用粘贴-截图来自作者。


Marker:


信息提取为markdown从PDF使用标记-截图来自作者


Docling版本比其他两个版本更简洁,有更多的结构信息。它提取了包含所有相关信息的表格。它为图像留下了占位符,并保留了分层标题结构。所有这些信息都有助于创建块、图形数据库、更好的检索,并最终实现更好的RAG系统。


什么做得不好?


Marker和docking都很有前景。但是,如果我们花时间将PDF 转换为markdown,我不会很满意。


为了正确测试这一点,我对年度报告的一部分进行了分区,其中包括文本、表格和图像的混合。然后我用不同的页数创建了几个副本。


然后,我用每个工具对这些不同大小的PDF文件进行转换,并测量它们所花费的时间。这是最终结果。

图片 


结果清晰表明Docling以及PyPDF2远不及另外两个选项速度快,尽管他们转换表格的能力让人印象深刻。


Docling处理单个PDF页大约需要4秒钟,而Marker需要双倍的时间。


我做了什么?


如何选择最佳的PDF转换Markdown工具


我们的项目有几十份年报。庆幸不是几百份。


如果每份年报大约300页,有50份使用docking,我们就需要17个小时(每份报告300页*50份报告*4秒每页/3600秒每小时)。


因此,我们可以负担得起这个时间。


但我们还在原型阶段。我们需要考虑扩大这个项目的规模。如果这个项目扩展到所有标准普尔500指数公司及其30年历史报告呢?


除非我们分配负载并同时执行,它将花费208天,这正是我们所做的。


我们创建了一个服务,可以在云上处理这些转换,并上传至图形数据库。这可以并行运行,并且可以很好地扩展。


如果您关注的是速度,那么PyPDF2是最好的——如果您不能在并行进程中运行docling的话。


最后的想法


PDF到markdown转换工具越来越强大了。但是转换PDF的表格到markdown表格仍然不够好。


我们已经比较四种免费的开源工具。然后,我们将markdown分块,并在一个RAG软件中将它们转换成图表。


在我们比较的工具中,Docling产生了出色的效果。不过,缺点在于它的性能。它比广泛使用的PyPDF2时间长得多。


因此,我们转移到云服务上,它可以很好地扩展并行进行转换。


感谢阅读,朋友!除了Medium,我也在LinkedIn和X上!


原文标题:

Preparing PDFs for RAGs

原文链接:

https://towardsdatascience.com/preparing-pdfs-for-rags-b1579fc697f1/


编辑:于腾凯
校对:李享沣




译者简介




陈超,北京大学应用心理硕士,数据分析爱好者。本科曾混迹于计算机专业,后又在心理学的道路上不懈求索。在学习过程中越来越发现数据分析的应用范围之广,希望通过所学输出一些有意义的工作,很开心加入数据派大家庭,保持谦逊,保持渴望。

翻译组招募信息

工作内容:需要一颗细致的心,将选取好的外文文章翻译成流畅的中文。如果你是数据科学/统计学/计算机类的留学生,或在海外从事相关工作,或对自己外语水平有信心的朋友欢迎加入翻译小组。

你能得到:定期的翻译培训提高志愿者的翻译水平,提高对于数据科学前沿的认知,海外的朋友可以和国内技术应用发展保持联系,THU数据派产学研的背景为志愿者带来好的发展机遇。

其他福利:来自于名企的数据科学工作者,北大清华以及海外等名校学生他们都将成为你在翻译小组的伙伴。


点击文末“阅读原文”加入数据派团队~



转载须知

如需转载,请在开篇显著位置注明作者和出处(转自:数据派ID:DatapiTHU),并在文章结尾放置数据派醒目二维码。有原创标识文章,请发送【文章名称-待授权公众号名称及ID】至联系邮箱,申请白名单授权并按要求编辑。

发布后请将链接反馈至联系邮箱(见下方)。未经许可的转载以及改编者,我们将依法追究其法律责任。






关于我们

数据派THU作为数据科学类公众号,背靠清华大学大数据研究中心,分享前沿数据科学与大数据技术创新研究动态、持续传播数据科学知识,努力建设数据人才聚集平台、打造中国大数据最强集团军。



新浪微博:@数据派THU

微信视频号:数据派THU

今日头条:数据派THU

点击“阅读原文”拥抱组织



从技术角度来看,并行处理可能会引入任务调度和资源管理的问题。例如,如何分配任务以实现最佳的资源利用率,如何处理任务执行失败的情况等等。此外,还需要考虑不同云服务环境的兼容性问题,确保转换服务能够在不同的云平台上稳定运行。

个人认为,安全性也是一个重要因素。如果处理的是敏感数据,需要确保转换工具不会泄露信息。此外,license 也是需要注意的,有些开源工具可能在使用上有一些限制。

我的想法是用 PyPDF2 快速提取 PDF 中的所有文本,然后用 Docling 处理表格和复杂的布局结构,最后用 Marker 对整体的 Markdown 格式进行优化和调整。这样既保证了速度,又兼顾了结构化信息提取的准确性。

突发奇想,能不能用 AI 来做这个事情?训练一个模型,让它学习如何根据 PDF 的内容和结构,生成高质量的 Markdown。这样就可以避免手动选择和组合不同的工具,实现一个端到端的解决方案。感觉可以称为 “PDF to Markdown Transformer” :smiling_face_with_sunglasses:

使用云服务并行处理首先要考虑成本问题,特别是处理大量PDF文件时,需要仔细评估不同云服务的定价策略,避免超出预算。其次,数据安全也是一个重要考量,需要确保云服务提供商具有足够的数据安全保障措施,防止敏感数据泄露。

我觉得还需要考虑法律合规性的问题。如果处理的 PDF 文件包含个人信息或者其他受保护的数据,需要确保云服务的使用符合相关的法律法规,比如 GDPR。

除了速度和结构化信息提取能力,我觉得还需要考虑工具的稳定性、对不同 PDF 格式的兼容性(比如扫描版 PDF 的 OCR 识别能力),以及是否易于集成到现有的 RAG 流程中。毕竟,如果一个工具经常崩溃或者难以部署,再强大也没用。

可以考虑先用 PyMuPDF4LLM 做一个初步的转换,得到一个基本的 Markdown 结构,然后针对表格部分,调用 Docling 的 API 进行增强。最后,再用一些自定义的规则,对 Markdown 进行清洗和优化,比如修复一些格式错误,或者添加一些元数据。

抖个机灵:还得考虑这个工具的名字好不好记、好不好念,万一开会讨论的时候叫不上名字岂不是很尴尬?:dog_face: 当然,认真说的话,我觉得定制化能力也很重要。如果能根据自己的需求调整转换规则,那就能更好地适应不同的 PDF 文档。