# InsightFlow Phase 7 任务 2 开发总结 ## 完成内容 ### 1. 多模态处理模块 (multimodal_processor.py) #### VideoProcessor 类 - **视频文件处理**: 支持 MP4, AVI, MOV, MKV, WebM, FLV 格式 - **音频提取**: 使用 ffmpeg 提取音频轨道(WAV 格式,16kHz 采样率) - **关键帧提取**: 使用 OpenCV 按时间间隔提取关键帧(默认每5秒) - **OCR识别**: 支持 PaddleOCR/EasyOCR/Tesseract 识别关键帧文字 - **数据整合**: 合并所有帧的 OCR 文本,支持实体提取 #### ImageProcessor 类 - **图片处理**: 支持 JPG, PNG, GIF, BMP, WebP 格式 - **OCR识别**: 识别图片中的文字内容(白板、PPT、手写笔记) - **图片描述**: 预留多模态 LLM 接口(待集成) - **批量处理**: 支持批量图片导入 #### MultimodalEntityExtractor 类 - 从视频和图片处理结果中提取实体和关系 - 与现有 LLM 客户端集成 ### 2. 多模态实体关联模块 (multimodal_entity_linker.py) #### MultimodalEntityLinker 类 - **跨模态实体对齐**: 使用 embedding 相似度计算发现不同模态中的同一实体 - **多模态实体画像**: 统计实体在各模态中的提及次数 - **跨模态关系发现**: 查找在同一视频帧/图片中共同出现的实体 - **多模态时间线**: 按时间顺序展示多模态事件 ### 3. 数据库更新 (schema.sql) 新增表: - `videos`: 视频信息表(时长、帧率、分辨率、OCR文本) - `video_frames`: 视频关键帧表(帧数据、时间戳、OCR文本) - `images`: 图片信息表(OCR文本、描述、提取的实体) - `multimodal_mentions`: 多模态实体提及表 - `multimodal_entity_links`: 多模态实体关联表 ### 4. API 端点 (main.py) #### 视频相关 - `POST /api/v1/projects/{id}/upload-video` - 上传视频 - `GET /api/v1/projects/{id}/videos` - 视频列表 - `GET /api/v1/videos/{id}` - 视频详情 #### 图片相关 - `POST /api/v1/projects/{id}/upload-image` - 上传图片 - `GET /api/v1/projects/{id}/images` - 图片列表 - `GET /api/v1/images/{id}` - 图片详情 #### 多模态实体关联 - `POST /api/v1/projects/{id}/multimodal/link-entities` - 跨模态实体关联 - `GET /api/v1/entities/{id}/multimodal-profile` - 实体多模态画像 - `GET /api/v1/projects/{id}/multimodal-timeline` - 多模态时间线 - `GET /api/v1/entities/{id}/cross-modal-relations` - 跨模态关系 ### 5. 依赖更新 (requirements.txt) 新增依赖: - `opencv-python==4.9.0.80` - 视频处理 - `pillow==10.2.0` - 图片处理 - `paddleocr==2.7.0.3` + `paddlepaddle==2.6.0` - OCR 引擎 - `ffmpeg-python==0.2.0` - ffmpeg 封装 - `sentence-transformers==2.3.1` - 跨模态对齐 ## 系统要求 - **ffmpeg**: 必须安装,用于视频和音频处理 - **Python 3.8+**: 支持所有依赖库 ## 待完善项 1. **多模态 LLM 集成**: 图片描述功能需要集成 Kimi 或其他多模态模型 API 2. **前端界面**: 需要开发视频/图片上传界面和多模态展示组件 3. **性能优化**: 大视频文件处理可能需要异步任务队列 4. **OCR 引擎选择**: 根据部署环境选择最适合的 OCR 引擎 ## 部署说明 ```bash # 安装系统依赖 apt-get update apt-get install -y ffmpeg # 安装 Python 依赖 pip install -r requirements.txt # 更新数据库 sqlite3 insightflow.db < schema.sql # 启动服务 python -m uvicorn main:app --reload --host 0.0.0.0 --port 8000 ```