基于MinerU抽取pdf、docx、xlsx、pptx等文件的内容

发布时间:2026/9/9 6:48:12

基于MinerU抽取pdf、docx、xlsx、pptx等文件的内容
目录概要环境搭建模型配置代码实现小结概要之前在项目用过MinerU最近看到又更新了好多新功能所以抽空整理了下作为一个技术分享。MinerU是一个很强大的开源文件抽取工具感谢官方团队MinerU | 面向 Agent 和 RAG 的智能文档解析平台大家快去github打星https://github.com/opendatalab/mineru主要功能介绍摘抄的官方的详细去官网看吧MinerU — 专为 LLM · RAG · Agent 场景构建的高精度文档解析引擎将 PDF · DOCX · PPTX · XLSX · 图片 · 网页转为结构化 Markdown / JSON · VLMOCR 双引擎 · 109 种语言MCP Server · LangChain / Dify / FastGPT 原生集成 · 10 国产算力适配环境搭建名称版本python3.12.9mineru3.4.2uv0.11.27相关依赖requirements.txtaccelerate1.14.0 aiofiles25.1.0 annotated-doc0.0.4 annotated-types0.7.0 anyio4.14.1 av18.0.0 beautifulsoup44.15.0 certifi2026.6.17 charset-normalizer3.4.9 click8.4.2 cobble0.1.4 colorama0.4.6 colorlog6.10.1 distro1.9.0 et-xmlfile2.0.0 fast-langdetect0.2.5 fastapi0.139.0 fasttext-predict0.9.2.4 filelock3.29.7 flatbuffers25.12.19 fsspec2026.6.0 ftfy6.3.1 h110.16.0 hf-xet1.5.1 httpcore1.0.9 httpx0.28.1 httpx-retries0.6.0 huggingface-hub0.36.2 idna3.18 jinja23.1.6 jiter0.16.0 json-repair0.61.2 loguru0.7.3 lxml6.1.1 magika1.0.3 mammoth1.12.0 markdown-it-py4.2.0 markupsafe3.0.3 mdurl0.1.2 mineru3.4.2 mineru-vl-utils1.0.5 modelscope1.38.1 modelscope-hub0.1.7 mpmath1.3.0 networkx3.6.1 numpy2.5.1 onnxruntime1.27.0 openai2.44.0 opencv-python5.0.0.93 openpyxl3.1.5 packaging26.2 pdftext0.7.0 pillow12.3.0 protobuf7.35.1 psutil7.2.2 pyclipper1.4.0 pydantic2.13.4 pydantic-core2.46.4 pydantic-settings2.14.2 pygments2.20.0 pylatexenc2.10 pypdf6.14.2 pypdfium25.9.0 pypptx-with-oxml1.0.3 python-docx1.2.0 python-dotenv1.2.2 python-multipart0.0.32 pyyaml6.0.3 qwen-vl-utils0.0.8 regex2026.6.28 reportlab5.0.0 requests2.34.2 rich15.0.0 robust-downloader0.0.2 safetensors0.8.0 setuptools81.0.0 shapely2.1.2 shellingham1.5.4 six1.17.0 sniffio1.3.1 soupsieve2.8.4 starlette1.3.1 sympy1.14.0 tokenizers0.21.4 torch2.12.1 torchvision0.27.1 tqdm4.68.4 transformers4.52.4 typer0.26.8 typing-extensions4.16.0 typing-inspection0.4.2 urllib32.7.0 uvicorn0.50.2 wcwidth0.8.2 win32-setctime1.2.0 xlsxwriter3.2.9模型配置下载模型需要用到MinerU相关模型OpenDataLab--PDF-Extract-Kit-1.0和OpenDataLab--MinerU2.5-Pro-2605-1.2B可通过命令mineru-models-download -s modelscope下载相关模型默认会下载到C:\\Users\\Admin\\.cache\\modelscope\\models下可通过C:\\Users\\用户\\mineru.json去修改模型存放路径。此外如果是非GPU跑的话需要在mineru.json中添加参数device-mode: cpu。代码实现import os # 【关键】在导入 mineru 之前限制多进程数量防止内存爆炸 os.environ[MAX_WORKERS] 1 os.environ[MINERU_MIN_BATCH_INFERENCE_SIZE] 1 from pathlib import Path from loguru import logger from mineru.cli.common import do_parse from mineru.model.docx.docx_converter import DocxConverter from mineru.model.xlsx.xlsx_converter import XlsxConverter from mineru.model.pptx.pptx_converter import PptxConverter from mineru.cli.common import read_fn from mineru.backend.pipeline.pipeline_analyze import doc_analyze_streaming # 导入核心md转换模块和枚举类 from mineru.backend.pipeline.pipeline_middle_json_mkcontent import make_blocks_to_markdown from mineru.utils.enum_class import MakeMode def parse_pdf(pdf_path, output_dir): 抽取pdf文件的内容会将解析的内容输出到指定目录 包括.md、images、.json等文件 :param pdf_path: pdf文件路径 :param output_dir: 输出文件目录 :return: 无 try: do_parse( output_dir, [Path(pdf_path).stem], [read_fn(Path(pdf_path))], [ch], end_page_id10, backendpipeline ) except Exception as e: logger.exception(e) def parse_pdf_to_memory(pdf_path: str): 纯内存解析 PDF不生成任何本地文件只抽取其文本内容返回不包含表格图片等信息 :param pdf_path: pdf文件路径 :return: 纯文本内容list try: # 1. 读取 PDF 为字节流 pdf_bytes read_fn(Path(pdf_path)) # 2. 准备内存容器用于捕获解析结果 memory_results [] # 3. 严格按照源码定义的 4 个参数定义回调函数 def on_doc_ready(doc_index, model_list, middle_json, ocr_enable): if middle_json and pdf_info in middle_json: pdf_info_list middle_json[pdf_info] # 【核心修复点】pdf_info 是一个列表需要逐页遍历处理 for page_info in pdf_info_list: # 提取每一页的预处理块列表 preproc_blocks page_info.get(preproc_blocks, []) if preproc_blocks: content_list make_blocks_to_markdown( preproc_blocks, MakeMode.CONTENT_LIST, img_buket_path ) memory_results.append(content_list) # 4. 调用 doc_analyze_streaming # 使用 MemoryWriter 替代 FileBasedDataWriter实现图片纯内存处理 doc_analyze_streaming( pdf_bytes_list[pdf_bytes], image_writer_list[None], # 关键使用内存写入器拦截图片 lang_list[ch], on_doc_readyon_doc_ready, # 关键传入回调函数 parse_methodauto, formula_enableTrue, table_enableTrue ) # 5. 将按页收集的结果合并为一个完整的列表 full_content_list [] for page_content in memory_results: full_content_list.extend(page_content) return full_content_list except Exception as e: logger.exception(e) return None def parse_docx(docx_path): 抽取docx文件的内容返回内容list :param docx_path: docx文件路径 :return: docx文件内容 with open(docx_path, rb) as fh: converter DocxConverter() converter.convert(fh) pages converter.pages print(pages) return pages def parse_xlsx(xlsx_path): 抽取xlsx文件的内容返回内容list :param xlsx_path: xlsx文件路径 :return: xlsx文件内容 with open(xlsx_path, rb) as fh: converter XlsxConverter() converter.convert(fh) pages converter.pages print(pages) return pages def parse_pptx(pptx_path): 抽取pptx文件的内容返回内容list :param pptx_path: pptx文件路径 :return: pptx文件内容 with open(pptx_path, rb) as fh: converter PptxConverter() converter.convert(fh) pages converter.pages print(pages) return pages if __name__ __main__: # 解析pdf 文件 _pdf_path D:/workpython/uv-mineru-demo/data/001.pdf _output_dir ./output parse_pdf(_pdf_path, _output_dir) # 只需要获取解析内容 parse_pdf_to_memory(_pdf_path) # 解析doc文件 _docx_path D:/workpython/uv-mineru-demo/data/001.docx parse_docx(_docx_path) # 解析excel文件 _xlsx_path D:/workpython/uv-mineru-demo/data/001.xlsx parse_xlsx(_xlsx_path ) # 解析pptx文件 _pptx_path D:/workpython/uv-mineru-demo/data/001.pptx parse_pptx(_pptx_path)小结总体抽取出的内容效果还是非常不错的特别是抽取pdf文档能把相关的内容存储成md文件之前项目中用于前端展示与原文件基本一致扫描或者嵌入的图片也能正确抽取出来推荐大家快去试试吧

