Neu: Foto-Explorer · Finden Sie jedes kartierte Reisefoto.

Entwicklertagebuch

"An diesem Tag", "Then & Now" und "Passport Stamps"

"An diesem Tag", "Then & Now" und "Passport Stamps" verwenden unterschiedliche Techniken: Kalenderverknüpfungen, räumliche Gruppierung und optische Zeichenerkennung (OCR). Sie folgen der gleichen Regel: etwas Nützliches finden, erklären und dem Reisenden die endgültige Entscheidung überlassen.

Von. 11 Minute gelesen
Mapsake Passport mit Reise-Statistiken, Karten und Speicherkarten

Drei Wege, die Vergangenheit wieder lebendig zu machen.

Die meisten Reise-Software ist für die nächste Reise optimiert. Mapsake muss auch gut darin sein, Menschen zu einer Reise zurückzubringen, die vor fünf, zehn oder zwanzig Jahren stattgefunden hat.

Dieses Update fügt drei verschiedene Wege zur Vergangenheit hinzu. An diesem Tag findet eine Verbindung zum Kalender. Damals und heute findet eine Ortsverbindung. Passstempel bewahrt ein physisches Artefakt und verwendet es, um den Atlas zu verbessern.

Sie teilen ein Designprinzip: Beginnen Sie mit Daten, die der Benutzer bereits besitzt, führen Sie die interessanten Arbeiten auf dem Gerät durch und fragen Sie nach einer Bestätigung, wenn eine Schlussfolgerung möglicherweise falsch ist.

Hinter der Veröffentlichung steckt die Idee der langfristigen Archivierung, aber es geht nicht um „mehr Benachrichtigungen“. Ein lebenslanges Atlas wird nützlich, wenn er neue Gründe schafft, alte Daten erneut zu betrachten. Der beste Grund ist eine echte Verbindung, die der Benutzer nicht manuell kuratieren musste.

"An diesem Tag", "Then & Now" und "Stamps" erstellen diese Verbindungen auf unterschiedliche Weise. Das machte sie zu einem guten Test, ob Mapsakes wachsende Anzahl von Funktionen das Laden von Fotos, die Ortsbestimmung, die Darstellung, die Navigation und die Datenschutzrichtlinien gemeinsam nutzen können, ohne zu einer einzigen, riesigen Gedächtnis-Engine zu verschmelzen.

"An diesem Tag" verwendet Daten aus mehr als nur Fotos.

Die offensichtliche Implementierung würde die Foto-Bibliothek nach dem aktuellen Monat und Tag durchsuchen. Mapsake geht einen Schritt weiter, da Fotos nur eine Art von Reisebeweis sind.

Jeder Ort im Atlas kann Präsenztage aus manuellen Einträgen, Importen, Flügen und der Fotohistorie enthalten. "On This Day" kombiniert diese Daten mit zwischengespeicherten Foto-Metadaten, gruppiert das Ergebnis nach Jahr und ordnet die spezifischsten Orte zuerst an. Eine Stadt oder ein Flughafen kann die Erinnerung hervorheben, während ihre Region und ihr Land Teil derselben Geschichte bleiben.

Die Foto-Filterung wird von der Hauptoberfläche getrennt, da eine große Bibliothek immer noch eine große Bibliothek ist, selbst wenn die Abfrage einfach klingt. Die Ergebnisse werden nach dem neuesten Datum sortiert und als ruhige Jahreskarten angezeigt. Das Öffnen einer Karte zeigt ihre Galerie und Links zu den entsprechenden Ortsbeschreibungen.

Es gibt auch eine Nearest-Memory-Fallback-Funktion für ruhige Tage. Wenn der Juli 9 keine Einträge enthält, kann Mapsake auf das nächstgelegene Datum mit Einträgen verweisen, anstatt ein totes Ende anzuzeigen.

Die Kalenderabgleichsfunktion weist mehr Feinheiten auf, als es auf den ersten Blick scheint.

"Gleiches Datum" klingt wie eine triviale Bedingung, bis Zeitzonen und unvollständige Aufzeichnungen ins Spiel kommen. Fotodaten stammen von erfassten Medien, während manuelle und importierte Ortsdaten einen Tag und nicht einen genauen Zeitpunkt darstellen können. Diese Funktion funktioniert daher in Kalenderkomponenten, anstatt zu prüfen, ob Zeitstempel genau 365 Tage auseinanderliegen.

