Installation

Debian 12 and Debian 13

The signed APT repository is the recommended installation route. It provides updates, matching GPL source code, and all required OCR dependencies.

Repository and package

curl -fsSL https://deb.ralfhartmann.dev/repo.gpg.key \
  | sudo gpg --dearmor \
  -o /usr/share/keyrings/rhpost-archive-keyring.gpg

. /etc/os-release
case "$VERSION_CODENAME" in
  bookworm|trixie) ;;
  *) echo "Debian 12 or 13 is required"; exit 1 ;;
esac
printf "deb [signed-by=/usr/share/keyrings/rhpost-archive-keyring.gpg] https://deb.ralfhartmann.dev %s main\ndeb-src [signed-by=/usr/share/keyrings/rhpost-archive-keyring.gpg] https://deb.ralfhartmann.dev %s main\n" \
  "$VERSION_CODENAME" "$VERSION_CODENAME" \
  | sudo tee /etc/apt/sources.list.d/scanworker.list

sudo apt-get update
sudo apt-get install scanworker

Bookworm and Trixie

Debian 12 Bookworm and Debian 13 Trixie have separate signed package indexes. The architecture-independent binary package and its GPL source package are verified in both distributions.

Direct download

The current stable Debian package can also be downloaded directly. APT setup is preferable for automatic updates.

After enabling deb-src, the same source is available with apt source scanworker. An additional ZIP is unnecessary: .dsc and .tar.xz are the standard Debian source-package formats.

SHA-256, binary, and source package metadata are in the signed APT indexes. Development builds from trixie-dev are intentionally not offered here.

Optional VLM analysis

The base workflow is complete with Tesseract alone. PaddleOCR-VL is a separate local service and can run on a CPU machine without a cloud API.

Configure scanner inputs

In /etc/scanworker/scanworker.conf, the duplex input accepts two simplex passes for pairing; the single input sends an already-complete PDF directly to OCR:

DUPLEX_INPUT_DIR=/srv/scan/duplex
SINGLE_INPUT_DIR=/srv/scan/single

If DUPLEX_INPUT_DIR is absent, an existing INPUT_DIR remains the duplex input. Restart the Scanworker services after changing these paths.

Native on macOS too

Homebrew is the recommended prerequisite for Scanworker on a Mac: it installs and updates every background service plus Python, OCRmyPDF, Tesseract language data, Ghostscript, and Poppler. The free GPL app is distributed outside the App Store and is only a local controller: it displays settings read-only and opens the dashboard. If Homebrew is absent, the app links to the official installation page; it can then install the Scanworker packages from the dedicated tap. See the licensing details.

The source archive contains the complete Swift source for the free controller app and services that exactly matches this version, plus its licence and build files. The DMG includes the app, a link to the official Homebrew homepage, and the complete command for installing ralfhartmann/scanworker/scanworker-services. The previous complete PKG installer is retained only for completeness and migration.

Homebrew prerequisite

Homebrew uses the supported standard prefix on Apple silicon and Intel and pulls in every required Scanworker dependency.

Local Tesseract OCR

Homebrew supplies Python 3.13, OCRmyPDF, German and English Tesseract data, Ghostscript, and Poppler.

Apple Vision on the LAN

The service runs natively on Intel and Apple silicon and can serve Scanworker on this Mac or a Debian host. Initial trusted-LAN operation is unauthenticated; Bearer authentication can be enabled.

Free controller app

Opens the dashboard from menu and Settings, displays configuration read-only, and controls local Homebrew services. Encryption, user sign-in, parameter changes, and system notifications belong to the paid app.

Windows

A native Windows version of Scanworker is planned.

Coming soonWindows is not yet supported. The download link will appear here once an installable package is available.