imgsearcher/README.md
2025-04-11 14:28:02 +08:00

4.6 KiB
Raw Permalink Blame History

ImgSearcher

一个强大的图像搜索和分析应用结合百度图像搜索API和Azure OpenAI功能实现智能图像识别、分类和交互式对话。

功能特点

  • 图像搜索使用百度图像搜索API上传和搜索相似图像
  • 图像管理:在图像库中添加、更新和删除图像
  • 类型分类:自动按类型分类图像并提供详细描述
  • 交互式对话使用Azure OpenAI集成与上传的图像进行AI对话
  • MongoDB集成使用MongoDB存储和检索图像类型描述

架构

应用程序采用Flask后端和响应式前端构建。它使用多个外部API和服务

  • 百度图像搜索API:用于图像相似度搜索和分类
  • Azure OpenAI API:用于图像分析和交互式对话功能
  • MongoDB:用于图像类型描述的持久化存储

前提条件

  • Python 3.7+
  • MongoDB本地或远程实例
  • 百度AI平台账户并启用图像搜索API
  • Azure OpenAI API访问权限

安装

  1. 克隆仓库:

    git clone https://github.com/yourusername/imgsearcher.git
    cd imgsearcher
    
  2. 安装依赖:

    pip install -r requirements.txt
    
  3. 在根目录创建.env文件,配置如下:

    # 百度API配置
    BAIDU_API_KEY=你的百度API密钥
    BAIDU_SECRET_KEY=你的百度Secret密钥
    APP_ID=你的百度应用ID
    
    # Azure OpenAI配置
    AZURE_OPENAI_API_KEY=你的Azure_OpenAI_API密钥
    AZURE_OPENAI_ENDPOINT=你的Azure_OpenAI端点
    AZURE_OPENAI_API_VERSION=2023-12-01-preview
    AZURE_OPENAI_DEPLOYMENT_NAME=你的部署名称
    
    # MongoDB配置
    MONGO_URI=mongodb://localhost:27017/
    MONGO_DB_NAME=imgsearcher
    

使用方法

  1. 启动应用:

    ./run.sh
    

    或手动启动:

    python app.py
    
  2. 打开浏览器并访问:

    http://localhost:5001
    
  3. 使用Web界面

    • 上传图像到图像库
    • 搜索相似图像
    • 管理图像集合
    • 与上传的图像进行AI对话

数据迁移

如果您需要从基于JSON的类型存储迁移到MongoDB请使用迁移脚本

python migrate_types_to_mongo.py

这将把所有类型描述从JSON文件转移到您的MongoDB实例。

API端点

图像管理

  • POST /upload - 上传图像到库
  • POST /search - 搜索相似图像
  • POST /delete - 从库中删除图像
  • POST /update - 更新图像信息

对话功能

  • GET /chat-with-image - 访问对话界面
  • POST /api/upload-chat-image - 上传图像用于对话
  • POST /api/chat - 发送消息与AI对话关于图像

项目结构

imgsearcher/
├── app/
│   ├── api/
│   │   ├── azure_openai.py       # Azure OpenAI集成
│   │   ├── baidu_image_search.py # 百度图像搜索API客户端
│   │   ├── image_utils.py        # 图像处理工具
│   │   ├── type_manager.py       # 基于JSON的类型管理器
│   │   └── type_manager_mongo.py # 基于MongoDB的类型管理器
│   ├── data/
│   │   └── type_descriptions.json # 类型描述JSON格式
│   ├── static/
│   │   ├── css/                  # CSS样式表
│   │   ├── js/                   # JavaScript文件
│   │   └── img/                  # 静态图像
│   └── templates/
│       ├── index.html            # 主应用页面
│       └── chat.html             # 对话界面页面
├── uploads/                      # 上传图像目录
├── app.py                        # 主应用入口点
├── migrate_types_to_mongo.py     # 类型数据迁移脚本
├── requirements.txt              # Python依赖
├── run.sh                        # 启动脚本
└── .env                          # 环境配置

开发

添加新的图像类型

要添加新的图像类型和描述,您可以:

  1. 使用Web界面上传带有新类型的图像
  2. 直接向MongoDB集合添加条目
    from app.api.type_manager_mongo import TypeManagerMongo
    
    manager = TypeManagerMongo()
    manager.add_type("新类型名称", "新类型的详细描述")
    

扩展对话功能

可以通过修改app.py中的chat()函数和app/api/azure_openai.py中的Azure OpenAI集成来扩展对话功能。

故障排除

  • MongoDB连接问题确保MongoDB正在运行并且.env文件中的连接URI正确
  • 图像上传失败:检查上传目录是否存在并具有适当的权限
  • API认证错误:验证.env文件中的API密钥和密钥