相关新闻

Visual Studio 五月更新 —— 计划、评审、优化

Visual Studio 五月更新 —— 计划、评审、优化

2026/9/3 2:00:02

Plan 智能体,动工前先做好计划   刚着手编写代码,这时对着这三个文件才意识到,应该先计划好再开始的。全新的 Plan 智能体 正是为解决这类场景打造。您无需仓促直接修改代码,可借助 Copilot 协同制定可落地的计划,全…

raylib-games实战教程:Global Game Jam获奖游戏开发全流程

raylib-games实战教程:Global Game Jam获奖游戏开发全流程

2026/8/24 21:51:35

raylib-games实战教程:Global Game Jam获奖游戏开发全流程 【免费下载链接】raylib-games A collection of small sample games made with raylib 项目地址: https://gitcode.com/gh_mirrors/ra/raylib-games 想要在48小时内完成一款完整的游戏开发吗&#x…

ThriveX-Blog高可用架构:如何支撑百万级访问量

ThriveX-Blog高可用架构:如何支撑百万级访问量

2026/8/25 23:00:29

ThriveX-Blog高可用架构:如何支撑百万级访问量 【免费下载链接】ThriveX-Blog 🎉 ThriveX 是一个年轻、高颜值、全开源、永不收费的现代化博客管理系统。它采用前后端分离开发模式,是一个 NextJS Spring Boot 的产物 项目地址: https://gi…

