Drei Änderungen, die den Spitzenverbrauch eines Stapelscans senken:
- Zuschnitte werden nicht mehr auf 1400 px hochgerechnet. Auf einem
Stapelfoto ist eine Karte nur ein paar hundert Pixel breit; sie
aufzublasen erzeugt vier Mal so viele Pixel ohne mehr Information und
kostet zusätzlich Bildtokens beim Modellaufruf. OUT_WIDTH ist jetzt
eine Obergrenze.
- Die um 180 Grad gedrehte Fassung entsteht erst, wenn ein Ergebnis leer
bleibt, statt für jede Karte auf Vorrat. Das halbiert die
JPEG-Kodierungen im Normalfall.
- Zuschnitte werden einzeln kodiert und sofort freigegeben, statt
gesammelt im Speicher zu liegen.
Dazu mem_limit und cpus für den App-Container: ein Ausreißer soll den
Container treffen, nicht den Host, auf dem auch Jitsi und MySQL laufen.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Ungenutzte Hilfsfunktion, ungenutzter Konfigurationswert und drei
CSS-Regeln ohne Verwendung im Markup.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Selbst gehostete PWA, die Visitenkarten von einem Foto freistellt, ausliest
und als Kontakt bereitstellt.
- Stapelscan: OpenCV findet die Kartenrechtecke über mehrere Binärmasken,
entzerrt sie perspektivisch und schneidet sie einzeln aus. Ohne Fund gilt
das ganze Foto als eine Karte.
- Extraktion: ein Aufruf je Zuschnitt an das Vision-Modell mit
JSON-Schema. Kein vorgeschaltetes OCR - das würde Layout und
Schriftgrößen wegwerfen, aus denen die Feldzuordnung entsteht.
- Metadaten: Aufnahmezeit und GPS aus den EXIF-Daten des Fotos, Ortsname
über Nominatim, Browserstandort nur als Rückfallebene.
- Übersicht mit Volltextsuche und Filtern, Detailansicht mit Korrekturmaske.
- Notizfeld je Karte, Erinnerungen per Mail inklusive Nachholen verpasster
Termine nach einem Neustart.
- vCard 3.0 einzeln und als Sammeldatei, Karte gilt danach als exportiert.
- Anmeldung über ein Passwort, Sitzung als signiertes Cookie.
- Deployment per Tag-Push nach den Konventionen in DEPLOY.md.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>