
OCR-basierter Workaround für fehlende System-API
Problemstellung
Mit macOS gibt es keine direkte Möglichkeit, einen Eintrag aus dem „Teilen“-Menü (Share Menu) per AppleScript auszuführen. AppleScript und Automator bieten keinen nativen Befehl, um z.B. eine Webseite direkt aus Safari an die Notizen-App zu übergeben. Das hier vorgestellte Skript umgeht diese Einschränkung mit einem kreativen Ansatz: Es sucht den gewünschten Menüeintrag („Notizen“) im Teilen-Menü von Safari, indem es einen Screenshot erstellt und per OCR (Texterkennung) die Position des Menüeintrags ermittelt. Anschließend wird automatisiert ein Mausklick an der erkannten Position ausgeführt, um den Teilen-Dialog zu öffnen und die Webseite an die Notizen-App zu übergeben.
Ablauf des Skripts:
- Öffnet Safari und eine Beispiel-Webseite.
- Öffnet das Teilen-Menü und erstellt einen Screenshot des Safari-Fensters.
- Ein Swift-Skript mit Apples Vision-Framework liest per OCR die Position des gewünschten Menüeintrags („Notizen“) aus dem Screenshot aus.
- Das Skript führt einen Mausklick an der ermittelten Position aus, um den Teilen-Dialog zu öffnen.
- Optional wird der Teilen-Dialog automatisiert weiter bedient (z.B. Titel eingeben, Dialog schließen).
Warum dieser Umweg?
AppleScript kann Menüeinträge nur dann direkt ansteuern, wenn sie als klassische Menüs vorliegen. Das Share-Menü ist aber dynamisch und systemweit integriert; es gibt keinen offiziellen AppleScript-Befehl, um gezielt einen bestimmten Teilen-Eintrag (z.B. „Notizen“) auszuführen. Deshalb wird hier ein Screenshot gemacht und die Position des Menüeintrags per OCR erkannt – ein Workaround, der auch für andere Share-Ziele angepasst werden kann.
Schlüsselkomponenten
- Vision Framework OCR: Texterkennung in Menü-Screenshots
- Koordinatenberechnung: swift
let x = Int(bbox.origin.x * imageSize.width / screenScale)
let y = Int((1 - bbox.origin.y) * imageSize.height / screenScale)
- UI-Automatisierung: Synthetische Mausklicks und Tastatureingaben
Technische Umsetzung
shareToNotes()
-- Safari aktivieren & Share-Menü öffnen
tell application "Safari" to activate
tell application "System Events" to click menu item "Teilen"
-- OCR-Koordinatenberechnung
set {x, y} to getCoordinates()
-- UI-Interaktion simulieren
click at {x, y}
delay 0.5
keystroke "Notizentitel" & return
end shareToNotes
Vollständiges Skript herunterladen
Systemvoraussetzungen
- macOS mit installiertem Swift und Vision-Framework (Standard ab macOS 10.15).
- Bedienungshilfen für AppleScript und System Events müssen aktiviert sein.
Download
Das vollständige AppleScript inklusive Swift-Komponente steht hier.
Weitere Hinweise:
- Die Variablen im Skript können für andere Sprachen und Menüeinträge angepasst werden.
- Bei abweichenden Systemsprachen oder Safari-Versionen müssen ggf. Menübezeichnungen geändert werden.
- Die Geschwindigkeit des Skripts lässt sich über die
delay
-Werte anpassen.
Hinweis
Da das Share-Menü von macOS nicht direkt per AppleScript angesprochen werden kann, nutzt dieses Skript einen Screenshot- und OCR-basierten Ansatz, um den gewünschten Menüeintrag zu lokalisieren und auszuführen. Dieser Workaround ist universell anpassbar und kann für verschiedene Anwendungen und Share-Ziele verwendet werden.
Schreibe einen Kommentar