FROM python:3.10-slim ENV PYTHONUNBUFFERED=1 \ PIP_NO_CACHE_DIR=1 \ WORK_DIR=/data/arabic-translator \ DATABASE_PATH=/data/arabic-translator/data/arabic_reader.sqlite3 \ TESSDATA_DIR=/usr/share/tesseract-ocr/5/tessdata \ ESPEAK_NG_EXE=/usr/bin/espeak-ng \ OCR_ENGINE=tesseract \ OCR_RENDER_ZOOM=2 \ TESSERACT_PSM=4 \ DEFAULT_VOICE_ID=silma-local \ MAX_UPLOAD_MB=512 \ OUTPUT_RETENTION_DAYS=7 \ OUTPUT_MAX_FILES=25 \ AUDIO_FORMAT=mp3 \ MP3_BITRATE=96k \ SILMA_FULL_NORMALIZER_DEPS=0 \ SILMA_ENABLE_NORMALIZER=0 \ SILMA_FORCE_TASHKEEL=0 \ SILMA_NORMALIZE_NUMBERS=0 ARG INSTALL_QARI_OCR=0 ARG INSTALL_TAWKEED_OCR=0 ARG INSTALL_KATIB_OCR=0 ARG INSTALL_ARABIC_QWEN_OCR=0 ARG INSTALL_ARABIC_GLM_OCR=0 ARG INSTALL_BASEER_OCR=0 ARG INSTALL_PADDLEOCR_VL=0 ARG INSTALL_SUPERTONIC=0 WORKDIR /app RUN apt-get update && apt-get install -y --no-install-recommends \ bash \ espeak-ng \ ffmpeg \ libsndfile1 \ tesseract-ocr \ tesseract-ocr-ara \ && rm -rf /var/lib/apt/lists/* COPY requirements.txt requirements-silma.txt requirements-supertonic.txt requirements-paddleocr.txt requirements-paddleocr-vl.txt requirements-qari-ocr.txt requirements-tawkeed-ocr.txt requirements-katib-ocr.txt requirements-arabic-qwen-ocr.txt requirements-arabic-glm-ocr.txt requirements-baseer-ocr.txt ./ COPY scripts/setup_silma.sh scripts/setup_supertonic.sh scripts/setup_paddleocr.sh scripts/setup_paddleocr_vl.sh scripts/setup_qari_ocr.sh scripts/setup_tawkeed_ocr.sh scripts/setup_katib_ocr.sh scripts/setup_arabic_qwen_ocr.sh scripts/setup_arabic_glm_ocr.sh scripts/setup_baseer_ocr.sh ./scripts/ RUN python -m venv .venv \ && .venv/bin/python -m pip install --upgrade pip \ && .venv/bin/python -m pip install -r requirements.txt \ && chmod +x scripts/setup_silma.sh scripts/setup_supertonic.sh scripts/setup_paddleocr.sh scripts/setup_paddleocr_vl.sh scripts/setup_qari_ocr.sh scripts/setup_tawkeed_ocr.sh scripts/setup_katib_ocr.sh scripts/setup_arabic_qwen_ocr.sh scripts/setup_arabic_glm_ocr.sh scripts/setup_baseer_ocr.sh \ && PYTHON_BIN=python scripts/setup_silma.sh \ && PYTHON_BIN=python scripts/setup_paddleocr.sh \ && if [ "$INSTALL_SUPERTONIC" = "1" ]; then PYTHON_BIN=python scripts/setup_supertonic.sh; fi \ && if [ "$INSTALL_QARI_OCR" = "1" ]; then PYTHON_BIN=python scripts/setup_qari_ocr.sh; fi \ && if [ "$INSTALL_TAWKEED_OCR" = "1" ]; then PYTHON_BIN=python scripts/setup_tawkeed_ocr.sh; fi \ && if [ "$INSTALL_KATIB_OCR" = "1" ]; then PYTHON_BIN=python scripts/setup_katib_ocr.sh; fi \ && if [ "$INSTALL_ARABIC_QWEN_OCR" = "1" ]; then PYTHON_BIN=python scripts/setup_arabic_qwen_ocr.sh; fi \ && if [ "$INSTALL_ARABIC_GLM_OCR" = "1" ]; then PYTHON_BIN=python scripts/setup_arabic_glm_ocr.sh; fi \ && if [ "$INSTALL_BASEER_OCR" = "1" ]; then PYTHON_BIN=python scripts/setup_baseer_ocr.sh; fi \ && if [ "$INSTALL_PADDLEOCR_VL" = "1" ]; then PYTHON_BIN=python scripts/setup_paddleocr_vl.sh; fi COPY app ./app COPY api ./api COPY static ./static COPY scripts ./scripts RUN mkdir -p /data/arabic-translator/uploads /data/arabic-translator/outputs /data/arabic-translator/data EXPOSE 7860 CMD [".venv/bin/python", "-m", "uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "7860"]