# DsOCR-Web
**Repository Path**: jspi-aeson/ds-ocr-web
## Basic Information
- **Project Name**: DsOCR-Web
- **Description**: 使用DeepSeek-OCR模型执行OCR相关任务,拥有API、本地部署两种模式
- **Primary Language**: Unknown
- **License**: MIT
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 0
- **Created**: 2025-12-11
- **Last Updated**: 2026-10-18
## Categories & Tags
**Categories**: Uncategorized
**Tags**: ocr, deepseek
## README
## ⚡ 项目简介
本项目是基于 DeepSeek-OCR 的多模态文档解析工具。采用 FastAPI 后端 + React 前端。该工具能够高效地处理 PDF 文档和图片,提供强大的光学字符识别(OCR)功能,支持多语种文字识别、表格解析、图表分析等多种功能。
### 主要功能
- **多格式文档解析**:支持 PDF、图片等多种格式的文档上传和解析
- **智能 OCR 识别**:基于 DeepSeek-OCR 模型,提供高精度的文字识别
- **版面分析**:智能识别文档版面结构,准确提取内容布局
- **多语种支持**:支持中文、英文等多种语言的文字识别
- **表格&图表解析**:专业的表格识别和图表数据提取功能
- **专业领域图纸识别**:支持各类专业领域图纸的语义识别
- **数据可视化**:支持数据分析可视化图的逆向解析
- **Markdown 转换**:将 PDF 内容转换为结构化的 Markdown 格式
## 📁 项目结构
```
ds-ocr-web/
├── backend/ # FastAPI 后端服务
│ ├── __init__.py
│ ├── main.py # FastAPI 应用入口
│ ├── config.py # 配置管理
│ ├── config_loader.py # 配置加载器
│ ├── deepseek_ocr.py # DeepSeek-OCR 核心逻辑
│ ├── file_manager.py # 文件管理
│ ├── inference_runner.py # 推理运行器
│ ├── run_dpsk_ocr_eval_batch.py
│ ├── run_dpsk_ocr_image.py
│ ├── run_dpsk_ocr_pdf.py
│ ├── deepencoder/ # 深度编码器模块
│ │ ├── __init__.py
│ │ ├── build_linear.py
│ │ ├── clip_sdpa.py
│ │ └── sam_vary_sdpa.py
│ └── process/ # 处理模块
│ ├── __init__.py
│ ├── image_process.py
│ └── ngram_norepeat.py
├── frontend/ # React 前端应用
│ ├── index.html
│ ├── package.json
│ ├── vite.config.ts
│ ├── src/
│ │ ├── App.tsx # 主应用组件
│ │ ├── main.tsx # 入口文件
│ │ ├── index.css
│ │ ├── config/
│ │ │ └── api.ts # API 配置
│ │ ├── components/ # React 组件
│ │ │ ├── FileExplorer.tsx
│ │ │ ├── FilePreview.tsx
│ │ │ ├── FileUploader.tsx
│ │ │ ├── PromptInput.tsx
│ │ │ ├── figma/
│ │ │ │ └── ImageWithFallback.tsx
│ │ │ └── ui/ # UI 组件库(shadcn/ui)
│ │ └── styles/
│ │ └── globals.css
│ └── public/
│ └── gitee.svg
├── workspace/ # 工作目录
│ ├── uploads/ # 上传文件存储
│ ├── results/ # OCR 结果存储
│ └── logs/ # 日志文件
├── packages/ # 第三方包
├── requirements.txt # Python 依赖
├── pyproject.toml # Python 项目配置
├── install.sh # 安装脚本
├── start.sh # 启动脚本
└── README.md # 项目说明文档
```
## 🚀 使用指南
### 快速开始
#### 方法一:API 模式(无需 GPU,但解析效果差)
**系统要求:**
- **操作系统**:Windows、Linux 或 macOS
- **Python 版本**:3.10–3.12
- **Node.js**:16+(用于前端)
**步骤:**
1. **配置环境变量**
```bash
cp .env.example .env
```
编辑 `.env` 文件,设置:
```env
MODE=api
SILICONFLOW_API_KEY=sk-你的API密钥
# 可选:自定义模型或API地址
# SILICONFLOW_MODEL=deepseek-ai/DeepSeek-OCR
# SILICONFLOW_API_BASE=https://api.siliconflow.cn/v1
# 可选:Temperature 参数(0.0-2.0),默认 0.0(确定性输出),值越大输出越随机
# SILICONFLOW_TEMPERATURE=0.0
```
2. **安装后端依赖**
```bash
pip install -r requirements.txt
# 使用uv
uv sync
```
3. **启动后端服务**
> **重要提示**:启动后端服务时,请确保在项目根目录(`ds-ocr-web/`)下运行。
```bash
# 确保在项目根目录下运行
uv run uvicorn backend.main:app --host 0.0.0.0 --port 8002 --reload
```
4. **启动前端服务**
```bash
cd frontend
npm install
npm run dev
```
5. **访问应用**
在浏览器中打开前端地址(通常是 `http://localhost:5173`)。上传 PDF 或图片文件,后端会调用硅基流动 DeepSeek-OCR API 进行处理。结果保存在 `workspace/results` 目录,并在前端展示。
### 使用样例
您可以使用 `public/` 目录中提供的样例图片来测试应用:
- 用于测试公式 OCR 功能的样例图片

