-
Notifications
You must be signed in to change notification settings - Fork 8
Open
Description
I am attempting to use the latest release for debian-based systems (.deb file), in order to leverage Scantailor Experimental's filters to do some scan processing wrapped in a webserver, but the CLI seems to be broken. Specifically it fails on filter 6, which seems to me to be just before actually writing the output file to a temp_dir. The following is my Dockerfile, which contains the precise environment for the installation and hosting container.
# ---------- Stage 1: install scantailor-experimental-cli ----------
FROM ubuntu:24.04 AS stxp
ENV DEBIAN_FRONTEND=noninteractive \
STXP_RELEASE="1.2025.07.07"
# Install tools to fetch .deb
RUN apt-get update && apt-get install -y --no-install-recommends \
ca-certificates wget dpkg apt-transport-https \
libqt5core5a libqt5gui5 libqt5widgets5 libqt5xml5 libqt5opengl5 libtiff6\
&& rm -rf /var/lib/apt/lists/*
# Download the license and the deb package
WORKDIR /tmp
RUN wget https://github.com/ImageProcessing-ElectronicPublications/scantailor-experimental/releases/download/${STXP_RELEASE}/license-gpl_3.0-20171206_all.deb \
&& wget https://github.com/ImageProcessing-ElectronicPublications/scantailor-experimental/releases/download/${STXP_RELEASE}/scantailor-experimental_${STXP_RELEASE}-deb12_amd64.deb
# Install the .deb packages
RUN dpkg -i license-gpl_3.0-20171206_all.deb \
&& dpkg -i scantailor-experimental_${STXP_RELEASE}-deb12_amd64.deb || apt-get -f install -y \
&& rm -f *.deb
RUN which scantailor-experimental-cli || true
# ---------- Stage 2: runtime base with OS packages ----------
FROM ubuntu:24.04 AS runtime-base
ENV DEBIAN_FRONTEND=noninteractive \
PIP_NO_CACHE_DIR=1 \
PYTHONDONTWRITEBYTECODE=1 \
PYTHONUNBUFFERED=1
# OS packages for ocrmypdf and OpenCV runtime
# Build jbig2enc
RUN apt-get update && apt-get install -y --no-install-recommends \
build-essential git ca-certificates autotools-dev automake libtool libleptonica-dev pkg-config \
&& git clone https://github.com/agl/jbig2enc.git \
&& cd jbig2enc && ./autogen.sh && ./configure && make install && cd .. && rm -rf jbig2enc \
&& apt-get purge -y build-essential git autotools-dev automake libtool pkg-config \
&& apt-get autoremove -y && rm -rf /var/lib/apt/lists/*
# Runtime deps (Python + OCR + Qt GUI runtime + Mesa)
RUN apt-get update && apt-get install -y --no-install-recommends \
python3 python3-pip python3-venv python3-dev \
poppler-utils img2pdf tesseract-ocr tesseract-ocr-por ghostscript qpdf pngquant unpaper \
libglib2.0-0 libgl1 libglx-mesa0 libglu1-mesa libgl1-mesa-dri mesa-utils \
libqt5core5a libqt5gui5 libqt5widgets5 libqt5xml5 libqt5opengl5 qtwayland5 \
libqt5network5 zlib1g libtiff6 xvfb \
&& rm -rf /var/lib/apt/lists/*
# Copy full installation from builder
COPY --from=stxp /usr/bin/scantailor-experimental /usr/bin/scantailor-experimental
COPY --from=stxp /usr/bin/scantailor-experimental-cli /usr/bin/scantailor-experimental-cli
# Test binary presence
RUN scantailor-experimental-cli --help || true
# ---------- Stage 3: Python app ----------
FROM runtime-base
COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/
# Change the working directory to the `app` directory
WORKDIR /app
# Install dependencies
RUN --mount=type=cache,target=/root/.cache/uv \
--mount=type=bind,source=uv.lock,target=uv.lock \
--mount=type=bind,source=pyproject.toml,target=pyproject.toml \
uv sync --locked --no-install-project --no-editable
# Copy the project into the intermediate image
ADD app/ /app/
# Sync the project
COPY pyproject.toml uv.lock /app/
RUN --mount=type=cache,target=/root/.cache/uv \
uv sync --locked --no-editable
HEALTHCHECK --interval=30s --timeout=5s --start-period=30s --retries=3 CMD curl -f http://localhost:8000/healthz || exit 1
RUN useradd -m appuser && chown -R appuser:appuser /app
USER appuser
ENV UVICORN_PORT=8000 UVICORN_HOST=0.0.0.0
EXPOSE 8000
CMD ["uv","run","uvicorn","main:app","--host","0.0.0.0","--port","8000"]The console output I'm getting is:
I haven't found much documentation on the CLI at all, has its development been discontinued? Or is there a fix that would allow me to use its capabilities (even if in a more limited fashion than when using the GUI)? Thanks!
Metadata
Metadata
Assignees
Labels
No labels