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

news2024/9/22 19:29:39

项目结构

在这里插入图片描述

流程解析

预处理的作用是判断文档内容是否需要进行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分钟。
  • 版面结构进行排序和组合貌似用的全是自定义的规则函数,不太方便开发者进行复用或者微调。
  • 表格内容暂时无法识别。目前只能把表格部分提取为图片保存起来。

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

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

相关文章

Ubuntu系统在两个屏幕上都显示任务栏

Ubuntu系统在两个屏幕上都显示任务栏 目标 希望在两个屏幕(主屏和扩展屏)上都显示下图的状态栏 解决方法 打开设置,找到>外观>Dock 2. 将显示于改成所有显示

明清进士人数数据

明清进士人数数据 指标:省份名称、城市名称、区县名称、明清各省进士人数、明清各城市进士人数、明清各县区进士人数 指标说明: Province[省份名称]-统计数据所属省份 City[城市名称]-统计数据所属地级市 Region[区县名称]-统计数据所属区县 MQpro…

ZooKeeper日志自动清理实用脚本

ZooKeeper日志自动清理:保持系统整洁的实用脚本 在管理ZooKeeper集群时,定期清理日志文件是一项重要但常被忽视的任务。本文将介绍一个简单而有效的bash脚本,用于自动清理ZooKeeper的日志和快照文件,并讨论如何使用cron来定期执行此脚本。 磁盘告警,所以写了一个脚…

如何用代码在数据库新建一个表格/HTML的跨行合并和跨列合并

1.用navicat新建一表格 数据库使用链接 2.前端代码 &#xff08;1&#xff09;跨行合并&#xff1a;rowspan“合并单元格的个数” 跨列合并&#xff1a;colspan“合并单元格的个数” <body> <table border"1”align"center” width"100%cellpaddin…

微信公众号,配置自定义菜单,跟回调授权网址配置入口,图讲解

微信公众号&#xff0c;配置自定义菜单&#xff0c;跟回调授权网址配置入口&#xff0c;图讲解

【图像识别】十大数据集合集!

本文将为您介绍10个经典、热门的数据集&#xff0c;希望对您在选择适合的数据集时有所帮助。 1 DanishFungi2020 发布方&#xff1a; Google 发布时间&#xff1a; 2021 简介&#xff1a; 补充材料&#xff1a;丹麦真菌 2020 - 不仅仅是另一个图像识别数据集为了支持细粒度植…

django网络爬虫系统- 计算机毕业设计源码81040

摘要 本论文主要论述了如何开发一个网络爬虫系统&#xff0c;对旅游景点信息进行爬取&#xff0c;本系统将严格按照软件开发流程进行各个阶段的工作&#xff0c;面向对象编程思想进行项目开发。在引言中&#xff0c;作者将论述网络爬虫系统的当前背景以及系统开发的目的&#x…

【计算机网络】TCP/IP四层模型

文章目录 TCP/IP模型应用层&#xff08;Application Layer&#xff09;传输层&#xff08;Transport Layer&#xff09;网络层&#xff08;Internet Layer&#xff09;网络接口层&#xff08;Network Interface Layer&#xff09; TCP/IP模型 经典的TCP/IP参考模型从上至下分为…

如何手动修复DLL丢失?directx修复工具收费吗?

在使用电脑时&#xff0c;我们有时会遇到DLL文件丢失或损坏的问题&#xff0c;导致软件无法正常运行。DLL&#xff08;动态链接库&#xff09;文件是Windows操作系统中重要的组成部分&#xff0c;用于共享程序代码和资源。本文将介绍如何手动修复DLL丢失问题&#xff0c;手动修…

【优秀python案例】基于Python的豆瓣电影TOP250爬虫与可视化设计与实现

摘要&#xff1a;伴随着当代社会物质水平的不断提高&#xff0c;人们越来越注重精神享受&#xff0c;看电影成为人们日常生活中重要的组成成分。本文将针对豆瓣上热门电影评论进行爬取&#xff0c;应用可视化分析更为形象地了解该电影的动态。该系统可以使得人们实时了解到有关…

WebLogic:CVE-2023-21839[JNDI注入]