- 证明 OCR 识别公式效果的图片

**测试步骤:**
1. 按照上述说明启动后端和前端服务
2. 在浏览器中打开前端地址(`http://localhost:5173`)
3. 上传 `public/` 目录中的任意一张样例图片
4. 等待 OCR 处理完成
5. 在前端界面查看识别结果
#### 方法二:本地模式(推荐,需要 GPU,功能丰富)
**系统要求:**
- **操作系统**:需要在 Linux 系统下运行
- **显卡要求**:GPU ≥ 7 GB 显存(大图/多页 PDF 建议 16–24 GB)
- **兼容性说明**:50 系显卡目前不兼容,请使用其他型号显卡
- **Python 版本**:3.10–3.12(推荐 3.10/3.11)
- **CUDA 版本**:11.8 或 12.1/12.2(需与显卡驱动匹配)
- **PyTorch**:需安装与 CUDA 匹配的预编译版本
**步骤:**
1. **下载模型权重**
从 Hugging Face 或魔搭社区(ModelScope)下载 DeepSeek-OCR 模型权重:
```bash
pip install modelscope
mkdir ./deepseek-ocr
modelscope download --model deepseek-ai/DeepSeek-OCR --local_dir ./deepseek-ocr
```
2. **创建虚拟环境**
```bash
conda create -n deepseek-ocr python=3.12.9 -y
conda activate deepseek-ocr
```
3. **安装 PyTorch**
```bash
pip install torch==2.6.0 torchvision==0.21.0 torchaudio==2.6.0 --index-url https://download.pytorch.org/whl/cu118
```
4. **安装 vLLM 和依赖**
```bash
pip install ./packages/vllm-0.8.5+cu118-cp38-abi3-manylinux1_x86_64.whl
pip install -r requirements.txt
pip install flash-attn==2.7.3 --no-build-isolation
```
5. **配置环境变量**
```bash
cp .env.example .env
```
编辑 `.env` 文件,设置:
```env
MODE=local
MODEL_PATH=/path/to/deepseek-ocr
DEVICE_ID=0
MAX_CONCURRENCY=10
```
6. **启动服务**
> **重要提示**:启动后端服务时,请确保在项目根目录(`ds-ocr-web/`)下运行。
```bash
# 后端(确保在项目根目录下运行)
uvicorn backend.main:app --host 0.0.0.0 --port 8002 --reload
# 前端(在另一个终端)
cd frontend
npm install
npm run dev
```