Skip to content

yunshaochu/pdf-processing-platform

Repository files navigation

PDF 文档处理平台

🚀 一站式PDF文档处理解决方案 - 基于 DeepSeek-OCR 的高精度文档转换平台,提供PDF转Markdown、格式转换、编辑处理等全方位服务。

✨ 功能特点

🧠 智能转换

  • PDF → Markdown - 基于DeepSeek-OCR的高精度转换,完美保持文档结构和格式
  • 多语言支持 - 智能识别中文、英文等多种语言文档
  • 格式保留 - 精准还原表格、图片、公式等复杂元素

🛠️ PDF 工具箱

  • 格式转换

    • PDF → DOCX (Word文档)
    • PDF → JPG (图片序列)
    • Word/Excel → PDF (Windows平台)
    • 图片 → PDF (批量合并)
  • 文档处理

    • PDF 合并 - 多文档无缝整合
    • PDF 拆分 - 按页精确分离
    • PDF 压缩 - 智能优化文件大小
    • 批量处理 - 多文件同时操作

🎨 用户体验

  • 现代化界面 - 简洁直观的Web设计,支持深色/浅色主题
  • 拖拽上传 - 零学习成本,拖拽即用
  • 实时进度 - 处理状态实时显示,进度条可视化
  • 批量管理 - 支持多文件同时处理,结果打包下载
  • 历史记录 - 完整的操作历史,支持重试和删除
  • 老年人友好 - 专为老年用户设计的使用帮助页面,大字体、清晰步骤

🔧 开发者友好

  • RESTful API - 完整的API接口,易于系统集成
  • 异步处理 - 高性能异步架构,支持大文件处理
  • Swagger文档 - 自动生成的API文档,支持在线测试
  • 错误处理 - 完善的异常处理和日志记录
  • Docker支持 - 一键部署,跨平台运行

🚀 快速开始

📦 环境要求

  • Python 3.8+
  • 8GB+ 内存(推荐用于大文件处理)
  • 2GB+ 可用磁盘空间

⚡ 一键安装

# 克隆项目
git clone <repository-url>
cd pdf-platform

# 安装依赖
pip install -r requirements.txt

# 启动服务
python start_server.py

🐳 Docker 部署(推荐)

# 构建镜像
docker build -t pdf-platform .

# 运行容器
docker run -p 8000:8000 -v $(pwd)/models:/app/models pdf-platform

🎮 服务访问

功能 地址 说明
主页 http://localhost:8000 欢迎页面,包含所有功能入口
工具箱 http://localhost:8000/pdf-tools 全功能PDF处理中心,包含使用帮助
API文档 http://localhost:8000/docs Swagger交互式文档
API接口 http://localhost:8000/api RESTful API端点

🔧 高级选项

# 开发模式(自动重载)
python start_server.py --reload

# 自定义端口
python start_server.py --port 9000

# 自定义主机
python start_server.py --host 127.0.0.1

💡 使用指南

📖 网页端操作

🧠 PDF 转 Markdown(AI智能转换)

  1. 访问主页http://localhost:8000
  2. 上传PDF → 拖拽或选择文件,支持50MB以内
  3. 自动处理 → AI自动识别文档结构和内容
  4. 预览下载 → 实时预览转换结果,一键下载

🛠️ PDF 工具箱(全功能处理)

  1. 选择操作 → 从8种处理方式中选择

    • 🔄 格式转换:PDF→DOCX/JPG/Word/Excel
    • 🔗 文档合并:多PDF合并为单个文件
    • ✂️ 文档拆分:按页精确分离PDF
    • 📦 智能压缩:优化文件大小
    • 🖼️ 图片转PDF:批量图片整合
  2. 批量上传 → 支持多文件同时处理

  3. 实时监控 → 进度条显示处理状态

  4. 结果下载 → 自动打包为ZIP文件

🔌 API 集成

🧠 智能转换API

import requests

# 1. 上传PDF文件
with open("document.pdf", "rb") as f:
    upload_resp = requests.post(
        "http://localhost:8000/api/upload", 
        files={"file": f}
    )
    task_id = upload_resp.json()["task_id"]

# 2. 启动AI转换
requests.post(f"http://localhost:8000/api/convert/{task_id}")

# 3. 轮询处理状态
while True:
    status_resp = requests.get(f"http://localhost:8000/api/status/{task_id}")
    data = status_resp.json()
    
    if data["status"] == "completed":
        break
    elif data["status"] == "failed":
        raise Exception(data["error"])

# 4. 下载Markdown结果
download_resp = requests.get(f"http://localhost:8000/api/download/{task_id}")
with open("output.md", "w", encoding="utf-8") as f:
    f.write(download_resp.text)

print("✅ 转换完成!")

🛠️ 批量处理API

import requests
import json

# 1. 获取可用操作列表
ops_resp = requests.get("http://localhost:8000/api/pdf/operations")
operations = ops_resp.json()["operations"]
print("可用操作:", json.dumps(operations, indent=2, ensure_ascii=False))

# 2. 批量上传文件
files = [
    ("files", open("doc1.pdf", "rb")),
    ("files", open("doc2.pdf", "rb")),
    ("files", open("image.jpg", "rb"))
]

upload_resp = requests.post(
    "http://localhost:8000/api/pdf/upload-multiple", 
    files=files
)
task_id = upload_resp.json()["task_id"]

