CanonBookScanner is a cross-platform Windows desktop application designed for high-efficiency book digitization using Canon DSLR or mirrorless cameras via the Canon EDSDK. Built using .NET 8 and Avalonia UI, it enables professional capture workflows, ICC color management, and metadata tagging.
- 📸 Dual Canon Camera Support: Capture left/right book pages simultaneously using Canon's EDSDK.
- 🖥️ Simple & Responsive UI: Avalonia-based interface optimized for digitization workflows.
- 🎯 Camera Controls: Live view, capture, focus, exposure, and other DSLR settings.
- 🗂️ Project Management: Manage scanning sessions and metadata (title, author, etc.).
- 🧾 Custom File Naming & Saving: Output to TIFF, JPEG, PDF with user-defined naming and save location.
- 🔢 Session Counters & Logs: Automatically tracks scans and logs per book/session.
- 🎛️ Basic Image Adjustments: Auto-crop, rotate, deskew, white balance, and exposure adjustments.
- 🎚️ Focus & Alignment Tools: Grid overlays, zoom previews for precise framing.
- 🔤 OCR (Tesseract): Optional searchable PDF output.
- 🌈 ICC Profile Management:
- Load and apply scanner/camera ICC profiles.
- Support for attach or convert workflows.
- Embed ICC metadata into output images.
- .NET 8 (Windows Desktop)
- Avalonia UI
- Canon EDSDK (via P/Invoke)
- Tesseract OCR
- Colourful (for color space conversions)
- ICSharpCode.SharpZipLib (planned for ZIP export)
- ReactiveUI (planned for MVVM bindings)
CanonBookScanner/ ├── CanonBookScanner.Core # Core models and shared logic ├── CanonBookScanner.SDK # Canon EDSDK wrapper and native interop ├── CanonBookScanner.UI # Avalonia UI and ViewModels ├── CanonBookScanner.Tests # Unit tests (xUnit) └── README.md
- Windows 10/11
- Visual Studio 2022+
- .NET 8 SDK
- Canon EDSDK installed (place native DLLs in expected path or reference in project)
- Avalonia templates installed (
dotnet new install Avalonia.Templates
)
- Clone this repository
git clone https://github.com/yourusername/CanonBookScanner.git
cd CanonBookScanner
Build the solution
Open in Visual Studio 2022 and build all projects (ensure x64 platform selected if using Canon EDSDK).
Run the app
Set CanonBookScanner.UI as the startup project and press F5.