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