標籤: 多代理工作流程

  • MinerU 把爛 PDF 變 AI 神隊友

    MinerU 把爛 PDF 變 AI 神隊友

    📌 本文重點

    • MinerU 專門把 PDF/Office 轉成乾淨結構化文本
    • 讓表格、圖片、公式都能友善餵給 RAG / Agent
    • 開源可本地部署,易嵌入各種 LLM / Agent workflow

    一句話先說結論:MinerU 就是一台「給 LLM / Agent 吃的文件清洗機」——丟 PDF、Word、PPT 進去,吐出乾淨的 Markdown / JSON,直接給 RAG、Chatbot、Agent 用。

    👉 專案連結:https://github.com/opendatalab/MinerU


    核心功能:讓 AI 真的「看懂」你的文件

    1. 直接吃 PDF / Office,多欄位也能拆乾淨

    多數 RAG 失敗,不是模型太笨,而是原始 PDF 太亂。MinerU 的重點是:

    • 支援:PDF、Word、PPT 等常見文件
    • 能處理的麻煩版面:
    • 多欄位排版(例如期刊論文、報表)
    • 頁首/頁尾、頁碼、註腳
    • 混合字型、大小標題、清單

    你可以這樣用:

    1. 把公司內部 PDF / Word 全部放進一個資料夾,例如 ./docs_raw
    2. 用 MinerU 批次轉成 Markdown,輸出到 ./docs_md
    3. 接著再用你熟悉的向量庫(如 MilvusQdrantWeaviate)去吃 docs_md

    這樣做的好處:後面所有 LLM / Agent pipeline,都只面對格式一致的純文字,而不是千奇百怪的 PDF。

    💡 關鍵: 先把所有文件標準化成一致的 Markdown / JSON,可以大幅降低 RAG 出錯率與後續維護成本。


    2. 表格 / 圖片 / 公式抽取,輸出 Markdown / JSON

    對技術文件來說,表格、圖表、公式往往是重點。MinerU 的輸出設計就是「給 LLM 用」:

    • 表格:轉成 Markdown table 或 JSON 結構,便於查詢與切 chunk。
    • 圖片:支援抽圖路徑(搭配 OCR / 圖像模型再處理)。
    • 公式:儘量轉成可讀的文字或 LaTeX 形式,減少重要信息消失。

    你可以依專案需求選擇:

    • Markdown 模式:適合直接塞進向量庫、做長文閱讀、摘要。
    • JSON 模式:適合需要欄位結構的 Agent workflow,例如:
    • 表格 → JSON → 丟給 Agent 做統計、比對
    • 報表 → JSON → 自動生成指標報表

    💡 關鍵: 把表格、公式這類結構化資訊轉成 JSON,可讓 Agent 做統計、比對、生成報表時更精準可控。


    3. 天然適合多代理 / 本地 LLM Workflow

    MinerU 的定位不是一個「雲端 SaaS」,而是一段你可以塞進自己 pipeline 的工具

    典型的用法是這樣:

    1. 資料前處理 Agent:監控新文件,觸發 MinerU 解析。
    2. 知識庫建置 Agent:把 MinerU 輸出的 Markdown / JSON 切 chunk + 嵌入向量庫。
    3. 問答 / 任務 Agent:收到問題時,到向量庫檢索相關片段,再交給 LLM 回答。

    因為 MinerU 是開源、可本地部署,你可以:

    • 把它丟進 Docker Compose 裡,和本地 LLM(如 Ollama)一起跑。
    • 讓 CI/CD 在文件更新時,自動重新解析。

    💡 關鍵: 開源且可本地部署,意味著你可以在私有環境中標準化所有文件處理流程,符合安全與合規需求。


    適合誰用?三個具體場景

    1. 企業內部文件知識庫、客服 / 內訓 FAQ

    場景:

    • 公司有大量 SOP、內規、產品說明、培訓教材,多數是 PDF / Word。
    • 你想做一個內部 Chatbot,讓同事問問題時,直接查這些文件。

    可實作流程:

    1. 把所有內部文件收集到 ./company_docs
    2. 用 MinerU 批次轉成 Markdown:
    3. 標記檔案來源(檔名、類別),方便之後做權限或分類。
    4. 把 Markdown 丟進向量庫,接上你選的 LLM(本地或雲端)。
    5. 在公司 Portal 放一個簡單的 Chat UI,查詢時帶出「原文片段」。

    行動建議:先挑 20 份最常被問的文件,跑一次 MinerU,做一個最小可用版本(MVP)給團隊試用。


    2. 技術文件、論文、報表餵給 RAG / Chatbot

    場景:

    • 需要讓模型理解 API 文件、產品白皮書、學術論文。
    • 想要一個「專門讀某份規格書」的 Chatbot。

    可實作流程:

    1. 用 MinerU 把每份技術文件解析成 Markdown:
    2. 確保目錄、標題層級清楚,可用來分段。
    3. 切 chunk 時,可以以「段落 + 小節標題」為單位,而不是固定字數。
    4. 建立索引:保留檔名 + 小節名稱,方便回答時引用。

    行動建議

    • 先選一份技術文件(例如某 API Reference PDF),用 MinerU 解析後,和「直接用 PDF OCR」比較效果,你會很快看出閱讀品質差異。

    3. 結合本地 LLM / Agent 做長文閱讀、摘要、自動標註

    場景:

    • 想在本地跑 LLM(例如 Ollama + Qwen / Llama),處理長報告、會議紀錄。
    • 希望自動產生標籤、重點整理、摘要。

    可實作流程:

    1. 本地部署 MinerU,解析文件成 Markdown。
    2. 用一個小腳本:
    3. 讀 Markdown → 切段 → 按段落送到本地 LLM。
    4. 讓 LLM 回傳:摘要、關鍵字、分類。
    5. 把結果寫回另一個 JSON 檔,或直接寫入 ElasticSearch / 你用的 DB。

    行動建議:先挑一份 50 頁以上的 PDF,跑 MinerU + 本地 LLM,實測「從原始 PDF 到摘要 JSON」全流程,測時間 & 品質,再決定要不要全量導入。


    怎麼開始:本地快速跑起 MinerU

    以下示範兩種上手方式:Docker 與 pip。使用前建議先看 GitHub 專案 README(隨版本更新):https://github.com/opendatalab/MinerU

    注意:實際指令可能會隨版本更新,請以官方文件為準。下面是典型用法思路,幫你掌握大方向。

    方式一:用 Docker 跑一個典型 PDF Pipeline

    1. 安裝 Docker(Windows / macOS / Linux 都可以)。
    2. 下載專案或直接拉鏡像(以官方 README 為主):
    docker pull opendatalab/mineru:latest
    
    1. 在本機建立兩個資料夾:
    mkdir -p ~/mineru/input ~/mineru/output
    # 把 PDF 放進 input
    cp your.pdf ~/mineru/input/
    
    1. 跑容器:
    docker run --rm \
      -v ~/mineru/input:/data/input \
      -v ~/mineru/output:/data/output \
      opendatalab/mineru \
      mineru \
      --input_dir /data/input \
      --output_dir /data/output \
      --format markdown
    
    1. 檢查輸出:

    2. ~/mineru/output 裡,你會看到對應的 .md.json 檔。

    接下來,你只要把這些 Markdown:

    • Python 讀進來 → 切 chunk → 打 embeddings → 塞進向量庫。
    • 或者直接丟給 Agent 當上下文。

    方式二:用 pip 安裝,嵌入自己的 Python 專案

    如果你想把 MinerU 當成專案的一部分(例如在 FastAPIDjango 裡叫用),可以這樣做:

    1. 建議先建立虛擬環境:
    python -m venv .venv
    source .venv/bin/activate  # Windows 用 .venv\Scripts\activate
    
    1. 安裝 MinerU(以 README 為準):
    pip install mineru
    
    1. 在 Python 裡呼叫(示意):
    from mineru import DocumentParser
    
    parser = DocumentParser(
        output_format="markdown",  # 或 "json"
        lang="zh",                 # 主要語言
    )
    
    parser.parse_dir(
        input_dir="./docs_raw",
        output_dir="./docs_md",
    )
    
    1. 接上你的 RAG pipeline,例如:
    from your_vector_store import add_markdown_docs
    
    add_markdown_docs("./docs_md")
    

    幾個實用配置建議

    1. 語言設定

    • 如果大多數文件是中文,建議在配置中指定 lang=zh,有助於:
    • 正確切段
    • 標題與正文的判斷
    • 混合語言文件(中英夾雜)可先用 MinerU 預設配置,實際跑一份看看效果再微調。

    2. 版面複雜度:先從「最難的」文件測試

    不同文件可能需要不同策略:

    • 多欄位期刊論文
    • 含大量表格的財報
    • 圖片 + 文字混排的簡報

    建議流程:

    1. 先挑 3 種最重要、也最難處理的 PDF 各一份。
    2. 用 MinerU 跑一遍,目視檢查輸出的 Markdown 是否:
    3. 段落順序正確
    4. 表格完整
    5. 標題層級清楚
    6. 再決定是否需要額外的後處理腳本(例如正則清除多餘頁碼)。

    3. 批次處理:一次跑大量文件

    當你要處理成百上千份文件:

    • 使用 --input_dir / parse_dir 直接對整個資料夾處理。
    • 可搭配簡單的排程工具(如 cronAirflowPrefect):
    • 每天檢查新文件 → 觸發 MinerU → 更新向量庫。
    • 建議保留:
    • 原始 PDF 路徑
    • 解析時間
    • 解析版本(方便之後換版本重跑)

    小結:MinerU = 文件進 AI 系統前的「洗版」必備

    如果你正為這些事頭痛:

    • PDF 抽不出好用的文字
    • RAG 回答總是抓錯重點
    • Agent Workflow 每次都被「前處理」拖累

    那 MinerU 是值得花一個下午試跑的工具。把它想像成:

    所有文件進 AI 系統前,先經過的一台「格式清洗機」。

    一旦你把這個「洗版」步驟標準化,後續不論是企業知識庫、技術文件 Chatbot,還是本地 LLM 長文閱讀,都會變得穩定許多。



    🚀 你現在可以做的事

    • 到 GitHub 查看 MinerU 專案 README,確認最新安裝與使用方式
    • 選 10–20 份關鍵 PDF/Word,實際跑一次「PDF → Markdown → 向量庫」流程
    • 在你現有的 RAG / Chatbot 專案中,插入 MinerU 作為前處理步驟,評估回答品質提升幅度