一直用 llama.cpp + Qwen3.6-27B 写代码,直到某天翻了翻文档,发现只要加个 --mmproj 参数就能识图。于是把手头四个模型全翻出来,从 OCR 到看图写网页,打了一架。
写在前面:一个被忽略的参数
事情是这样的。
我一直用 llama.cpp + Qwen3.6-27B 纯文本模式写代码,效率还不错。但也一直有个心结——我本地跑的 llama-server,为啥不能识图?
直到有一天我翻了翻文档,发现了这个参数:
--mmproj ../Qwen3.6-27b-mmproj-F16.gguf
就这?就这。
之前几个月我一直开着纯文本模式,相当于买了一台带摄像头的手机,却只用它打电话。
既然发现了,那就别浪费。我把手头四个支持多模态的模型全拉出来,从纯文字识别到看图生成 HTML,挨个测了一遍。
测试准备
两个典型场景,四款模型,一张显卡(RTX 4090D,24G):
| 测试组 | 任务 | 测试图 |
|---|---|---|
| 测试组一 | 纯文字识别(OCR) | benchmark 对比表格截图 |
| 测试组二 | 网页截图 → HTML 代码生成 | 自己设计的网页应用截图 |
测试组一:纯文字识别(OCR)
测试图片
用 GLM-OCR 识别 benchmark 对比表格截图:
GLM-OCR 输出文本
Performance
• Document Parsing & Information Extraction
GLM-OCR
OmmiDocBranch v1.5
94.6 94.5 91.1 90.7 88.4 90.3 85.4
OCRBench (Final)
94.0 75.3 34.7 75.3 92.1 91.9 83.7
UniBIRNet
96.5 96.1 85.8 96.4 90.0 96.4 90.5
Data Representation
PubTetNet
85.2 84.6 88.4 71.0 91.4 84.4
TEDS_TEST
86.0 83.3 85.4 62.4 81.8 67.6
Information Extraction
Nanorolex-KIE
93.7 95.2 87.5
Handwritten-Forms
86.1 94.5 78.2
• Real-World Scenarios Performance
GLM-OCR
Code
84.7 75.8 82.1 82.9 80.8 86.9 86.4
Real-world Table
91.5 86.1 79.8 81.8 90.6 86.7
Handwriting
87.0 87.4 73.8 54.2 71.7 90.0 78.0
Multi-language
69.3 54.8 66.1 27.8 65.1 86.2 70.1
Seal
90.5 42.2 40.4 65.0 91.3 58.8
Receipt IKE!
94.5 97.3 83.5
• Speed Test
For speed, we compared different OCR methods under identical hardware and testing conditions (single replica, single concurrency), evaluating their performance in parsing and exporting Markdown files from both image and PDF inputs. Results show GLM-OCR achieves a throughput of 1.86 pages/second for PDF documents and 0.67 images/second for images, significantly outperforming comparable models.
Methods Image Inputs Pages / Sec
GLM-OCR 0.67 1.86
PaddleOCR-VL-1.5 0.39 1.22
Deepseek-OCR2 0.32
MinerU2.5 0.18 0.48
dots.ocr 0.10
Usage
Official SDK
OCR 结果分析
从图片对比 GLM-OCR 输出来看:
| 维度 | 表现 |
|---|---|
| 文字还原 | 分组标题和模型名称都正确识别 |
| 数值准确性 | 所有数字准确识别 |
| 排版细节 | 能提取表格数据,但几乎没有排版 |
| 整体结论 | 纯文字提取场景下表现出色 |
各模型 OCR 横评
| 模型 | 文字识别精度 | 模糊小字 | 速度 | 能否推理 |
|---|---|---|---|---|
| GLM-OCR | ⭐⭐⭐ 最高 | ✅ 也能识别 | ⚡ 极快(27B 的 10 倍) | ❌ 不能 |
| MiniCPM-V-4.6 | ⭐⭐ 一般 | ❌ 不行 | — | ✅ 有限 |
| Qwen3.6-27B | ⭐⭐⭐ 较高 | ❌ 不行 | 慢 | ✅ 较强 |
| Gemma-4-31B-it | ⭐⭐ 一般 | ❌ 不行 | 慢 | ✅ 较强 |
GLM-OCR 在纯文字识别上直接把其他三个按在地上摩擦(其它的测试就不放了)。速度比qwen3.6 27b 快了 10 倍,角落里的模糊小字都能认出来。代价是没有推理能力——你问它"这个表格说明了什么趋势",它会再给你输出一遍文字。
测试组二:网页截图 → HTML 代码生成
测试原图
这才是这次测试的真正目的——让模型"看图写网页"。
下图是我设计的一个网页应用页面:
用同一张网页设计截图,分别让四个模型生成 HTML 代码,看看谁能精准还原。
测试结果速览
| 模型 | 网页生成效果 | Prompt 要求 | 评价 |
|---|---|---|---|
| GLM-OCR | ❌ 不适用 | — | 专业 OCR,生成任务不行 |
| MiniCPM-V-4.6 | ❌ 不行 | 中 | 文字识别还行,无法生成可用网页 |
| Qwen3.6-27B | ✅ 精确 | 高(需严格 prompt) | 布局和样式还原度高 |
| Gemma-4-31B-it | ✅ 精确 | 低 | prompt 宽容,生成质量稳定 |
各模型生成结果
MiniCPM-V-4.6:文字识别 OK,但生成网页不行。
Qwen3.6-27B:需要严格 prompt,提取文字和生成网页都较为精确(极少词语识别错误)。
Gemma-4-31B-it:不需要严格 prompt,中文识别精度比 Qwen3.6-27B 稍差。排版也稍差(测试用例)
各模型启动命令与详评
1. GLM-OCR——专为 OCR 而生的偏科天才
llama-server.exe -ngl 99 -c 265000 -ctk q8_0 -ctv q8_0 --reasoning off -m ../GLM-OCR-Q8_0.gguf --mmproj ../mmproj-GLM-OCR-Q8_0.gguf
| 项目 | 内容 |
|---|---|
| 模型来源 | hf-mirror.com/ggml-org/GL… |
| 类型 | 专业化 VLM(智能 OCR) |
| 文字识别 | ⭐⭐⭐ 角落模糊小字也能识别 |
| 网页生成 | ❌ 不适用 |
| 速度 | ⚡ 极快(约 Qwen3.6-27B 的 10 倍) |
| 限制 | 不能推理问问题,问文字相关问题会重复输出 |
结论:特定任务优势巨大,模型小速度快。但如果你的需求不只是"提取文字",它就没法用了。
2. MiniCPM-V-4.6——各方面都差一口气
llama-server.exe -ngl 65 -c 145000 -ctk q8_0 -ctv q8_0 --reasoning off -m ../MiniCPM-V-4_6-F16.gguf --mmproj ../MiniCPM-V-4_6-mmproj-f16.gguf
| 项目 | 内容 |
|---|---|
| 模型来源 | hf-mirror.com/openbmb/Min… |
| 类型 | 通用 VLM |
| 文字识别 | ⭐⭐ 一般 |
| 网页生成 | ❌ 不行 |
| Prompt 要求 | 中 |
结论:能力较为平庸,文字识别和网页生成都不突出。有推理能力,速度是 Qwen3.6-27B 的 5 倍,但在我的两个测试场景里都没找到特别适合的位置。也许在别的任务上能发光。
3. Qwen3.6-27B——全面均衡,prompt 写好了就是王者
llama-server.exe -ngl 65 -c 110000 -ctk q8_0 -ctv q8_0 --reasoning off -m ../Qwen3.6-27B-Q4_K_M.gguf --mmproj ../Qwen3.6-27b-mmproj-F16.gguf
| 项目 | 内容 |
|---|---|
| 模型来源 | hf-mirror.com/unsloth/Qwe… |
| 类型 | 通用 VLM |
| 文字识别 | ⭐⭐⭐ 较高(模糊小字不行) |
| 网页生成 | ✅ 精确 |
| Prompt 要求 | 高(需严格 prompt) |
| 速度 | 慢 |
结论:我的主力本地模型。RTX 4090D 24G 跑 Qwen3.6-27B Q4_K_S 量化版,128K 上下文刚好够用。Prompt 写精细了,效果就是四个模型里最好的。最近云端在用的 Deepseek V4 Flash Free 又快又免费(写这篇文章时还免费,可能你看到时已经不免费了)。
4. Gemma-4-31B-it——最省心的选择
llama-server.exe -ngl 99 -c 65000 -ctk q8_0 -ctv q8_0 --reasoning off -m ../gemma-4-31B-it-Q4_K_M.gguf --mmproj ../gemma-4-31B-it-mmproj-F16.gguf
| 项目 | 内容 |
|---|---|
| 模型来源 | hf-mirror.com/unsloth/gem… |
| 类型 | 通用 VLM |
| 文字识别 | ⭐⭐ 一般(比 Qwen3.6 差) |
| 网页生成 | ✅ 精确 |
| Prompt 要求 | 低——最省心 |
| 速度 | 慢 |
结论:不用费心写 prompt,网页生成效果稳定。但中文能力确实不如 Qwen3.6-27B。美国巨头开源的同级模型,在我的测试任务上比不上中国公司的模型。中文精度、网页排版都差一截,模型还大些,速度还慢些。
综合对比
OCR 任务
| 模型 | 精度 | 模糊场景 | 速度 | 推荐 |
|---|---|---|---|---|
| GLM-OCR | ⭐⭐⭐ | ✅ | ⚡⚡⚡ | ⭐⭐⭐ 首选 |
| Qwen3.6-27B | ⭐⭐⭐ | ❌ | ⚡ | ⭐⭐ 备选 |
| Gemma-4-31B-it | ⭐⭐ | ❌ | ⚡ | ⭐⭐ |
| MiniCPM-V-4.6 | ⭐⭐ | ❌ | ⚡⚡ | ⭐ |
首选:GLM-OCR,又快又准。Qwen3.6-27B 在需要理解文字语义排版时可替补。
网页生成任务
| 模型 | 还原度 | Prompt 宽容度 | 速度 | 推荐 |
|---|---|---|---|---|
| Qwen3.6-27B | ⭐⭐⭐ | ⭐⭐ | ⚡ | ⭐⭐⭐ prompt 写得好时最佳 |
| Gemma-4-31B-it | ⭐⭐ | ⭐⭐⭐ | ⚡ | ⭐⭐ 省心稳定 |
| GLM-OCR | ❌ | — | ⚡⚡⚡ | ⭐ 不适用 |
| MiniCPM-V-4.6 | ⭐ | ⭐⭐ | ⚡⚡ | ⭐ 不推荐 |
首选:追求精确度用 Qwen3.6-27B(需精心写 prompt),想省心用 Gemma-4-31B-it。
一句话总结
| 模型 | 类型 | OCR 精度 | 网页生成 | Prompt 要求 | 速度 | 适合场景 |
|---|---|---|---|---|---|---|
| GLM-OCR | 专业化 VLM | ⭐⭐⭐ | ❌ | 低 | ⚡ 极快 | 纯文字提取 |
| MiniCPM-V-4.6 | 通用 VLM | ⭐⭐ | ❌ | 中 | 中等 | 待发掘 |
| Qwen3.6-27B | 通用 VLM | ⭐⭐⭐ | ✅ 精确 | 高 | 慢 | 精确输出 |
| Gemma-4-31B-it | 通用 VLM | ⭐⭐ | ✅ 精确 | 低 | 慢 | 多语言场景 |
- 专业化 VLM:GLM-OCR 模型小速度快,文字识别准确率极高,但无法视觉推理。
- 通用 VLM:能力全面但速度慢。Qwen3.6-27B 精确 prompt 效果最好,Gemma-4-31B-it 胜在省心。
一些场景想法
测试完这四个模型,脑子里冒出几个可能用得上的场景,记下来备用。
纯文字提取类
| 场景 | 推荐模型 | 说明 |
|---|---|---|
| 截图代码提取 | GLM-OCR / Qwen3.6-27B | 纯文字提取用 GLM,需要语义理解用 Qwen |
| 文档版面分析 | Qwen3.6-27B | 双栏排版、表格混合,需要理解阅读顺序 |
| 图表数据提取 | Qwen3.6-27B | 折线图柱状图提取原始数据,数值精度高 |
视觉理解 + 生成类
| 场景 | 推荐模型 | 说明 |
|---|---|---|
| 架构图 → 文档/代码 | Qwen3.6-27B | 识别组件和箭头关系,生成 Mermaid 流程图 |
| 手绘线框图 → HTML | Qwen3.6-27B / Gemma-4-31B-it | 精确还原用 Qwen,省心用 Gemma |
视觉分析 + 指令执行类
| 场景 | 推荐模型 | 说明 |
|---|---|---|
| UI 自动化测试元素定位 | GLM-OCR / Qwen3.6-27B | 纯文字提取用 GLM,复杂语义用 Qwen |
| 截图差异比对 | Gemma-4-31B-it / Qwen3.6-27B | 视觉理解 + 指令跟随 |
通用原则:纯文字提取 → GLM-OCR;需要理解视觉语义 + 精确输出 → Qwen3.6-27B;对 prompt 不敏感的场景 → Gemma-4-31B-it。MiniCPM-V-4.6 在本次测试中没有找到明显优势场景,暂时搁置。
写于把 --mmproj 参数加进启动命令之后。以前觉得多模态模型离我很远,没想到一个参数的距离,就能让本地模型"看见"世界。四个模型各有优劣,选对了就是利器,选错了就是浪费显存。
参考资料
- llama.cpp GitHub — 支持多模态推理的 GGUF 格式
- GLM-OCR-GGUF
- MiniCPM-V-4.6-GGUF
- Qwen3.6-27B-GGUF
- Gemma-4-31B-it-GGUF