# 3. 执行合并操作
process_resp = requests.post(
    f"http://localhost:8000/api/pdf/process/{task_id}?operation=merge_pdfs"
)

# 4. 监控处理进度
while True:
    status_resp = requests.get(f"http://localhost:8000/api/status/{task_id}")
    data = status_resp.json()
    
    print(f"进度: {data['progress']}% - 状态: {data['status']}")
    
    if data["status"] == "completed":
        # 下载ZIP结果包
        download_resp = requests.get(f"http://localhost:8000/api/download/{task_id}")
        with open("results.zip", "wb") as f:
            f.write(download_resp.content)
        print("🎉 批量处理完成!")
        break
    elif data["status"] == "failed":
        print(f"❌ 处理失败: {data['error']}")
        break

📝 高级功能示例

# PDF转Word文档
requests.post(f"http://localhost:8000/api/pdf/process/{task_id}?operation=pdf_to_docx")

# PDF拆分为单页
requests.post(f"http://localhost:8000/api/pdf/process/{task_id}?operation=split_pdf")

# 图片转PDF
requests.post(f"http://localhost:8000/api/pdf/process/{task_id}?operation=images_to_pdf")

# 获取所有任务历史
tasks_resp = requests.get("http://localhost:8000/api/tasks")
print("任务历史:", json.dumps(tasks_resp.json(), indent=2))

🐳 部署方案

Docker Compose(生产环境推荐)

version: '3.8'
services:
  pdf-platform:
    build: .
    ports:
      - "8000:8000"
    volumes:
      - ./models:/app/models
      - ./data:/app/data
    environment:
      - PYTHONUNBUFFERED=1
    restart: unless-stopped

Kubernetes 集群部署

apiVersion: apps/v1
kind: Deployment
metadata:
  name: pdf-platform
spec:
  replicas: 3
  selector:
    matchLabels:
      app: pdf-platform
  template:
    metadata:
      labels:
        app: pdf-platform
    spec:
      containers:
      - name: pdf-platform
        image: pdf-platform:latest
        ports:
        - containerPort: 8000
        resources:
          requests:
            memory: "2Gi"
            cpu: "1000m"
          limits:
            memory: "8Gi"
            cpu: "2000m"

云平台部署

平台 部署方式 链接
腾讯云 CloudStudio 一键部署
阿里云 容器服务 ACK部署
AWS ECS/EC2 快速启动
Azure App Service 容器应用

⚠️ 重要说明

🧠 AI模型说明

  • 首次启动:自动下载DeepSeek-OCR模型(约6GB)
  • 模型缓存:存储在 models/ 目录
  • 离线使用:下载后支持完全离线运行

💾 存储管理

  • 临时文件temp_uploads/temp_outputs/
  • 自动清理
    • 24小时后自动删除过期文件
    • 每6小时执行一次定期清理
    • 删除任务时同步清理相关文件
    • 可通过API手动触发清理:POST /api/cleanup
    • 可通过API清空所有临时文件:POST /api/cleanup/all
    • 前端提供"清空所有临时文件"按钮,一键清理所有文件和任务历史
  • 持久化:重要结果请及时下载保存

🔧 性能优化

  • 内存要求:建议8GB+内存处理大文件
  • 并发限制:默认支持10个并发任务
  • 文件大小:单文件建议不超过100MB

📊 API 响应示例

成功响应

{
  "task_id": "uuid-string",
  "status": "completed",
  "progress": 100,
  "results": [
    {
      "success": true,
      "output_file": "/path/to/output.pdf",
      "message": "✓ 处理完成"
    }
  ],
  "created_at": "2024-01-01T00:00:00",
  "completed_at": "2024-01-01T00:05:00"
}

错误处理

{
  "detail": "错误信息",
  "status": "failed",
  "error": "具体错误原因"
}

🤝 贡献指南

欢迎提交Issue和Pull Request!

开发环境搭建

# 克隆项目
git clone <repository-url>
cd pdf-platform

# 安装开发依赖
pip install -r requirements.txt
pip install -r requirements-dev.txt

# 运行测试
python test_pdf_processor.py

# 启动开发服务器
python start_server.py --reload

📄 许可证

本项目采用 MIT 许可证 - 详见 LICENSE 文件


🔗 相关链接


⭐ 如果这个项目对你有帮助,请给个Star支持一下!

Made with ❤️ by [Your Team]


欢迎来到 Cloud Studio

当前模板包含最简单的Hello World以及运行指令的Python示例代码仓库

"运行"按钮怎么使用

点击运行按钮会自动运行,是因为有 .vscode/preview.yml 文件存在。

该文件的格式说明如下:

# .vscode/preview.yml
autoOpen: false
apps:
  - port: 5000
    run: 'pip install -i https://mirrors.tencent.com/pypi/simple/ -r ./requirements.txt && python ./app.py'
    root: ./web
    name: Python Cloud Studio Demo
    description: Python Cloud Studio Demo Project
    autoOpen: true

帮助和支持

1. Cloud Studio 相关支持

2. 用户反馈群

扫码加入 Cloud Studio 用户反馈群,获取实时技术支持:

  • 腾讯云工程师群内答疑,解决环境与训练问题;
  • 优先体验产品上新功能,获取专属活动通知;
  • 与其他开发者交流 LoRA 训练经验与技巧。

Cloud Studio 用户反馈群

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors