chaixuhong fc870a3360 flink test 1 tuần trước cách đây
..
core fc870a3360 flink test 1 tuần trước cách đây
docs fc870a3360 flink test 1 tuần trước cách đây
examples fc870a3360 flink test 1 tuần trước cách đây
models fc870a3360 flink test 1 tuần trước cách đây
parsers fc870a3360 flink test 1 tuần trước cách đây
utils fc870a3360 flink test 1 tuần trước cách đây
README.md fc870a3360 flink test 1 tuần trước cách đây
main.py fc870a3360 flink test 1 tuần trước cách đây
requirements.txt fc870a3360 flink test 1 tuần trước cách đây
test_parser.py fc870a3360 flink test 1 tuần trước cách đây

README.md

多模态文件解析服务

一个功能强大的多模态文件解析服务,支持解析文本、图片、音频、视频、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依赖

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

使用方法

单文件解析

python main.py <file_path> [--output json|markdown]

示例:

python main.py examples/65_1770022874.mp4 --output markdown

批量测试

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许可证。

联系方式

如有问题或建议,请联系项目维护者。