Python简单使用MinerU

MinerU 4.0 四档解析与定位器机制:RAG 文档处理管线实战 在 RAG 系统中,文档解析质量直接决定检索增强生成的上限。PDF 解析常面临表格串行、公式乱码、多栏排版错乱等问题,根源在于解析策略与文档结构不匹配。MinerU 4.0 通过四档解析模式(快速、标准、精细、极致)和定位器机制,实现了按需解析与内容块坐标追溯。四档模式切分的是解析管线中启用的处理模块组合,选型需匹配文档类型与下游任务;定位器为每个内容块附加页码、边界框和阅读顺序,支持结构化切块与来源引用。在 RAG 切块、元数据附加、向量化入库等环节,合理运用这些机制可显著提升检索精度与可信度。 阅读详情
AI摘要

本文介绍了如何使用Python操作MinerU工具,包括MinerU工具的简介、安装步骤以及如何在Python中调用MinerU进行PDF文件的格式转换。MinerU支持多种文件格式转换,如PDF转为markdown、json等,并详细说明了安装过程中的注意事项。

Python简单使用MinerU

1 简介

MinerU是国产的一款将PDF转化为机器可读格式的工具(如markdown、json),可以很方便地抽取为任意格式。目前支持图像(.jpg及.png)、PDF、Word(.doc及.docx)、以及PowerPoint(.ppt及.pptx)等。

# 官网地址
https://mineru.readthedocs.io/en/latest/index.html

# Github地址
https://github.com/opendatalab/mineru

# API接口地址
https://mineru.readthedocs.io/en/latest/user_guide/quick_start/convert_pdf.html

# 模型下载脚本地址
# 从ModelScope下载模型:download_models.py
# 从HuggingFace下载模型: download_models_hf.py
https://github.com/opendatalab/MinerU/tree/master/scripts

2 安装MinerU

安装Python环境

# 我的版本是:magic-pdf==1.1.0
pip install -U "magic-pdf[full]" -i https://pypi.tuna.tsinghua.edu.cn/simple

下载权重

官网提供了HuggingFace和ModelScope两种方法下载,本文从ModlScope上下载,

# 官网下载方法地址
https://github.com/opendatalab/MinerU/blob/master/docs/how_to_download_models_zh_cn.md

开始下载权重

⚠️ 注意:模型下载完成后,脚本会自动生成用户目录下的magic-pdf.json文件,并自动配置默认模型路径。 您可在【用户目录】下找到magic-pdf.json文件。

# 安装modelscope
pip install modelscope

# 下载文件
wget https://gcore.jsdelivr.net/gh/opendatalab/MinerU@master/scripts/download_models.py -O download_models.py
# 也可以到下面的地址,找到download_models.py下载
https://github.com/opendatalab/MinerU/tree/master/scripts

# 执行下载模型
# 为了方便使用模型,我修改了download_models.py,添加了设置模型的位置。
python download_models.py

修改后的download_models.py

⚠️ 此步可以不做。

文件中的local_dir是我新加的下载模型的位置,如果不设置会下载到下面目录中:windows的用户目录为 “C:\Users\用户名”, linux用户目录为 “/home/用户名”。

import json
import os

import requests
from modelscope import snapshot_download


def download_json(url):
    # 下载JSON文件
    response = requests.get(url)
    response.raise_for_status()  # 检查请求是否成功
    return response.json()


def download_and_modify_json(url, local_filename, modifications):
    if os.path.exists(local_filename):
        data = json.load(open(local_filename))
        config_version = data.get('config_version', '0.0.0')
        if config_version < '1.1.1':
            data = download_json(url)
    else:
        data = download_json(url)

    # 修改内容
    for key, value in modifications.items():
        data[key] = value

    # 保存修改后的内容
    with open(local_filename, 'w', encoding='utf-8') as f:
        json.dump(data, f, ensure_ascii=False, indent=4)


