统信UOS容器下安装pdf转md模型MinerU实操
文章目录
前言
MinerU是一款将PDF转化为机器可读格式的工具(如markdown、json),可以很方便地抽取为任意格式。
本文记录在统信UOS 1050e容器中集成MinerU的详细过程,所有操作均在root下完成。
关于如何在内网环境安装docker,可参考统信UOS下安装快速安装Docker实操。
一、创建容器环境
以统信UOS 1050e操作系统为基础镜像生成容器,将宿主机的/mnt/tmp作为挂载点,5020作为对外服务的端口。
docker run -v /mnt/tmp:/tmp -p 5020:5020 -it uniontechos-server-20-1050e:latest /bin/bash
说明:
- tmp挂载点主要是为了方便宿主机和容器间进行文件上传下载,避免频繁的文件拷贝,如果嫌烦也可以不设置。
- 统信UOS 1050e容器有个设置,如果5分钟内无交互会自动停止容器,如要取消此限制,进入容器后修改/etc/bashrc中的TMOUT参数为0即可。
二、安装MinerU
1. 安装python
参考之前的文章《统信UOS下源码编译安装Python实操》安装Python3.10。
anaconda安装过程中会把python3.7作为python的默认版本,为确保python3.10作为默认版本,需将python的路径加入环境变量。
echo 'export PATH=$PATH:/usr/local/python3.10/bin' >> /etc/bashrc
source /etc/bashrc
2. 安装依赖
yum install mesa-libGL
rm -rf /usr/bin/python3
ln -s /usr/bin/python3.7 /usr/bin/python3
yum install -y wget
rm -rf /usr/bin/python3
ln -s /usr/local/python3.10/bin/python3.10 /usr/bin/python3
python --version // 确保输出为Python3.10.x
python3 --version // 确保输出为Python3.10.x
说明:如果按照《统信UOS下源码编译安装Python实操》安装Python3.10,可能会出现yum无法使用的情况,此时需要将python3替换回操作系统默认的python版本,然后再安装wget,安装完成后再将python3的默认版本修改回python3.10。
3. 安装anaconda
下载地址:https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/
从中选择合适的版本进行下载,本文下载的是Anaconda3-5.3.1-Linux-x86_64.sh。
将下载的安装包放在/mnt/tmp目录下,自动映射至容器的/tmp目录中。
cd /tmp
./Anaconda3-5.3.1-Linux-x86_64.sh
ln -s /root/anaconda3/bin/conda /usr/bin/conda
说明:
- 安装过程中遇到yes或no的选择,一律选择yes,其他一律默认敲回车或空格。
4. 安装magic-pdf
conda create -n mineru 'python>=3.10' -y
echo 'conda activate mineru' >> /root/.bashrc
source /root/.bashrc
pip install -U "magic-pdf[full]" -i https://mirrors.aliyun.com/pypi/simple
说明:因为将激活虚拟环境的命令放入了.bashrc,所以每次进入容器都会自动激活虚拟环境。
5. 下载模型权重文件
pip install modelscope -i https://pypi.tuna.tsinghua.edu.cn/simple
wget https://gcore.jsdelivr.net/gh/opendatalab/MinerU@master/scripts/download_models.py -O download_models.py
python download_models.py
三、运行与验证
1. 服务器本地调用
magic-pdf -p {
some_pdf} -o {
some_output_dir} -m auto
2. 通过http提供服务
(1)接口代码
使用DeepSeek编写了以下程序,实现通过http接口调用。
import os
from typing import Union, BinaryIO
from fastapi import FastAPI, UploadFile, File, HTTPException, Query
from fastapi.responses import StreamingResponse, FileResponse
from pydantic import BaseModel
import io
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
app = FastAPI(title="PDF to Markdown Converter API",
description="API for converting PDF files to markdown format using mineru")
class FilePathRequest(BaseModel):
file_path: str
class PathConversionResponse(BaseModel):
status: str
markdown_path: str
message: Union[str, None] = None
class PDFToMarkdownConverter:
def __init__(self, output_dir: str = "/tmp/output"):
"""
初始化转换器
Args:
output_dir: 输出目录,默认为"output"
"""
self.output_dir =</