Orte sind für die Darstellung nach Relevanz sortiert. Wenn der Atlas den Flughafen, die Stadt, die Region und das Land für einen Tag kennt, sollte der Flughafen oder die Stadt in der Karte hervorgehoben werden; die Auflistung aller vier als separate Erinnerungen würde einen Beweis überbewerten. Die vollständige Hierarchie ist als Orts-Chips verfügbar und trägt zur umgebenden Geschichte bei.

Die Foto-Ansicht verwendet den Metadaten-Cache, den Mapsake bereits während des Imports erstellt hat. Sie fordert nicht, dass PhotoKit die gesamte Bibliothek jedes Mal neu scannt, wenn das Profil geöffnet wird. Der Filter nach Tagen läuft in einer separaten Aufgabe, und die Benutzeroberfläche erhält dann eine kleine Sammlung von Asset-Referenzen, die sie verzögert laden kann.

Der erste Einstiegspunkt befand sich im Atlas. Tests zeigten, dass ein Kalenderbutton den visuell wichtigsten Bildschirm auch an Tagen ohne Erinnerungen unübersichtlicher machte. Durch die Verlagerung des Einstiegspunkts in das Profil konnte er bedingt angezeigt werden, passte natürlich zu anderen persönlichen Funktionen und konnte einen ungelesenen Status anzeigen, ohne mit den Kartenelementen zu konkurrieren.

Benachrichtigungen benötigen eigene Routing-Mechanismen. Eine lokale Benachrichtigung wird nicht über den gleichen Pfad wie ein normales Universal Link empfangen. Mapsake schreibt einen Deep Link in die Benachrichtigung und leitet ihn im App Delegate weiter, um den gleichen Navigationszustand wie andere Deep Links zu verwenden. Die sichtbare Funktion ist ein Satz; das zuverlässige Tippen erfordert den gesamten Pfad.

Die Erinnerung ist absichtlich optional.

"An diesem Tag" kann eine sanfte Benachrichtigung planen, aber erst, nachdem der Benutzer sie aktiviert hat. Mapsake bereitet zukünftige Erinnerungsdaten aus lokalen Daten vor und fügt einen Deep Link hinzu, sodass das Tippen auf die Benachrichtigung die richtige Ansicht öffnet.

Kein Server entscheidet, welche Erinnerung wichtig ist, und kein Foto muss das Gerät verlassen, damit die Erinnerung funktioniert. Die Profil-Kachel wird nur angezeigt, wenn es heute tatsächlich etwas anzuzeigen gibt, mit einem kleinen, ungelesenen Punkt, der sich nach dem Öffnen löscht.

Die Benachrichtigung kann mehr als ein Jahr oder einen Ort zusammenfassen, da die lokale Berechnung bereits das gruppierte Ergebnis kennt. Eine Erinnerung könnte beispielsweise besagen, dass der Reisende an diesem Tag in Redmond, Rom und Tokio in verschiedenen Jahren war. Der Text wird auf dem Gerät zusammengestellt und zusammen mit dem Rest der App lokalisiert.

Diese bedingte Anzeige war eine Entscheidung, die sowohl aus technischer als auch aus geschäftlicher Sicht getroffen wurde. Eine dauerhaft leere Karte würde das Feature häufiger bewerben, aber sie würde das Profil jeden Tag, an dem das Feature nichts Nützliches zu sagen hat, unnötig stören.

„Then & Now“ betrachtet den Ort als den gemeinsamen Nenner.

„Then & Now“ sucht nach Fotos, die in der Nähe desselben Ortes mindestens zwei Jahre auseinander liegen. Die Implementierung verwendet ein kompaktes räumliches Raster: Gefilterte Fotokoordinaten werden in Zellen platziert, die etwa 280 Meter breit sind, und jede Zelle speichert nur das früheste und neueste Foto, während sie gescannt wird.

Zellen mit einer ausreichend langen Zeitspanne werden zu Kandidaten. Die längsten Zeitspannen werden zuerst angezeigt, ähnliche Kandidaten werden entfernt, sodass ein einzelner Platz nicht die gesamte Liste füllt, und das gebündelte Verzeichnis liefert eine Stadt- und Landbezeichnung. Das Ergebnis wird zwischengespeichert, bis sich der Fotoindex ändert.

Dies ist absichtlich keine Bildähnlichkeit. Die Fotos müssen nicht den gleichen Inhalt oder das gleiche Motiv zeigen; das ist eine andere Aufgabe für Constellations. „Damals und Jetzt“ stellt eine einfachere Frage: Wie sah dieser Ort aus, als Sie Jahre später zurückkehrten?

