Select Page
InternVL3 本地部署教學:用 lmdeploy 跑 OCR 與多模態理解

InternVL3 本地部署教學:用 lmdeploy 跑 OCR 與多模態理解

InternVL3 值得注意的地方,不只是又一個開源多模態模型,而是它把本地 VLM 的使用場景推得更實際,OCR、掃描文件、模糊表格、手寫字、截圖理解,這些都不是聊天模型的展示題,而是每天真的會卡住工作的資料入口。

如果之前已經在玩 本地多模態分析,InternVL3 可以看成下一個很適合放進實驗清單的模型。它不只是看圖說話,而是更接近能處理文件、表格與複雜畫面的視覺語言模型。

InternVL3 的重點是文件理解,而不是炫技

AIVI 的整理把 InternVL3 放在企業級 OCR 和多模態理解的脈絡裡看。這個定位很合理。現在很多人把 VLM 拿來做圖片描述,但真正有價值的地方,往往是把原本不適合丟給文字模型的資料變成可處理的結構。

例如模糊 PDF 掃描件、手寫備註、拍歪的表格、截圖裡的 UI 狀態,這些資料以前要靠人工整理,或用傳統 OCR 加一堆後處理。InternVL3 這類模型讓流程變成另一種樣子。先讓 VLM 看懂畫面,再把結果交給下游的 RAG、資料庫、工作流或 Agent。

這也能和 MarkItDown 這類文件轉換工具互補。文字型文件可以先轉 Markdown,掃描影像、複雜表格和視覺內容則交給 VLM 補上理解能力。

InternVL3 有哪些技術方向值得看

AIVI 筆記提到三個重點。第一個是原生多模態預訓練。它不是先訓練純文字模型,再把視覺模組接上去,而是在同一個訓練階段同時學文字和多模態資料。這個方向的好處,是減少後期對齊的落差,讓模型在文字能力與視覺理解之間更一致。

第二個是可變視覺位置編碼。這類設計的核心,是讓視覺 token 的位置表示更彈性,支援更長的多模態上下文。對文件理解很重要,因為真實文件常常不是單張乾淨圖片,而是多頁、表格、註記、圖文混排。

第三個是偏好優化與測試時擴展。簡單說,就是讓模型不只會回答,也能在推理過程中更穩定地挑出比較好的答案。這對 OCR 類任務尤其重要,因為一個字看錯、欄位對錯、單位錯置,都可能讓後面的分析整個歪掉。

為什麼要用 lmdeploy

InternVL3 本身是模型,真正要落到日常使用,還需要部署層,這就是 InternLM 的 lmdeploy 進場的地方。它的定位是壓縮、部署和服務化 LLM 與 VLM,官方 README 強調高效推理、量化、多機多卡服務和相容性。

用比較白話的方式說,lmdeploy 是把模型從「可以下載」變成「可以被應用呼叫」。當它用 OpenAI 相容 API 跑起來後,Open WebUI、自寫腳本、內部工具或 Agent 流程都可以用同一套 API 方式接進來。

這一點對本地部署很重要,單次 demo 可以直接跑 notebook,但長期使用要考慮服務常駐、併發、顯存、量化、監控和前端介面。這也是為什麼本地 AI 不該只停在安裝成功,而要慢慢走向像 OpenMontage 本地部署那樣,把模型、服務和工作流串起來。

建議部署流程

AIVI 的流程可以整理成四段。第一段是準備 Linux 或 WSL 環境,第二段是建立 conda 環境,第三段是安裝 lmdeploy 與必要套件,第四段是啟動 API server 並接到 Open WebUI。

conda create -n lmdeploy python=3.11 -y
conda activate lmdeploy
pip install lmdeploy partial_json_parser timm

模型服務可以先用 14B 版本做測試。AIVI 範例使用 TurboMind backend,port 設在 23333,並指定 InternVL 相關 chat template。

lmdeploy serve api_server OpenGVLab/InternVL3-14B-Instruct --backend turbomind --server-port 23333 --tp 2 --chat-template internvl2_5

啟動後,OpenAI 相容呼叫大致長這樣。重點不是 API key 本身,而是 base_url 指向本機服務。

from openai import OpenAI

client = OpenAI(
    api_key="local-key",
    base_url="http://127.0.0.1:23333/v1"
)

model_name = client.models.list().data[0].id

如果要給一般使用者操作,可以再裝 Open WebUI。

pip install open-webui
open-webui serve

Open WebUI 的價值不是漂亮而已,而是讓 VLM 從工程實驗變成日常工具。你可以把它當成公司內部的視覺文件入口,讓同事不用碰 Python,也能上傳圖片、掃描件或表格截圖測試效果,這個方向也和 AI Agent 進入可視化操作介面的趨勢一致。

部署前要先想清楚硬體與模型大小

InternVL3 有不同參數規模。不要一開始就衝最大模型,除非你已經有足夠顯存和多卡環境,比較務實的做法,是先用 14B 或更小版本建立流程,確認 API、Open WebUI、圖片上傳、OCR 品質和下游應用都通,再決定是否升級。

lmdeploy 官方支援量化與多種推理引擎,這表示部署時可以在速度、顯存、品質之間取平衡。若是個人工作站,應該先關心能不能穩定跑起來。若是團隊服務,才進一步考慮併發、多卡與監控。

如果已經在比較本地模型格式與顯卡路線,可以順手參考 Ollama 與 Qwen 量化選擇這類文章。雖然工具不同,但同樣是在處理顯存、速度和品質的取捨。

適合拿來做什麼

  • 把掃描 PDF 或圖片文件轉成可分析的文字與表格。
  • 判讀手寫註記、發票、表單、截圖與複雜版面。
  • 為內部知識庫補上圖片與文件理解能力。
  • 替 GUI Agent 提供畫面理解與狀態判斷。
  • 建立不依賴雲端 API 的企業內部 VLM 服務。

我會特別看好文件處理和內部工具場景。因為這些工作通常資料敏感,而且每家公司文件格式不同,雲端通用 OCR 未必能直接解決。能本地跑,代表可以把資料留在自己的機器或內網裡,再慢慢針對真實樣本調整流程。

我的結論

InternVL3 加 lmdeploy 的組合,真正值得看的不是安裝命令,而是它讓本地 VLM 服務變得更像一個可長期使用的基礎設施。模型負責看懂圖片與文件,lmdeploy 負責把模型服務化,Open WebUI 或其他前端負責降低使用門檻。

如果你的工作裡有大量掃描件、圖片表格、手寫內容、UI 截圖或需要保密的文件,這條路線很值得測。它不一定會取代所有 OCR 工具,但會讓 OCR 從單純辨識文字,升級成理解畫面裡的結構與意圖。

延伸資源

InternVL3.5 models HuggingFace

FAQ

InternVL3 適合做什麼?

InternVL3 適合處理 OCR、掃描件、手寫字、表格截圖、圖文混排文件和 GUI 畫面理解。它的價值不只是描述圖片,而是把視覺資料轉成可被後續流程使用的資訊。

lmdeploy 在這裡扮演什麼角色?

lmdeploy 是部署與服務化工具。它可以把 InternVL3 這類模型包成 API server,讓 Open WebUI、Python 腳本或內部工具用 OpenAI 相容方式呼叫。

一定要用最大版本的 InternVL3 嗎?

建議先用較小版本把流程跑通,確認 OCR 品質、顯存占用、API 和前端整合都穩定,再依需求升級到更大的模型。