實戰指南:部署MinerU多模態文檔解析API與Dify深度集成(實現解析PDF/JPG/PNG)

MinerU web api部署

MinerU 能夠將包含圖片、公式、表格等元素的多模態 PDF、PPT、DOCX 等文檔轉化為易于分析的 Markdown 格式。

  1. 克隆 MinerU 的倉庫

    git clone https://github.com/opendatalab/MinerU.git
    
  2. cd 到 projects/web-api

    cd projects/web-api
    
  3. 在可以科學上網的情況下可以直接運行

    docker build -t mineru-api .
    
  4. 如果不能科學上網,使用 modelscope

    修改改 requirement.txt,添加 modelscope==1.25.0?

    修改 download_models.py,刪掉所有舊代碼,改成這個

    #!/usr/bin/env python
    import os
    from modelscope.hub.snapshot_download import snapshot_download# 配置模型下載路徑(Windows路徑示例:r'C:\MinerU')
    MAIN_MODEL_DIR = "/opt/"
    os.makedirs(MAIN_MODEL_DIR, exist_ok=True)if __name__ == "__main__":# PDF-Extract-Kit的模型下載(需替換為ModelScope對應ID)pdf_extract_patterns = ["models/Layout/YOLO/**","models/MFD/YOLO/**","models/MFR/unimernet_hf_small_2503/**","models/OCR/paddleocr_torch/**",]pdf_model_path = snapshot_download('opendatalab/PDF-Extract-Kit-1.0',  # ModelScope模型IDallow_patterns=pdf_extract_patterns,cache_dir=os.path.join(MAIN_MODEL_DIR, "models"),revision='master'  # 指定模型版本)# LayoutReader模型下載(需替換為ModelScope對應模型)layout_model_path = snapshot_download('ppaanngggg/layoutreader',  # 替換為實際ModelScope IDcache_dir=os.path.join(MAIN_MODEL_DIR, "layoutreader"),allow_patterns=["*.json", "*.safetensors"])print(f"主模型目錄:{pdf_model_path}")print(f"布局模型目錄:{layout_model_path}")
    

    再運行 docker build -t mineru-api .?

  5. 編寫 docker-compose.yml

    services:mineru-api:image: mineru-apirestart: alwaysports:- "8920:8920"stdin_open: true   # 對應 -i 參數tty: true          # 對應 -t 參數runtime: nvidia    # 使用 NVIDIA 容器運行時environment:- NVIDIA_VISIBLE_DEVICES=all  # 允許訪問所有 GPU
    
  6. 如果沒有 nvidia 的 runtime,先備份自己的 daemon.json 文件 (/etc/docker/),通過 yum install -y nvidia-docker2? 安裝,這個命令會生成一個新的 daemon.json 文件,覆蓋掉原來舊的,安裝后之后比較一下新舊兩個 daemon 文件,合并在一起。

  7. 啟動

    systemctl daemon-reload
    systemctl restart docker
    docker compose up -d
    
  8. 訪問 localhost:8000/docs
    MineRu FastAPI?

  9. 進入mineru容器目錄,編寫app.py,保證images字段的正常輸出

    async def file_parse(file: UploadFile = None,file_path: str = Form(None),parse_method: str = Form("auto"),is_json_md_dump: bool = Form(False),output_dir: str = Form("output"),return_layout: bool = Form(False),return_info: bool = Form(False),return_content_list: bool = Form(False),# 此處修改為 Truereturn_images: bool = Form(False),
    ):
    
  10. 重啟mineRu容器

