How holgerkrupp/scan works
Scan is a native macOS document-scanning app. Users discover and select a scanner, capture pages through a device backend, review them, then process and export files; Shortcuts can initiate scans through App Intents. Fujitsu USB model drivers share a SCSI command engine, while USB, Image Capture, Epjitsu, and Wi-Fi paths provide distinct scanner integrations. Export supports alignment, image processing, OCR, and document-aware filenames. The excerpts show the workspace invoking capture and export components; some unsampled integrations are included from the tree and README, with uncertain connections omitted.
Main entry points: ScannerWorkspaceViewModel.swift Scan workspace · ContentView.swift Scanning workspace UI · ScannerDriver.swift Driver registry · ScanOutputWriter.swift Output writer
Components 25
App and workspace
- Scanning workspace UI
Scan/ContentView.swift - App Intents
Scan/AppIntents/ScanAppIntents.swift - Scan workspace
Scan/ViewModels/ScannerWorkspaceViewModel.swift - Page navigation
Scan/ViewModels/PageGridNavigation.swift - Page Quick Look
Scan/PageQuickLook.swift
Scanner integration
- USB discovery and transport
Scan/USBTransport/USBScannerDiscovery.swift - Image Capture backend
Scan/ScannerCore/ImageCaptureScannerBackend.swift - Driver registry
Scan/ScannerCore/ScannerDriver.swift - Fujitsu SCSI engine
Scan/FujitsuSCSIOverUSB/FujitsuScanSnapDevice.swift - Fujitsu model profiles
Scan/FujitsuSCSIOverUSB/FujitsuScanSnapModelProfile.swift - Fujitsu model drivers
Scan/FujitsuSCSIOverUSB - Epjitsu USB drivers
Scan/EpjitsuUSB - Fujitsu Wi-Fi driver
Scan/WiFiTransport/FujitsuScanSnapWiFiDriver.swift - Feeder settings
Scan/ScannerCore/ScannerFeedSettings.swift
Page processing and export
- Image processing
Scan/OutputPipeline/ScanImageProcessor.swift - Page alignment
Scan/OutputPipeline/PageAlignment.swift - Output writer
Scan/OutputPipeline/ScanOutputWriter.swift - Document analysis
Scan/OutputPipeline/DocumentAnalysis.swift - Filename suggestions
Scan/OutputPipeline/DocumentNameSuggester.swift - OCR runner
Scan/OutputPipeline/OCRmyPDFRunner.swift
Scanner information
- Scanner details
Scan/ScannerCore/ScannerDetails.swift - Scanner details UI
Scan/ScannerDetailsView.swift - Scan statistics
Scan/Statistics/ScanStatistics.swift
Other components
- Mac user
- Shortcuts / Siri
Connections 26
- Mac user → Scanning workspace UI: uses
Scan/ContentView.swift - Shortcuts / Siri → App Intents: invokes
- Scanning workspace UI → Scan workspace: drives
Scan/ContentView.swift - App Intents → Scan workspace: requests scans
Scan/AppIntents/ScanAppIntents.swift - Scan workspace → Driver registry: selects driver
- USB discovery and transport → Image Capture backend: provides devices
Scan/ScannerCore/ImageCaptureScannerBackend.swift - Image Capture backend → Driver registry: uses drivers
Scan/ScannerCore/ImageCaptureScannerBackend.swift - Driver registry → Fujitsu model drivers: dispatches models
Scan/ScannerCore/ScannerDriver.swift - Driver registry → Epjitsu USB drivers: dispatches models
Scan/EpjitsuUSB/ScanSnapS300Driver.swift - Driver registry → Fujitsu Wi-Fi driver: dispatches backend
Scan/WiFiTransport/FujitsuScanSnapWiFiDriver.swift - Fujitsu model drivers → Fujitsu SCSI engine: creates device
Scan/FujitsuSCSIOverUSB/FujitsuScanSnapIX1500Driver.swift - Fujitsu SCSI engine → Fujitsu model profiles: uses profile
Scan/FujitsuSCSIOverUSB/FujitsuScanSnapDevice.swift - Fujitsu SCSI engine → Feeder settings: applies settings
Scan/FujitsuSCSIOverUSB/FujitsuScanSnapDevice.swift - Scan workspace → Image processing: processes pages
Scan/ViewModels/ScannerWorkspaceViewModel.swift - Image processing → Page alignment: aligns pages
Scan/OutputPipeline/ScanImageProcessor.swift - Scan workspace → Output writer: exports pages
Scan/ViewModels/ScannerWorkspaceViewModel.swift - Output writer → Image processing: processes images
Scan/OutputPipeline/ScanOutputWriter.swift - Output writer → Document analysis: analyzes text
Scan/OutputPipeline/ScanOutputWriter.swift - Output writer → Filename suggestions: suggests names
- Scan workspace → OCR runner: runs OCR
Scan/ViewModels/ScannerWorkspaceViewModel.swift - Scanning workspace UI → Page navigation: navigates pages
Scan/ContentView.swift - Scanning workspace UI → Page Quick Look: previews pages
- Scan workspace → Scanner details: builds details
Scan/ViewModels/ScannerWorkspaceViewModel.swift - Scanning workspace UI → Scanner details UI: shows details
Scan/ContentView.swift - Scanner details UI → Scanner details: renders details
Scan/ScannerDetailsView.swift - Scanner details UI → Scan statistics: shows statistics
Scan/ScannerDetailsView.swift