Auffinden eines Rahmens (Position und Größe) Wort auf dem Bildschirm unter Verwendung von Kakao oder Kohlenstoff

StackOverflow https://stackoverflow.com/questions/1651938

Frage

Hier ist eine schwierige Frage:

Ich brauche ein Wort Position zu finden, in die Lage und Größe (dessen Rahmen) auf dem Bildschirm (sein erstes Auftreten ist genug, von dort soll ich in der Lage sein, die Nächsten zu bekommen).

Zum Beispiel würde Ich mag können Wortpositionen in (aber nicht beschränkt auf) Word, Excel und Powerpoint für Mac sowie Safari und andere erkennen.

Die Lösung sollte so schnell wie möglich sein; Ich sollte mindestens 5-6 Wörter pro Sekunde und verwenden so wenig CPU-Zeit wie möglich in der Lage zu finden.

Hier ist, was ich von so weit:

  • OCR in einem Screenshot / Grafikkontext des Fensters (jeden guter Open-Source-Framework, das auf Mac OS X 10.4 funktioniert, und das kann in einem kommerziellen Produkt verwendet werden?). Evernote ist sehr gut in Worte in Bildern Spek. Ich weiß nicht, ob es ein eigenes Inhouse-Motor oder ein Open-Source / kommerzielle verwendet man aber das würde die Art von Motor sein Ich mag würde verwenden, wenn diese eine „gültige“ Lösung. Idealerweise würde ich das Wort des Rahmens in der aktiven Anwendung des Fensters erkennen (wie den Rahmen einer anderen Anwendung zu bekommen?).
  • eine Art von „Haken“ auf Quarz-Zeichnung von Text und zu dem Speicherort des Wortes abfängt, wenn es gezogen (scheint nicht sehr machbar auf dem ersten Blick!).
  • Applescript, aber es viel hängt davon ab, was API bietet die Anwendung (Ich glaube nicht, dass Sie ein Wort Koordinaten in einem Word-Dokument aus dem, was ich gesehen habe bekommen können) und es ist langsam .
  • ... die Ideen ...

Ihr Ziel ist, alle das Wort des Frames in einem Absatz in der richtigen Reihenfolge auf eine Zeichenfolge basierend zu bekommen den Text des Absatzes enthält.

Vielen Dank im Voraus für alle Hinweise!

War es hilfreich?

Lösung

Als Ausgangspunkt kann man einen Blick auf QuickCursor den Code nehmen wollen . Er ruft Text aus vielen verschiedenen Anwendungen über das AX Accessibility APIs . Nun, es wird nicht die Pixel Platzierung des Wortes greifen, aber es wird zumindest gibt den NSString im Zusammenhang mit dem Text in diesem UI-Elemente. Natürlich bedeutet dies, dass die betreffende App diese APIs unterstützen muss; Ich weiß nicht, ob die MS Office-Suite würde. Darüber hinaus unterstützt es nur editierbare Elemente, so unveränderbare Webseite in Safari wird nicht funktionieren. Aber es können Sie einen Ausgangspunkt für einige Ideen.

Werfen Sie einen Blick auf die QCUIElement.{m,h}, und dann die Umsetzung in der QCAppDelegate.m (beginQuickCursorEdit:) ... die Umsetzung seiner abstrahierten QCUIElement scheint so einfach zu sein, wie:

QCUIElement *focusedElement = [QCUIElement focusedElement];
id value = focusedElement.value;

Bearbeiten : Aha! Überprüfen Sie die Zugänglichkeit Inspector Beispielcode aus: UIElementInspector . Es kann tatsächlich die AXPosition von Elementen auf einer Seite bekommen. Nun, es ist nicht Wort-für-Wort, aber wir sind immer näher. Es wird Ihnen sagen, die x, y Platzierung eines Textblock, sowie die in der Textblock enthaltenen Wörter.

Andere Tipps

Dies ist möglich, aber sehr schwer zuverlässig arbeiten zu lassen. Sie können mit Catcher Direct Connect Zauber Merkmal ein Beispiel zu sehen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top