反转基因福娃 发表于 3 天前

摆设mineru docker流程以及踩的坑

linux摆设mineru docker流程以及踩的坑

1.摆设流程(基本是按照Mineru的web_api docker摆设文档一步步走的)

拉取项目源码

git clone https://github.com/opendatalab/MinerU.git
cd MinerU/projects/web_api

在build之前做一些修改工作:
1)修改download_models.py,直接替换
#!/usr/bin/env python
from modelscope import snapshot_download

if __name__ == "__main__":

    mineru_patterns = [
      # "models/Layout/LayoutLMv3/*",
      "models/Layout/YOLO/*",
      "models/MFD/YOLO/*",
      "models/MFR/unimernet_hf_small_2503/*",
      "models/OCR/paddleocr_torch/*",
      # "models/TabRec/TableMaster/*",
      # "models/TabRec/StructEqTable/*",
    ]
    model_dir = snapshot_download(
      "opendatalab/PDF-Extract-Kit-1.0",
      allow_patterns=mineru_patterns,
      local_dir="/opt/",
    )

    layoutreader_pattern = [
      "*.json",
      "*.safetensors",
    ]
    layoutreader_model_dir = snapshot_download(
      "ppaanngggg/layoutreader",
      allow_patterns=layoutreader_pattern,
      local_dir="/opt/layoutreader/",
    )

    model_dir = model_dir + "/models"
    print(f"model_dir is: {model_dir}")
    print(f"layoutreader_model_dir is: {layoutreader_model_dir}")

2)在requirements.txt 中加一行modelscope,用于模子下载。
此处有一个坑,很有可能你的layoutreader模子下不完,推测缘故原由是比力大,几百M,或者别的缘故原由导致docker内layoutreader文件夹是空的,这时候可以在docker外运行download_models.py,注意设置模子保存位置,改两行代码,再通过mv命令移动到docker内的/opt/layoutreader/目次下(这是后话)
from modelscope import snapshot_download
layoutreader_model_dir = snapshot_download('ppaanngggg/layoutreader', cache_dir = "your model path")
3)如果想在docker外方便查看mineru的结果,在app.py中的output的路径进行个人的设置:
async def file_parse(
    file: UploadFile = None,
    file_path: str = None,
    parse_method: str = "auto",
    is_json_md_dump: bool = True,
    output_dir: str = "workspace/MinerU/projects/web_api/output",# 这里进行修改
    return_layout: bool = True,
    return_info: bool = True,
    return_content_list: bool = True,
    return_images: bool = True,
):
4)在build这一步,如果docker没有更改过配置源,90%会报错,这里给一个临时的解决办法,在Dockerfile里第一行改成(这里以我当时拉取的项目版本为例)
FROM swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/python:3.10-slim-bookworm AS base
5)完成以上步调就可以运行命令:
docker build -t mineru-api .
接下来要做的就是等待,如果中心报错,80%都是由于docker源的题目,解决不掉就诚实配源吧
测试摆设的api

在docker摆设完成后,实行docker ps 命令,结果如下则证明摆设成功。
https://i-blog.csdnimg.cn/direct/9c2dade82fc141e6a22bc558fb13dafd.png
打开http://localhost:8000/提示{“detail”:“Not Found”},别急,后边加个docs,返回页面:
   http://localhost:8000/docs
https://i-blog.csdnimg.cn/direct/827016557fba4f2e875dcd0367b578b1.png
说明大功告成,可以点开手动上传测试文件进行测试,运行完后可以在前面设置的output文件夹下看到结果,结果结构如下:
https://i-blog.csdnimg.cn/direct/94da0d98762a4a79a7c961ece7069158.png
一般来说都是对.md文件进行后续处理处罚
接下来给一段长途调用mineru_api的代码:
import requests
import json
# API配置
url = "http://localhost:8888/file_parse"
params = {
    "parse_method": "auto",
    "is_json_md_dump": "true",
    "return_layout": "true",
    "return_info": "true",
    "return_content_list": "true",
    "return_images": "true"
}

# 文件配置
file_path = "/2.pdf"# 确保文件存在当前目录
headers = {
    "accept": "application/json"
}

try:
    with open(file_path, "rb") as f:
      files = {
            "file": (file_path, f, "application/pdf")
      }
      response = requests.post(
            url,
            params=params,
            headers=headers,
            files=files
      )

    # 处理响应
    print(f"Status Code: {response.status_code}")
   
    if response.status_code == 200:
      result = response.json()
      # 保存结果到文件
      # with open("api_response.json", "w") as f:
      #   json.dump(result, f, indent=2)
      md_content = result.get("md_content", "")
      with open("md_content_.txt", "w", encoding="utf-8") as f:
            f.write(md_content)
            print("MD内容已保存到 md_content.txt")
      # 打印关键信息
      print(f"MD内容长度: {len(result.get('md_content', ''))} 字符")
      print(f"解析图片数量: {len(result.get('images', {}))}")
      print(f"内容列表条目: {len(result.get('content_list', []))}")
    else:
      print(f"请求失败: {response.text}")

except FileNotFoundError:
    print(f"错误:文件 {file_path} 不存在")
except Exception as e:
    print(f"发生异常: {str(e)}")
有bug接待评论区探讨哈


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 摆设mineru docker流程以及踩的坑