378 lines
13 KiB
Markdown
378 lines
13 KiB
Markdown
# 🍽️ 个性化饮食推荐APP
|
||
|
||
一个基于机器学习和OCR技术的智能饮食推荐系统,具有现代化的移动端界面和强大的AI分析能力。
|
||
|
||
## ✨ 最新特性
|
||
|
||
### 📷 OCR热量识别
|
||
- **多引擎OCR支持**:Tesseract、PaddleOCR、EasyOCR
|
||
- **智能图片识别**:自动识别食物名称和热量信息
|
||
- **多级验证机制**:OCR结果 + 数据库匹配 + 用户确认
|
||
- **学习优化系统**:从用户修正中持续学习改进
|
||
- **一键记录**:拍照即可完成餐食记录
|
||
|
||
### 🎨 现代化界面设计
|
||
- **圆角设计系统**:统一的圆角主题,减少方形元素
|
||
- **多色主题支持**:主色、次色、强调色等多种配色
|
||
- **移动端适配**:专为手机屏幕优化的界面布局
|
||
- **卡片式设计**:清晰的信息层次和视觉反馈
|
||
- **响应式交互**:悬停效果和状态变化
|
||
|
||
## 🎯 核心功能
|
||
|
||
### 1. 智能数据采集
|
||
- **OCR图片识别**:📷 拍照识别食物热量信息
|
||
- **5天三餐数据记录**:详细记录早中晚三餐的饮食内容
|
||
- **用户偏好问卷**:口味偏好、饮食习惯、过敏信息等
|
||
- **生理周期跟踪**:针对女性的生理期、排卵期等特殊时期
|
||
- **个性化因素**:星座、性格特征等参考因素
|
||
|
||
### 2. 机器学习推荐引擎
|
||
- **个人饮食模型训练**:基于用户历史数据训练个性化模型
|
||
- **持续学习机制**:根据用户反馈不断优化推荐
|
||
- **偏好矫正**:用户不喜欢或已食用食物的反馈学习
|
||
- **多因素融合**:结合生理周期、星座等多维度因素
|
||
|
||
### 3. AI大模型分析
|
||
- **千问大模型集成**:智能营养分析和建议生成
|
||
- **热量分析**:每日饮食热量计算和评估
|
||
- **营养建议**:基于大模型的智能营养建议
|
||
- **个性化指导**:结合用户特征的定制化建议
|
||
|
||
### 4. 现代化应用界面
|
||
- **移动端设计**:模拟小程序/安卓App的界面体验
|
||
- **圆角美化**:统一的圆角设计语言
|
||
- **多色主题**:丰富的颜色搭配和视觉层次
|
||
- **实时推荐**:动态推荐系统
|
||
- **数据可视化**:饮食趋势、营养分析图表
|
||
|
||
## 🏗️ 技术架构
|
||
|
||
### 核心基座
|
||
- **统一基座架构**:模块化设计,支持功能扩展
|
||
- **SQLite数据库**:轻量级本地数据存储
|
||
- **事件总线系统**:模块间通信和事件处理
|
||
- **数据管理器**:统一的数据访问接口
|
||
|
||
### OCR识别技术
|
||
- **Tesseract OCR**:开源OCR引擎,支持中英文(**默认,轻量级,推荐**)
|
||
- **PaddleOCR**:百度开源OCR,中文识别优秀(可选,需要PaddlePaddle,占用内存较大)
|
||
- **EasyOCR**:简单易用的多语言OCR库(可选,需要PyTorch,占用内存很大)
|
||
- **OpenCV**:图像预处理和增强
|
||
- **PIL/Pillow**:图像处理和格式转换
|
||
|
||
**注意**:默认配置仅使用Tesseract OCR(轻量级,无需深度学习框架)。如需使用PaddleOCR或EasyOCR:
|
||
1. 取消注释`requirements.txt`中对应依赖
|
||
2. 安装依赖:`pip install paddleocr` 或 `pip install easyocr`
|
||
3. 在OCR模块配置中添加对应引擎到`ocr_methods`列表
|
||
|
||
### 机器学习
|
||
- **scikit-learn**:推荐算法实现
|
||
- **pandas/numpy**:数据处理和分析
|
||
- **joblib**:模型序列化和加载
|
||
- **TF-IDF向量化**:文本特征提取
|
||
|
||
### AI大模型集成
|
||
- **千问大模型**:阿里云通义千问API
|
||
- **智能分析**:用户意图分析和营养建议
|
||
- **个性化推理**:基于用户特征的智能推荐
|
||
|
||
### 现代化界面
|
||
- **CustomTkinter**:现代化Python GUI框架
|
||
- **移动端设计**:375x812像素,模拟手机界面
|
||
- **圆角美化系统**:统一的视觉设计语言
|
||
- **多色主题**:丰富的颜色配置系统
|
||
|
||
## 📁 项目结构
|
||
|
||
```
|
||
diet_recommendation_app/
|
||
├── core/ # 核心基座架构
|
||
│ ├── base.py # 基础类和配置
|
||
│ └── base_engine.py # 基础引擎抽象类
|
||
├── modules/ # 功能模块
|
||
│ ├── data_collection.py # 数据采集模块
|
||
│ ├── ai_analysis.py # AI分析模块
|
||
│ ├── recommendation_engine.py # 推荐引擎模块
|
||
│ └── ocr_calorie_recognition.py # OCR热量识别模块
|
||
├── gui/ # 现代化界面
|
||
│ ├── mobile_main_window.py # 移动端主界面
|
||
│ ├── ocr_calorie_gui.py # OCR识别界面
|
||
│ ├── styles.py # 样式配置系统
|
||
│ └── main_window.py # 桌面端界面
|
||
├── llm_integration/ # 大模型集成
|
||
│ └── qwen_client.py # 千问大模型客户端
|
||
├── smart_food/ # 智能食物数据库
|
||
│ └── smart_database.py # 食物数据库管理
|
||
├── data/ # 数据存储
|
||
│ ├── users/ # 用户数据
|
||
│ ├── training/ # 训练数据
|
||
│ └── app.db # SQLite数据库
|
||
├── models/ # 机器学习模型
|
||
├── logs/ # 日志文件
|
||
├── main.py # 应用入口
|
||
├── requirements.txt # 依赖包列表
|
||
├── OCR_USAGE_GUIDE.md # OCR使用指南
|
||
├── UI_BEAUTIFICATION_SUMMARY.md # 界面美化总结
|
||
└── README.md # 项目说明文档
|
||
```
|
||
|
||
## 🚀 快速开始
|
||
|
||
### 1. 环境要求
|
||
- Python 3.8+
|
||
- Windows/macOS/Linux
|
||
|
||
### 2. 安装依赖
|
||
```bash
|
||
# 克隆项目
|
||
git clone https://github.com/random-jason/diet_recommendation.git
|
||
cd diet_recommendation
|
||
|
||
# 安装基础依赖
|
||
pip install -r requirements.txt
|
||
|
||
# 安装OCR依赖(可选)
|
||
pip install pytesseract opencv-python paddleocr easyocr
|
||
```
|
||
|
||
### 3. 配置API密钥
|
||
```bash
|
||
# 方法1: 使用自动生成的模板
|
||
python -c "from config.api_keys import create_env_template; create_env_template()"
|
||
|
||
# 方法2: 手动创建.env文件
|
||
echo "QWEN_API_KEY=your_qwen_api_key_here" > .env
|
||
```
|
||
|
||
### 4. 验证配置
|
||
```bash
|
||
# 检查API密钥配置状态
|
||
python -c "from config.api_keys import get_api_status_report; print(get_api_status_report())"
|
||
```
|
||
|
||
### 5. OCR引擎配置(可选)
|
||
|
||
#### Tesseract安装
|
||
- **Windows**: 下载 [Tesseract安装包](https://github.com/UB-Mannheim/tesseract/wiki)
|
||
- **macOS**: `brew install tesseract`
|
||
- **Linux**: `sudo apt-get install tesseract-ocr`
|
||
|
||
#### 其他OCR引擎(可选,需要深度学习框架)
|
||
```bash
|
||
# PaddleOCR(可选,需要PaddlePaddle,占用内存较大)
|
||
pip install paddleocr
|
||
|
||
# EasyOCR(可选,需要PyTorch,占用内存很大,通常需要1-2GB)
|
||
pip install easyocr
|
||
|
||
# 注意:安装后需要在OCR模块配置中添加对应引擎:
|
||
# self.ocr_methods = ['tesseract', 'paddleocr'] # 添加需要的引擎
|
||
```
|
||
|
||
### 4. 配置环境
|
||
```bash
|
||
# 创建环境配置文件
|
||
echo "QWEN_API_KEY=your_qwen_api_key_here" > .env
|
||
```
|
||
|
||
### 5. 运行应用
|
||
```bash
|
||
python main.py
|
||
```
|
||
|
||
### 6. 使用OCR功能
|
||
1. 打开应用,进入"记录"页面
|
||
2. 点击食物输入框右侧的"📷"按钮
|
||
3. 选择包含食物信息的图片
|
||
4. 点击"开始识别"进行OCR识别
|
||
5. 查看和编辑识别结果
|
||
6. 确认保存到餐食记录
|
||
|
||
## 🔐 API密钥管理
|
||
|
||
### 统一密钥管理
|
||
项目采用统一的API密钥管理系统,所有API密钥都通过 `config/api_keys.py` 进行管理:
|
||
|
||
- **千问API密钥** (必需): 用于主要AI分析服务
|
||
- **OpenAI API密钥** (可选): 备用AI服务
|
||
- **Anthropic API密钥** (可选): 备用AI服务
|
||
- **其他API密钥** (可选): Google、百度、腾讯等
|
||
|
||
### 配置方法
|
||
```python
|
||
from config.api_keys import get_qwen_key, get_api_status_report
|
||
|
||
# 获取API密钥
|
||
qwen_key = get_qwen_key()
|
||
|
||
# 检查配置状态
|
||
status = get_api_status_report()
|
||
print(f"可用提供商: {status['available_list']}")
|
||
```
|
||
|
||
### 安全特性
|
||
- ✅ 环境变量隔离
|
||
- ✅ 密钥格式验证
|
||
- ✅ 运行时状态监控
|
||
- ✅ 多提供商支持
|
||
- ✅ 自动配置建议
|
||
|
||
详细配置指南请参考:[API_KEY_SETUP_GUIDE.md](API_KEY_SETUP_GUIDE.md)
|
||
|
||
## 🔄 工作流程
|
||
|
||
### 1. 智能数据采集(5天)
|
||
- **OCR图片识别**:📷 拍照识别食物热量信息
|
||
- **手动数据记录**:详细记录三餐饮食内容
|
||
- **用户偏好问卷**:口味偏好、饮食习惯、过敏信息
|
||
- **个性化画像**:生理周期、星座、性格特征
|
||
|
||
### 2. AI模型训练
|
||
- **个人推荐模型**:基于采集数据训练个性化模型
|
||
- **多因素融合**:结合生理期、星座等多维度因素
|
||
- **OCR学习优化**:从用户修正中持续改进识别准确性
|
||
|
||
### 3. 智能推荐与学习
|
||
- **个性化推荐**:第6天开始提供智能推荐
|
||
- **用户反馈收集**:喜欢/不喜欢/已食用反馈
|
||
- **持续模型优化**:基于反馈数据不断改进
|
||
- **OCR准确性提升**:学习用户修正习惯
|
||
|
||
### 4. AI智能分析
|
||
- **千问大模型分析**:每日营养状况智能分析
|
||
- **个性化健康建议**:基于用户特征的定制建议
|
||
- **营养趋势分析**:长期饮食模式分析
|
||
|
||
## 🎨 特色功能
|
||
|
||
### 📷 OCR智能识别
|
||
- **多引擎支持**:Tesseract、PaddleOCR、EasyOCR
|
||
- **智能验证**:OCR + 数据库 + 用户确认三级验证
|
||
- **学习优化**:从用户修正中持续改进
|
||
- **一键记录**:拍照即可完成餐食记录
|
||
|
||
### 🎨 现代化界面
|
||
- **移动端设计**:375x812像素,模拟手机界面
|
||
- **圆角美化**:统一的圆角设计语言
|
||
- **多色主题**:丰富的颜色搭配和视觉层次
|
||
- **响应式交互**:悬停效果和状态变化
|
||
|
||
### 🤖 AI智能分析
|
||
- **千问大模型**:阿里云通义千问API集成
|
||
- **智能推理**:用户意图分析和营养建议
|
||
- **个性化指导**:基于用户特征的定制建议
|
||
|
||
### 👩 女性专属优化
|
||
- **生理周期智能调整**:月经期、排卵期等特殊时期
|
||
- **营养需求分析**:不同生理阶段的营养需求
|
||
- **个性化建议**:结合生理周期的饮食建议
|
||
|
||
### ⭐ 个性化因素
|
||
- **星座参考**:个性化因素融合
|
||
- **性格特征**:基于性格的饮食偏好分析
|
||
- **持续学习**:避免随机推荐问题
|
||
|
||
## 📚 文档说明
|
||
|
||
- **[OCR使用指南](OCR_USAGE_GUIDE.md)**:详细的OCR功能使用说明
|
||
- **[界面美化总结](UI_BEAUTIFICATION_SUMMARY.md)**:界面设计和技术实现
|
||
- **[项目总结](PROJECT_SUMMARY.md)**:项目整体架构和功能说明
|
||
|
||
## 🧪 测试验证
|
||
|
||
### 功能测试
|
||
```bash
|
||
# 测试OCR系统
|
||
python test_ocr_system.py
|
||
|
||
# 测试界面美化
|
||
python test_ui_beautification.py
|
||
|
||
# 测试核心功能
|
||
python test_core.py
|
||
```
|
||
|
||
### 应用启动测试
|
||
```bash
|
||
# 启动应用
|
||
python main.py
|
||
|
||
# 检查日志
|
||
tail -f logs/app.log
|
||
```
|
||
|
||
## 🚀 技术亮点
|
||
|
||
### 1. 统一基座架构
|
||
- **模块化设计**:所有功能模块基于统一基座构建
|
||
- **事件驱动**:模块间通过事件总线通信
|
||
- **数据统一**:统一的数据管理和访问接口
|
||
- **扩展性强**:支持新功能模块的快速集成
|
||
|
||
### 2. OCR多引擎融合
|
||
- **多引擎并行**:同时使用多个OCR引擎提高准确性
|
||
- **智能合并**:基于置信度的结果合并策略
|
||
- **学习优化**:从用户修正中持续学习改进
|
||
- **数据库匹配**:结合食物数据库进行智能验证
|
||
|
||
### 3. 现代化界面设计
|
||
- **移动端优先**:专为手机屏幕优化的界面设计
|
||
- **圆角美化**:统一的圆角设计语言
|
||
- **多色主题**:丰富的颜色配置和视觉层次
|
||
- **响应式交互**:流畅的用户交互体验
|
||
|
||
### 4. AI智能分析
|
||
- **千问大模型**:集成阿里云通义千问API
|
||
- **智能推理**:基于用户数据的智能分析
|
||
- **个性化建议**:结合多维度因素的定制建议
|
||
- **持续学习**:从用户反馈中不断优化
|
||
|
||
## 📈 项目状态
|
||
|
||
- ✅ **核心功能**:数据采集、推荐引擎、AI分析
|
||
- ✅ **OCR识别**:多引擎支持、智能验证、学习优化
|
||
- ✅ **界面美化**:圆角设计、多色主题、移动端适配
|
||
- ✅ **文档完善**:使用指南、技术文档、测试脚本
|
||
- 🔄 **持续优化**:性能提升、功能扩展、用户体验改进
|
||
|
||
## 🤝 贡献指南
|
||
|
||
欢迎提交Issue和Pull Request来改进项目!
|
||
|
||
### 开发环境设置
|
||
```bash
|
||
# 克隆项目
|
||
git clone <repository-url>
|
||
cd diet_recommendation_app
|
||
|
||
# 安装开发依赖
|
||
pip install -r requirements.txt
|
||
|
||
# 运行测试
|
||
python test_ocr_system.py
|
||
python test_ui_beautification.py
|
||
```
|
||
|
||
### 代码规范
|
||
- 遵循PEP 8代码风格
|
||
- 添加适当的注释和文档字符串
|
||
- 编写单元测试
|
||
- 更新相关文档
|
||
|
||
## 📄 许可证
|
||
|
||
本项目采用MIT许可证 - 查看 [LICENSE](LICENSE) 文件了解详情
|
||
|
||
## 🙏 致谢
|
||
|
||
感谢以下开源项目的支持:
|
||
- [CustomTkinter](https://github.com/TomSchimansky/CustomTkinter) - 现代化Python GUI框架
|
||
- [Tesseract OCR](https://github.com/tesseract-ocr/tesseract) - 开源OCR引擎
|
||
- [PaddleOCR](https://github.com/PaddlePaddle/PaddleOCR) - 百度开源OCR
|
||
- [EasyOCR](https://github.com/JaidedAI/EasyOCR) - 简单易用的OCR库
|
||
- [scikit-learn](https://scikit-learn.org/) - 机器学习库
|
||
|
||
---
|
||
|
||
**🍽️ 让AI为您的饮食健康保驾护航!** |