JK-LLM-OCR 部署(Bob插件Unraid / NAS)

目录结构(构建上下文)

jk-llm-ocr-docker/
  Dockerfile
  JK-LLM-OCR/
    server/
    ...

Dockerfile

FROM python:3.11-slim-bookworm

WORKDIR /app

# 基础依赖(含调试工具 + OpenCV/Paddle 常见依赖)
RUN set -eux; \
  sed -i \
    -e 's|http://deb.debian.org/debian|https://mirrors.tuna.tsinghua.edu.cn/debian|g' \
    -e 's|http://security.debian.org/debian-security|https://mirrors.tuna.tsinghua.edu.cn/debian-security|g' \
    -e 's|http://deb.debian.org/debian-security|https://mirrors.tuna.tsinghua.edu.cn/debian-security|g' \
    /etc/apt/sources.list.d/debian.sources \
  && apt-get update \
  && apt-get install -y --no-install-recommends \
    bash \
    curl \
    git \
    ca-certificates \
    iproute2 \
    procps \
    net-tools \
    vim-tiny \
    less \
    libgl1 \
    libglib2.0-0 \
    libsm6 \
    libxext6 \
    libxrender1 \
    libgomp1 \
  && apt-get clean \
  && rm -rf /var/lib/apt/lists/*

# 拷贝本地源码(只需要 server 也行,这里直接拷贝整个仓库)
COPY JK-LLM-OCR/ /app

WORKDIR /app/server

RUN chmod +x ./scripts/start_ppocrv5_server.sh

# 升级 pip
RUN python -m pip install --upgrade pip

# 安装依赖(CPU 推理已验证组合)
RUN python -m pip install "paddlepaddle==3.2.2" -f https://www.paddlepaddle.org.cn/packages/stable/cpu/ \
 && python -m pip install "paddleocr==3.4.0" "paddlex==3.4.1"

# 端口(实际服务用 8080)
EXPOSE 8080

CMD ["bash", "-lc", "./scripts/start_ppocrv5_server.sh"]

构建镜像

docker build -t jk-llm-ocr:cpu .

可选自检:

docker run --rm -it jk-llm-ocr:cpu \
  bash -lc "python3 -c 'import paddleocr; print(paddleocr.__version__)'"

下载模型(持久化到宿主机目录)

mkdir -p /mnt/user/appdata/jk-llm-ocr/models

docker run --rm -it \
  -e PADDLE_PDX_DISABLE_MODEL_SOURCE_CHECK=True \
  -v /mnt/user/appdata/jk-llm-ocr/models:/app/server/models \
  jk-llm-ocr:cpu \
  bash -lc "cd /app/server && ./scripts/download_ppocrv5_server_models.sh && ls -lah /app/server/models"

部署运行(推荐:host 网络 + 监听 0.0.0.0)

docker rm -f jk-llm-ocr 2>/dev/null || true

docker run -d --name jk-llm-ocr \
  --network host \
  -e HOST=0.0.0.0 \
  -e PORT=8080 \
  -e PADDLE_PDX_DISABLE_MODEL_SOURCE_CHECK=True \
  -v /mnt/user/appdata/jk-llm-ocr/models:/app/server/models \
  --restart unless-stopped \
  jk-llm-ocr:cpu

验证

curl -sS http://127.0.0.1:8080/healthz
curl -sS http://10.0.0.4:8080/healthz

预期返回:

{"status":"ok"}

Bob 插件配置(示例)

OCR 服务地址:

http://10.0.0.4:8080/ocr

来源项目https://github.com/GravityPoet/JK-LLM-OCR.git

备注:

1.由于server中”scripts/start_ppocrv5_server.sh”设置了只监听本地(HOST=”${HOST:-127.0.0.1}“)因此,docker需要设置HOST=0.0.0.0 ,当然你也可以直接修改sh文件。

2.建议设置每天定时重启docker一次。