Files
baijiahao_text_to_image/README.md
2026-01-30 18:12:32 +08:00

172 lines
4.5 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.

# 文字匹配图片项目
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. 测试模式不会触发批量发布操作
## 许可证
内部项目保密使用