Go to file
2026-04-13 17:50:03 +08:00
2025-12-25 15:32:44 +08:00
2025-12-25 15:32:44 +08:00
2025-12-25 15:32:44 +08:00
2026-04-13 17:50:03 +08:00
2025-12-25 15:32:44 +08:00
2025-12-25 15:32:44 +08:00
2025-12-25 15:32:44 +08:00

病虫害识别 API

基于 OpenRouter 的 Qwen3 VL 8B Instruct 模型构建的病虫害识别 FastAPI 服务。

功能特性

  • 🖼️ 支持图片上传识别病虫害
  • 🔍 智能识别植物病虫害类型和症状
  • 💡 提供详细的防治建议
  • 📡 支持 base64 编码图片识别
  • 🚀 基于 FastAPI 的高性能异步接口

安装

  1. 克隆项目并进入目录
cd hm-qwen3-vl
  1. 安装依赖
pip install -e .

或者使用 uv推荐

uv pip install -e .
  1. 配置环境变量

复制 env.example.env 并填入你的 OpenRouter API 密钥:

cp env.example .env

编辑 .env 文件,填入你的 API 密钥:

OPENROUTER_API_KEY=your_openrouter_api_key_here

获取 API 密钥:访问 OpenRouter 注册并获取 API 密钥。

运行服务

python main.py

或者使用 uvicorn 直接运行:

uvicorn main:app --host 0.0.0.0 --port 8000 --reload

服务启动后,访问以下地址:

API 接口

1. 图片上传识别

POST /api/v1/identify

上传图片文件进行病虫害识别。

请求参数:

  • file (file, required): 植物图片文件(支持 jpg, jpeg, png
  • question (string, optional): 自定义问题,不提供则使用默认提示

示例(使用 curl

curl -X POST "http://localhost:8000/api/v1/identify" \
  -H "accept: application/json" \
  -H "Content-Type: multipart/form-data" \
  -F "file=@/path/to/plant_image.jpg" \
  -F "question=请识别这张图片中的病虫害问题"

示例(使用 Python requests

import requests

url = "http://localhost:8000/api/v1/identify"
files = {"file": open("plant_image.jpg", "rb")}
data = {"question": "请识别这张图片中的病虫害问题"}

response = requests.post(url, files=files, data=data)
print(response.json())

响应示例:

{
  "success": true,
  "result": "根据图片分析,该植物叶片上出现了...",
  "image_info": {
    "format": "JPEG",
    "size": [1920, 1080],
    "mode": "RGB"
  }
}

2. Base64 图片识别

POST /api/v1/identify/base64

使用 base64 编码的图片进行识别。

请求体JSON

{
  "image_base64": "iVBORw0KGgoAAAANS...",
  "question": "请识别这张图片中的病虫害问题"
}

示例:

curl -X POST "http://localhost:8000/api/v1/identify/base64" \
  -H "Content-Type: application/json" \
  -d '{
    "image_base64": "base64_encoded_image_string",
    "question": "请识别病虫害"
  }'

3. 健康检查

GET /health

检查服务状态。

响应:

{
  "status": "healthy",
  "model": "qwen/qwen-3-vl-8b-instruct"
}

使用 Swagger UI

启动服务后,访问 http://localhost:8000/docs 可以使用交互式 API 文档进行测试。

注意事项

  1. API 密钥安全:请妥善保管你的 OpenRouter API 密钥,不要将其提交到版本控制系统
  2. 图片大小:图片会自动缩放到最大 4096x4096 像素
  3. 请求超时API 请求超时时间设置为 60 秒
  4. 费用:使用 OpenRouter API 可能会产生费用,请查看 OpenRouter 定价

技术栈

  • FastAPI现代、快速的 Web 框架
  • OpenRouter统一的 AI 模型 API 接口
  • Qwen3 VL 8B Instruct多模态视觉语言模型
  • Pillow图片处理库
  • httpx异步 HTTP 客户端

许可证

MIT

Description
基于Qwen3 VL 模型的病虫害识别 FastAPI 服务
Readme 165 KiB
Languages
Python 93.3%
Dockerfile 6.7%