最新开源的解析效果非常好的PDF解析工具MinerU (pdf2md pdf2json)

毫不夸张的说 PDF解析工具MinerU是照进RAG黑暗中的一道光——这是我对它的评价。我测过太多了文档解析工具!
最近在做文档解析的工作。看了很多的开源的文档解析的工具,版面分析的工具,其中包括paddelpaddel这样30k+star的明星工具。但是效果都觉得不好。
MinerU是一个最近开源的文档解析工具,可以把PDF转成json结构,还可以转成md格式。可以解析得到其中的图片,表格,可以得到段落,可以得到标题,这是很哇塞的事情。因为最近RAG特别火热,这些都是RAG非常需要的。文档解析是非常重要的一个环节。可以看看这篇文章。 RAG的上限在哪里?边界在哪里?_rag的限制-CSDN博客
虽然现在MinerUstar数量不高,1k star都不到,但是绝对会涨起来的。我们调研对比过很多开源的工具,效果都强差人意,这个是我看到的最满意的一个。甚至要比我们生产环境的都要好一些。MinerUstar 绝对是一个为RAG而创造的工具,开源世界的一道光。
这篇文章会详细介绍它的解析效果,它的优势和不足。并且给出详细的安装教程。MinerU 在github上的安装教程太粗糙了。一堆问题。

环境介绍

windows10 环境

使用CPU运行

Magic-PDF简介

MinerU 是一款一站式、开源、高质量的数据提取工具,主要包含以下功能:

  • Magic-PDF PDF文档提取
  • Magic-Doc 网页与电子书提取

Magic-PDF 是一款将 PDF 转化为 markdown 格式的工具。支持转换本地文档或者位于支持S3协议对象存储上的文件。

解析系效果总结

我觉得不妨先看看解析的效果,不着急折腾环境,先看看我列出来的缺点是否能接受。或者看看优点是不是自己想要的。再去安装它。

缺点

问题1: 解析速度慢

这里使用的CPU跑的,6页大概两三分钟。解析走的纯模型,先版面分析,再ocr,再公式检测。

模型初始化耗时167s,之后每页大概是16s

问题2:表格解析成图片

把表格处理成了图片

原文件如下所示

解析结果如下所示

原文件如下

解析后的结果

问题3:标题识别不准确,且没有分层

原文件

解析后的结果

问题4:财报中的表格没有识别出来

优点

优点1:论文版面分析准确

表定位,图表定位准确。测了一篇论文,都正确。并且准确获取到了表格和图片的caption

支持多栏,解析顺序是正确的

优点2:混乱的杂志 + 多栏 + 图片

解析效果挺不错。一页多栏,顺序是对的。

优点3:多语言

测了中文和英文。都可以,github上的描述,支持176种语言

优点4:获取了表格和图片的caption

能够获取到caption并且单独存储了。

优点5:页眉页脚、脚注识别准确

转md的时候,都已经去掉了。

优点6:段落结构比较好

段落合并的好。得到的结果多数是自然段落

优点7:可以解析公式

优点8:多平台多环境支持

支持windows/linux/mac平台;支持cpu和gpu环境

安装MinerU

虚拟化环境

conda create -n MinerU python=3.10

conda activate MinerU

安装配置

pip install magic-pdf[full-cpu]

这一步最好有科学上网,不然可能拉不到。

pip install detectron2 --extra-index-url https://myhloli.github.io/wheels/

下载模型

模型,这里是模型没有下载,会报错如下

这里为了方便,使用git来从魔搭上拉取

git clone https://www.modelscope.cn/wanderkid/PDF-Extract-Kit.git

如果想要使用其它的方式拉取,参考

MinerU/docs/how_to_download_models_zh_cn.md at master · opendatalab/MinerU · GitHub

修改配置文件

在仓库根目录可以获得 MinerU/magic-pdf.template.json at master · opendatalab/MinerU · GitHub 文件

