FROM python:3.10-slim # poppler-utils → pdf2image (PDF rendering) # libreoffice → convert Word/PPT/ODT to PDF # libgl1 → OpenCV dependency used by Surya RUN apt-get update && apt-get install -y --no-install-recommends \ poppler-utils \ libreoffice \ libgl1 \ libglib2.0-0 \ libsm6 \ libxext6 \ libxrender-dev \ && rm -rf /var/lib/apt/lists/* # Non-root user (HF Spaces requirement) RUN useradd -m -u 1000 user USER user ENV HOME=/home/user PATH=/home/user/.local/bin:$PATH WORKDIR /home/user/app COPY --chown=user requirements.txt . RUN pip install --no-cache-dir --upgrade pip && \ pip install --no-cache-dir -r requirements.txt COPY --chown=user app.py . # Pre-download model weights at build time so cold starts are fast RUN python -c "\ from surya.foundation import FoundationPredictor; \ from surya.recognition import RecognitionPredictor; \ from surya.detection import DetectionPredictor; \ f = FoundationPredictor(); \ RecognitionPredictor(f); \ DetectionPredictor(); \ print('Models pre-downloaded.') \ " EXPOSE 7860 CMD ["uvicorn", "app:app", "--host", "0.0.0.0", "--port", "7860", "--workers", "1"]