MinerU、Magic-PDF、Magic-Doc

news2024/12/30 1:39:45

文章目录

    • 一、关于 MinerU
    • 二、Magic-PDF
      • 1、简介
      • 2、项目全景
      • 3、流程图
      • 4、子模块仓库
    • 三、Magic-PDF 上手指南
      • 1、配置要求
      • 2、安装配置
        • 1. 安装Magic-PDF
        • 2. 下载模型权重文件
        • 3. 拷贝配置文件并进行配置
        • 4. 使用CUDA或MPS加速推理
          • CUDA
          • MPS
      • 3、使用说明
        • 1) 通过命令行使用
            • 直接使用
            • 更多用法
        • 2) 通过接口调用
            • 本地使用
            • 在对象存储上使用
      • 4、常见问题处理解答
    • 四、Magic-Doc
      • 1、简介
      • 2、安装
      • 3、使用示例
      • 4、性能


一、关于 MinerU

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

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

  • github : https://github.com/opendatalab/MinerU/blob/master/README_zh-CN.md

二、Magic-PDF


1、简介

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

主要功能包含

  • 支持多种前端模型输入
  • 删除页眉、页脚、脚注、页码等元素
  • 符合人类阅读顺序的排版格式
  • 保留原文档的结构和格式,包括标题、段落、列表等
  • 提取图像和表格并在markdown中展示
  • 将公式转换成latex
  • 乱码PDF自动识别并转换
  • 支持cpu和gpu环境
  • 支持windows/linux/mac平台

使用示例


2、项目全景

项目全景图


3、流程图

流程图


4、子模块仓库

  • PDF-Extract-Kit :https://github.com/opendatalab/PDF-Extract-Kit
    • 高质量的PDF内容提取工具包

三、Magic-PDF 上手指南


1、配置要求

python >= 3.9

推荐使用虚拟环境,以避免可能发生的依赖冲突,venv和conda均可使用。
例如:

conda create -n MinerU python=3.10
conda activate MinerU

开发基于python 3.10,如果在其他版本python出现问题请切换至3.10。


2、安装配置


1. 安装Magic-PDF

使用pip安装完整功能包:

受pypi限制,pip安装的完整功能包仅支持cpu推理,建议只用于快速测试解析能力。

如需在生产环境使用CUDA/MPS加速请参考使用CUDA或MPS加速推理

pip install magic-pdf[full-cpu]

❗️已收到多起由于镜像源和依赖冲突问题导致安装了错误版本软件包的反馈,请务必安装完成后通过以下命令验证版本是否正确

magic-pdf --version

如版本低于0.6.x,请提交issue进行反馈。


完整功能包依赖detectron2,该库需要编译安装,如需自行编译,请参考 facebookresearch/detectron2#5114
或是直接使用我们预编译的whl包(仅限python 3.10):

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

2. 下载模型权重文件

详细参考 如何下载模型文件
下载后请将models目录移动到空间较大的ssd磁盘目录


3. 拷贝配置文件并进行配置

在仓库根目录可以获得 magic-pdf.template.json 文件

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

在magic-pdf.json中配置"models-dir"为模型权重文件所在目录

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

4. 使用CUDA或MPS加速推理

如您有可用的Nvidia显卡或在使用Apple Silicon的Mac,可以使用CUDA或MPS进行加速


CUDA

需要根据自己的CUDA版本安装对应的pytorch版本
以下是对应CUDA 11.8版本的安装命令,更多信息请参考 https://pytorch.org/get-started/locally/

pip install --force-reinstall torch==2.3.1 torchvision==0.18.1 --index-url https://download.pytorch.org/whl/cu118

同时需要修改配置文件magic-pdf.json中"device-mode"的值

{
  "device-mode":"cuda"
}

MPS

使用macOS(M系列芯片设备)可以使用MPS进行推理加速
需要修改配置文件magic-pdf.json中"device-mode"的值

{
  "device-mode":"mps"
}

3、使用说明


1) 通过命令行使用