原理 1、T3/IIOP协议支持 远程绑定对象 bind到服务端&#xff0c;而且可以通过lookup代码 c.lookup("xxxxxx"); 查看 2、远程对象继承自OpaqueReference并lookup查看远程对象时&#xff0c;服务端会调用远程对象 getReferent 方法 3、由于 weblogic.deployment.…

Java未来还是霸主吗?Java 在当今企业中的未来到底是什么?

Java 及其生态系统对于许多现代企业的成功至关重要。它是一种多功能语言&#xff0c;对许多用例提供强大支持&#xff0c;并具有强大的新功能来应对棘手的情况。但您可能会问自己&#xff1a;Java 的未来是什么&#xff1f; 尽管自 1999 年以来 Java 一直是软件开发领域的关键角…

【C++11】深度解析--异步操作(什么是异步?异步有那些操作?异步操作有什么用呢?)

目录 一、前言 二、什么是异步操作呢&#xff1f; &#x1f525;异步的概念&#x1f525; &#x1f525;异步的生活案例说明&#x1f525; 三、异步有那些操作呢&#xff1f; &#x1f525;std::future&#x1f525; &#x1f4a2;std::future 的概念&#x1f4a2; &a…

SmolLM-HuggingFace发布的高性能小型语言模型

SmolLM是什么&#xff1f; SmolLM是由 Huggingface 最新发布的一系列最先进的小型语言模型&#xff0c;有三种规格&#xff1a;1.35亿、3.6亿和17亿个参数。这些模型建立在 Cosmo-Corpus 上&#xff0c;Cosmo-Corpus 是一个精心策划的高质量训练数据集。Cosmo-Corpus 包括 Cos…

AT24C08系列eeprom总结

内存大小说明&#xff1a;单位&#xff08;bits(位&#xff09; AT24C02A&#xff0c;2K bits串行EEPROM&#xff1a;内部组织为256页&#xff0c;每页1字节&#xff0c; AT24C04A&#xff0c;4K bits串行EEPROM&#xff1a;4K内部组织为256页&#xff0c;每页2字节。 AT24C…

拯救丢失数据,这三款数据恢复软件你不可错过

数据丢失真的很烦人&#xff0c;无论是手滑删除了重要文件&#xff0c;还是电脑突然崩溃&#xff0c;那些珍贵的照片、文档、视频&#xff0c;一瞬间就仿佛人间蒸发了一样。但别担心&#xff0c;科技的力量总能给我们带来希望&#xff0c;数据恢复软件就是我们的救星。我用过了…

如何选择开放式耳机?2024五款热门机型推荐!

耳机在我们日常通勤和运动锻炼中扮演着重要的角色&#xff0c;它不仅帮助我们放松和振奋&#xff0c;还提供了随时可得的安慰和动力。选择一款合适的耳机非常关键&#xff0c;开放式耳机因其不挤压耳道的设计&#xff0c;在多种使用场景下都能提供良好的适应性&#xff0c;特别…

本地node搭建web服务器

首先确认自己的电脑已经安装了node.js 1.创建一个node服务文件 创建一个node-serve文件夹&#xff0c;然后在当前文件下输入初始化node项目命令。 npm init然后一直按回车即可&#xff0c;完成之后生成一个 package.json 文件。 2.在当前文件夹下新建一个 index.js 的文件&…

IT人求职就业手册:如何在数字时代脱颖而出

&#x1f482; 个人网站:【 摸鱼游戏】【网址导航】【神级代码资源网站】&#x1f91f; 一站式轻松构建小程序、Web网站、移动应用&#xff1a;&#x1f449;注册地址&#x1f91f; 基于Web端打造的&#xff1a;&#x1f449;轻量化工具创作平台&#x1f485; 想寻找共同学习交…

《数据库技术及其对我国企业发展的重大贡献》

数据库技术及其对我国企业发展的重大贡献 一、夯实数字化基础&#xff0c;助力企业转型二、提升数据处理能力&#xff0c;增强企业核心竞争力三、保障数据安全&#xff0c;筑牢企业发展防线四、推动技术创新&#xff0c;引领企业未来发展五、构建数据生态&#xff0c;激发企业创…