Fork of ScanSlicer (https://github.com/macrodev8/ScanSlicer), implementing a mirrored export patch.
Find a file
dan 5f71b61596 docs: finalize README, attribute fork, sync AGENTS.md
- Rewrite README for fork context, add changes-from-upstream section,
  prune sections duplicated by docs/, surface AppImage as preferred run
- Add fork maintainer alongside upstream author in pyproject.toml
- Sync AGENTS.md with completed patch and deliberate supply-chain decisions
2026-09-11 23:24:54 +02:00
docs chore: prune boilerplate and refresh stale docs 2026-09-11 23:07:30 +02:00
packaging/appimage build: harden dependency supply chain 2026-09-11 23:07:30 +02:00
scanslicer chore: prune boilerplate and refresh stale docs 2026-09-11 23:07:30 +02:00
.dockerignore chore: add repository ignore and container ignore rules 2026-02-18 10:15:00 +00:00
.env.example chore: add example environment variables for desktop runtime 2026-02-18 10:31:31 +00:00
.gitignore chore: fork setup — tidy ignores, untrack runtime state, add AGENTS.md 2026-09-11 20:23:00 +02:00
AGENTS.md docs: finalize README, attribute fork, sync AGENTS.md 2026-09-11 23:24:54 +02:00
docker-compose.yml build: add docker runtime files 2026-03-04 11:12:14 +00:00
Dockerfile build: add docker runtime files 2026-03-04 11:12:14 +00:00
LICENSE docs: add GPLv3 licensing and upstream attribution 2026-03-04 13:46:58 +00:00
pyproject.toml docs: finalize README, attribute fork, sync AGENTS.md 2026-09-11 23:24:54 +02:00
README.md docs: finalize README, attribute fork, sync AGENTS.md 2026-09-11 23:24:54 +02:00
setup.py build: add legacy setuptools shim entry point 2026-02-18 11:10:54 +00:00
THIRD_PARTY_NOTICES build: harden dependency supply chain 2026-09-11 23:07:30 +02:00
uv.lock build: harden dependency supply chain 2026-09-11 23:07:30 +02:00

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, whose original maintainer is inactive. It is kept in a working state for the maintainer's own photo scans.

Upstream credit: the original is inspired by PhotoSlicer by Francesco Vannini. This repository keeps the GNU GPL v3 license for compatibility with that upstream work.

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 .jpeg source 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 Dockerfile for a known-good set)

Project dependencies (from pyproject.toml): PySide6, opencv-python-headless, numpy.

Quick Start

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.

Run the AppImage (preferred)

Build the AppImage and run it:

bash packaging/appimage/build-appimage-docker.sh
./appimage/dist/ScanSlicer-<version>-x86_64.AppImage

See docs/appimage.md for full details, including the local build path and a Docker Desktop caveat.

CLI

scanslicer [path] [--backend {auto,wayland,x11}]

Typical Workflow

  1. Open an input directory.
  2. Verify the output directory (defaults to the opened input directory).
  3. Run detection (Detect), or rely on automatic detection on image load.
  4. Adjust boxes as needed (drag corners/edges, rotate, move, add/remove).
  5. Lock the boxes to export (or use lock-all).
  6. Choose the save format (jpg or png) and quality/compression.
  7. 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.