# PaddleOCR-VL CPU Variant # Vision-Language Model for document parsing using transformers (slower, no GPU required) FROM python:3.11-slim-bookworm LABEL maintainer="Task Venture Capital GmbH " LABEL description="PaddleOCR-VL 0.9B CPU - Vision-Language Model for document parsing" LABEL org.opencontainers.image.source="https://code.foss.global/host.today/ht-docker-ai" # Environment configuration ENV PYTHONUNBUFFERED=1 ENV HF_HOME=/root/.cache/huggingface ENV CUDA_VISIBLE_DEVICES="" ENV SERVER_PORT=8000 ENV SERVER_HOST=0.0.0.0 # Set working directory WORKDIR /app # Install system dependencies RUN apt-get update && apt-get install -y --no-install-recommends \ libgl1-mesa-glx \ libglib2.0-0 \ libgomp1 \ curl \ git \ && rm -rf /var/lib/apt/lists/* # Install Python dependencies RUN pip install --no-cache-dir --upgrade pip && \ pip install --no-cache-dir \ torch==2.5.1 torchvision==0.20.1 --index-url https://download.pytorch.org/whl/cpu && \ pip install --no-cache-dir \ transformers \ accelerate \ safetensors \ pillow \ fastapi \ uvicorn[standard] \ python-multipart \ httpx \ protobuf \ sentencepiece \ einops # Copy server files COPY image_support_files/paddleocr_vl_server.py /app/paddleocr_vl_server.py COPY image_support_files/paddleocr-vl-cpu-entrypoint.sh /usr/local/bin/paddleocr-vl-cpu-entrypoint.sh RUN chmod +x /usr/local/bin/paddleocr-vl-cpu-entrypoint.sh # Expose API port EXPOSE 8000 # Health check (longer start-period for CPU + model download) HEALTHCHECK --interval=30s --timeout=10s --start-period=600s --retries=3 \ CMD curl -f http://localhost:8000/health || exit 1 ENTRYPOINT ["/usr/local/bin/paddleocr-vl-cpu-entrypoint.sh"]