这里解释一下这个命令,实际上是把配置文件发在了c盘的user目录下。

cp magic-pdf.template.json ~/magic-pdf.json

修改配置文件的内容,如下图所示。 output-dir是解析后的文件结果存放的目录。 models-dir是下载的模型的地址。

如果还是不知道放在哪里,可以先启动一下,会报一个错误,找不到配置文件

magic-pdf pdf-command --pdf "page1.pdf" 注意这里替换成自己文件

根据报错,把上述的配置文件放过去就可以。

接下来测试解析效果

magic-pdf pdf-command --pdf "困难pdf节选西藏奇正2022.pdf" --inside_model true

正常解析

解析后得到的结果

包含了md结构,json结构,和版面分析的结果

md

layout

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

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

相关文章

01 安装

安装和卸载中,用户全部切换为root,一旦安装,普通用户也能使用 初期不进行用户管理,全部用root进行,使用mysql语句 1. 卸载内置环境 检查是否有mariadb存在,存在走a部分卸载 ps axj | grep mysql ps ajx |…

逻辑门的题目怎么做?

FPGA语法练习——二输入逻辑门,一起来听~~ FPGA语法练习——二输入逻辑门 题目介绍:F学社-全球FPGA技术提升平台 (zzfpga.com)

低代码中间件学习体验分享:业务系统的创新引擎

前言 星云低代码平台介绍 星云低代码中间件主要面向企业IT部门、软件实施部门的低代码开发平台,无需学习开发语言/技术框架,可视化开发PC网页/PC项目/小程序/安卓/IOS原生移动应用,低门槛,高效率。针对企业研发部门人员少&#…

什么是正则表达式,如何在 Python 中使用?

什么是正则表达式 正则表达式(Regular Expression,简称Regex)是一种用于匹配字符串中字符模式的工具。它是由普通字符(例如字母、数字)以及一些特殊字符(称为元字符)组成的字符序列。这种模式用…

Spring MVC-什么是Spring MVC?

T04BF 👋专栏: 算法|JAVA|MySQL|C语言 🫵 今天你敲代码了吗 文章目录 1.MVC定义2. Spring MVC 官方对于Spring Web MVC的描述这样的: Spring Web MVC is the original web framework built on the Servlet APl and has been includedin the Spring Frame…

node解析Excel中的考试题并实现在线做题功能

1、背景 最近公司安排业务技能考试,下发excel文件的题库,在excel里查看并不是很方便,就想着像学习驾考题目一样,一边看一边做,做完之后可以查看正确答案。 2、开始分析需求 题目格式如下图 需求比较简单,…

【二叉树】【动态规划】1、斐波那契数+2、零钱兑换

1、遍历:在遍历的过程中就能够解决问题,只需要递归函数的参数即可。 2、子树:只有在遍历完成之后才能解决问题,还需要递归函数的返回值。(需要在后序位置写代码) 动态规划:子树 核心思想是穷举…

【electron】 快速启动electron 应用

学无止境: 最近在搞electron项目,最重要的是总结 ,写下来总不会忘记,也希望给大家参考一下,有不对的地方希望大家多指点。 快速启动electron 应用 1 克隆示例项目的仓库 git clone https://github.com/electron/ele…

Hadoop-36 HBase 3节点云服务器集群 HBase Shell 增删改查 全程多图详细 列族 row key value filter

点一下关注吧!!!非常感谢!!持续更新!!! 目前已经更新到了: HadoopHDFSMapReduceHiveFlumeSqoopZookeeperHBase 正在 章节内容 上一节我们完成了: 集群的…

从安装Node到TypeScript到VsCode的配置教程

从安装Node到TypeScript到VsCode的配置教程 1.下载Node安装包, 链接 2.双击安装包,选择安装路径,如下: 3.一直点击下一步,直至安装结束即可: 这个时候,node会默认配置好环境变量,并且…

java文本比较解决方案

