首页 > 其他分享 >Magic-PDF:端到端PDF文档解析神器 构建高质量RAG必备!

Magic-PDF:端到端PDF文档解析神器 构建高质量RAG必备!

时间:2024-07-31 22:28:11浏览次数:7  
标签:RAG Magic magic json xx 文档 pdf PDF

项目结构

流程解析

预处理的作用是判断文档内容是否需要进行OCR识别,如果是普通可编辑的PDF文档,则使用PyMuPDF库提取元信息。

模型层除了常规的OCR、版面结构分析外,还有公式检测模型,可提取公式内容,用于后续把公式转化为Latex格式。但是目前暂无表格内容识别,官方预计1个月之内会放出。

管线层主要是把上面模型的结果进行加工处理。比如把公式转化为Latex格式、图表保存起来成为图片、把文本框进行排序和合并以及过滤掉无用的信息(页眉、页脚等)。

输出层其实就是结果文件夹中的内容。结果文件夹中有layout.pdf、span.pdf、xx_middle.json、xx_model.json、xx_content_list.json、xx.md、images文件夹。

  • layout.pdf 可以看到 版面结构的识别结果


  • span.pdf 可以看到具体每个文本框的内容


  • xx_middle.json 是用OCR或者PDF库解析出的文档元信息,包含文本块类型、内容和坐标。
  • xx_model.json 是版面分析结果的内容,包含文本块的类型、坐标和置信度。
  • xx_content_list.json 中是文档的类型和具体内容,图表则用img_path指定存放的图片的路径。

实践指南

创建一个python环境,建议python3.10以上

conda create -n MinerU python=3.10
conda activate MinerU

接着安装magic-pdfdetectron2这个包

pip install magic-pdf[full-cpu]
pip install detectron2 --extra-index-url https://myhloli.github.io/wheels/
magic-pdf --version

注意查看版本是否在0.6.x以上,否则会有问题。英特尔芯片的Mac电脑由于某些库的依赖原因,只能到0.5.x的版本。对于M系列的芯片,经过实测发现不支持mps加速,还是只能使用CPU。

接着下载模型权重:模型地址
接着把该仓库中的magic-pdf.template.json文件拷贝到本地,修改models-dir为下载到本地的模型路径。

{
  "models-dir": "/tmp/models"
}

需要注意的是这个路径是绝对路径

总结

优点

  • 比较准确。从上面的图可以看出,无论是可编辑的PDF还是扫描版的PDF,都能非常好的区分出版面中不同类型的部分,而且最终的结果是以Markdown的格式保存的,可以很容易把不同章节、不同自然段按需进行切分。

缺点

  • 硬件支持不够完善,目前存在很多不兼容的情况。M系列芯片暂时无法解决Bug,GPU未测过是否存在其他问题。而用CPU实在是太慢了,10几页的PDF就需要处理约5分钟。
  • 版面结构进行排序和组合貌似用的全是自定义的规则函数,不太方便开发者进行复用或者微调。
  • 表格内容暂时无法识别。目前只能把表格部分提取为图片保存起来。

标签:RAG,Magic,magic,json,xx,文档,pdf,PDF
From: https://www.cnblogs.com/deeplearningmachine/p/18335641

相关文章

  • LinkAI RAG知识库平台优化之路
    基于知识库的RAG(Retrieval-AugmentedGeneration,检索增强生成)作为当下主流的AI智能体应用技术之一,为解决大语言模型在问答交互场景下存在的不足(知识的局限性、滞后性以及幻觉等问题)提供了解决方案,也让AI大模型在专业领域(尤其是企业应用场景)的落地应用、满足真实的生产需求和业......
  • 【专题】2023年中国数字金融调查报告PDF合集分享(附原数据表)
    原文链接:https://tecdat.cn/?p=34685原文出处:拓端数据部落公众号随着数字化转型的深入推进,新客户的增长速度已达顶峰,用户运营成为推动存量增长的关键手段。调查数据显示,相比去年,网上银行用户比例有所下降,而手机银行用户比例基本持平。阅读原文,获取专题报告合集全文,解锁文末249份......
  • Vue3 - 最新详细实现网站内部打开预览 office 全套附件,在页面弹窗内解析预览 word文档
    前言如果您需要Vue2版本,请访问这篇文章。在vue3|nuxt3项目开发中,详解实现项目内部“打开解析预览各种office文档”通用预览插件,支持弹出一个窗口在弹框内预览或者直接显示在页面某个div容器里面,解析预览word文档、excel电子表格、ppt演示文稿、pdf文档、txt文......
  • Vue2 - 最新详细实现网站内部打开预览 office 全套附件,在页面弹窗内解析预览 word文档
    前言如果您需要Vue3版本,请访问在vue2|nuxt2项目开发中,详解实现项目内部“打开解析预览各种office文档”通用预览插件,解析预览word文档、excel电子表格、ppt演示文稿、pdf文档、txt文本等,支持弹出一个窗口在弹框内预览或者直接显示在页面某个div容器里面,让vue项......
  • 我如何在 python 上使用 spire.pdf 修复此错误
    我使用spirepdf,但出现以下错误:“DllNotFound_Windows,libSkiaSharp,Nosepuedeencontrarelmóduloespecificado.:....”defextract_text_from_pdf(file_path,output_file):#LoadaPDFdocumentdoc=PdfDocument()doc.LoadFromFile(file_path)ex......
  • 了解GraphRAG
    了解GraphRAG转载:从零实现大模型-GraphRAG,构建LLM中的关系数据库开源地址:https://github.com/microsoft/graphrag论文:FromLocaltoGlobal:AGraphRAGApproachtoQuery-FocusedSummarization博客介绍:https://microsoft.github.io/graphrag/传统RAGLLM预训练和......
  • Android开发 - ArrayList类动态数组与ArrayList<Fragment>解析
    什么是ArrayListArrayList是Java编程语言中的一个类,它实现了动态数组的数据结构。简单来说,ArrayList允许我们创建一个可以动态增长或缩减的数组,这在处理需要频繁添加或删除元素的情况下非常有用主要特点和用途动态大小:ArrayList的大小可以根据需要动态增长或缩减,与普通的数......
  • graphrag api调用
    """参考:https://microsoft.github.io/graphrag/posts/get_started/1.初始化家目录:python-mgraphrag.index--init--root./ragtest2.初始化索引:python-mgraphrag.index--root./ragtest脚本需要放置在ragtest目录下运行"""importosimportrefromp......
  • 使用python从网站自动下载pdf时出错
    我想从一个名为epadossier.nl的网站自动批量下载pdf我用谷歌搜索了这个并找到了一段代码并修复了一个小错误。所以现在我得到了这个`importrequestsurl="https://www.epadossier.nl/adres/plaats/straat/num"response=requests.get(url)ifresponse.status_cod......
  • RAG+AI工作流+Agent:LLM框架该如何选择,全面对比MaxKB、Dify、FastGPT、RagFlow、Anythi
    RAG+AI工作流+Agent:LLM框架该如何选择,全面对比MaxKB、Dify、FastGPT、RagFlow、Anything-LLM,以及更多推荐1.MaxKBMaxKB=MaxKnowledgeBase,是一款基于LLM大语言模型的开源知识库问答系统,旨在成为企业的最强大脑。它能够帮助企业高效地管理知识,并提供智能问答功能。想象一......