zhch158_admin 2fb3ee41cd feat(添加模型别名支持): 在paddle_local_daemon.sh中添加模型别名配置,并在启动和配置输出中显示 1 неделя назад
..
README.md 5cdf258ef7 Add local daemon scripts for GLM-OCR and PaddleOCR-VL with image processing capabilities 2 недель назад
curl_local_img.png 5cdf258ef7 Add local daemon scripts for GLM-OCR and PaddleOCR-VL with image processing capabilities 2 недель назад
curl_local_ocr.sh 5cdf258ef7 Add local daemon scripts for GLM-OCR and PaddleOCR-VL with image processing capabilities 2 недель назад
dotsocr_vllm_daemon.sh f5e90f19ad feat: Add service daemon scripts for various OCR tools 3 месяцев назад
glmocr_local_daemon.sh d5b79e5f52 feat(更新GLM-OCR本地守护进程配置): 修改端口和模型路径,增强本地服务兼容性 1 неделя назад
glmocr_vllm_daemon.sh 2c1f098ff0 feat(glmocr_vllm_daemon): 添加GLM-OCR vLLM服务守护进程脚本,支持模型启动、停止和状态检查 1 месяц назад
mineru_vllm_daemon.sh f5e90f19ad feat: Add service daemon scripts for various OCR tools 3 месяцев назад
paddle_local_daemon.sh 2fb3ee41cd feat(添加模型别名支持): 在paddle_local_daemon.sh中添加模型别名配置,并在启动和配置输出中显示 1 неделя назад
paddle_vllm_daemon.sh f5e90f19ad feat: Add service daemon scripts for various OCR tools 3 месяцев назад
payload.json 5cdf258ef7 Add local daemon scripts for GLM-OCR and PaddleOCR-VL with image processing capabilities 2 недель назад
ppstructure_v3_daemon.sh f5e90f19ad feat: Add service daemon scripts for various OCR tools 3 месяцев назад

README.md

服务端守护进程脚本

本目录包含所有 OCR 工具的服务端守护进程脚本,用于启动和管理 HTTP API 服务。

概述