直接使用
magic-pdf pdf-command --pdf "pdf_path" --inside_model true

程序运行完成后,你可以在 /tmp/magic-pdf 目录下看到生成的markdown文件,markdown目录中可以找到对应的 xxx_model.json 文件
如果您有意对后处理pipeline进行二次开发,可以使用命令

magic-pdf pdf-command --pdf "pdf_path" --model "model_json_path"

这样就不需要重跑模型数据,调试起来更方便


更多用法
magic-pdf --help

2) 通过接口调用

本地使用
image_writer = DiskReaderWriter(local_image_dir)
image_dir = str(os.path.basename(local_image_dir))
jso_useful_key = {"_pdf_type": "", "model_list": model_json}
pipe = UNIPipe(pdf_bytes, jso_useful_key, image_writer)
pipe.pipe_classify()
pipe.pipe_parse()
md_content = pipe.pipe_mk_markdown(image_dir, drop_mode="none")

在对象存储上使用
s3pdf_cli = S3ReaderWriter(pdf_ak, pdf_sk, pdf_endpoint)
image_dir = "s3://img_bucket/"
s3image_cli = S3ReaderWriter(img_ak, img_sk, img_endpoint, parent_path=image_dir)
pdf_bytes = s3pdf_cli.read(s3_pdf_path, mode=s3pdf_cli.MODE_BIN)
jso_useful_key = {"_pdf_type": "", "model_list": model_json}
pipe = UNIPipe(pdf_bytes, jso_useful_key, s3image_cli)
pipe.pipe_classify()
pipe.pipe_parse()
md_content = pipe.pipe_mk_markdown(image_dir, drop_mode="none")

详细实现可参考 demo.py


4、常见问题处理解答

参考 FAQ


四、Magic-Doc

1、简介

Magic-Doc 是一个轻量级、开源的用于将多种格式的文档(PPT/PPTX/DOC/DOCX/PDF)转化为 markdown 格式的工具。支持转换本地文档或者位于 AWS S3 上的文件

主要功能包含

  • Web网页提取
    • 跨模态精准解析图文、表格、公式信息
  • 电子书文献提取
    • 支持 epub,mobi等多格式文献,文本图片全适配
  • 语言类型鉴定
    • 支持176种语言的准确识别

  • 示例-提取1
  • 示例-提取2
  • 示例-提取3

2、安装

前置依赖: python3.10

安装依赖

linux/osx

apt-get/yum/brew install libreoffice

windows

安装 libreoffice 
添加 "install_dir\LibreOffice\program" to 环境变量 PATH

安装 Magic-Doc

pip install fairy-doc[cpu] # 安装 cpu 版本 
或 
pip install fairy-doc[gpu] # 安装 gpu 版本

3、使用示例

# for local file
from magic_doc.docconv import DocConverter, S3Config
converter = DocConverter(s3_config=None)
markdown_content, time_cost = converter.convert("some_doc.pptx", conv_timeout=300)
# for remote file located in aws s3
from magic_doc.docconv import DocConverter, S3Config

s3_config = S3Config(ak='${ak}', sk='${sk}', endpoint='${endpoint}')
converter = DocConverter(s3_config=s3_config)
markdown_content, time_cost = converter.convert("s3://some_bucket/some_doc.pptx", conv_timeout=300)

4、性能

环境:AMD EPYC 7742 64-Core Processor, NVIDIA A100, Centos 7

文件类型转化速度
PDF (digital)347 (page/s)
PDF (ocr)2.7 (page/s)
PPT20 (page/s)
PPTX149 (page/s)
DOC600 (page/s)
DOCX1482 (page/s)

2024-07-21(日)

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

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

相关文章

鑫创SSS1700USB音频桥芯片USB转IIS芯片

鑫创SSS1700支持IIC初始外部编(EEPROM选项),两线串行总线(I2C总线)用于外部MCU控制整个EEPROM空间可以通过MCU访问用于主机控制同步的USB HID外部串行EEPROM(24C02~24C16)接口,用于客户特定的USB视频、PID、…

