Files
recommend/README.md
赵杰 Jie Zhao (雄狮汽车科技) cad03268f3 feat: add mastery feature to recitation wheel
2025-11-02 23:46:11 +08:00

378 lines
13 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 🍽️ 个性化饮食推荐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为您的饮食健康保驾护航**