Paare werden im normalen Fotoanzeiger geöffnet und können über den gleichen Rendering-Pfad wie Passport-Karten geteilt werden. Die Originale bleiben in ihrer Quellbibliothek, während Mapsake die leichtgewichtigen Metadaten speichert, die benötigt werden, um das Paar erneut zu finden.

Warum 280 Meter und zwei Jahre?

Die räumliche Zelle ist absichtlich tolerant. GPS-Signale können schwanken, ein Wahrzeichen kann von verschiedenen Seiten eines Platzes fotografiert werden, und eine ältere Kamera kann weniger präzise Koordinaten haben. Eine exakte Übereinstimmung der Koordinaten würde viele gültige Ergebnisse verpassen. Eine Übereinstimmung auf Stadtebene wäre zu allgemein und würde nicht zusammenhängende Stadtteile zuordnen.

Ungefähr 280 Meter ist ein Produkt-Schwellenwert, nicht die Behauptung, dass zwei Fotos denselben physischen Punkt zeigen. Es fragt, ob die Übereinstimmung nahe genug ist, um sich verbunden zu fühlen, wenn die Bilder nebeneinander platziert werden. Die Mindestlaufzeit von zwei Jahren verhindert, dass der erste und letzte Tag eines Urlaubs als langfristige Veränderung dargestellt werden.

Nur das früheste und späteste Foto in jeder Zelle werden während des Scans beibehalten. Dadurch ist der Speicherverbrauch proportional zur Anzahl der belegten Zellen und nicht zur Gesamtzahl der Bilder, was den Zeitraum optimal ausnutzt. Kandidatenpaare werden dann nach Dauer sortiert und räumlich dedupliziert, sodass eine Person mit Hunderten von Fotos in einem einzigen Bereich dennoch eine Vielfalt sieht.

Der Memoization-Schlüssel folgt der Generierung und der Anzahl der ausgeschlossenen Foto-Metadaten. Importieren Sie eine neue Batch-Bibliothek oder entfernen Sie ein Foto von der Karte, und die Paare werden neu berechnet. Öffnen Sie den Bildschirm, ohne die Quelle zu ändern, und die App verwendet das Ergebnis erneut.

Ein erster Benchmark zeigte, dass "Then & Now" auch viel Zeit für die Suche nach nahegelegenen Städten benötigte. Da es den gemeinsamen Gazetteer anstelle eines auf Funktionen spezialisierten Reverse-Geocoders verwendet, machten die geografischen Indexierungsarbeiten, die die Imports und die "Constellations"-Funktion beschleunigten, diese Labels auch viel günstiger. Gemeinsame Grundlagen schaffen gemeinsame Erfolge.

Das Teilen verwendet die Passport-Pipeline.

„Then & Now“ benötigte eine Zwei-Foto-Karte mit Jahren, Ort und Zeitraum. Der Aufbau eines neuen Exportmoduls hätte die Rendering-Funktionen für helles und dunkles Design, die sozialen Aspekte, die Bildvorabladung, das Speichern von Fotos und die System-Freigabe-Funktion dupliziert.

Stattdessen wird das Paar als eine benutzerdefinierte Passport-Karte verpackt und dem bestehenden Freigabebildschirm übergeben. Die Quelldaten werden vorab geladen, da SwiftUI's offscreen ImageRenderer am Endpunkt des Renderings synchron ist. Der Benutzer sieht den gleichen Vorschau- und Ziel-Workflow wie bei Karten und Statistiken.

Diese Wiederverwendung geht über reine Codeökonomie hinaus. Sie macht das Verhalten beim Teilen vorhersehbar: Nichts wird automatisch veröffentlicht, der Export sieht wie die Vorschau aus, und die gleichen Barrierefreiheits- und Farbrichtlinien gelten.

Passport-Stempel benötigen eine Hilfestellung, nicht eine falsche Gewissheit.

Echte Reisepassstempel sind schwer zu erkennendes OCR-Material. Sie sind verblichen, gedreht, über Hintergrundkunst gelegt, in vielen Sprachen geschrieben und manchmal direkt übereinander gestempelt. Jeder Scanner, der eine perfekte automatische Erkennung behauptet, setzt den Benutzer auf schlechte Reisedaten hin.

Mapsake verwendet Apples Vision-Framework auf dem Gerät, um den Text zu extrahieren, den es lesen kann, und ordnet dann mögliche Übereinstimmungen ein. Ein IATA-Flughafencode ist ein starkes Signal. Ein zweistelliger Ländercode, der Ländername, ein lokaler Endonym, eine Stadt, ein Hafen oder ein europäisches Datum können zusätzliche Beweise liefern. Lokale Flughafennamen helfen dabei, zu erkennen, dass ein Eintrag wahrscheinlich mit dem Flugzeug erfolgte, auch wenn die optische Zeichenerkennung das Ende des Wortes verfehlt.

