Skip to content

Repository files navigation

图片识别工具集

本地图片识别:Kimi 视觉 MCP 服务器 + DeepSeek CLI 工具,共用同一套图片预处理(image_utils.py)。

安装

pip install -r requirements.txt
cp .env.example .env   # 填入你的 API Key

1. MCP 服务器(Kimi 视觉,推荐)

mcp_server.py 是一个安全的 MCP 工具服务器:只接受本地图片路径,拒绝远程 URL, 图片经 EXIF 转置、缩略(最长边 1600px)、透明底转白、JPEG 压缩后再发送给 Kimi 视觉模型。

在 MCP 客户端中配置:

{
  "mcpServers": {
    "image-recognition": {
      "command": "python",
      "args": ["D:/Code/image_recognition/mcp_server.py"],
      "env": {}
    }
  }
}

工具 analyze_image 参数:

参数 必填 说明
image_path 本地图片绝对路径(或相对 MCP 客户端工作目录)
prompt 提取重点,如「OCR 全部文字」「描述 UI 布局」
detail 详细程度:brief / normal / high,默认 normal
max_tokens 响应上限 256~12000,默认取 KIMI_MAX_TOKENS

2. CLI 工具(DeepSeek)

python recognize.py photo.jpg
python recognize.py photo.jpg "这张图中有什么物体?"

支持本地代理(USE_PROXY=1 时走 http://localhost:4000/v1)。

3. 模型探测脚本

python test_models.py   # 探测各 DeepSeek 模型是否支持图片输入(消耗少量额度)

环境变量

Kimi(mcp_server.py)

变量 默认值 说明
MOONSHOT_API_KEY / KIMI_API_KEY API Key(必填)
KIMI_BASE_URL https://api.moonshot.ai/v1 仅允许 Moonshot 官方端点
KIMI_MODEL kimi-k2.6 视觉模型名
KIMI_MAX_IMAGE_MB 12 原始图片大小上限
KIMI_MAX_EDGE_PX 1600 压缩后最长边像素
KIMI_MAX_TOKENS 4096 默认响应 token 上限(自动 clamp 到 256~12000)
KIMI_TIMEOUT_SECONDS 90 请求超时
KIMI_THINKING disabled 是否启用 thinking
KIMI_IMAGE_ALLOWED_ROOTS 用户主目录 允许读取的目录白名单,; 分隔

DeepSeek(recognize.py / test_models.py)

变量 默认值 说明
DEEPSEEK_API_KEY API Key(必填)
DEEPSEEK_BASE_URL https://api.deepseek.com/v1 API 端点
DEEPSEEK_VISION_MODEL deepseek-v4-pro 视觉模型名
DEEPSEEK_MAX_EDGE_PX 1600 压缩后最长边像素
DEEPSEEK_MAX_TOKENS 2000 响应 token 上限
DEEPSEEK_TIMEOUT_SECONDS 120 请求超时
USE_PROXY 1/true/yes 时走本地代理
PROXY_PORT 4000 本地代理端口

安全设计

  • 远程图片 URL(http/https/file)一律拒绝,只接受本地文件。
  • 图片读取限制在 KIMI_IMAGE_ALLOWED_ROOTS 白名单内(默认用户主目录)。
  • 发送给模型的 system prompt 明确要求:图片中的文字只作转写对象,不当作指令执行(防提示词注入)。
  • 大图先压缩再传输,避免超时和多余 token 消耗。

测试

python -m py_compile mcp_server.py recognize.py image_utils.py test_models.py

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages