AI-assisted automation / workflow design

Photo Digitiser

A one-day, AI-assisted build that replaced a slow two-application scanning workflow and paid photo-splitting software with one desktop tool — turning hundreds of family photographs into an organised archive ready for my home media centre.

← Back to projects

The problem

Hundreds of family photographs spanning around 40 years needed digitising. They sit in albums and envelopes, and vary greatly in size, age and condition.

Feeding old prints through an automatic document feeder (ADF) was not an option: prints can stick together, jam, damage the feeder or be damaged themselves. A flatbed scanner is much safer — but scanning hundreds of photographs one at a time would take far too long.

The available off-the-shelf workflow meant scanning in one application and then using separate, paid photo-splitting software to cut each multi-photo scan into individual pictures.

Build or buy

Rather than pay for additional software and work across two applications, I decided to build one tool for exactly this workflow. I already used Cursor, which costs about CHF 20/month, and the tool was working within a day.

The result is reusable for future digitisation work and could be packaged for reuse or commercial use.

The workflow

  1. Scanner control The app drives the flatbed directly
  2. Multi-photo scan Several prints, one full-bed scan
  3. Automatic extraction Each photo saved as its own file
  4. Organised archive Named batches, originals kept
  5. Upload to home media centre

Where AI fitted

I defined the problem, the workflow and the validation requirements: full photo borders preserved, original scans kept, detections easy to check, and numbering that never overwrites earlier files.

Cursor was used for implementation, debugging, testing and rapid iteration against real scans. AI was used to build the tool — not to generate or edit the photographs.

Technical details

  • Controls a CanoScan LiDE 600F directly through SANE (scanimage), so XSane is no longer needed for the normal workflow.
  • Keeps the full-bed scan as the archival original, then detects each physical photograph with its full border — including mixed portrait/landscape layouts and slight skew.
  • Generates a numbered preview so detections can be checked, and continues file numbering safely within each named batch.
  • PySide6 desktop GUI. All processing runs locally on Ubuntu, with no cloud services or APIs.

Technology

  • Python
  • OpenCV
  • NumPy
  • PySide6
  • SANE / scanimage
  • Ubuntu