# LiveMedCard OCR — CPU-запасний рушій (NuExtract3 Q4_K_M через llama.cpp). # # Той самий рушій, що й локальний деплой на ноутбуці: доводить, що модель реально # працює без GPU. Слугує фолбеком, коли ZeroGPU-Lab недоступний (вичерпана квота, # черга, збій) — контракт OpenAI-сумісний, тож клієнт лишається той самий. FROM ghcr.io/ggml-org/llama.cpp:server USER root RUN apt-get update \ && apt-get install -y --no-install-recommends curl ca-certificates \ && rm -rf /var/lib/apt/lists/* # Ваги печемо в образ: холодний старт Space не має чекати на завантаження 3 ГБ. RUN mkdir -p /models \ && curl -fsSL -o /models/nuextract3-q4_k_m.gguf \ https://huggingface.co/numind/NuExtract3-GGUF/resolve/main/NuExtract3-Q4_K_M.gguf \ && curl -fsSL -o /models/mmproj.gguf \ https://huggingface.co/numind/NuExtract3-GGUF/resolve/main/mmproj-NuExtract3-BF16.gguf EXPOSE 7860 # ENTRYPOINT базового образу не фіксуємо наосліп — шукаємо бінар у PATH із відкатом # на /app. `--jinja` потрібен, щоб проходили chat_template_kwargs (template/mode). ENTRYPOINT [] CMD ["/bin/sh", "-c", "exec $(command -v llama-server || echo /app/llama-server) \ -m /models/nuextract3-q4_k_m.gguf \ --mmproj /models/mmproj.gguf \ --host 0.0.0.0 --port 7860 \ --jinja -c 4096 -ngl 0 --threads 2 --parallel 1"]