if __name__ == '__main__':
    mineru_patterns = [
        "models/Layout/LayoutLMv3/*",
        "models/Layout/YOLO/*",
        "models/MFD/YOLO/*",
        "models/MFR/unimernet_small_2501/*",
        "models/TabRec/TableMaster/*",
        "models/TabRec/StructEqTable/*",
    ]

    # 设置模型下载的位置
    local_dir="E:/mineru"

    # 下载模型
    model_dir = snapshot_download('opendatalab/PDF-Extract-Kit-1.0', allow_patterns=mineru_patterns, local_dir=local_dir)
    layoutreader_model_dir = snapshot_download('ppaanngggg/layoutreader', local_dir=local_dir)
    model_dir = model_dir + '/models'
    print(f'model_dir is: {model_dir}')
    print(f'layoutreader_model_dir is: {layoutreader_model_dir}')

    json_url = 'https://gcore.jsdelivr.net/gh/opendatalab/MinerU@master/magic-pdf.template.json'
    config_file_name = 'magic-pdf.json'
    home_dir = os.path.expanduser('~')
    config_file = os.path.join(home_dir, config_file_name)

    json_mods = {
        'models-dir': model_dir,
        'layoutreader-model-dir': layoutreader_model_dir,
    }

    download_and_modify_json(json_url, config_file, json_mods)
    print(f'The configuration file has been configured successfully, the path is: {config_file}')

3 Python使用MinerU

Python安装完MinerU后,可以直接执行下面的代码,首次执行时会自动下载PaddleOCR模型的权重和参数,PaddleOCR模型会自动下载到用户目录下的.paddleocr目录下。

解析PDF文件的Python代码如下:

import os

from magic_pdf.data.data_reader_writer import FileBasedDataWriter, FileBasedDataReader
from magic_pdf.data.dataset import PymuDocDataset
from magic_pdf.model.doc_analyze_by_custom_model import doc_analyze
from magic_pdf.config.enums import SupportedPdfParseMethod

# pdf文件路径
pdf_file_path = "E:/hello/test-5-2.pdf"
# 获取没有后缀的pdf文件名称
pdf_file_path_without_suff = pdf_file_path.split(".")[0]
print(pdf_file_path_without_suff)

# 文件所在的目录
pdf_file_path_parent_dir = os.path.dirname(pdf_file_path)
image_dir = os.path.join(pdf_file_path_parent_dir, "images")
print(image_dir)

# Markdown的写入实例
# markdown_dir = "./output/markdown"
# writer_markdown = FileBasedDataWriter(markdown_dir)
writer_markdown = FileBasedDataWriter()
# 读取图片
writer_image = FileBasedDataWriter(image_dir)

# 读取文件流
reader_pdf = FileBasedDataReader("")
bytes_pdf = reader_pdf.read(pdf_file_path)

# 处理数据
dataset_pdf = PymuDocDataset(bytes_pdf)

# 判断是否支持ocr
if dataset_pdf.classify() == SupportedPdfParseMethod.OCR:
    # 支持OCR
    infer_result = dataset_pdf.apply(doc_analyze, ocr=True)
    pipe_result = infer_result.pipe_ocr_mode(writer_image)
else:
    # 不支持OCR
    infer_result = dataset_pdf.apply(doc_analyze, ocr=False)
    pipe_result = infer_result.pipe_txt_mode(writer_image)

# 在每一页上都使用模型解析文本
infer_result.draw_model(pdf_file_path)

# 获取模型处理后的结果
model_inference_result = infer_result.get_infer_res()
print(model_inference_result)

# 为pdf生成含有颜色标注布局的pdf文件
pipe_result.draw_layout(f"{pdf_file_path_without_suff}_layout.pdf")

# 为pdf生成含有颜色标注文本行的pdf文件
pipe_result.draw_span(f"{pdf_file_path_without_suff}_spans.pdf")

# 获取markdown的内容
markdown_content = pipe_result.get_markdown(image_dir)
print(markdown_content)