YOLO11n:面向嵌入式部署的轻量级目标检测工程方案

YOLO11n:面向嵌入式部署的轻量级目标检测工程方案

2026/9/9 6:43:55

1. 项目概述:为什么“YOLO11n”不是官方版本,但值得你花时间深挖最近在几个技术群和GitHub issue区反复看到“YOLO11n”这个关键词——有人发训练日志截图带yolo11n.pt权重,有人问“ultralytics支持yolo11n吗”,还有人贴出model …

60文件级跨文件改造实测:七款AI编程助手谁更能扛事?

60文件级跨文件改造实测:七款AI编程助手谁更能扛事?

2026/9/9 6:43:55

前阵子接了个订单系统的老项目改造,需求本身不复杂:把订单状态从一包散落的整数常量改成统一枚举,再套一层状态机做校验。听起来就是常规重构,可真动手才发现,光是状态转换相关的代码就铺在六十多个文件里——核心实体…

Linux CentOS离线安装stress压力测试工具完整指南

Linux CentOS离线安装stress压力测试工具完整指南

2026/9/9 6:43:55

简介:面向内网隔离环境下的CentOS运维与性能测试人员,这份gz格式的离线安装包将stress-1.0.4压力测试工具及相关依赖集中打包,并包含sar命令的安装组件,解决了无外网时无法通过yum直接安装性能压测工具的问题,适合具备…

n8n工作流实战:让每日AI积分不浪费,自动调用API

n8n工作流实战:让每日AI积分不浪费,自动调用API

2026/9/9 6:43:55

每天早上醒来第一件事,先看看即梦账户里又到账了多少积分;到了月底再瞄一眼剩余数字,心里咯噔一下:"又浪费了一堆。"这是很多把即梦当日常创作工具的人的真实状态。于是"即梦每日积分不浪费,转换成 API…

STM32驱动DHT11温湿度传感器:单总线时序与延时函数深度解析

STM32驱动DHT11温湿度传感器:单总线时序与延时函数深度解析

2026/9/9 6:43:54

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

嵌入式洗碗机16套选购指南:西门子黑魔镜5.0性价比解析

