標籤: 文件結構化

  • OvisOCR2:在筆電本地跑的文件結構化神器

    OvisOCR2:在筆電本地跑的文件結構化神器

    📌 本文重點

    • OvisOCR2 在本地將整份 PDF 直接轉成結構化 Markdown
    • 對表格、公式與讀取順序有針對性優化
    • 適合內網文件、學術論文與財報合約結構化
    • 0.8B 模型可在筆電或小伺服器上順跑

    OvisOCR2 的定位很單純:在你自己電腦上,把整份 PDF / 掃描件直接變成乾淨、有結構的 Markdown,不丟雲端、不拆頁、不東拼西湊。

    模型頁面:https://huggingface.co/ATH-MaaS/OvisOCR2

    Reddit 討論串:https://www.reddit.com/r/LocalLLaMA/comments/1uv88co/ovisocr2_a_promising_08b_local_document_parser/


    核心功能:從「整頁」到「可用的 Markdown」

    這邊只看跟你工作直接有關的 3 件事:

    1. 端到端整頁解析:丟 PDF / 圖片,直接出 Markdown

    OvisOCR2 是基於 Qwen3.5-0.8B端到端文件解析模型,不是傳統那種「先做 OCR 再用別的模型理解」的兩段式流程。

    它的輸出直接是 Markdown,包含:

    • 標題、段落層級(### 等)
    • 粗體、斜體等基本格式
    • 清單、引用等常見排版

    你可以馬上做的事:

    • 把公司內部的 PDF 手冊、SOP 丟進去,拿到 可編輯的 Markdown,再丟進 Notion、Confluence 或 Git repo 管理
    • 把舊專案的掃描說明書轉成文字,方便全文搜尋

    模型在常見文件基準上表現:

    • OmniDocBench v1.6:96.58 分
    • PureDocBench:75.06 分

    💡 關鍵: 在標準文件基準上拿到 90+ 分,代表它對一般報表與說明文件的結構理解已足夠直接納入實際工作流程測試。

    這代表它對一般報表、說明文件的結構理解已經有相當水準,適合直接放進工作流程測試。

    2. 表格、公式還原:不只讀得懂,還能「還原格式」

    OvisOCR2 的重點不是只認出字,而是把表格和公式變回「可運算」的東西

    • 表格 → Markdown 表格(| a | b | 那種),貼到 Notion、GitHub README 都能正常顯示
    • 公式 → 以 LaTeX 或接近格式輸出,方便貼回論文、簡報或 Obsidian

    你可以馬上做的事:

    • 把財報 PDF 轉成 Markdown,表格直接貼到 Excel / Google Sheets 做後續處理
    • 把學術論文中的公式拉出來,貼回 LaTeX 文件或投影片,不用一條條重打

    3. 讀取順序:不再被兩欄排版搞瘋

    很多 PDF(尤其是:財報、學術期刊、政府報告)都有這些特徵:

    • 雙欄排版
    • 頁首頁尾反覆出現的小字
    • 複雜圖文混排

    傳統 OCR 常會變成:

    • 把左欄整段讀完,再接右欄,導致段落亂序
    • 頁碼、版權資訊被插進正文裡

    OvisOCR2 針對「讀取順序」有訓練,能比較好地還原成人類閱讀的順序,包括:

    • 正文優先,頁碼/頁眉多半排除或放在不干擾的位置
    • 圖表標題和內容靠在一起,不會被打散

    你可以馬上做的事:

    • 把年度報告、研究報告丟進去,得到可以直接丟給大語言模型總結的乾淨 Markdown
    • 省掉「先用 Acrobat 導出文字再手動整理」的痛苦步驟

    適合誰用:三種典型場景

    1. 公司內網文件數位化:需要「不出內網」的方案

    如果你在這些情境:

    • 金融、醫療、政府等對資料敏感的產業
    • 有一堆 PDF 合約、掃描件、紙本表單
    • 不允許把文件丟到雲端 OCR 服務

    OvisOCR2 很適合當成內網文件結構化引擎

    • 0.8B 模型,記憶體需求相對溫和,可以放在:
    • 中小型伺服器
    • 部門共用工作站
    • Apache 2.0 授權,方便整合到自家系統

    可以實做的具體流程:

    1. 把部門的 PDF 檔放進內網檔案伺服器
    2. 用 OvisOCR2 解析成 Markdown / JSON
    3. 把結果丟進 ElasticSearch / OpenSearch / Meilisearch 做全文搜尋
    4. 再接一個內網 LLM(例如本地 QwenLlama)做問答

    2. 學術論文整理:從 PDF 到筆記庫

    研究生、工程師、PM 常見的需求:

    • 一次下載一堆 PDF 論文
    • 想要在 Obsidian / Notion / Logseq 裡統一管理

    OvisOCR2 可以幫你:

    • 把論文的標題、章節、公式、圖表說明整合成 Markdown
    • 保留結構(例如 # Abstract## Method),方便之後全文搜尋或做自動總結

    可以實做的工作流:

    1. 建一個 papers/ 資料夾放 PDF
    2. 寫一個小腳本,用 OvisOCR2 把每篇論文轉成 .md
    3. 輸出時附上原始 PDF 路徑、bibtex key 等 metadata
    4. 直接把 .md 丟進 Obsidian 資料庫

    3. 財報與合約結構化:先結構化,再丟給 LLM

    財務、法務、投研人員常做的事:

    • 從財報裡抓關鍵表格
    • 從合約裡抓特定條款(付款條件、違約金…)

    OvisOCR2 可以先把內容整理成清楚的 Markdown / 結構化文本,接著:

    • 用本地或雲端 LLM 做:
    • 指標彙總
    • 條款比較
    • 風險條款標記

    這樣的好處是:

    • 原始 PDF 不用離開你的環境
    • 只有經過清理的文字,才會送到雲端 LLM(如果你選擇這樣做)

    為什麼 0.8B 模型適合在筆電或小伺服器上跑?

    0.8B(8 億)參數的級別,落在一個很實用的區間。

    • 硬體需求友善
    • 8–12GB VRAM 的顯示卡即可順跑
    • 或者用 CPU 推理,速度會慢一些,但足夠跑批次任務
    • 記憶體壓力較低
    • 不需要 80GB A100 等級的 GPU
    • 適合中小企業和個人開發者

    💡 關鍵: 0.8B 等級模型在 8–12GB 顯示卡上即可運行,讓「整份文件結構化」這種原本需要大型服務的工作,可以在一般筆電或中小企業伺服器內網完成。

    這個大小對「文件結構化」剛好夠用:

    • 任務相對專一(解析版面與內容)
    • 不需要像聊天大模型那樣超強的開放式生成能力

    如果你已經有一台:

    • RTX 3060 / 4060 級別的筆電
    • 或一台 16–32GB RAM 的小伺服器

    基本上都可以實際跑起來做實驗。


    怎麼開始:從 Hugging Face 到「丟 PDF 拿 Markdown」

    下面給一條最短路徑:不談訓練,只談拿來用。

    步驟 0:你需要準備什麼?

    • 作業系統:Linux / macOS / Windows 都可
    • Python 3.10+(盡量用虛擬環境)
    • 建議有 GPU(但非必須)

    步驟 1:下載模型

    到 Hugging Face 模型頁:

    做兩件事:

    1. 登入 Hugging Face 帳號(免費)
    2. 在本機安裝 huggingface_hub 方便下載:
    ypip install "huggingface_hub[cli]" transformers accelerate
    huggingface-cli download ATH-MaaS/OvisOCR2 --local-dir ./OvisOCR2
    

    如果你不想預先下載,也可以在程式裡直接用模型名稱自動拉取。

    步驟 2:用 vLLM 跑起 OvisOCR2(建議)

    OvisOCR2 支援 vLLM,適合要做批次處理或服務化部署的情境。

    先安裝 vLLM

    ypip install vllm
    

    啟動一個本地 server(假設你有支援 CUDA 的 GPU):

    python -m vllm.entrypoints.openai.api_server \
      --model ATH-MaaS/OvisOCR2 \
      --port 8000
    

    啟動後,你就有一個 OpenAI 相容 API,可以從任何語言呼叫。

    步驟 3:寫一個「丟 PDF → 拿 Markdown」的小腳本

    以下示範用 Python,把單頁 PDF 先轉成圖片,再送進 OvisOCR2,拿回 Markdown:

    提醒:實務上多頁 PDF 要迭代處理,每頁送一次,最後把 Markdown 串起來。

    安裝必要套件:

    ypip install pillow pypdfium2 requests
    

    簡易腳本(假設 vLLM server 在 http://localhost:8000):

    import base64
    import io
    import requests
    from PIL import Image
    import pypdfium2 as pdfium
    
    OPENAI_API_BASE = "http://localhost:8000/v1"
    OPENAI_MODEL = "ATH-MaaS/OvisOCR2"
    
    
    def pdf_page_to_image(pdf_path, page_index=0):
        pdf = pdfium.PdfDocument(pdf_path)
        page = pdf.get_page(page_index)
        pil_image = page.render(scale=2).to_pil()
        return pil_image
    
    
    def image_to_base64(image: Image.Image) -> str:
        buf = io.BytesIO()
        image.save(buf, format="PNG")
        return base64.b64encode(buf.getvalue()).decode("utf-8")
    
    
    def ovisocr2_parse_image(img: Image.Image) -> str:
        img_b64 = image_to_base64(img)
        payload = {
            "model": OPENAI_MODEL,
            "messages": [
                {
                    "role": "user",
                    "content": [
                        {"type": "text", "text": "Parse this page to Markdown."},
                        {
                            "type": "image_url",
                            "image_url": {"url": f"data:image/png;base64,{img_b64}"},
                        },
                    ],
                }
            ],
        }
    
        resp = requests.post(f"{OPENAI_API_BASE}/chat/completions", json=payload)
        resp.raise_for_status()
        return resp.json()["choices"][0]["message"]["content"]
    
    
    if __name__ == "__main__":
        pdf_path = "sample.pdf"  # 換成你的 PDF 路徑
        img = pdf_page_to_image(pdf_path, page_index=0)
        markdown = ovisocr2_parse_image(img)
    
        with open("output_page1.md", "w", encoding="utf-8") as f:
            f.write(markdown)
    
        print("已輸出:output_page1.md")
    

    改進方向:

    • 迭代所有頁面,輸出成 page_01.mdpage_02.md 再合併
    • 把檔名、頁碼寫在 Markdown 裡,方便追溯

    步驟 4:搭配雲端 LLM 的 workflow 範例

    OvisOCR2 本地做的是「結構化清洗」,你可以再串雲端 LLM 做「理解與生成」:

    1. 本地:
    2. OvisOCR2 把 PDF → Markdown
    3. 雲端(例如 OpenAI、Gemini 等):
    4. 把 Markdown 分段丟給 LLM,做:
      • 自動摘要
      • 關鍵條款整理
      • 生成簡報大綱

    好處是:

    • 原始掃描件、敏感欄位留在內網
    • 真正上雲的是整理過的文字,方便做權限控管與脫敏處理

    小結:先用一個資料夾試跑

    最簡單的開始方式:

    1. 選一個專案資料夾(例如 ./docs_to_parse
    2. 10–20 份代表性的 PDF
    3. 用本文的腳本跑一輪,觀察:
    4. 文字正確率
    5. 表格還原情況
    6. 讀取順序是不是能接受
    7. 再決定要不要擴大到整個部門或公司文件庫

    💡 關鍵: 小規模試跑可以快速評估在你實際文件類型上的效果,再決定是否投資整合到正式內網與搜尋系統。

    OvisOCR2 不會替你完成所有事,但可以把「文件數位化+結構化」這一步做得足夠穩定,讓後面的搜尋、分析、LLM 問答都有乾淨的輸入可以用。

    🚀 你現在可以做的事

    • 到 Hugging Face 下載 ATH-MaaS/OvisOCR2,在本機用 vLLM 跑一個測試 API server
    • 選 10–20 份你常用的 PDF(財報、論文、合約),用示範腳本轉成 Markdown 檔觀察品質
    • 把輸出的 Markdown 接到 Obsidian 或 ElasticSearch,試做一個小型「內網知識庫+搜尋/總結」流程