有空多刷刷算法题:回溯理论基础、leecode-77:组合、leecode:组合总和 III

回溯算法 一、理论基础 参考代码随想录,仅作记录学习之用 回溯是递归的副产品,只要有递归就会有回溯因为回溯的本质是穷举,穷举所有可能,然后选出我们想要的答案,如果想让回溯法⾼效⼀些,可以加⼀些剪枝…

华为OD机试2024年C卷D卷 - 构成指定长度字符串的个数/字符串拼接(Java)

华为OD机试&#xff08;C卷D卷&#xff09;2024真题目录 题目描述&#xff1a;构成指定长度字符串的个数 (本题分值200) 给定 M&#xff08;0 < M ≤ 30&#xff09;个字符&#xff08;a-z&#xff09;&#xff0c;从中取出任意字符&#xff08;每个字符只能用一次&#x…

PostgreSql创建触发器并增加IF判断条件

在 PostgreSQL 中&#xff0c;可以使用触发器&#xff08;Trigger&#xff09;来在表上定义自定义的插入&#xff08;INSERT&#xff09;、更新&#xff08;UPDATE&#xff09;和删除&#xff08;DELETE&#xff09;操作的行为。触发器是与表相关联的特殊函数&#xff0c;它们在…

docker的学习(二):docker常用的高级技术总结

简介 docker的一些知识点的总结 UnionFS 分层&#xff0c;轻量级&#xff0c;高性能的文件系统&#xff0c;支持一层层的叠加功能来修改文件系统。 一次同时加载多个文件系统&#xff0c;把各层文件系统叠加起来&#xff0c;最终文件系统会包含所有底层的文件和目录&#xf…

【java SE语法篇】1.运算符

目录 1. 运算符和表达式2. 算数运算符3. 隐式转换4. 强制转换5. 自增自减运算符6. 赋值运算符7. 扩展运算符8. 关系运算符9. 逻辑运算符9.1 & 和 | 的使用&#xff1a;9.2 ^&#xff08;异或&#xff09;的使用&#xff1a;9.3 !&#xff08;取反&#xff09;的使用&#x…

2024年技校大数据实验室建设及大数据实训平台整体解决方案

随着信息技术的迅猛发展&#xff0c;大数据已成为推动产业升级和社会进步的重要力量。为适应市场需求&#xff0c;培养高素质的大数据技术人才&#xff0c;技校作为职业教育的重要阵地&#xff0c;亟需加强大数据实验室的建设与实训平台的打造。本方案旨在提出一套全面、可行的…

如何制作u盘启动盘_制作U盘启动盘详细图文教程

如何制作u盘启动盘&#xff1f;一个U盘如果不做成启动盘的话&#xff0c;就只能当存储用。如果一个U盘做成启动盘的话&#xff0c;可以通过U盘启动进入PE&#xff0c;我们就可以对电脑进行重装系统或分区等一些操作使用了&#xff0c;这个主要用于电脑需要救急的情况下使用。用…

jmeter录制脚本做压力测试

1.录制 第一步 设置浏览器代理&#xff0c;我用的火狐。谷歌、IE也是都可以。 我把端口号改成8082了&#xff0c;这个无所谓的&#xff0c;只要不冲突就可以。 紧接着要往浏览器里添加证书。直接搜索证书。把jmeter的证书导入浏览器。 2.在jmeter里设置 添加线程组、http代…

Another-redis-desktop-manager+ffmpeg

一、Another-redis-desktop-manager 1.点击链接下载&#xff1a;Release v1.6.6 qishibo/AnotherRedisDesktopManager GitHub 2. 傻瓜式安装 二、ffmpeg 1.下载&#xff1a;Builds - CODEX FFMPEG gyan.dev 2.下载对应版本 3.添加环境变量&#xff1a;添加到path里&am…

Intent的基本使用