Der Matcher schlägt eine bevorzugte Kette von Orten vor: Land, Region, Stadt und Flughafen, falls verfügbar. Er trifft keine eigene Vermutung. Der Überprüfungsbildschirm ermöglicht immer einen anderen Kandidaten oder eine vollständig manuelle Auswahl.

Diese konservative Vorgehensweise ist wichtig. Eine verpasste Vorschlag kostet einen einzigen Klick. Ein falscher Vorschlag, der mit Sicherheit gegeben wird, korrumpiert die Karte unbemerkt.

Ein verblichener Reisepass-Stempel hat den Abgleich verändert.

Ein echter Stempel machte die Grenzen greifbar. Der Text des Flughafens sollte lauten: KEFLAVIKURFLUGVOLLUR, aber die verblasste Tinte und der Zeilenumbruch wurden von Vision als etwas interpretiert, das näher an KEFLAVIKURFLUGVOLI UR. Eine vollständige Überprüfung des isländischen Flughafenausdrucks schlug fehl, sodass Mapsake weder einen Flug ableitete noch den Flughafen Keflavik auflöste.

Die Korrektur war keine Sonderbehandlung für einen einzelnen Reisepass. Der Abgleich erkennt jetzt Wortstämme für gängige Flughafennamen in mehreren Sprachen: Fragmente, die dem Begriff "Flughafen" in isländischen, deutschen, spanischen, portugiesischen, niederländischen, skandinavischen Sprachen und anderen Sprachen entsprechen. Ein beschädigtes Ende kann immer noch die Art des Einreisemodus andeuten und die Ortsbestimmung in Richtung eines Flughafens beeinflussen.

Zwei weitere Lektionen zu EU- und Schengen-Stempeln hinzugefügt. Ein zweistelliger ISO-Ländercode in einem ovalen Feld ist nur dann nützlich, wenn er allein erscheint; die Behandlung jedes zweistelligen Wortes als Land würde zu unsinnigen Übereinstimmungen führen. Europäische Datumsangaben müssen auch zuerst nach dem Tag geparst werden, bevor ein allgemeiner, lokalspezifischer Detektor versucht, sie nach dem Monat zu lesen.

Die Auflösung des Einstiegspunkts ist präfix-tolerant, aus dem gleichen Grund. Lange, zusammengesetzte Wörter in der Landessprache können einen Stadtnamen oder einen Flughafennamen enthalten, auch wenn das mitgelieferte Wörterbuch die kürzere englische Form speichert. Der Resolver versucht, sinnvolle führende Fragmente zu verwenden, und erstellt dann die Kette aus Land, Region, Stadt und Flughafen um das bestätigte Ergebnis.

Die Kette wird vor dem Speichern angezeigt. Die Auswahl eines Flughafens mit hoher Präzision kann seine Stadt, Region und sein Land gleichzeitig markieren, aber jede abgeleitete Ebene bleibt sichtbar und bearbeitbar. Die Benutzeroberfläche ist so konzipiert, dass sie eine starke Empfehlung gibt, gefolgt von einer menschlichen Entscheidung.

Behalten Sie das Original, nicht eine weitere Kopie.

Ein Reisepass-Stempel speichert Metadaten und einen Verweis auf das Quellfoto, nicht die vollständigen Bilddaten. Mapsake erstellt eine kleine, wiederherstellbare Miniaturansicht für die Stempelwand und lädt das Originalbild bei Bedarf. Wenn ein Originalbild, das aus Fotos stammt, tatsächlich gelöscht wird, kann die Wiederherstellung den verwaisten Stempel entfernen, ohne vorzutäuschen, dass das Bild noch existiert.

Das Wort „wirklich“ in diesem Satz ist wichtig. Eine eingeschränkte Foto-Berechtigung kann nicht beweisen, dass eine nicht sichtbare Ressource gelöscht wurde; sie kann einfach außerhalb der zulässigen Auswahl liegen. Die Wiederherstellung entfernt einen Stempel nur dann, wenn die Bibliotheksberechtigung ausreichend ist und weder der lokale noch der Cloud-Identifikator gefunden werden. Mehrdeutigkeit bewahrt den Eintrag.

