MinerU 调用方式
·
简介
MinerU是一个"智能PDF阅读器"。
它能帮你:
-
📖 把PDF文档变成电脑能懂的格式
-
📊 自动提取表格、公式、图片
-
🔍 支持多种语言(中文、英文、日文等)
-
🚀 处理速度很快,准确率很高
调用方式
网页端使用
- 登录MinerU官网 MinerU 在线文档解析
- 上传本地文件进行解析

本地代码🔗云服务
- 到Mineru官网创建token,代码使用到(官网:mineru.net)
- 上传pdf到mineru服务方法
- 获取mineru转换之后文件,返回文件地址,根据地址下载文件
# 定义函数:使用 Mineru API 上传文件 def mineru_upload_file_demo(): # 1. 导入需要的库 import requests # 发送 HTTP 请求 # 2. 从环境变量读取 Mineru 的 Token(身份认证) token = "eyJ0eXBlIjoiSldUIiwiYWxnIjoiSFM1MTIifQg" # 3. Mineru 官方接口地址:申请文件上传的预签名 URL url = "https://mineru.net/api/v4/file-urls/batch" # 4. 请求头:携带 Token 认证 + JSON 格式 header = { "Content-Type": "application/json", "Authorization": f"Bearer {token}" # 身份凭证 } # 5. 上传参数:文件名、自定义ID、使用的模型版本 data = { "files": [ {"name": "demo.pdf", "data_id": "abcd"} # 文件名 + 自定义ID ], "model_version": "vlm" # 模型版本:vlm = 多模态解析 } # 6. 本地要上传的 PDF 文件路径 file_path = ["./sample.pdf"] # 7. 异常捕获:防止网络/权限错误导致崩溃 try: # 第一步:请求上传地址 response = requests.post(url, headers=header, json=data) # 判断请求是否成功 if response.status_code == 200: result = response.json() # 转成 JSON print('上传成功:{}'.format(result)) # 从返回结果中拿到 batch_id batch_id = result['data']['batch_id'] # 判断接口返回码是否为 0(成功) if result["code"] == 0: batch_id = result["data"]["batch_id"] urls = result["data"]["file_urls"] # 拿到上传用的 URL print('batch_id:{},urls:{}'.format(batch_id, urls)) # 第二步:上传文件到 URL for i in range(0, len(urls)): with open(file_path[i], 'rb') as f: # 以二进制读文件 # PUT 方式上传 res_upload = requests.put(urls[i], data=f) if res_upload.status_code == 200: print(f"{urls[i]} 上传成功") else: print(f"{urls[i]} 上传失败") else: # 接口返回失败 print('apply upload url failed,reason:{}'.format(result.msg)) return batch_id else: # HTTP 请求失败 print(f"请求失败,状态码:{response.status_code},响应内容:{response.text}") except Exception as err: # 捕获所有异常 print(err) # batch_id = mineru_upload_file_demo() # print(batch_id) # 定义函数:根据 batch_id 查询 Mineru 文档解析结果 def mineru_check_result_demo(batch_id): # 导入依赖库 import requests # 发送网络请求 import time # 用于等待、延时 # 1. 从环境变量获取 Mineru 的身份令牌(必须) token = "eyJ0eXBlIjoiSldUIiwiYWxnIjoiSFM1MTIifQg" # 2. 拼接查询结果的 API 地址,把 batch_id 填进去 url = f"https://mineru.net/api/v4/extract-results/batch/{batch_id}" # 3. 请求头:身份认证 + JSON格式 header = { "Content-Type": "application/json", "Authorization": f"Bearer {token}" # 身份凭证 } # 4. 第一次发送请求,查询状态 res = requests.get(url, headers=header) # 5. 循环检查:如果状态不是 done(完成),就一直等 while res.json()["data"]['extract_result'][0]['state'] != 'done': # 打印提示:正在解析中 print('当前状态为 running,等待3秒后重试') # 等待 3 秒再查 time.sleep(3) # 再次查询接口 res = requests.get(url, headers=header) # 打印状态信息,方便看进度 print(res.status_code) print(res.json()["data"]['extract_result'][0]['state'], end="\n\n=========\n\n") # 6. 跳出循环 = 解析完成! print('提取结果为:', res.json()["data"]['extract_result'][0]['full_zip_url']) mineru_check_result_demo("62310441-149e-41c9-b956-8896b46ed28d")本地部署使用(推荐)
本地部署参考博客:
import json
import os
import subprocess
from pathlib import Path
from typing import Tuple
# 方法2:使用MinerU工具把pdf转换md
# 命令行方式调用本地转换
def execute_mineru(self,import_file_path:Path,file_dir:Path):
self.log_step("执行mineru转换过程.....")
# 命令行方式调用本地转换
# 设置环境变量
os.environ["HF_ENDPOINT"] = "https://hf-mirror.com"
os.environ["HF_HOME"]= r"D:\dev"
os.environ["MODELSCOPE_CACHE"] = r"D:\dev"
# 构建执行客户端命令
# mineru -p "D:\6W100-整本手册.pdf" -o "D:\mineru" --source local --device cpu --backend pipeline --batch-size 1 --no-auto-download
cmd = [
"mineru","-p",
str(import_file_path),
"-o",str(file_dir),
"--source","local"
"--device","cpu",
"--backend","pipeline",
"--batch-size","1",
"--no-auto-download"
]
# 执行cmd构建命令,创建子进程执行
proc = subprocess.Popen(
args=cmd, # 执行命令构建列表
stdout=subprocess.PIPE, # 正常执行过程(日志)
stderr=subprocess.STDOUT, # 错误信息
errors="replace", # ignore replace
text=True, # 文本形式
bufsize=1
)
# 输出stdout=subprocess.PIPE,每行日志
for line in proc.stdout:
self.log_step(f"执行MinerU日志: {line}")
# 等待子进程操作完成, 返回0成功
process_code = proc.wait()
if process_code == 0:
self.logger.info("执行mineru成功了!!!")
else:
self.logger.error("执行mineru失败了...")
return process_code
更多推荐




所有评论(0)