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

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

快速解锁GPU性能,提升文档解析效率


1、简介

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


2、前提条件

在开始配置前,请确保满足以下条件:

硬件要求

NVIDIA显卡(支持CUDA计算能力≥5.0,推荐RTX 20/30/40系列)。
显卡驱动版本≥522.06(通过nvidia-smi命令查看)。

软件要求

Windows 10/11 64位系统。
Python 3.8或更高版本(建议使用Anaconda管理环境)。
CUDA Toolkit 11.7或11.8(与PyTorch版本兼容)。
MinerU最新代码(GitHub仓库克隆)。


3、配置步骤

3.1. 安装CUDA Toolkit

下载CUDA Toolkit

访问NVIDIA CUDA下载页面,选择与PyTorch兼容的版本(如11.7)。
运行安装程序,按默认选项完成安装。

验证CUDA安装

打开命令提示符,输入以下命令:

nvcc --version  

若显示CUDA版本(如11.7),则安装成功。


3.2. 配置Python环境

创建虚拟环境

conda create -n mineru_cuda python=3.8  
conda activate mineru_cuda  

安装PyTorch(支持CUDA)

根据CUDA版本选择PyTorch安装命令:

# CUDA 11.7  
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu117  

验证PyTorch的CUDA支持

运行Python解释器,执行以下代码:

import torch

# 检查CUDA是否可用
if torch.cuda.is_available():
    # 打印可用的CUDA设备数量
    print(f"Number of CUDA devices: {
              torch.cuda.device_count()}")
    # 打印每个设备的详细信息
    for i in range(torch.cuda.device_count()):
        print(f"Device {
              i}: {
              torch.cuda.get_device_properties(i)}")
else:
    print("CUDA is not available.")

4、Mineru环境准备

4.1、安装所需的库

pip install magic-pdf
pip install ultralytics
pip install doclayout_yolo
pip install rapid_table
pip install ftfy
pip install pyclipper
pip install omegaconf

如果还有需要的库未安装,同样的方法操作即可,还有就是本文是在python环境下直接安装的,未安装anaconda,如果是采用conda环境,道理是一样的;

conda create -n mineru 'python>=3.10' -y
conda activate mineru

4.2、下载模型权重

!pip install huggingface_hub
!wget https://github.com/opendatalab/MinerU/raw/master/scripts/download_models_hf.py -O download_models_hf.py
!python download_models_hf.py

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

windows用户目录为 “C:/Users/用户名”
linux用户目录为”root”

4.3、demo测试

方法一:

 wget https://github.com/opendatalab/MinerU/raw/master/demo/pdfs/small_ocr.pdf -O small_ocr.pdf
 magic-pdf -p small_ocr.pdf -o ./output

方法二:api调用

import os
from magic_pdf.data.data_reader_writer import FileBasedDataWriter
from magic_pdf.model.doc_analyze_by_custom_model import doc_analyze
from magic_pdf.data.read_api import read_local_images

def process_images(in_dir, md_dir, json_dir):
    # 创建输出目录
    os.makedirs(md_dir, exist_ok=True)
    os.makedirs(json_dir, exist_ok=True)

    # 初始化数据写入器
    md_writer = FileBasedDataWriter(md_dir)
    json_writer = FileBasedDataWriter(json_dir)

    # 遍历输入目录中的所有文件
    for filename in os.listdir(in_dir):
        if filename.lower().endswith(('.png', '.jpg', '.jpeg', '.bmp', '.gif')):
            input_file = os.path.join(in_dir, filename)
            input_file_name = os.path.splitext(os.path.basename(input_file))[0]
            print(f"Processing {
              input_file}...")

            # 创建数据集实例
            ds = read_local_images(input_file)[0]

            # 应用文档分析
            if ds is not None:
                ds.apply(doc_analyze, ocr=True).pipe_ocr_mode(md_writer).dump_md(md_writer, f"{
              input_file_name}.md", in_dir)

                # 获取中间 JSON
                middle_json_content = ds.apply(doc_analyze, ocr=True).pipe_ocr_mode(json_writer).get_middle_json()

                # 保存中间 JSON
                if middle_json_content:
                    ds.apply(doc_analyze, ocr=True).pipe_ocr_mode(json_writer).dump_middle_json(json_writer, f'{
              input_file_name}.json')
            else:
                print("Failed to read the image file.")

# 设置输入和输出目录
in_dir = "D:/content/识别测试集/公式"  # 替换为实际图像目录
md_dir = "D:/content/mineru/公式/markdown"  # 替换为Markdown输出目录
json_dir = "D:/content/mineru/公式/json"    # 替换为JSON输出目录

# 调用函数处理图像
process_images(in_dir, md_dir, json_dir)

具体的测试图像的结果就分别保存为不同格式markdown和json格式

4.4、magic-pdf.json

这个是magic-pdf.json自动下载的

{
            
    "bucket_info": {
            
        "bucket-name-1": [
            "ak",
            "sk",
            "endpoint"
        ],
        "bucket-name-2": [
            "ak",
            "sk",
            "endpoint"
        ]
    },
    # 模型下载保存地址,如果想用最新的模型,重复上一步的模型下载步骤即可
    "models-dir": "C:/Users/用户名/.cache/huggingface/hub/models--opendatalab--PDF-Extract-Kit-1.0/snapshots/14efd64068741c8e1d79d635dd236a80a9db66ba/models",
    "layoutreader-model-dir": "C:/Users/用户名/.cache/huggingface/hub/models--hantian--layoutreader/snapshots/641226775a0878b1014a96ad01b9642915136853",
    "device-mode": "cpu", # 可以用显卡cuda,最低要求6G显存
    "layout-config": {
            
        "model": "doclayout_yolo"
    },
    "formula-config": {
            
        "mfd_model": "yolo_v8_mfd",
        "mfr_model": "unimernet_small",
        "enable": true
    },
    "table-config": {
            
        "model": "rapid_table",
        "sub_model": "slanet_plus",
        "enable": true,
        "max_time": 400
    },
    "llm-aided-config": {
            
        "formula_aided": {
            
            "api_key": "your_api_key",
            "base_url": "https://dashscope.aliyuncs.com/compatible-mode/v1",
            "model": "qwen2.5-7b-instruct",
            "enable": false
        },
        "text_aided": {
            
            "api_key": "your_api_key",
            "base_url": "https://dashscope.aliyuncs.com/compatible-mode/v1",
            "model": "qwen2.5-7b-instruct",
            "enable": false
        },
        "title_aided": {
            
            "api_key": "your_api_key",
            "base_url": "https://dashscope.aliyuncs.com/compatible-mode/v1",
            "model": "qwen2.5-32b-instruct",
            "enable": false
        }
    },
    "config_version": "1.2.0"
}

注意:本文没有涉及cuda的安装配置过程,这部分可以参考其他博客。

© 版权声明
THE END
如果内容对您有所帮助,就支持一下吧!
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容