# 保存markdown文件
# pipe_result.dump_md(writer_markdown, f"{pdf_file_path_without_suff}.md", image_dir)
pipe_result.dump_md(writer_markdown, f"{pdf_file_path_without_suff}.md", image_dir)

# json文本列表
# 数据类型包括type、text、text_level、page_idx、img_path等
content_list_content = pipe_result.get_content_list(image_dir)
print(content_list_content)

# 保存json文本列表
pipe_result.dump_content_list(writer_markdown, f"{pdf_file_path_without_suff}_content_list.json", image_dir)

# 获取含有位置信息的json文本
middle_json_content = pipe_result.get_middle_json()

# 保存含有位置信息的json文本
pipe_result.dump_middle_json(writer_markdown, f'{pdf_file_path_without_suff}_middle.json')
MinerU教程第二弹丨MinerU 本地部署保姆级“喂饭”教程 本文为MinerU的本地部署指南,MinerU是一款由上海人工智能实验室OpenDataLab团队开发的开源PDF转Markdown工具,适用于RAG、LLM语料准备等场景。文章详细介绍了MinerU的功能特性,包括文档处理、格式转换和运行环境支持。接着,提供了系统要求和基础环境配置的说明,并逐步指导用户完成Conda环境的创建、模型文件的下载以及GPU加速的配置。此外,文章还涵盖了功能测试、批量PDF转换、本地API服务的搭建和卸载MinerU的步骤。对于不熟悉代码或硬件条件有限的用户,推荐使用官方提供的 阅读详情

相关推荐

MinerU文档转换本地部署经验分享

执行scripts下的的py文件,这里有个注意事项!如果不翻墙执行py文件的话大概率会连接超时,因为它要去下载模型到本地,我提供两种方式,第一种翻墙的,第二种不翻墙用镜像的。要用cuda加速的话就把magic-pdf.json文件里的device-mode参数改为cuda就行了,再执行demo也是一样的结果。官方给的demo里面要安装很多依赖。顺序最好就按照我这个来,从上到下来,有些依赖会依赖上一个,吐了。克隆到本地,随便一个目录都行这里我克隆到/home/void/software下,你们替换成自己的。

weixin_46104534的博客 4414

[python]MinerU的python接口使用例子

参考官方例子:mineru.readthedocs.io/en/latest/user_guide/quick_start/to_markdown.html。

FL1623863129的博客 1751

MinerU高级玩法:用Python API批量处理PDF文档(含表格/公式提取)

本文深入探讨了如何利用MinerU的Python API实现PDF文档的批量自动化处理,特别是针对复杂表格和数学公式的精准提取。文章详细解析了pipeline与vlm两种后端引擎的选择策略、显存优化配置以及企业级集成方案,帮助开发者构建高效、稳健的文档处理流水线,大幅提升信息提取效率。

blue的专栏 749

MinerU项目部署遇到的问题及在Python中的调用

项目地址:https://github.com/opendatalab/MinerU/blob/master/README_zh-CN.md之前在部署过程中遇到了版本冲突等各种各样的问题,后面重新严格按照官方文档的要求来部署,基本没有什么问题了。

suzu2401的博客 1561

MinerU安装指南:从源码到验证的完整流程

本文详细介绍了MinerU文档转换工具的安装流程,从源码获取、依赖安装到验证步骤,提供了完整的安装指南和常见问题解决方案。特别适合技术写作者和开发者快速部署这款高效的文档转换工具,提升工作效率。

weixin_29243279的博客 544

MinerU的安装

MinerU是一款将PDF转化为机器可读格式的工具(如markdown、json),可以很方便地抽取为任意格式,本文对MinerU的安装进行说明。

runfarther的专栏 1274

21. PDF文件转换成Markdown格式 ❀ 老梅子学AI

随着M5 Max Studio设备的到位,以及本地大模型成功安装与使用,一个创建本地知识库的念头油然而生,然而有些PDF文档长达5000页,需要将这么大的PDF文档清洗、切片,转化成知识库能识别的Markdown格式,却也不是一个小工程。

防火墙技术专栏 269

