# 多模态文件解析服务 一个功能强大的多模态文件解析服务,支持解析文本、图片、音频、视频、PDF和Office文档,使用本地部署的AI模型进行智能分析。 ## 功能特性 - **多文件类型支持**: - 文本文件(TXT、代码文件等) - 图片文件(PNG、JPG等) - 音频文件(WAV、MP3等) - 视频文件(MP4、AVI等) - PDF文件(原生PDF和扫描件PDF) - Office文档(DOCX、DOC、XLSX、PPTX) - **智能解析**: - 使用Qwen3-ASR进行语音识别 - 使用Qwen3-VL进行视觉分析 - 使用MinerU进行文档OCR - 使用PyMuPDF进行PDF文本提取 - 使用python-docx、openpyxl、python-pptx进行Office文档解析 - **性能统计**: - 实时记录解析时间和文件大小 - 生成详细的性能报告 - 按文件类型分类统计 ## 项目结构 ``` duomotai/ ├── core/ # 核心模块 │ ├── __pycache__/ │ └── router.py # 解析器工厂和路由逻辑 ├── examples/ # 示例文件 ├── models/ # 数据模型 │ ├── __pycache__/ │ └── result.py # 解析结果模型 ├── output/ # 解析结果输出 ├── parsers/ # 解析器实现 │ ├── __pycache__/ │ ├── audio_parser.py # 音频解析器 │ ├── native_parser.py # 原生文档解析器 │ ├── text_parser.py # 文本解析器 │ ├── video_parser.py # 视频解析器 │ └── visual_parser.py # 视觉文档解析器 ├── utils/ # 工具类 │ ├── __pycache__/ │ ├── ffmpeg_wrapper.py # FFmpeg包装器 │ ├── logger.py # 日志工具 │ ├── mime_detector.py # MIME类型检测 │ └── stability.py # 稳定性工具 ├── main.py # 主入口 ├── test_parser.py # 测试脚本 ├── requirements.txt # 依赖管理 └── README.md # 项目说明 ``` ## 安装说明 ### 系统依赖 - **FFmpeg**:用于音频提取和视频处理 - macOS: `brew install ffmpeg` - Ubuntu/Debian: `apt-get install ffmpeg` - CentOS/RHEL: `yum install ffmpeg` - **antiword**:用于解析.doc文件 - macOS: `brew install antiword` - Ubuntu/Debian: `apt-get install antiword` - CentOS/RHEL: `yum install antiword` ### Python依赖 ```bash pip install -r requirements.txt ``` ### 本地AI模型部署 需要部署以下本地AI模型: 1. **Qwen3-ASR**:用于语音识别 - API地址:`http://10.192.72.13:7283/v1/audio/transcriptions` 2. **Qwen3-VL**:用于视觉分析 - API地址:`http://10.192.72.13:7280/v1/chat/completions` 3. **MinerU**:用于文档OCR - API地址:`http://10.192.72.13:7284/file_parse` ## 使用方法 ### 单文件解析 ```bash python main.py [--output json|markdown] ``` 示例: ```bash python main.py examples/65_1770022874.mp4 --output markdown ``` ### 批量测试 ```bash python test_parser.py ``` 这将解析examples目录下的所有文件,并生成详细的性能报告。 ## 解析流程 1. **文件类型检测**:使用MIME类型检测确定文件类型 2. **解析器选择**:根据文件类型选择合适的解析器 3. **文件处理**: - 音频文件:转换格式后使用Qwen3-ASR进行语音识别 - 视频文件:提取音频和关键帧,分别使用Qwen3-ASR和Qwen3-VL进行分析 - 图片文件:使用MinerU进行OCR - PDF文件:根据是否为扫描件选择合适的解析方式 - Office文档:使用相应的库进行解析 4. **结果生成**:将解析结果整理为Markdown或JSON格式 5. **性能统计**:记录解析时间和文件大小,生成性能报告 ## 性能报告示例 ``` # 解析性能报告 ## 总体情况 - 总解析文件数: 13 - 成功解析: 13 - 解析失败: 0 - 总文件大小: 50.16 MB - 总耗时: 106.40 秒 - 平均解析速度: 0.47 MB/秒 ## 文件类型分布 - 文本文件: 0 个, 0.00 MB, 占比: 0.00% - 图片文件: 5 个, 8.41 MB, 占比: 16.76% - 音频文件: 1 个, 9.15 MB, 占比: 18.25% - 视频文件: 1 个, 22.58 MB, 占比: 45.01% - PDF文件: 3 个, 7.79 MB, 占比: 15.54% - Office文件: 0 个, 0.00 MB, 占比: 0.00% ## 性能分析 - 文本类平均解析速度: 0.00 MB/秒 (如果有文本文件) - 图片类平均解析速度: 0.08 MB/秒 (如果有图片文件) - 音频类平均解析速度: 0.09 MB/秒 (如果有音频文件) - 视频类平均解析速度: 0.21 MB/秒 (如果有视频文件) ``` ## 注意事项 1. **本地模型依赖**:本项目依赖本地部署的AI模型,请确保这些模型服务正常运行 2. **文件大小限制**:对于大型文件,可能需要调整超时设置 3. **网络连接**:解析过程中需要与本地AI模型进行网络通信 4. **系统资源**:视频和音频处理可能需要较多的系统资源 ## 故障排除 ### 常见错误 1. **模型连接失败**:检查本地AI模型服务是否正常运行 2. **文件解析失败**:检查文件格式是否支持,或文件是否损坏 3. **依赖缺失**:确保所有系统依赖和Python依赖都已正确安装 ### 日志查看 解析过程中的详细日志会输出到控制台,有助于排查问题。 ## 扩展建议 1. **添加更多文件类型支持**:如CAD文件、3D模型等 2. **优化性能**:实现并行解析,提高处理速度 3. **添加Web界面**:提供可视化操作界面 4. **集成更多AI模型**:支持更多类型的智能分析 ## 许可证 本项目采用MIT许可证。 ## 联系方式 如有问题或建议,请联系项目维护者。