parsely-doc 4.0.2
高效的文档解析服务，支持将 PDF、PPT、DOC、Excel、MP4 等多种格式文档转换为 Markdown 格式
Requires Python: >=3.12
Keywords: pdf, document, parser, markdown, ai, ocr, extraction

[![Docker Image CI](https://github.com/wersling/Parsely/actions/workflows/docker-image.yml/badge.svg)](https://github.com/wersling/Parsely/actions/workflows/docker-image.yml)

# 📖 Parsely 项目介绍

**Parsely** 是一个高效的文档解析服务，支持将 **PDF、PPT、DOC、Excel、MP4** 等多种格式文档转换为 Markdown 格式，并智能提交到知识库系统。

## ✨ 核心功能

- **📄 多格式支持**: PDF、PPT、DOC、Excel、CSV文档解析转换
- **🤖 智能处理**: 基于大语言模型的内容优化和结构化
- **🔗 知识库集成**: 
  - **Dify**: 支持多种上传模式（标准、多目录、TUPS切片）
  - **RagFlow**: 企业级RAG系统集成
  - **FastGPT**: 通过API方式自动提交
- **🚀 高性能**: 多进程并行处理，支持大批量文档处理
- **🔄 多运行模式**: 
  - **monitor**: 文件监控模式
  - **api**: HTTP API服务模式  
  - **streamlit**: Web界面服务模式
  - **hybrid**: 混合模式（同时运行监控、API和Web界面）
  - **command**: 命令行工具模式（convert.py）
- **🌍 跨平台部署**: 支持Mac、Linux等多平台智能部署

## 🎯 快速开始

### 方式一：源码运行（推荐开发）

```bash
# 1. 克隆项目
git clone https://github.com/wersling/Parsely.git
cd Parsely

# 2. 安装依赖
uv sync

# 3. 创建配置文件
cp config.json.templete config.json
# 编辑config.json，配置API密钥和输出服务

# 4. 启动服务
python parsely_service.py --mode hybrid

# 验证服务
curl -f http://localhost:7231/health
```

### 方式二：Docker部署（推荐生产）

```bash
# 1. 克隆项目（如果还没有）
git clone https://github.com/wersling/Parsely.git
cd Parsely

# 2. 创建配置文件
cp config.json.templete config.json
# 编辑config.json，配置API密钥和输出服务

# 3. 启动服务
docker-compose up -d
```

**常用操作：**
```bash
# 重新构建并启动
docker-compose up -d --build

# 查看实时日志
docker-compose logs -f parsely

# 进入容器调试
docker-compose exec parsely bash

# 更新配置后重启
docker-compose restart
```

**服务地址：**
- Swagger文档: http://localhost:7231/docs
- ReDoc文档: http://localhost:7231/redoc
- Web界面: http://localhost:8501
- 健康检查: http://localhost:7231/health

**📖 详细文档：**
- [API接口使用指南](docs/API_INTERFACE_GUIDE.md) - 完整的API接口文档、集成示例和批量处理脚本

# 🖥️ 服务器配置要求

## 硬件配置

### 推荐配置（生产环境）
- **CPU**: 16核心 Intel Xeon 或 AMD EPYC
- **内存**: 64GB DDR4
- **显卡**: NVIDIA A100 40GB × 2 或 RTX 4090 24GB × 2
- **存储**: 500GB NVMe SSD + 2TB HDD
- **网络**: 千兆以太网

### 最低配置（开发测试）
- **CPU**: 8核心处理器
- **内存**: 16GB
- **显卡**: 11GB显存显卡（RTX 2080Ti或更高）
- **存储**: 100GB可用空间
- **网络**: 100Mbps

# 📋 服务配置

Parsely通过 `config.json` 文件进行统一配置管理，支持多种服务集成。

## 配置文件结构

```json
{
    "system": {
        "max_workers": 4,
        "extract_pdf_images": false
    },
    "llm": {
        "max_gpt_threads": 20,
        "model_name": "qwen-vl-max-latest",
        "model_name_vl": "qwen-vl-max-latest", 
        "model_api_key": "your-api-key",
        "model_base_url": "https://dashscope.aliyuncs.com/compatible-mode/v1"
    },
    "outputs": [
        {
            "name": "local",
            "enabled": false,
            "content_type": "text",
            "output_dir": "./output"
        },
        {
            "name": "dify_tups",
            "enabled": true,
            "content_type": "text",
            "api_base_url": "http://your-dify-server/v1",
            "api_key": "dataset-your-key",
            "dataset_id": "your-dataset-id",
            "max_split_size": 1024,
            "overlap_size": 128
        }
    ]
}
```

## 配置说明

### ⚙️ 系统配置
| 参数 | 说明 | 默认值 |
|------|------|--------|
| `max_workers` | 最大工作进程数 | 4 |
| `extract_pdf_images` | 是否提取PDF图片 | false |

### 🤖 LLM模型配置
| 参数 | 说明 | 默认值 |
|------|------|--------|
| `max_gpt_threads` | 最大并行处理数 | 20 |
| `model_name` | 文本处理模型 | qwen-vl-max-latest |
| `model_name_vl` | 图像理解模型 | qwen-vl-max-latest |
| `model_api_key` | API密钥 | 必填 |
| `model_base_url` | 服务地址 | 阿里云DashScope |


### 🔗 输出服务配置（outputs数组）
| 参数 | 说明 | 用途 |
|------|------|------|
| `name` | 输出服务名称 | 服务标识符 |
| `enabled` | 是否启用 | true/false |
| `content_type` | 输出格式 | text/image/base64 |
| `api_key` | 服务API密钥 | 知识库访问 |
| `api_base_url` | 服务地址 | API接口地址 |
| `dataset_id` | 目标知识库ID | 文档提交位置 |

### 支持的输出服务类型
| 服务名称 | 说明 | 特性 |
|---------|------|------|
| `local` | 本地存储 | 仅保存到本地文件 |
| `dify_tups` | Dify TUPS切片上传 | 解决切片效果差和文件过大问题 |
| `dify_multi_dir` | Dify多知识库 | 按目录分类，files下一级目录名称和知识库名称需匹配 |
| `ragflow` | RagFlow企业级RAG | 企业级RAG系统集成 |

### content_type 参数说明
| 参数值 | 说明 |
|--------|------|
| `text` | 纯文本md格式 |
| `image` | 带图片link的md格式 |
| `base64` | 将图片文件base64嵌入的md格式 |

### 配置飞书日志通知
本项目已经集成：[loguru_feishu_handler](https://github.com/wersling/loguru_feishu_handler)

通过设置：FEISHU_WEBHOOK_URL 环境变量可以将错误信息发送到 飞书webhook 机器人
```bash
export FEISHU_WEBHOOK_URL='https://open.feishu.cn/open-apis/bot/v2/hook/xxx'
```