Windows系统下MinerU的CUDA加速配置指南

MinerU是一款高效的文档解析工具,支持通过CUDA加速显著提升处理速度。本指南详细说明如何在Windows系统中配置CUDA环境,并启用MinerU的GPU加速功能,帮助用户充分利用NVIDIA显卡的计算能力,优化复杂文档的解析效率。

斯人若彩虹,遇上方知有! 2436

MinerU 命令行工具完全指南:mineru、mineru-api、mineru-gradio 与 mineru-router 参数、环境变量与编排机制

本文基于 MinerU 仓库中的中文文档 [命令行工具使用说明](https://link.gitcode.com/i/42ba4f0840059dd5cf8f1d9e6264098d) 展开,系统讲解 MinerU 提供的四套命令行入口——解析客户端 `mineru`、FastAPI 服务 `mineru-api`、Web 界面 `mineru-gradio` 和多 worker 路由服务 `m

gitblog_00547的博客 906

STM32G4系列数字LLC控制程序开发实战

本文详细介绍了基于STM32G4系列MCU的数字LLC控制程序开发全流程。从开发环境搭建、中断服务函数设计,到核心的电压环PID算法、Burst模式控制、状态机设计以及软启动优化,提供了完整的实战代码和关键参数调试经验,帮助开发者高效实现高性能数字电源控制。

weixin_29185493的博客 281

从医疗成像到工业检测:CMOS图像传感器NIR技术的最新应用案例解析

本文深入解析了CMOS图像传感器NIR技术在医疗成像和工业检测中的最新应用案例。通过提升量子效率至70%,NIR技术实现了血管可视化、材料缺陷检测等突破性进展,显著提高了医疗诊断精度和工业质检效率。文章还探讨了系统集成关键考量和前沿发展趋势。

weixin_30879169的博客 90

python版提取 PDF 的常用第三方库与工具

本文介绍了Python生态下处理PDF文档的高效工具组合。核心推荐PyMuPDF(文本提取最快)、pdfplumber(表格提取最优)和Camelot(复杂表格专项)三大库,并对比了其速度、精度等维度差异。

qq_63159036的博客 406

博途WinCC上位机避坑指南:从工控机选型到趋势图优化的完整流程

本文详细解析了博途WinCC上位机开发全流程,从工控机选型到趋势图优化的关键技巧。针对工业自动化场景,提供硬件配置指南、网络优化方案和性能提升策略,帮助工程师避开常见陷阱,实现稳定高效的HMI系统部署。特别强调PC Station与传统触摸屏的选型对比及SIMATIC NET配置优化。

pp12345的博客 278

【限时免费】 MinerU项目快速使用指南:从命令行到高级功能

MinerU项目快速使用指南:从命令行到高级功能 【免费下载链接】MinerU A high-quality tool for convert PDF to Markdown and JSON.一站式开源高质量数据提取工具,将PDF转换成Markdown和JSON格式。 ...

gitblog_00407的博客 2067

从入门到精通:MATEKH743 飞控全解析——MAVLink 接口软/硬件对接实战

MATEKH743飞控是基于STM32H743微控制器的无人机核心控制系统,具备强大计算能力和丰富外设接口。该飞控采用双核架构,集成高性能IMU、气压计等传感器,支持多种开源固件(Betaflight/INAV/ArduPilot),适用于FPV穿越机、固定翼及工业无人机。相比PX4等飞控,MATEKH743在性价比和DIY友好度上优势明显,同时支持MAVLink协议实现设备通信。未来发展方向包括集成更高精度传感器、优化电源管理以及拓展工业应用场景,持续推动无人机技术创新。

bother3000的博客 2284

Codex 命令行高效操作指南

本文详细介绍了Codex命令行工具的高效使用方法,包括安装配置、核心参数解析和实战技巧。通过`codex complete`、`codex explain`等指令,开发者可以快速生成代码、调试错误和重构项目,显著提升开发效率。特别推荐使用`--temperature`和`--max-tokens`参数优化生成结果。

weixin_29201313的博客 531

MinerU实战指南:从安装到高级应用

MinerU实战指南:从安装到高级应用 【免费下载链接】MinerU A high-quality tool for convert PDF to Markdown and JSON.一站式开源高质量数据提取工具,将PDF转换成Markdown和JSON格式。 ...

gitblog_00560的博客 1631

BACnet/IP BBMD跨网段通信深度解析与最佳实践

本文介绍了在BACnet/IP网络中通过BBMD实现跨子网设备通信的关键配置方法。重点阐述了广播分发表(BDT)中掩码设置的重要性:使用子网掩码(255.255.255.0)会导致路由器拦截广播消息,而必须采用主机掩码(255.255.255.255)才能启用单播隧道机制,使BACnet广播消息封装为可路由的单播UDP包。文章详细说明了BDT条目的正确配置格式、BIP广播地址的作用,并提供了验证步骤,强调在跨网段场景中,正确设置掩码是确保设备发现和通信成功的关键因素。

零一架构师的专栏 1536

python使用mineru解析pdf等格式的文档

3、使用代码批量处理文档。

heming20122012的专栏 103

从零到一:Ubuntu22.04下VSCode与中文输入法的深度整合指南

本文详细介绍了在Ubuntu22.04系统中如何深度整合VSCode与中文输入法,包括环境准备、安装方案对比、输入法配置及常见问题解决方案。通过fcitx框架优化中文输入体验,提供从基础设置到高级调试的全方位指南,帮助开发者提升在Linux环境下的开发效率。

weixin_29158047的博客 478

【硬件的单元测试 UT 3】PCIe 3.0及信号完整性测试方法

PCIe标准自从推出以来,1代和2代标准已经在PC和Server上逐渐普及,用于满足高速显卡、高速存储设备对于高速数据传输的要求。出于支持更高总线数据吞吐率的目的,PCI-SIG组织在2010年制定了PCIe 3.0,即PCIe 3代的规范,数据速率达到8Gbps。

qq_43416206的博客 1415

MinerU部署使用

Ubuntu中MinerU部署使用,用来PDF转Markdown

weixin_49103875的博客 1537

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

终极指南:MinerU快速上手,免费PDF转Markdown神器

你是否正在寻找一款强大、免费的文档解析工具,能够将PDF、Word、Excel、PPT等文件高质量地转换为Markdown和JSON格式?MinerU正是你需要的解决方案。作为一款开源的高质量数据提取工具,MinerU不仅支持多种文档格式,还提供OCR识别、表格提取、公式转换等高级功能,完全免费且易于使用。 ## 🔥 MinerU核心价值:为什么选择它? MinerU不仅仅是一个简单的文档转

gitblog_00638的博客 1062

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Docker使用MinerU

MinerU是一款将PDF转化为机器可读格式的工具(如markdown、json),可以很方便地抽取为任意格式。效果不错,但是有点慢。

make_progress的博客 586

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

MinerU的安装与使用教程

MinerU的安装与使用教程 【免费下载链接】MinerU A high-quality tool for convert PDF to Markdown and JSON.一站式开源高质量数据提取工具,将PDF转换成Markdown和JSON格式。 ...

gitblog_01410的博客 1051

MinerU实战指南:从安装到部署完整教程

还在为PDF文档的结构化解析而烦恼吗?面对复杂的学术论文、技术文档或商业报告,传统OCR工具往往无法准确识别版面结构、表格内容和数学公式,导致信息提取不完整、格式混乱等问题。 MinerU作为一款开源的高质量PDF解析工具,专门解决这些痛点。本文将为您提供从零开始的完整安装部署指南,帮助您快速掌握这一强大工具。 ## 核心功能全景图 ```mermaid graph TD A[Min...

gitblog_00430的博客 2462
上一篇: Docker安装分布式vLLM
下一篇: Docker安装嵌入框架Text Embeddings Inference (TEI)
MasonYyp
博客等级 码龄9年 301粉丝 297原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值