1.Intent是什么&#xff1f; Intent用于Android程序中各组件&#xff08;Activity、BroadcastReceive、Service&#xff09;的交互&#xff0c;并且可以在组件之间传递数据&#xff0c;分为显式Intent和隐式Intent。 Intent是各个组件之间信息沟通的桥梁&#xff0c;既能在Ac…

【24年7月】最新Hexo+GitHubPages搭建个人博客【一】

Hexo 是一个高效的静态网站生成器&#xff0c;使用简洁的 Markdown&#xff08;或其他模板引擎&#xff09;编写内容&#xff0c;支持丰富的插件和主题&#xff0c;允许用户轻松定制网站。它通过将文本转换为静态HTML页面&#xff0c;使得网站加载速度快&#xff0c;易于部署&a…

Linux操作系统的有关常用的命令

1.linux系统的概述 1.1 什么是Linux系统? Linux&#xff0c;全称GNU/Linux&#xff0c;是一种免费使用和自由传播的类UNIX操作系统&#xff0c;其内核由林纳斯本纳第克特托瓦 兹&#xff08;Linus Benedict Torvalds&#xff09;于1991年10月5日首次发布&#xff0c;它主要受…

塔子哥的题解点赞方案-美团2023笔试(codefun2000)

题目链接 塔子哥的题解点赞方案-美团2023笔试(codefun2000) 题目内容 塔子哥写了 n 篇题解&#xff0c;编号从 1 到 n&#xff0c;但是塔子哥忘了每篇题解有多少人点赞了。 现在他有如下两种信息&#xff1a; 1、每篇题解的点赞量都为正数&#xff0c;且不超过 m。 2、第 i 篇…

2024LitCTFmisc复现

secret 这首音乐好听&#xff0c;听完了&#xff0c;中间有段杂音 去AU看看 中间有一段藏了东西&#xff0c;放大 出flag了 flag{Calculate_Step_By_Step} 原铁&#xff0c;启动&#xff01; 解压出来是一张二维码 扫出来是原神 去010看看 看到有压缩包&#xff0c;提取出来 …

关于集成网络变压器的RJ45网口

集成网络变压器的RJ45网口是一种将网络变压器与RJ45接口集成在一起的网络连接解决方案。这种集成设计具有多项优势&#xff0c;使其在现代网络设备中得到广泛应用。 优势与特点 1. **空间节省**&#xff1a;集成设计减少了组件数量和连接线缆长度&#xff0c;有助于节省设备内…

Adobe Premiere Pro(Pr)安装包软件下载

一、简介 Adobe Premiere Pro&#xff08;简称Pr&#xff09;是由Adobe公司开发的一款功能强大的视频编辑软件。它支持多平台使用&#xff0c;包括Windows和Mac系统&#xff0c;并且拥有良好的兼容性和高效的性能。Premiere Pro不仅提供了视频剪辑、特效添加、音频处理等基本功…

监控易V7.6.6.15全新升级14:设置功能全面优化

随着企业IT架构的不断发展&#xff0c;对运维管理的需求也日益增加。为了满足广大用户对运维管理的更高需求&#xff0c;监控易系统近期完成了一次重要版本升级。本次升级在原有功能的基础上&#xff0c;对设置功能进行了全面优化和新增&#xff0c;旨在为用户提供更加灵活、高…

系统架构师(每日一练5)

每日一练 1.某企业准备将四个工人甲、乙、丙、丁分配在A、B、C、D四个岗位。每个工人由于技术水平不同&#xff0c;在不同岗位上每天完成任务所 需的工时见下表。适当安排岗位&#xff0c;可使四个工人以最短的总工时()全部完成每天的任务。答案与解析 ABCD甲7523乙9437丙547…

【每日一练】python编写一个简易计算器

程序代码: #循环语句&#xff0c;条件为真所以循环执行 while True: #定义两个数的变量和运算符号 num1 float(input("第一个数:")) num2 float(input("第一个数:")) syminput("选择运算符 - * /&#xff1a;") #判断运算符号 …