91 lines
2.7 KiB
Plaintext
91 lines
2.7 KiB
Plaintext
# PaddleOCR-VL Full Pipeline (PP-DocLayoutV2 + PaddleOCR-VL + Structured Output)
|
|
# Self-contained GPU image with complete document parsing pipeline
|
|
FROM nvidia/cuda:12.4.0-devel-ubuntu22.04
|
|
|
|
LABEL maintainer="Task Venture Capital GmbH <hello@task.vc>"
|
|
LABEL description="PaddleOCR-VL Full Pipeline - Layout Detection + VL Recognition + JSON/Markdown Output"
|
|
LABEL org.opencontainers.image.source="https://code.foss.global/host.today/ht-docker-ai"
|
|
|
|
# Environment configuration
|
|
ENV DEBIAN_FRONTEND=noninteractive
|
|
ENV PYTHONUNBUFFERED=1
|
|
ENV HF_HOME=/root/.cache/huggingface
|
|
ENV PADDLEOCR_HOME=/root/.paddleocr
|
|
ENV SERVER_PORT=8000
|
|
ENV SERVER_HOST=0.0.0.0
|
|
ENV VLM_PORT=8080
|
|
|
|
# Set working directory
|
|
WORKDIR /app
|
|
|
|
# Install system dependencies
|
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
python3.11 \
|
|
python3.11-venv \
|
|
python3.11-dev \
|
|
python3-pip \
|
|
libgl1-mesa-glx \
|
|
libglib2.0-0 \
|
|
libgomp1 \
|
|
libsm6 \
|
|
libxext6 \
|
|
libxrender1 \
|
|
curl \
|
|
git \
|
|
wget \
|
|
&& rm -rf /var/lib/apt/lists/* \
|
|
&& update-alternatives --install /usr/bin/python python /usr/bin/python3.11 1 \
|
|
&& update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.11 1
|
|
|
|
# Create and activate virtual environment
|
|
RUN python -m venv /opt/venv
|
|
ENV PATH="/opt/venv/bin:$PATH"
|
|
|
|
# Upgrade pip
|
|
RUN pip install --no-cache-dir --upgrade pip setuptools wheel
|
|
|
|
# Install PaddlePaddle GPU (CUDA 12.x)
|
|
RUN pip install --no-cache-dir \
|
|
paddlepaddle-gpu==3.2.1 \
|
|
--extra-index-url https://www.paddlepaddle.org.cn/packages/stable/cu126/
|
|
|
|
# Install PaddleOCR with doc-parser (includes PP-DocLayoutV2)
|
|
RUN pip install --no-cache-dir \
|
|
"paddleocr[doc-parser]" \
|
|
safetensors
|
|
|
|
# Install PyTorch with CUDA support
|
|
RUN pip install --no-cache-dir \
|
|
torch==2.5.1 \
|
|
torchvision \
|
|
--index-url https://download.pytorch.org/whl/cu124
|
|
|
|
# Install transformers for PaddleOCR-VL inference (no vLLM - use local inference)
|
|
# PaddleOCR-VL requires transformers>=4.55.0 for use_kernel_forward_from_hub
|
|
RUN pip install --no-cache-dir \
|
|
transformers>=4.55.0 \
|
|
accelerate \
|
|
hf-kernels
|
|
|
|
# Install our API server dependencies
|
|
RUN pip install --no-cache-dir \
|
|
fastapi \
|
|
uvicorn[standard] \
|
|
python-multipart \
|
|
httpx \
|
|
pillow
|
|
|
|
# Copy server files
|
|
COPY image_support_files/paddleocr_vl_full_server.py /app/server.py
|
|
COPY image_support_files/paddleocr_vl_full_entrypoint.sh /usr/local/bin/entrypoint.sh
|
|
RUN chmod +x /usr/local/bin/entrypoint.sh
|
|
|
|
# Expose ports (8000 = API, 8080 = internal VLM server)
|
|
EXPOSE 8000
|
|
|
|
# Health check
|
|
HEALTHCHECK --interval=30s --timeout=10s --start-period=600s --retries=3 \
|
|
CMD curl -f http://localhost:8000/health || exit 1
|
|
|
|
ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]
|