feat(ocr): 集成 PaddleOCR 服务并优化 OCR 系统
- 新增 PaddleOCR 本地高精度 OCR 服务支持,包括 Dockerfile、API 服务和 provider 实现 - 在 docker-compose 中集成 RapidOCR 和 PaddleOCR 服务,并配置健康检查 - 优化后端 API 路由前缀,移除 `/api` 以简化代理配置 - 更新 Nginx 配置以正确传递请求头和代理 WebSocket 连接 - 在前端设置页面添加 PaddleOCR 和 RapidOCR 的测试与配置选项 - 修复后端 Dockerfile 以支持 Python 原生模块构建 - 更新 OCR 设置指南,反映当前服务状态和部署方式 - 添加上传文件调试日志和权限设置
This commit is contained in:
@@ -5,9 +5,9 @@
|
||||
| Provider | 类型 | 状态 | 配置说明 |
|
||||
|----------|------|------|----------|
|
||||
| **Tesseract.js** | 本地 | ✅ 已安装 | 默认使用,无需配置 |
|
||||
| **RapidOCR** | 本地 | ⚠️ 需配置 | 需要额外部署 |
|
||||
| **RapidOCR** | 本地 | ✅ 已部署 | 端口 13058,快速准确 |
|
||||
| **Baidu OCR** | 云端 | ⚠️ 需配置 | 需要 API Key |
|
||||
| **PaddleOCR** | 本地 | ❌ 暂不支持 | 需要 Python 环境 |
|
||||
| **PaddleOCR** | 本地 | ❌ 镜像问题 | protobuf 兼容性问题 |
|
||||
|
||||
---
|
||||
|
||||
@@ -33,51 +33,55 @@
|
||||
- ✅ 速度快
|
||||
- ✅ 准确率高
|
||||
- ✅ 本地部署,隐私安全
|
||||
- ⚠️ 需要单独部署服务
|
||||
- ✅ **已集成到 Docker Compose**
|
||||
|
||||
### Docker 部署方式
|
||||
### 当前部署状态
|
||||
|
||||
#### 方案 A: 使用 Docker Compose (推荐)
|
||||
RapidOCR 已集成到项目的 Docker Compose 配置中:
|
||||
- **容器名**: `picanalysis-rapidocr`
|
||||
- **内部端口**: 9004
|
||||
- **外部端口**: 13058
|
||||
- **健康检查**: 自动启动和重启
|
||||
|
||||
在 `docker-compose.yml` 中添加 RapidOCR 服务:
|
||||
### Docker Compose 部署 (已配置)
|
||||
|
||||
在 `docker-compose.yml` 中已包含:
|
||||
|
||||
```yaml
|
||||
services:
|
||||
# ... 其他服务 ...
|
||||
|
||||
rapidocr:
|
||||
image: xiaoshaizaiai/rapidocr:latest
|
||||
container_name: picanalysis-rapidocr
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "8080:8080"
|
||||
networks:
|
||||
- picanalysis-network
|
||||
rapidocr:
|
||||
image: volador/rapidocr:latest
|
||||
container_name: picanalysis-rapidocr
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "13058:9004"
|
||||
networks:
|
||||
- picanalysis-network
|
||||
```
|
||||
|
||||
然后更新 `.env` 文件:
|
||||
后端环境变量自动配置:
|
||||
```bash
|
||||
RAPIDOCR_API_URL="http://rapidocr:9004"
|
||||
```
|
||||
|
||||
### 启动服务
|
||||
|
||||
```bash
|
||||
RAPIDOCR_API_URL="http://rapidocr:8080"
|
||||
OCR_PROVIDER="rapidocr"
|
||||
# 启动 RapidOCR 服务
|
||||
docker compose up -d rapidocr
|
||||
|
||||
# 查看日志
|
||||
docker compose logs -f rapidocr
|
||||
|
||||
# 测试服务
|
||||
curl http://localhost:13058
|
||||
# 应返回: {"message":"Welcome to RapidOCR Server!"}
|
||||
```
|
||||
|
||||
#### 方案 B: 使用外部 RapidOCR 服务
|
||||
### 使用方式
|
||||
|
||||
如果你已经有运行中的 RapidOCR 服务,只需要配置 URL:
|
||||
|
||||
```bash
|
||||
# .env 文件
|
||||
RAPIDOCR_API_URL="http://your-rapidocr-host:8080"
|
||||
OCR_PROVIDER="rapidocr"
|
||||
```
|
||||
|
||||
#### 验证 RapidOCR
|
||||
|
||||
```bash
|
||||
# 测试 RapidOCR 服务是否可用
|
||||
curl http://localhost:8080
|
||||
```
|
||||
1. **自动选择**: 在设置页面选择 "RapidOCR"
|
||||
2. **环境变量**: 设置 `OCR_PROVIDER=rapidocr`
|
||||
3. **API 调用**: 后端自动使用 `http://rapidocr:9004`
|
||||
|
||||
---
|
||||
|
||||
@@ -110,16 +114,25 @@ OCR_PROVIDER="baidu"
|
||||
|
||||
---
|
||||
|
||||
## 4. PaddleOCR (暂不支持)
|
||||
## 4. PaddleOCR (暂时不可用)
|
||||
|
||||
### 限制
|
||||
PaddleOCR 是 Python 库,在 Node.js 环境中集成比较复杂。
|
||||
### 当前状态
|
||||
❌ Docker 镜像存在 protobuf 兼容性问题,暂时无法使用。
|
||||
|
||||
### 问题描述
|
||||
常见的 PaddleOCR Docker 镜像(如 987846/paddleocr)使用了旧版本的 protobuf,与当前环境不兼容,会导致服务无法启动。
|
||||
|
||||
### 替代方案
|
||||
建议使用以下替代方案:
|
||||
- **RapidOCR** - 同样使用 PaddleOCR 引擎,但提供 HTTP API
|
||||
- **Baidu OCR** - 云端调用,准确率高
|
||||
- **Tesseract.js** - 本地轻量级方案
|
||||
- **RapidOCR** ⭐ - 同样基于 PaddleOCR 引擎,但提供稳定的 HTTP API (已集成)
|
||||
- **Baidu OCR** - 云端调用,准确率高,有免费额度
|
||||
- **Tesseract.js** - 本地轻量级方案,无需额外部署
|
||||
|
||||
### 如果需要使用 PaddleOCR
|
||||
您可以:
|
||||
1. 寻找其他维护良好的 PaddleOCR Docker 镜像
|
||||
2. 手动构建 PaddleOCR 服务(需要 Python 环境)
|
||||
3. 使用官方 PaddleOCR 的其他部署方式
|
||||
|
||||
---
|
||||
|
||||
@@ -181,7 +194,8 @@ docker compose ps rapidocr
|
||||
docker compose logs rapidocr
|
||||
|
||||
# 3. 测试 RapidOCR 连接
|
||||
curl http://localhost:8080
|
||||
curl http://localhost:13058
|
||||
# 应返回: {"message":"Welcome to RapidOCR Server!"}
|
||||
|
||||
# 4. 如果服务未运行,启动它
|
||||
docker compose up -d rapidocr
|
||||
|
||||
Reference in New Issue
Block a user