# 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. 克隆仓库: ```bash git clone https://github.com/yourusername/imgsearcher.git cd imgsearcher ``` 2. 安装依赖: ```bash 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. 启动应用: ```bash ./run.sh ``` 或手动启动: ```bash python app.py ``` 2. 打开浏览器并访问: ``` http://localhost:5001 ``` 3. 使用Web界面: - 上传图像到图像库 - 搜索相似图像 - 管理图像集合 - 与上传的图像进行AI对话 ## 数据迁移 如果您需要从基于JSON的类型存储迁移到MongoDB,请使用迁移脚本: ```bash 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集合添加条目: ```python 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密钥和密钥