3.8 KiB
ScanSlicer (fork)
ScanSlicer is a desktop Qt application (Python/PySide6) that detects multiple photos in a flatbed scan image, lets you correct each box manually, and exports perspective-corrected crops. It runs on Linux desktops over Wayland or X11.
This is a fork of macrodev8/ScanSlicer. Upstream credit: the original is inspired by PhotoSlicer by Francesco Vannini.
Changes from upstream
- Fixed mirrored slice exports: added an explicit left/right orientation workflow with a Swap L/R button and color-coded left/right corners and edges.
- Orientation corrections now persist through "squarize" and "reset rotation" (previously they were silently overwritten).
- Hardened dependencies: switched to
opencv-python-headless, removed the unused Pillow dependency, and made the AppImage build verify package hashes.
What It Does
- Detects photo boxes from
.png,.jpg, and.jpegsource images. - Supports threshold-based and Canny-based detection pipelines.
- Provides manual correction tools (corner drag, edge drag, rotate, move, add/remove box).
- Saves only locked boxes, each as a perspective-corrected output image.
- Includes auto-tuning with feedback learning from your prior saved results.
Requirements
- Python >= 3.10
- A Linux desktop session over Wayland or X11
- System libraries required by Qt/OpenCV (see
Dockerfilefor a known-good set)
Project dependencies (from pyproject.toml): PySide6, opencv-python-headless, numpy.
Quick Start
Run the AppImage (recommended)
Use the provided AppImage file under "Releases", or build and run it yourself:
bash packaging/appimage/build-appimage-docker.sh
./appimage/dist/ScanSlicer-<version>-x86_64.AppImage
See docs/appimage.md for full details.
Run from source (uv)
uv sync --frozen
uv run scanslicer /path/to/scans
Open with no startup directory, or select the display backend explicitly:
uv run scanslicer
uv run scanslicer --backend wayland
uv run scanslicer --backend x11
You can also run the installed package directly with python -m scanslicer.
CLI
scanslicer [path] [--backend {auto,wayland,x11}]
Typical Workflow
- Open an input directory.
- Verify the output directory (defaults to the opened input directory).
- Run detection (
Detect), or rely on automatic detection on image load. - Adjust boxes as needed (drag corners/edges, rotate, move, add/remove).
- Lock the boxes to export (or use lock-all).
- Choose the save format (
jpgorpng) and quality/compression. - Click
Save images.
Only locked boxes are exported.
Configuration
ScanSlicer stores its defaults, presets, auto-tune feedback, and a session status log under ~/.config/scanslicer/ (or $XDG_CONFIG_HOME/scanslicer/). All paths can be overridden via SCANSLICER_*_PATH environment variables. See
docs/runtime-config.md.
Docker
A GUI-oriented compose setup is provided for Linux desktop use:
docker compose up --build
See .env.example and docker-compose.yml for host UID/GID and Wayland/XDG settings.
Documentation
See docs/README.md for an index and recommended reading order (end-user guide, parameters, auto-tune, architecture, runtime config, AppImage, development).
Repository
scanslicer/ application source (package)
packaging/appimage/ AppImage recipe and build scripts
docs/ end-user and developer documentation
Dockerfile / docker-compose.yml container runtime
pyproject.toml / uv.lock package metadata and pinned dependencies
License
GNU GPL v3 — see LICENSE. See THIRD_PARTY_NOTICES for bundled third-party components.