172 lines
4.5 KiB
Markdown
172 lines
4.5 KiB
Markdown
# 文字匹配图片项目
|
||
|
||
AI驱动的文章与图片智能匹配系统,支持从数据库读取文章数据,自动匹配图片或使用Gemini生成图片,并批量发布文章。
|
||
|
||
## 项目概述
|
||
|
||
本项目实现了以下核心功能:
|
||
- 从数据库读取待处理的文章数据
|
||
- 基于文章标签智能匹配现有图片库
|
||
- 使用通义千问大模型评估文章与图片的匹配度
|
||
- 匹配失败时自动调用Gemini API生成相关图片
|
||
- 将生成的图片信息插入数据库(ai_images、ai_image_tags、ai_article_images)
|
||
- 上传图片到服务器
|
||
- 批量发布处理完成的文章
|
||
|
||
## 技术栈
|
||
|
||
- **Python 3.12**
|
||
- **数据库**: MySQL (PyMySQL)
|
||
- **AI服务**:
|
||
- Google Gemini API (图片生成)
|
||
- 通义千问 API (文章图片匹配评估)
|
||
- **依赖库**:
|
||
- `requests==2.31.0` - HTTP请求
|
||
- `google-genai==0.1.0` - Gemini API调用
|
||
- `pymysql` - MySQL数据库连接
|
||
- `Pillow==10.0.0` - 图片处理
|
||
|
||
## 项目结构
|
||
|
||
```
|
||
文字匹配图片/
|
||
├── match_article_images.py # 主程序:文章图片匹配
|
||
├── database_config.py # 数据库配置管理
|
||
├── log_config.py # 日志配置
|
||
├── export_approved_articles.py # 导出审核通过的文章
|
||
├── export_image_tags.py # 导出图片标签数据
|
||
├── push_article_published.py # 文章发布监控脚本
|
||
├── requirements.txt # 项目依赖
|
||
├── setup_env.bat # Windows环境初始化脚本
|
||
├── setup_env.sh # Linux/macOS环境初始化脚本
|
||
├── db/ # 数据库表结构
|
||
│ ├── split_tables/ # 按表拆分的SQL文件
|
||
│ └── ai_articles.sql # 完整数据库结构
|
||
└── logs/ # 日志目录
|
||
```
|
||
|
||
## 环境配置
|
||
|
||
### 1. 创建虚拟环境
|
||
|
||
**Windows**:
|
||
```bash
|
||
python -m venv venv
|
||
venv\Scripts\activate
|
||
```
|
||
|
||
**Linux/macOS**:
|
||
```bash
|
||
python3 -m venv venv
|
||
source venv/bin/activate
|
||
```
|
||
|
||
### 2. 安装依赖
|
||
|
||
```bash
|
||
pip install -r requirements.txt
|
||
```
|
||
|
||
### 3. 数据库配置
|
||
|
||
编辑 `database_config.py` 中的数据库连接信息:
|
||
```python
|
||
DB_CONFIG = {
|
||
'host': 'your_host',
|
||
'user': 'your_user',
|
||
'password': 'your_password',
|
||
'database': 'ai_article',
|
||
'charset': 'utf8mb4'
|
||
}
|
||
```
|
||
|
||
## 使用方法
|
||
|
||
### 文章图片匹配
|
||
|
||
**测试模式**(处理前N篇文章):
|
||
```bash
|
||
python match_article_images.py --test 3
|
||
```
|
||
|
||
**正常模式**(处理所有文章):
|
||
```bash
|
||
python match_article_images.py
|
||
```
|
||
|
||
### 导出数据
|
||
|
||
导出审核通过的文章:
|
||
```bash
|
||
python export_approved_articles.py
|
||
```
|
||
|
||
导出图片标签数据:
|
||
```bash
|
||
python export_image_tags.py
|
||
```
|
||
|
||
## 核心功能说明
|
||
|
||
### 1. 文章图片匹配流程
|
||
|
||
1. 从数据库读取状态为 `approved` 的文章
|
||
2. 根据文章标签匹配图片库中的图片(image_attached_article_count < 5)
|
||
3. 使用通义千问API评估匹配质量
|
||
4. 匹配成功:更新图片使用计数
|
||
5. 匹配失败:调用Gemini生成新图片
|
||
|
||
### 2. Gemini图片生成流程
|
||
|
||
1. 根据文章标题和标签生成提示词
|
||
2. 调用Gemini API生成图片
|
||
3. 将图片信息插入 `ai_images` 表
|
||
4. 将图片标签信息插入 `ai_image_tags` 表(image_source=3表示AI生成)
|
||
5. 上传图片到服务器
|
||
6. 将文章与图片关联信息插入 `ai_article_images` 表(image_source=0)
|
||
7. sort_order自动设置为当前文章下最大值+1
|
||
|
||
### 3. 批量发布
|
||
|
||
处理完成后自动调用 `/api/articles/batch-publish-auto` 接口批量发布文章。
|
||
|
||
## 数据库表结构
|
||
|
||
### 主要表说明
|
||
|
||
- **ai_articles**: 文章主表
|
||
- **ai_images**: 图片信息表
|
||
- **ai_image_tags**: 图片标签关联表
|
||
- **ai_article_images**: 文章图片关联表
|
||
- **ai_tags**: 标签表
|
||
- **ai_keywords**: 关键词表
|
||
- **ai_departments**: 部门表
|
||
|
||
## API配置
|
||
|
||
### Gemini API
|
||
- 端点: `https://work.poloapi.com`
|
||
- 模型: `gemini-3-pro-image-preview`
|
||
|
||
### 文章发布API
|
||
- 登录: `http://47.99.184.230:8324/api/auth/login`
|
||
- 图片上传: `http://47.99.184.230:8324/api/images/upload`
|
||
- 批量发布: `http://47.99.184.230:8324/api/articles/batch-publish-auto`
|
||
|
||
## 日志
|
||
|
||
日志文件存储在 `logs/` 目录下:
|
||
- `article_matching.log` - 文章匹配日志
|
||
- `article_matching_error.log` - 错误日志
|
||
|
||
## 注意事项
|
||
|
||
1. 虚拟环境 (`venv/`) 已在 `.gitignore` 中排除
|
||
2. API密钥和数据库密码请妥善保管
|
||
3. 生产环境建议使用环境变量管理敏感信息
|
||
4. 测试模式不会触发批量发布操作
|
||
|
||
## 许可证
|
||
|
||
内部项目,保密使用。
|