Dieses referenzbasierte Modell hält auch CloudKit-freundliche Daten klein. Ein Stempel kann sein Land, Datum, Buch, die Art der Eintragung, die Seite, den Lieblingsstatus, eine Notiz und Identifikatoren synchronisieren, ohne zu versuchen, ein Passfoto in einer Datenbankzeile zu speichern. Eine 256-Pixel-Miniaturansicht ist ein Cache und nicht die Quelle der Wahrheit.

Stempel können in benannten Reisepass-Büchern organisiert, als Ankünfte oder Abflüge markiert, mit Daten und Reisedaten versehen und nach Land angezeigt werden. Zuschneiden, Ausrichten, Drehen und ein Unschärfe-Pinsel helfen, ein nützliches Bild vorzubereiten, bevor Sie eine Collage eines Landes oder Kontinents teilen.

Derselbe Ablauf kann einen Personalausweis in ein Buch scannen. Das Parsen von maschinenlesbaren Feldern liefert strukturierte Felder, wo immer dies möglich ist, während das Bild eine Referenz zur eigenen Bibliothek des Benutzers bleibt.

Die MRZ-Erkennung deaktiviert die Sprachkorrektur. Die maschinenlesbare Zone ist eine feste Zeichenfolge aus Buchstaben, Ziffern und Klammern; die Aufforderung an die optische Zeichenerkennung, daraus natürliche Wörter zu machen, kann sie lesbarer erscheinen lassen, während die geparsten Felder ungenauer werden. Gedruckte Felder wie der Geburtsort werden in einem separaten, besten-Möglichkeiten-Durchlauf verarbeitet, und jedes Ergebnis wird in einem bearbeitbaren Buchformat angezeigt.

Die Kamera- und Auswahlobjekte teilen einen gemeinsamen Zuschneide- und Drehschritt vor der Erkennung. Spätere Verbesserungen fügten ein Ausrichtungsrad, Zoom und Pan sowie einen Unschärfebürste für sensible Details hinzu. Der Editor deaktiviert widersprüchliche Gesten, während der Unschärfebürste aktiv ist, und kombiniert dann die Änderungen in das gespeicherte Quellbild gemäß dem vom Benutzer gewählten Speicherverhalten.

Die Stempelgalerie gruppiert Artefakte nach Kontinent und Land, nicht nur nach Passbuch. Durch Antippen einer gestapelten Länderansicht werden die einzelnen Stempel geöffnet; Ankünfte, Abflüge und Favoriten können gefiltert werden; Kontinent- und Länderüberschriften können über die Passport-Freigabe-Pipeline eine Collage darstellen. Passbücher sind weiterhin nützliche Metadaten, aber die Geografie ist der natürlichere Browsing-Pfad in einem Reiseatlas.

Technisch fundiert, um Vertrauen zu schaffen

Diese Funktionen verwenden drei verschiedene Techniken: Kalenderverknüpfungen, räumliches Bucketing und optische Zeichenerkennung (OCR). Die Benutzererfahrung folgt dem gleichen Muster:

  1. Leiten Sie einen Kandidaten aus vorhandenen lokalen Daten ab.
  2. Halten Sie aufwändige Arbeiten von der Hauptoberfläche fern.
  3. Erläutern Sie, was gefunden wurde.
  4. Lassen Sie den Benutzer es öffnen, korrigieren, teilen oder ignorieren.

Das ist die Art von Intelligenz, die ich in Mapsake sehen möchte. Sie sollte die private Aufzeichnung leichter wieder auffindbar machen, ohne so zu tun, als ob ein Algorithmus ein Leben besser versteht als die Person, die es gelebt hat.

Hinter diesen Funktionen steckt mehr Technik, als ihre ruhige Oberfläche vermuten lässt, aber keine davon muss für den Benutzer zur Hausaufgabe werden. Die technische Arbeit ist erfolgreich, wenn „On This Day“ das richtige Jahr öffnet, „Then & Now“ eine überraschende Rückkehr zeigt und ein schwieriger Stempel einen nützlichen Kandidaten bietet, ohne zu viel Sicherheit vorzugeben.

Mapsake: App-Symbol

Unabhängiger Entwickler von Mapsake, der über die Produkt-, Karten-, Datenschutz- und Apple-Plattform-Arbeit berichtet, die hinter der App steckt.

Erstellen Sie Ihren eigenen Atlas.

Beginnen Sie mit der Reisehistorie, die Sie bereits haben.

Mapsake ist kostenlos, erfordert kein Mapsake-Konto für die Kernfunktionen und behält die unterstützte Fotomatchung auf Ihrem Gerät.

Mapsake kostenlos herunterladen