Commit Graph

5 Commits

Author SHA1 Message Date
shawn 3a67070063 Add LLM OCR engine via OpenCode Go + mimo-v2-omni
Adds optional LLM-based OCR as an alternative to Tesseract for reading
machine IDs from photos.

Backend (server.py):
- New run_ocr_llm() function calls OpenCode Go API (mimo-v2-omni model)
- Auto-falls back to Tesseract if API key missing or call fails
- Endpoints /api/analyze and /api/bulk-process accept ?ocr_engine=llm
  query param (default: tesseract) and ?ocr_model for model override
- Configurable via env vars: OPENCODE_GO_API_KEY, LLM_OCR_MODEL
- Requires User-Agent: Hermes-Agent/1.0 header for OpenCode Go API

Frontend (static/index.html):
- Toggle checkbox 'Use LLM OCR' in the UI
- OCR engine badge shown in results (llm vs tesseract + model name)
- getOcrParams() helper appends ?ocr_engine=llm to API calls

Infrastructure:
- .gitignore for uploads/ directory

Closes: #2
2026-05-25 17:12:37 -04:00
shawn 0052c59f81 Fix iOS hang when selecting many photos
Root cause: FileReader.readAsDataURL() loads the entire file into memory
as a base64 string. With 50+ iPhone photos (3-12 MB each), this exceeds
iOS Safari's per-tab memory limit and freezes the tab.

Changes:
- Replace readAsDataURL with URL.createObjectURL(file) — zero-copy file
  reference, no memory bloat (static/index.html)
- Reduce batch size from 4 to 2 — gentler on memory-constrained devices
- Add URL.revokeObjectURL() on reset — prevent blob URL leaks
- Add HEIC/HEIF support to server.py — iPhone format compatibility

Closes #1
2026-05-25 16:20:04 -04:00
shawn c1516471ac Bulk OCR + GPS push: process multiple GPS photos, match assets, push coordinates to DB with Leaflet map 2026-05-25 00:55:35 -04:00
shawn 6adaf97958 Add asset lookup from canteen DB — auto-match OCR machine IDs to asset records 2026-05-25 00:43:44 -04:00
shawn b079c9bf8f EXIF scanner: multi-photo gallery with GPS detection 2026-05-25 00:32:16 -04:00