Archive Lens: a searchable catalogue for historical photographs
I am building a browser-based catalogue for a historical photograph collection that already lives in Google Drive. It adds OCR, research metadata and review state without replacing the original archive.
Problem
A friend collects and researches old photographs. Over time, the collection became a large Google Drive library of scanned images.
The files were stored safely, but the knowledge around them was scattered: names, places, dates, studios and research notes. Google Drive was already the right storage layer. The missing part was a searchable catalogue connecting the images to reviewed information.

From local experiment to hosted product
I first tested local OCR extractors and a local worker flow. Keeping processing close to the files seemed efficient, but the OCR quality was inconsistent and the setup was too technical for the person using the tool.
Continuing towards a Windows application would have solved the wrong problem. I moved instead to a hosted browser workflow: connect Drive, choose what to process, review the output and search approved records.
Product boundaries
Three decisions define the product.
Originals remain in Google Drive
Archive Lens stores Drive references, derived previews, OCR text, metadata and review state. It does not create another full-resolution copy of the archive.
Google Drive remains the source of truth for the original files.
Indexing and processing are separate
The user can index and browse Drive files before deciding which images should be processed.
This prevents every indexed file from automatically consuming OCR quota, processing time or storage.
OCR output requires review
OCR can suggest text, dates, places, names and studio information, but suggestions do not become approved catalogue data automatically.
A person must accept, correct or ignore the output.
Current workflow
The current MVP supports the main archive workflow:
- Connect a Google Drive folder.
- Index its files.
- Select images for processing.
- Temporarily process the originals through a Cloud Run worker.
- Run Google Cloud Vision OCR and create derived previews.
- Review the extracted text and metadata suggestions.
- Move approved records into the searchable Catalogue.
The stack is React and Vite on the frontend, FastAPI for the API, Supabase Postgres and Auth, private Supabase Storage for derived assets, Cloud Run for processing and Google Cloud Vision for OCR.

Cost and control
A historical archive can become large quickly, so processing is explicit rather than automatic.
The system separates Drive indexing from OCR processing, uses monthly OCR caps, processes originals temporarily and stores derived assets rather than duplicating full-resolution files.
Queue state, storage use and OCR quota remain visible. This is partly a cost decision and partly a product decision: the user should control when processing happens and understand what it consumes.

What remains to prove
The project remains in active discovery.
Archive work contains uncertainty that cannot be resolved through OCR alone. Dates may be partial, names may refer to a subject, photographer or studio, handwriting may be unclear, and research may improve over time.
The next step is observing real review sessions and improving the review workspace, grouping, search and export around that behaviour rather than guessing what the workflow should be.
The value of the product depends on the review workflow, not the volume of OCR it can generate. Source files remain in Drive, processing is deliberate, and catalogue knowledge becomes authoritative only after human review.