使用MineRu插件

  1. Dify配置

    1. 配置http://api:5001,端口地址暴露給宿主機

      docker-compose.yaml:文本搜索services:

      services:# API serviceapi:image: langgenius/dify-api:1.4.1restart: always# 添加以下端口映射 ↓ports:- "5001:5001"  # 將API 5001 端口映射到宿主機的 5001 端口environment:# Use the shared environment variables.<<: *shared-api-worker-env# Startup mode, 'api' starts the API server.MODE: apiSENTRY_DSN: ${API_SENTRY_DSN:-}SENTRY_TRACES_SAMPLE_RATE: ${API_SENTRY_TRACES_SAMPLE_RATE:-1.0}SENTRY_PROFILES_SAMPLE_RATE: ${API_SENTRY_PROFILES_SAMPLE_RATE:-1.0}PLUGIN_REMOTE_INSTALL_HOST: ${EXPOSE_PLUGIN_DEBUGGING_HOST:-localhost}PLUGIN_REMOTE_INSTALL_PORT: ${EXPOSE_PLUGIN_DEBUGGING_PORT:-5003}PLUGIN_MAX_PACKAGE_SIZE: ${PLUGIN_MAX_PACKAGE_SIZE:-52428800}INNER_API_KEY_FOR_PLUGIN: ${PLUGIN_DIFY_INNER_API_KEY:-QaHbTe77CtuXmsfyhR7+vRjI/+XbV1AaFy691iy+kGDv2Jvy0/eAh8Y1}depends_on:db:condition: service_healthyredis:condition: service_started
      

      其他部署方式:FILES_URL 設置為 ‘http://Dify宿主機IP:5001’
      (如 http://192.168.1.100:5001,這里的 IP 通常是運行 Dify 的機器的 IP,即前文提到的 “本地 IP” 端口。5001 是 Dify API 服務的默認端口)。

    2. 設置Dify文件預覽/下載地址:Files_URL

      .env:

      # File preview or download Url prefix.
      # used to display File preview or download Url to the front-end or as Multi-model inputs;
      # Url is signed and has expiration time.
      # Setting FILES_URL is required for file processing plugins.
      #   - For https://example.com, use FILES_URL=https://example.com
      #   - For http://example.com, use FILES_URL=http://example.com
      #   Recommendation: use a dedicated domain (e.g., https://upload.example.com).
      #   Alternatively, use http://<your-ip>:5001 or http://api:5001,
      #   ensuring port 5001 is externally accessible (see docker-compose.yaml).
      FILES_URL=http://api:5001
      
    3. 重啟Dify

      1. 進入 Dify 源碼 docker目錄
      2. 地址欄輸入cmd,打開命令行
      3. 停止舊容器:docker-compose down?
      4. 重新構建(僅當 Dockerfile 或 build 參數變更時):docker-compose build?
      5. 啟動服務:docker-compose up -d?
  2. Dify插件市場安裝MineRu插件,并打開插件目錄

  3. 點擊該插件詳情,出現授權界面
    Dify Mineru插件設置頁面
    ?

    Base URL配置為http://host.docker.internal:8920

    令牌為空,服務類型選擇本地部署,點擊保存,顯示已授權即可
    ?授權結果頁面

編輯解析測試工作流

  1. 創建單輪工作流應用,設置基本信息

  2. 配置PDF文件下載地址的HTTP請求節點
    http請求節點

    ?

  3. 配置MineRu插件的解析節點
    插件配置
    注意:以上只有解析變量及其解析方法可以使用,其他都是官方API使用參數
    輸出變量:

    text : 解析后的 Markdown 文本

    files: 額外的導出格式文件(html,docx,latex)

    json:解析后的內容列表

    full_zip_url: 僅限官方 API,完整解析結果的 zip URL

    images: 從 PDF 中提取的圖片

  4. 獲取PDF文件第一個大標題作為文件名的代碼執行節點
    代碼執行

    import re
    def main(mdText: str) -> dict:match = re.search(r'^#\s+(.*)$', mdText, re.MULTILINE)if match:return {'result': match.group(1)}else:return {'result': ""}
    
  5. 插件市場安裝Markdown轉換器插件,并使用
    在這里插入圖片描述
    ?

  6. 結束節點:結果存在文件下載地址
    在這里插入圖片描述
    ??
    Md文件1

?注意:dify保存文件存在過期時間,可能會導致md文件圖片鏈接失效,建議,給予LLM模型解析使用即可,如需本地,保存圖片本地使用

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/84997.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/84997.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/84997.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

向量外積與秩1矩陣的關系

向量外積與秩1矩陣的關系 flyfish 向量外積是構造秩1矩陣的基本工具&#xff0c;其本質是用兩組向量的線性組合刻畫矩陣的行和列相關性&#xff1b;任意秩1矩陣必可表示為外積&#xff0c;而低秩矩陣&#xff08;秩 k k k&#xff09;可分解為 k k k 個外積矩陣的和&#x…

設計模式-創建型模式(詳解)

創建型模式 單例模式 一個類只允許創建一個對象&#xff0c;稱為單例。 單例體現&#xff1a;配置類、連接池、全局計數器、id生成器、日志對象。 懶漢式 (線程不安全) 單例&#xff1a;【不可用】 用到該單例對象的時候再創建。但存在很大問題&#xff0c;單線程下這段代…

什么是BI?有哪些應用場景

BI&#xff08;Business Intelligence&#xff0c;商業智能&#xff09;是通過技術手段對海量業務數據進行采集、整合、分析和可視化的過程&#xff0c;旨在幫助企業從數據中獲取洞察&#xff0c;支持決策。其核心是通過工具&#xff08;如Quick BI&#xff09;將原始數據轉化為…

從零開始:使用Vite和Vue.js搭建一個空項目

進入node.js官網 https://nodejs.org/zh-cn 下載node.js 點擊進行安裝&#xff0c; 完成之后&#xff0c;按住shift鼠標右鍵&#xff0c;打開powershell窗口 輸入node -v &#xff0c;出現版本號就是成功了 node -v 接下來&#xff0c;打開設置&#xff0c;搜索開發者設置&…

Redis 核心數據類型及典型使用場景詳解

在日常開發中&#xff0c;Redis 不僅是緩存利器&#xff0c;更是一套高性能的數據結構服務。你是否真的了解 Redis 提供的五種核心數據類型&#xff1f;它們各自的底層結構和適用場景又有哪些差異&#xff1f;本篇博客將深入解析 Redis 的數據類型及其典型應用&#xff0c;助你…

threejs webVR獲取相機正前方向量

通常獲取相機正前方可以使用camera.getWorldDirection(new Vector3()) 函數來得到&#xff0c;但是在threejs0.139.2版本中進入VR后使用上面函數獲取的數據是固定不變的&#xff0c;不管是否旋轉了頭盔&#xff0c;經過一番研究發現必須使用renderer.xr.getCamera() 此函數獲取…

華為OD-2024年E卷-字符統計及重排[100分] -- python

問題描述&#xff1a; 給出一個僅包含字母的字符串&#xff0c;不包含空格&#xff0c;統計字符串中各個字母(區分大小寫)出現的次數&#xff0c;并按照字母出現次數從大到小的順序輸出各個字母及其出現次數。如果次數相同&#xff0c;按照自然順序進行排序&#xff0c;且小寫…

MCP(模型上下文協議)協議和Http協議對比

MCP&#xff08;Model Context Protocol&#xff0c;模型上下文協議&#xff09;和 HTTP&#xff08;HyperText Transfer Protocol&#xff0c;超文本傳輸協議&#xff09;是兩種定位完全不同的協議&#xff0c;主要區別如下&#xff1a; 1. 核心定位 HTTP 通用網絡通信協議&am…

C++打印乘法口訣表

int main()??&#xff1a; 這是C 程序的入口點。每個C 程序都必須有一個 main 函數&#xff0c;程序從這里開始執行。 ??外層 for 循環??&#xff1a; for (int i 1; i < 10; i) { int i 1&#xff1a;定義并初始化循環變量 i 為 1。這里的 i 代表乘法表中的行…

RoGBAG 與 MCAP

RoGBAG 和 MCAP 都是機器人領域常用的二進制數據格式&#xff0c;用于存儲傳感器數據、控制命令和狀態信息。兩者主要區別在于&#xff1a; RoGBAG&#xff1a;ROS 1/2 的標準日志格式&#xff0c;采用 LZF/LZ4 壓縮&#xff0c;適合中小型數據集 MCAP&#xff1a;新一代機器人…

Ubuntu 空間占用情況排查常用命令

查看當前目錄總大小及子目錄占用詳情 du -sh * | sort -hr ??du??&#xff1a;磁盤使用統計命令??-s??&#xff1a;顯示每個參數的總計&#xff08;不遞歸子目錄&#xff09;??-h??&#xff1a;以人類可讀格式&#xff08;KB/MB/GB&#xff09;顯示??*??&…

C語言編譯優化實戰與技巧

一.概述 1.C語言編譯優化介紹 C語言編譯優化是提升程序性能的核心手段&#xff0c;涉及從源代碼到機器碼的多層次轉換&#xff0c;下面從優化級別、常用技術、內存管理、指令調度等多個維度詳細介紹。 2.編譯器優化等級&#xff08;GCC/Clang&#xff09; 二.常用優化技術 1…

Seq2Seq理解

Seq2Seq理解 寫在前面&#xff1a;學習Seq2Seq由于前面底子沒打好導致理解起來非常困難&#xff0c;今天索性全部搞懂邏輯部分&#xff0c;后續我會把所學的一些算法全部以理解代碼的形式發布出來&#xff0c;課程代碼內容全部來自李沐老師的視頻&#xff0c;再次感謝&#xf…

旅游規劃智能體之ReAct Agent實戰

引言 本文將系統性地介紹如何運用ReAct框架構建旅游規劃智能體&#xff0c;通過LangChain的create_react_agent方法實現智能決策和多步驟任務處理。ReAct框架作為現代AI Agent開發的核心技術之一&#xff0c;為構建具備復雜推理能力的智能系統提供了重要的理論基礎和實踐指導。…

組合模式深度解析:Java設計模式實戰指南與樹形結構處理架構設計

組合模式深度解析&#xff1a;Java設計模式實戰指南與樹形結構處理架構設計 &#x1f31f; 嗨&#xff0c;我是IRpickstars&#xff01; &#x1f30c; 總有一行代碼&#xff0c;能點亮萬千星辰。 &#x1f50d; 在技術的宇宙中&#xff0c;我愿做永不停歇的探索者。 ? 用…

PHP設計模式實戰:領域驅動設計與六邊形架構

在前三篇關于電子商務系統、API服務和微服務架構的基礎上,我們將深入探討如何運用領域驅動設計(DDD)和六邊形架構(Hexagonal Architecture)構建更加清晰、可維護的業務系統。隨著業務復雜度增加,傳統的分層架構往往難以清晰地表達業務邏輯,而DDD提供了一套方法論來解決這一問…

為什么在1080p的屏幕下,通常觀看4K視頻要比1080p的視頻來的清晰?

一、分辨率與像素密度的底層邏輯 4K與1080p的像素差異 4K分辨率通常為38402160&#xff08;約830萬像素&#xff09;&#xff0c;而1080p為19201080&#xff08;約207萬像素&#xff09;&#xff0c;4K像素數量是1080p的4倍。當4K視頻在1080p屏幕上播放時&#xff0c;需要將4倍…

C++ Json-Rpc框架 項目邏輯設計

Server ? RpcServer&#xff1a;rpc功能模塊與?絡通信部分結合 RpcServer分為兩部分 1.提供函數調用服務的服務端 2.提供服務注冊的客戶端 對內提供好rpc服務的路由關系管理map<method,服務描述對象>&#xff0c;以及rpc請求消息的分發處理函數。給Dispatcher提供onRpc…

Agent開發相關工具

LangChain LangChain LangGraph LangGraph LangSmith GraphRAG RAGFlow what-is-graphrag Dify n8n vLLM Model Context Protocol AutoGen CodeMirror Milvus Chroma

進程管理(一)

一. 進程的基本信息 1.1 進程的概念、組成及信息 1.1.1 概念 進程的概念與程序相對&#xff0c;程序是靜態的而進程是動態的&#xff0c;一個程序執行多次會有多個不同的進程 1.1.2 組成 PCB&#xff08;程序控制塊&#xff09;&#xff1a; 是一種保存下列信息的數據結構&…