参考资料 VBA计算页码和行号https://learn.microsoft.com/zh-cn/office/vba/api/word.wdinformation 概述: 最近在做word文档对比的,总结了几种解决方案,记录一下 在java中,常用的文本对比方案有如下几种: 差异比较…

Linux网络——套接字与UdpServer

目录 一、socket 编程接口 1.1 sockaddr 结构 1.2 socket 常见API 二、封装 InetAddr 三、网络字节序 四、封装通用 UdpServer 服务端 4.1 整体框架 4.2 类的初始化 4.2.1 socket 4.2.2 bind 4.2.3 创建流式套接字 4.2.4 填充结构体 4.3 服务器的运行 4.3.1 rec…

rabbitmq生产与消费

一、rabbitmq发送消息 一、简单模式 概述 一个生产者一个消费者模型 代码 //没有交换机,两个参数为routingKey和消息内容 rabbitTemplate.convertAndSend("test1_Queue","haha");二、工作队列模式 概述 一个生产者,多个消费者&a…

如何将PDF转换成可以直接编辑的CAD图纸?

PDF图纸是为了让用户更好的阅览CAD文件,但是,当我们想要对其进行编辑的时候,PDF图纸就是一个麻烦了。那么PDF转换成CAD后可以编辑吗?如何将PDF转换成可以直接编辑的CAD图纸呢?本篇给你答案。 1、启动迅捷CAD编辑器&…

【python学习】爬虫中常使用的urllib和requests库的的背景、定义、特点、功能、代码示例以及两者的区别

引言 urllib是Python标准库中的一个模块,它提供了一系列用于操作URL的功能 requests是一个Python第三方库,由Kenneth Reitz创建,用于简化HTTP客户端的编程 一、urllib的定义 urllib可以操作url,主要分为以下几个子模块&#xff1…

从人工巡检到智能防控:智慧油气田安全生产的新视角

一、背景需求 随着科技的飞速发展,视频监控技术已成为各行各业保障安全生产、提升管理效率的重要手段。特别是在油气田这一特殊领域,由于其工作环境复杂、安全风险高,传统的监控方式已难以满足实际需求。因此,基于视频监控AI智能…

ROS2从入门到精通2-3:机器人3D物理仿真Gazebo与案例分析

目录 0 专栏介绍1 什么是Gazebo?2 Gazebo架构2.1 Gazebo前后端2.2 Gazebo文件格式2.3 Gazebo环境变量 3 Gazebo安装与基本界面4 搭建自己的地图4.1 编辑地图4.2 保存地图4.3 加载地图 5 常见问题 0 专栏介绍 本专栏旨在通过对ROS2的系统学习,掌握ROS2底…

CSS技巧专栏:一日一例 8 - 纯CSS利用mask属性实现按钮边框对称包围特效

CSS技巧专栏:一日一例 8 - 纯CSS利用mask属性实现按钮边框对称包围特效 上篇作业解题 在前一篇文章的最后,给各位看官留了一个作业,如上图所示。本篇文章,我们来公布一下它的源码。 主要实现的思路 四个渐变色的线段,沿着四个方向的依次运动,(运动在加载前执行)使用 …

均值滤波算法及实现

均值滤波器的使用场景: 均值滤波器使用于处理一些如上述蓝色线的高斯噪声场景 红色曲线是经过均值滤波处理后的数据。主要因为均值滤波设置数据缓冲区(也即延时周期),使得测量值经过缓冲不会出现特别大的变化。 黄色曲线为高斯噪声…

【iOS】—— 消息传递和消息转发

【iOS】—— 消息传递和消息转发 1. 消息传递SEL选择子IMP快速查找汇编代码查找过程总结消息转送快速查找IMP 慢速查找总结消息传递慢速查找IMP 2. 消息转发动态决议动态解析添加方法 快速转发慢速转发 总结动态决议消息转发消息的三次拯救 1. 消息传递 在iOS中,消…