Saketh2172/Multimodal-Crime-Incident-Report-Analyzer
GitHub: Saketh2172/Multimodal-Crime-Incident-Report-Analyzer
一个多模态AI事件报告分析器,通过统一处理音频、视频、图像和文本等多种数据源,自动提取结构化细节并生成严重程度评级以供应急响应审查。
Stars: 0 | Forks: 0
# 多模态犯罪/事件报告分析器
本项目在 Python 中运行处理**音频**、**图像**、**视频**、**文本**和**文档 (PDF/DOCX)** 的 pipeline,然后将结果合并到 CSV 文件中。位于 `dashboard/` 目录下的 **React 仪表板**会在一个可搜索的表格中显示所有事件。
**仓库地址:** [AdithyaReddyGeeda/Multimodal-Crime-Incident-Report-Analyzer](https://github.com/AdithyaReddyGeeda/Multimodal-Crime-Incident-Report-Analyzer)
## 请先阅读此说明
1. **始终使用项目根目录** — 即包含 `main.py`、`modules/` 和 `dashboard/` 的文件夹。如果你在 `dashboard/` 内部运行 Python,路径将会出错。
2. **使用 Python 虚拟环境**,以免依赖项与其他项目发生冲突。
3. **在** pipeline 完成后,运行一次 **`sync_dashboard_data.py`**,然后启动仪表板。网站是从 `dashboard/src/data/*.js` 读取数据的,而不是直接读取 CSV 文件。
## 需要安装的软件
| 软件 | 用途 |
|----------|-----|
| **Python 3.9+** | 运行所有分析脚本 |
| **Node.js (LTS)** | 运行 React 仪表板 (`npm run dev`) |
**可选(某些功能在使用这些软件时体验更佳):**
| 软件 | 用途 |
|----------|-----|
| **Tesseract** | 识别图像内部的 OCR 文本(Mac 上使用 `brew install tesseract`) |
| **FFmpeg** | 在某些系统上对音频/视频工具很有帮助 |
| **Roboflow API key** | 云端图像模型;如果没有它,图像模块可能会使用本地的 YOLO 作为备选方案 |
## 详细步骤:从零开始运行项目
### 1. 获取代码并进入文件夹
```
git clone https://github.com/AdithyaReddyGeeda/Multimodal-Crime-Incident-Report-Analyzer.git
cd Multimodal-Crime-Incident-Report-Analyzer
```
如果你已经有该文件夹,请打开终端并 `cd` 进入其中(即包含 `main.py` 的目录)。
### 2. 创建 Python 环境并安装依赖包
**macOS / Linux:**
```
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
python -m spacy download en_core_web_sm
python -m nltk.downloader stopwords punkt punkt_tab
```
**Windows (命令提示符或 PowerShell):**
```
python -m venv .venv
.venv\Scripts\activate
pip install -r requirements.txt
python -m spacy download en_core_web_sm
python -m nltk.downloader stopwords punkt punkt_tab
```
当环境激活时,你的终端提示符中应该会看到 `(.venv)`。**只有在激活环境后,才运行下方的所有 `python` / `python3` 命令。**
### 3. 安装仪表板依赖(仅需一次)
在**项目根目录**下(先不要进入 `dashboard/`):
```
cd dashboard
npm install
cd ..
```
### 4. 用于图像的 API key(可选)
```
cp .env.example .env
```
在项目根目录下编辑 `.env` 并设置:
```
ROBOFLOW_API_KEY=your_key_here
```
前往 [roboflow.com](https://roboflow.com) 获取 key。如果你跳过此步骤,根据你的配置,图像 pipeline 可能仍会使用本地模型运行。
**请勿提交 `.env`。** 它已被列入 `.gitignore`。
### 5. 将数据存放在脚本预期的位置
pipeline 从固定路径读取数据。如果缺少某些内容,该模块可能会打印警告或生成空的 CSV。
| 模块 | 所需内容 | 典型位置 |
|--------|----------------|------------------|
| **Audio** | 转录 CSV | `data/audio/transcripts.csv` |
| **Image** | 测试图像 | `fire-detection.v1i.yolov8/test/images/` (YOLO 数据集布局) |
| **Video** | 视频文件 | `data/videos/` (例如 `.mpg`, `.mp4`) |
| **Text** | 犯罪类文本 | `data/text/` 或 `data/Text/` — 例如 `CrimeReport.txt` 或 CSV(有关支持的名称,请参见 `modules/text_analyst.py`) |
| **Document** | PDF / DOCX / TXT | `data/documents/` |
仓库可能已经包含其中一些内容(例如音频和文本)。**大**文件(完整的图像数据集、CAVIAR 视频、外部 PDF)通常**不**在 Git 中 — 如果你的作业需要,请单独下载。有关链接,请参阅本文件末尾的**“下载数据集”**部分。
### 6. 运行完整 pipeline
留在**项目根目录**中。如果需要,激活 `.venv`,然后:
```
python3 main.py
```
在 Windows 上,如果找不到 `python3`,请使用 `python main.py`。
`main.py` 会**按此顺序**执行这些步骤(每个步骤都包裹在 `try`/`except` 中,因此一个步骤失败不会停止其余步骤):
1. Audio 分析模块
2. Image 分析模块
3. Video 分析模块
4. Text 分析模块
5. Document 分析模块
6. Integrator(将所有模块的 CSV 合并到 `outputs/final_integrated_report.csv`)
在下载模型时,第一次运行可能会花费很长时间。
### 7. 将结果复制到仪表板中,然后打开网站
仍在**项目根目录**下:
```
python3 sync_dashboard_data.py
cd dashboard
npm run dev
```
你的终端将显示一个本地 URL — 在浏览器中打开它(通常是 **http://localhost:5173**)。
每当你在 `outputs/` 中重新生成 CSV 时,在刷新应用之前,请再次运行 **`python3 sync_dashboard_data.py`**。
## 单独运行某个模块(可选)
使用相同的项目根目录和已激活的 venv。顺序与 `main.py` 匹配:
```
python3 modules/audio_analyst.py
python3 modules/image_analyst.py
python3 modules/video_analyst.py
python3 modules/text_analyst.py
python3 modules/document_analyst.py
python3 modules/integrator.py
```
## 输出
运行 pipeline 后,请查看 **`outputs/`**:
| 文件 | 含义 |
|------|---------|
| `audio_output.csv` | Audio 模块 |
| `image_output.csv` | Image 模块 |
| `video_output.csv` | Video 模块 |
| `text_output.csv` | Text 模块 |
| `document_output.csv` | Document 模块 |
| `final_integrated_report.csv` | Integrator(合并所有来源) |
## 项目布局(简述)
```
main.py # Full pipeline entry point
sync_dashboard_data.py # CSV → dashboard/src/data/*.js
requirements.txt
.env # Create locally; never commit
modules/ # audio_analyst, image_analyst, video_analyst,
# text_analyst, document_analyst, integrator
data/ # audio, videos, text, documents, etc.
outputs/ # Generated CSVs (created when you run pipelines)
dashboard/ # React app — npm install once, then npm run dev
```
**额外文件(如果有):** `dashboard/pipeline_architecture.html`(在浏览器中打开以查看图表),`project_report.docx`(书面报告)。
## 常见问题
| 问题 | 解决方法 |
|---------|------------|
| `No such file ... modules/...` 或 `can't open file 'modules/...'` | 你不在项目根目录中。请 `cd` 到包含 `main.py` 的文件夹,然后再次运行该命令。 |
| `No module named 'pandas'` (或类似错误) | 激活 `.venv` 并再次运行 `pip install -r requirements.txt`。 |
| 仪表板为空或显示旧数据 | 生成 CSV 后,从项目根目录运行 `python3 sync_dashboard_data.py`。 |
| 图像步骤失败 | 检查 `.env` 中的 `ROBOFLOW_API_KEY`,并确保图像路径与 `modules/image_analyst.py` 匹配。 |
| 视频步骤失败 | 将视频文件放在 `data/videos/` 下,并检查你的脚本支持的视频格式。 |
| 文档步骤未生成任何行 | 在 `data/documents/` 下添加至少一个 `.pdf`、`.docx` 或 `.txt` 文件。 |
## 下载数据集(当仓库未捆绑提供时)
这些只是**示例** — 请遵循你的课程或作业说明以获取所需的文件。
- **火灾检测图像:** [Roboflow 火灾检测](https://universe.roboflow.com/) — 下载 YOLOv8 格式并解压,以便在项目根目录下生成 `fire-detection.v1i.yolov8/test/images/` 目录。
- **CAVIAR 监控:** [CAVIAR 数据集](https://homepages.inf.ed.ac.uk/rbf/CAVIARDATA1/) — 将 `.mpg`(或受支持的)文件放置在 `data/videos/` 中。
- **用于文档的示例 PDF:** 将任何警察报告风格的 PDF 添加到 `data/documents/` 中,或使用你作业中链接的来源。
## 许可证与数据
第三方数据集和 API 拥有各自的使用条款。请勿提交 API key、密码或私密数据。
标签:Python, React, Syscalls, 代码示例, 多模态AI, 库, 应急响应, 数据分析, 无后门, 计算机视觉, 逆向工具