嵌入式洗碗机16套选购指南:西门子黑魔镜5.0性价比解析

2026/9/9 6:33:54

装修做到后半段,厨电选型往往是最容易反复纠结的环节。尤其是嵌入式洗碗机,既要看容量、洗净、烘干、储存,又要考虑橱柜尺寸、水电点位、安装服务和后期使用成本。最近很多人把目光放在“西门子黑魔镜 5.0 系列 16 套”上,其中以 …

中国人民大学杨琳团队《Nature Communications》 | 全球潮汐湿地土壤有机碳时空格局与环境驱动:一项2009-2020年的全球评估

中国人民大学杨琳团队《Nature Communications》 | 全球潮汐湿地土壤有机碳时空格局与环境驱动:一项2009-2020年的全球评估

2026/9/9 1:14:29

本文首发于“生态学者”!从“湿地面积”到“土壤碳密度”:为什么需要重新认识潮汐湿地蓝碳变化?潮汐湿地位于陆地与海洋的交汇地带,包括红树林、盐沼和潮滩,是全球重要的蓝碳生态系统。其土壤能够长期储存大量有机碳&a…

adb抓包

adb抓包

2026/9/8 4:55:53

前言 本文介绍如何通过 tcpdump 在 Android 手机上抓取网络数据包,并在电脑端使用 Wireshark 进行分析。适用于需要排查 App 网络请求、分析接口调用或调试网络问题的开发与测试场景。1. 手机要有 root 权限2. 下载 tcpdump3. adb push C:\Users\zhangkuixun\Downlo…

大模型推理镜像极简瘦身:从 25GB 巨无霸到 3GB 精简镜像实战

大模型推理镜像极简瘦身:从 25GB 巨无霸到 3GB 精简镜像实战

2026/9/8 22:37:26

大模型推理镜像极简瘦身:从 25GB 巨无霸到 3GB 精简镜像实战 在云原生基础设施中,容器镜像体积直接决定了服务的部署速度与弹性扩容敏捷度。对于传统的 Go / Java 微服务,镜像体积通常被严格控制在 50MB 到 200MB 以内,拉取镜像只…

扩散模型图像恢复实战:从DDPM原理到PyQt5可视化系统

扩散模型图像恢复实战:从DDPM原理到PyQt5可视化系统

2026/9/9 0:03:36

简介:面向毕业设计场景的PyQt5扩散模型图像恢复项目,提供完整Python源码与项目说明,适合图像处理、深度学习方向的高年级本科生与研究生参考。项目在模块设计上覆盖图像处理、扩散模型、参数配置、用户界面与结果评估五部分,具体涉…

开关电源环路裕量测试实战:相位裕量与增益裕量详解

开关电源环路裕量测试实战:相位裕量与增益裕量详解

2026/9/9 0:03:36

1. 项目概述:为什么环路裕量测试是电子工程师绕不开的“体检项目”“从零开始的电子工程师生活(6)——环路裕量测试”,这个标题一出来,老电源工程师可能已经下意识摸了摸示波器探头,新同事则大概率在想&…

定时插座芯片怎么选?专用定时IC与单片机MCU选型对比

定时插座芯片怎么选?专用定时IC与单片机MCU选型对比

2026/9/9 0:03:36

拆开市面上不同价位的定时插座,你会发现一个有意思的现象:有的里面躺着一颗黑色的软封装芯片,丝印都看不清;有的则是一块小小的蓝色或绿色PCB,上面赫然印着STM8或者STC的字样。同样叫"定时插座",…

远程协作的工作台整理

远程协作的工作台整理

2026/9/8 4:23:39

远程协作的工作台整理远程协作的核心不是再加一个工具,而是让交接信息足够完整。异步任务要写明目标、输入位置、完成标准和需要决策的人。 工作台的最小配置 将日程、待办、代码和沟通入口收拢到少数固定位置;通知按紧急程度分层。工作台不需要模仿办公…

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

2026/9/8 3:19:39

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

2026/9/8 4:00:23

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…