# 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 " 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"]