快速结论:这个报错通常出现在用 Ollama 的 Gemma 4 视觉模型(gemma4)做 OCR 或读屏截图识别时:模型对 1920×1080 等高分辨率图片返回“没有可识别文字”或产生幻觉,而同一张图在 llama.cpp / HuggingFace 下正常。优先排查 Ollama 的图片预处理是否把图像强制降采样到 max_soft_tokens=280(约 645K 像素)。
适用环境:Issue 已确认:Ollama 0.31.2;Windows 11 Pro(Build 26200);NVIDIA GeForce RTX 3080 Ti Laptop GPU(16GB VRAM);Intel 12th Gen Core i7-12800HX。复现方式为 CLI 和 REST API。
最快修复方案:升级到 Ollama 0.34.1。该版本已修复:GGUF 系列模型的 image token budget 现在会根据分辨率和宽高比动态选择,不再是硬编码的 max_soft_tokens=280。
注意事项:Issue 中提到把 maxTokens 提高到 1120 可能在某些配置下触发 OOM(见 #15626),因此提高分辨率预算需权衡显存。0.34.1 的动态策略是否覆盖所有场景、是否仍存在极端宽高比下的降采样,Issue 未展开说明,升级后建议用高分辨率截图实测确认。
问题场景
用户在 Ollama 中拉取并运行 Gemma 4 视觉模型(ollama pull gemma4),向其传入一张 1920×1080、文字清晰可读的截图,要求逐字读出图中文字。模型却回答图中没有可辨认文字,或输出与图片无关的内容(false negative / 幻觉)。该问题在 CLI 和 REST API 两条调用路径上均可复现。
报错原文
time=2026-07-12T20:19:46.418-07:00 level=INFO source=sched.go:1158 msg="disabling mmap for llama-server load by default"
load_tensors: offloaded 41/41 layers to GPU
llama_context: n_ctx = 4096
llama_context: n_ctx_seq (4096) < n_ctx_train (262144) -- the full capacity of the model will not be utilized
# Model response for a 1920x1080 screenshot with clear, readable text:
"There is no discernible text in the image. The image appears to be an abstract or textured background pattern, but it does not contain any readable letters, words, or numbers."
# Same image with llama.cpp --image-max-tokens 1120:
[correctly outputs all visible text]
原因分析
Issue 作者定位到 Ollama 在 model/models/gemma4/process_image.go 中把 max_soft_tokens 硬编码为 280,相当于把图片池化后限制在约 645K 像素。1920×1080 截图因此被静默降采样到约 1056×576(只剩原图约 31% 面积),4K 图更会降到约 8%。同时缩放使用 draw.BiLinear.Scale 双线性插值,相比参考实现使用的 Bicubic 会进一步柔化文字边缘。Gemma 4 本身支持 70/140/280/560/1120 等多档可配置 token 预算,问题在于 Ollama 没有把这一预算暴露给用户,也没有提供关闭降采样的选项。作者提供了跨实现对照证据:同一模型、同一图片在 llama.cpp(--image-max-tokens 1120)和 HuggingFace Transformers(max_soft_tokens=1120)下均能正确识别,说明更像是 Ollama 的预处理问题,而非模型能力问题。
环境排查
- 确认 Ollama 版本:0.31.2 存在该问题;0.34.1 声称已修复,建议以版本号对照升级。
- 确认模型:是否为
gemma4(Gemma 4 视觉模型),以及是否为 GGUF 格式加载路径。 - 确认图片分辨率与宽高比:问题在 1920×1080 这类高分辨率截图上最容易暴露。
- 确认 GPU 与显存:Issue 环境为 RTX 3080 Ti Laptop(16GB VRAM),日志显示 41/41 层已 offload 到 GPU;显存不足时提高 image token 预算可能 OOM。
- 确认
n_ctx设置:Issue 日志中n_ctx = 4096,低于n_ctx_train (262144),但这属于模型上下文容量提示,与图片降采样无直接关系。 - 如可用,准备一个对照组:llama.cpp 加
--image-max-tokens 1120或 HuggingFace Transformers 加max_soft_tokens=1120,用于判断问题是否只出现在 Ollama。
解决步骤
- 先记录当前 Ollama 版本,确认是否为 0.31.2 或同样受影响的旧版本。
- 升级 Ollama 到 0.34.1。该版本已合并修复:GGUF 模型的 token budget 现在会根据图像分辨率与宽高比动态选取,不再固定为 280。
- 升级后重新拉取或复用已有
gemma4模型,运行与之前相同的图片识别命令:ollama run gemma4 "Read all text in this image verbatim" C:\test\screenshot.png。 - 如果升级后仍出现误判,用 llama.cpp(
--image-max-tokens 1120)或 HuggingFace Transformers(max_soft_tokens=1120)对同一张图做对照,确认是 Ollama 预处理问题还是图片/提示词问题。 - 在显存紧张的环境下,不要盲目手工把 token 预算拉到 1120;Issue 指出这可能引发 OOM(#15626),应优先使用 0.34.1 的动态策略,并观察显存占用。
- 可优先尝试:关注 #15626 中关于暴露
max_soft_tokens的进展,如果未来版本提供显式参数,再按需为高分辨率 OCR 场景调高预算或关闭降采样。这一步属于功能请求方向,Issue 中尚无已合入的用户可调参数证据。
验证方法
用同一张 1920×1080、文字清晰的截图,在升级到 0.34.1 后重新执行 CLI 识别命令。若模型能够逐字输出图中可见文字,而不是回答“There is no discernible text in the image”之类的 false negative,即可认为问题已解决。可同时用 REST API 再测一次,确认 CLI 与 API 结果一致。为排除偶然性,建议再补测一张 4K 截图或不同宽高比的图片,观察是否仍存在明显降采样导致的识别失败。
参考来源
AI 工具推荐
想把多个 AI 模型放在一个入口?
GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。
推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。
这个方案解决了吗?
可以继续搜索完整报错,或查看同一工具的其他排查指南。
![[Request] add display "discrete_flow_shift", "timestep_sampling"](https://www.chat-gpts.plus/wp-content/uploads/2026/09/2383-e76fac8c-768x403.jpg)
![[QUESTION] - Anima LoRA training params](https://www.chat-gpts.plus/wp-content/uploads/2026/09/2363-c9b8ad85-768x403.jpg)