这些守护进程脚本用于在服务器上启动和管理各种 OCR 服务的 HTTP API 端点。客户端工具(位于 ocr_tools/*_tool/ 目录)可以通过这些 API 端点调用远程服务进行文档处理。

脚本列表

远程 vLLM 服务(Linux/GPU)

脚本文件 服务类型 默认端口 服务 URL
mineru_vllm_daemon.sh MinerU vLLM 8121 http://localhost:8121
ppstructure_v3_daemon.sh PP-StructureV3 API 8111 http://localhost:8111/layout-parsing
paddle_vllm_daemon.sh PaddleOCR-VL vLLM 8110 http://localhost:8110
dotsocr_vllm_daemon.sh DotsOCR vLLM 8101 http://localhost:8101

本地 GGUF 模型服务(macOS/Metal)

脚本文件 服务类型 默认端口 服务 URL
glmocr_local_daemon.sh GLM-OCR Q8_0 (llama.cpp) 8080 http://localhost:8080
paddleocr_local_daemon.sh PaddleOCR-VL-1.5 (llama.cpp) 8081 http://localhost:8081

脚本与客户端工具映射

服务端脚本 客户端工具 服务类型 默认端口 API 端点
mineru_vllm_daemon.sh mineru_vl_tool/main.py MinerU vLLM 8121 http://localhost:8121
ppstructure_v3_daemon.sh ppstructure_tool/api_client.py PP-StructureV3 API 8111 http://localhost:8111/layout-parsing
paddle_vllm_daemon.sh paddle_vl_tool/main.py PaddleOCR-VL vLLM 8110 http://localhost:8110
dotsocr_vllm_daemon.sh dots.ocr_vl_tool/main.py DotsOCR vLLM 8101 http://localhost:8101

快速开始

基本使用

所有脚本都支持以下命令:

# 启动服务
./script_name.sh start

# 停止服务
./script_name.sh stop

# 重启服务
./script_name.sh restart

# 查看服务状态
./script_name.sh status

# 查看日志(实时)
./script_name.sh logs

# 查看配置
./script_name.sh config

# 测试 API(如果支持)
./script_name.sh test

示例

# 启动 MinerU vLLM 服务
cd ocr_tools/daemons
./mineru_vllm_daemon.sh start

# 查看服务状态
./mineru_vllm_daemon.sh status

# 查看日志
./mineru_vllm_daemon.sh logs

各脚本详细说明

1. mineru_vllm_daemon.sh

服务类型:MinerU vLLM 服务

配置参数

  • CONDA_ENV: conda 环境名称(默认: mineru2
  • PORT: 服务端口(默认: 8121
  • HOST: 服务主机(默认: 0.0.0.0
  • MODEL_PATH: 模型路径
  • MODEL_NAME: 模型名称(默认: MinerU2.5
  • GPU_MEMORY_UTILIZATION: GPU 内存利用率(默认: 0.3
  • CUDA_VISIBLE_DEVICES: 可见的 CUDA 设备(默认: 4

启动方法

./mineru_vllm_daemon.sh start

服务 URL

  • API 端点: http://localhost:8121
  • API 文档: http://localhost:8121/docs

依赖环境

  • conda 环境: mineru2
  • 需要安装: mineru-vllm-server

客户端使用

# 使用 mineru_vl_tool 调用服务
cd ../mineru_vl_tool
python main.py --input document.pdf --output_dir ./output --server_url http://localhost:8121

2. ppstructure_v3_daemon.sh

服务类型:PP-StructureV3 API 服务

配置参数

  • CONDA_ENV: conda 环境名称(默认: paddle
  • PORT: 服务端口(默认: 8111
  • CUDA_VISIBLE_DEVICES: 可见的 CUDA 设备(默认: 7
  • SCRIPT_DIR: PaddleX 脚本目录
  • PIPELINE_CONFIG: Pipeline 配置文件路径

启动方法

./ppstructure_v3_daemon.sh start

服务 URL

  • API 端点: http://localhost:8111/layout-parsing
  • API 文档: http://localhost:8111/docs

依赖环境

  • conda 环境: paddle
  • 需要安装: paddlex
  • 需要脚本: start_paddlex_with_adapter.py(位于 ocr_tools/paddle_common/ 目录)

配置说明

  • 脚本中的 PADDLE_COMMON_DIR 需要根据实际部署环境设置为 ocr_platform/ocr_tools/paddle_common 的绝对路径
  • Pipeline 配置文件可以使用 paddle_common/config/ 中的配置文件

客户端使用

# 使用 ppstructure_tool/api_client.py 调用服务
cd ../ppstructure_tool
python api_client.py --input document.pdf --output_dir ./output --api_url http://localhost:8111/layout-parsing

3. paddle_vllm_daemon.sh

服务类型:PaddleOCR-VL vLLM 服务

配置参数

  • CONDA_ENV: conda 环境名称(默认: paddle
  • PORT: 服务端口(默认: 8110
  • HOST: 服务主机(默认: 0.0.0.0
  • MODEL_NAME: 模型名称(默认: PaddleOCR-VL-0.9B
  • BACKEND: 后端类型(默认: vllm
  • GPU_MEMORY_UTILIZATION: GPU 内存利用率(默认: 0.3
  • CUDA_VISIBLE_DEVICES: 可见的 CUDA 设备(默认: 3

启动方法

./paddle_vllm_daemon.sh start

服务 URL

  • API 端点: http://localhost:8110
  • API 文档: http://localhost:8110/docs

依赖环境

  • conda 环境: paddle
  • 需要安装: paddlexgenai-vllm-server 插件

    paddlex --install genai-vllm-server
    

客户端使用

# 使用 paddle_vl_tool 调用服务(通过配置文件指定 vLLM 服务器)
cd ../paddle_vl_tool
python main.py --input document.pdf --output_dir ./output \
  --pipeline ../paddle_common/config/PaddleOCR-VL-Client.yaml

4. dotsocr_vllm_daemon.sh

服务类型:DotsOCR vLLM 服务

配置参数

  • CONDA_ENV: conda 环境名称(默认: dots.ocr
  • PORT: 服务端口(默认: 8101
  • HOST: 服务主机(默认: 0.0.0.0
  • HF_MODEL_PATH: HuggingFace 模型路径
  • MODEL_NAME: 模型名称(默认: DotsOCR
  • GPU_MEMORY_UTILIZATION: GPU 内存利用率(默认: 0.70
  • CUDA_VISIBLE_DEVICES: 可见的 CUDA 设备(默认: 1,2
  • DATA_PARALLEL_SIZE: 数据并行大小(默认: 2

启动方法

./dotsocr_vllm_daemon.sh start

服务 URL

  • API 端点: http://localhost:8101
  • API 文档: http://localhost:8101/docs

依赖环境

  • conda 环境: dots.ocr
  • 需要安装: vllm
  • 需要模型: DotsOCR 模型文件

客户端使用

# 使用 dots.ocr_vl_tool 调用服务
cd ../dots.ocr_vl_tool
python main.py --input document.pdf --output_dir ./output --ip localhost --port 8101

5. glmocr_local_daemon.sh

服务类型:GLM-OCR 本地 GGUF 模型服务(macOS/Metal)

配置参数

  • CONDA_ENV: conda 环境名称(默认: mineru2
  • PORT: 服务端口(默认: 8080
  • HOST: 服务主机(默认: 0.0.0.0
  • MODEL_PATH: GGUF 模型路径(默认: ~/Library/Caches/llama.cpp/ggml-org_GLM-OCR-GGUF_GLM-OCR-Q8_0.gguf
  • MMPROJ_PATH: 多模态投影器路径(默认: ~/Library/Caches/llama.cpp/ggml-org_GLM-OCR-GGUF_mmproj-GLM-OCR-Q8_0.gguf
  • CONTEXT_SIZE: 上下文长度(默认: 16384
  • GPU_LAYERS: Metal GPU 层数(默认: 99,全部)
  • THREADS: CPU 线程数(默认: 8

启动方法

./glmocr_local_daemon.sh start

服务 URL

  • API 端点: http://localhost:8080
  • OpenAI 兼容 API: http://localhost:8080/v1/chat/completions
  • Models 端点: http://localhost:8080/v1/models

依赖环境

  • macOS (M4 Pro 推荐)
  • Homebrew 安装 llama.cpp: brew install llama.cpp
  • conda 环境: mineru2
  • 模型文件位于: ~/Library/Caches/llama.cpp/

模型大小

  • 主模型: 950MB (GLM-OCR-Q8_0.gguf)
  • 多模态投影器: 484MB (mmproj-GLM-OCR-Q8_0.gguf)

客户端使用

# 使用配置文件调用服务
cd ../universal_doc_parser
python parse.py --input document.pdf \
  --config config/bank_statement_yusys_local.yaml --debug

# 或直接调用 API
curl -X POST http://localhost:8080/v1/chat/completions \
  -H 'Content-Type: application/json' \
  -d '{
    "model": "glm-ocr",
    "messages": [{
      "role": "user",
      "content": [
        {"type": "text", "text": "Table Recognition:"},
        {"type": "image_url", "image_url": {"url": "file://test.png"}}
      ]
    }],
    "max_tokens": 16384
  }'

特点

  • 🚀 本地运行,无需网络访问
  • 🍎 Metal GPU 加速(macOS)
  • 📊 OpenAI 兼容 API
  • 🎯 确定性输出(--temp 0)
  • 💾 低内存占用(GGUF Q8_0 量化)

6. paddleocr_local_daemon.sh

服务类型:PaddleOCR-VL-1.5 本地 GGUF 模型服务(macOS/Metal)

配置参数

  • CONDA_ENV: conda 环境名称(默认: mineru2
  • PORT: 服务端口(默认: 8081
  • HOST: 服务主机(默认: 0.0.0.0
  • MODEL_PATH: GGUF 模型路径(默认: ~/Library/Caches/llama.cpp/PaddlePaddle_PaddleOCR-VL-1.5-GGUF_PaddleOCR-VL-1.5.gguf
  • MMPROJ_PATH: 多模态投影器路径(默认: ~/Library/Caches/llama.cpp/PaddlePaddle_PaddleOCR-VL-1.5-GGUF_PaddleOCR-VL-1.5-mmproj.gguf
  • CONTEXT_SIZE: 上下文长度(默认: 16384
  • GPU_LAYERS: Metal GPU 层数(默认: 99,全部)
  • THREADS: CPU 线程数(默认: 8

启动方法

./paddleocr_local_daemon.sh start

服务 URL

  • API 端点: http://localhost:8081
  • OpenAI 兼容 API: http://localhost:8081/v1/chat/completions
  • Models 端点: http://localhost:8081/v1/models

依赖环境

  • macOS (M4 Pro 推荐)
  • Homebrew 安装 llama.cpp: brew install llama.cpp
  • conda 环境: mineru2
  • 模型文件位于: ~/Library/Caches/llama.cpp/

模型大小

  • 主模型: 936MB (PaddleOCR-VL-1.5.gguf)
  • 多模态投影器: 882MB (PaddleOCR-VL-1.5-mmproj.gguf)

客户端使用

# 使用配置文件调用服务
cd ../universal_doc_parser
python parse.py --input document.pdf \
  --config config/bank_statement_paddleocr_local.yaml --debug

# 或直接调用 API
curl -X POST http://localhost:8081/v1/chat/completions \
  -H 'Content-Type: application/json' \
  -d '{
    "model": "paddleocr-vl",
    "messages": [{
      "role": "user",
      "content": [
        {"type": "text", "text": "Table Recognition:"},
        {"type": "image_url", "image_url": {"url": "file://test.png"}}
      ]
    }],
    "max_tokens": 16384
  }'

特点

  • 🚀 本地运行,无需网络访问
  • 🍎 Metal GPU 加速(macOS)
  • 📊 OpenAI 兼容 API
  • 🎯 确定性输出(--temp 0)
  • 💾 低内存占用(GGUF 量化)

对比测试

# 可同时启动两个服务进行对比测试
./glmocr_local_daemon.sh start      # 端口 8080
./paddleocr_local_daemon.sh start   # 端口 8081

# 检查状态
./glmocr_local_daemon.sh status
./paddleocr_local_daemon.sh status

部署建议

1. 环境准备

Linux/GPU 环境(vLLM 服务)

  • 确保所有依赖的 conda 环境已正确安装
  • 确保模型文件已下载并放置在正确位置
  • 确保 GPU 驱动和 CUDA 已正确安装

macOS/Metal 环境(本地 GGUF 服务)

2. 配置调整

在部署前,请根据实际环境调整脚本中的配置参数:

  • 日志目录:默认使用 /home/ubuntu/zhch/logs,可根据需要修改
  • conda 路径:根据实际 conda 安装路径调整
  • 模型路径:确保模型路径正确
  • GPU 设备:根据实际 GPU 配置调整 CUDA_VISIBLE_DEVICES
  • 端口号:确保端口未被占用

3. 权限设置

# 为所有脚本添加执行权限
chmod +x *.sh

4. 使用 systemd 管理(推荐)

可以创建 systemd 服务文件来管理这些守护进程,实现自动启动和重启:

[Unit]
Description=MinerU vLLM Service
After=network.target

[Service]
Type=forking
User=ubuntu
WorkingDirectory=/path/to/ocr_platform/ocr_tools/daemons
ExecStart=/path/to/ocr_platform/ocr_tools/daemons/mineru_vllm_daemon.sh start
ExecStop=/path/to/ocr_platform/ocr_tools/daemons/mineru_vllm_daemon.sh stop
Restart=always

[Install]
WantedBy=multi-user.target

5. 日志管理

vLLM 服务日志(Linux)

所有服务的日志文件位于 /home/ubuntu/zhch/logs/ 目录:

  • mineru_vllm.log - MinerU vLLM 服务日志
  • ppstructurev3.log - PP-StructureV3 服务日志
  • paddleocr_vl_vllm.log - PaddleOCR-VL vLLM 服务日志
  • vllm.log - DotsOCR vLLM 服务日志

本地 GGUF 服务日志(macOS)

日志文件位于 ~/workspace/logs/ 目录:

  • glmocr_llamaserver.log - GLM-OCR llama-server 日志
  • glmocr_llamaserver.pid - GLM-OCR 进程 PID
  • paddleocr_llamaserver.log - PaddleOCR-VL llama-server 日志
  • paddleocr_llamaserver.pid - PaddleOCR-VL 进程 PID

建议定期清理或轮转日志文件。

故障排查

问题:服务启动失败

可能原因(vLLM 服务)

  1. conda 环境未正确激活
  2. 依赖包未安装
  3. 模型文件不存在
  4. 端口已被占用
  5. GPU 不可用或配置错误

可能原因(本地 GGUF 服务)

  1. llama-server 未安装或版本不兼容
  2. 模型文件不存在于 ~/Library/Caches/llama.cpp/
  3. 端口已被占用
  4. conda 环境未激活

解决方法(vLLM)

  1. 使用 ./script_name.sh config 检查配置
  2. 检查 conda 环境是否正确激活:conda env list
  3. 检查依赖是否安装:which python, which mineru-vllm-server
  4. 检查模型路径是否存在
  5. 检查端口占用:netstat -tuln | grep :PORT
  6. 检查 GPU 状态:nvidia-smi

解决方法(本地 GGUF)

  1. 检查 llama-server: which llama-server, llama-server --version
  2. 检查模型文件: ls -lh ~/Library/Caches/llama.cpp/
  3. 检查端口占用: lsof -i :8080lsof -i :8081
  4. 查看日志: ./glmocr_local_daemon.sh logs
  5. 手动下载模型(如果缓存目录为空)

问题:llama-server 文件访问错误

可能原因

  1. 使用绝对路径而非相对路径
  2. --media-path 设置不正确
  3. 文件路径包含中文或特殊字符

解决方法

  1. 确保 --media-path 设置为基准目录(如 /Users/zhch158/workspace
  2. 图片路径使用相对路径:file://test.png 而非 file:///Users/...
  3. 避免路径中包含中文字符
  4. 测试: ./glmocr_local_daemon.sh test

问题:API 无响应

可能原因

  1. 服务未正常启动
  2. 服务正在启动中(需要等待)
  3. 网络连接问题
  4. 防火墙阻止

解决方法

  1. 使用 ./script_name.sh status 检查服务状态
  2. 查看日志:./script_name.sh logs
  3. 等待服务完全启动(通常需要几分钟)
  4. 检查防火墙设置

问题:GPU 内存不足

可能原因

  1. GPU 内存利用率设置过高
  2. 多个服务同时运行占用 GPU
  3. GPU 显存不足

解决方法

  1. 降低 GPU_MEMORY_UTILIZATION 参数
  2. 使用不同的 GPU 运行不同服务(调整 CUDA_VISIBLE_DEVICES
  3. 关闭其他占用 GPU 的程序

问题:模型注册失败(DotsOCR)

可能原因

  1. vLLM 未正确安装
  2. DotsOCR 模型路径不正确
  3. PYTHONPATH 设置错误

解决方法

  1. 检查 vLLM 安装:which vllm
  2. 检查模型路径:ls -la $HF_MODEL_PATH
  3. 检查 PYTHONPATH:echo $PYTHONPATH

相关文档

注意事项

vLLM 服务(Linux/GPU)

  1. 路径配置:脚本中的路径(如模型路径、日志路径)需要根据实际部署环境调整
  2. 端口冲突:确保不同服务使用不同的端口,避免冲突
  3. GPU 资源:合理分配 GPU 资源,避免多个服务竞争同一 GPU
  4. 日志管理:定期清理日志文件,避免磁盘空间不足
  5. 服务监控:建议使用监控工具(如 systemd、supervisor)管理服务,确保服务稳定运行

本地 GGUF 服务(macOS/Metal)

  1. 端口分离:GLM-OCR 使用 8080,PaddleOCR-VL 使用 8081,可同时运行
  2. 文件路径:使用相对路径(相对于 --media-path),而非绝对路径
  3. 内存要求:每个服务约占用 2-3GB 内存,确保足够 RAM
  4. Metal 加速:自动使用 Metal GPU,无需 CUDA 配置
  5. 模型下载:首次运行可能需要下载模型文件(约 1.5-2GB)
  6. 确定性输出:使用 --temp 0 确保 OCR 结果一致性
  7. API 兼容性:完全兼容 OpenAI vision API 格式

模型选择建议

  • GLM-OCR: 适合通用 OCR 场景,特别是英文和图表识别
  • PaddleOCR-VL: 适合中文 OCR 场景,表格识别效果好
  • 对比测试: 可同时运行两个服务,对比识别效果后选择
  • 资源限制: 如果内存有限(<16GB),建议只运行一个服务