CocoaまたはCarbonを使用して画面上の単語の枠(位置とサイズ)を見つける

cocoa macos-carbon objective-c ocr

これは難しいものです:

画面上で単語の位置とサイズ(その枠)を見つけることができる必要があります(最初の出現で十分です、そこから次のものを取得できるはずです)。

たとえば、Mac、Word、Excel、PowerPoint、およびSafariなどで、単語の位置を検出できるようにしたいと思います。

解決策は可能な限り高速であるべきです。私は少なくとも毎秒5-6語を見つけて、できるだけ少ないCPU時間を使うべきです。

これが私が今まで考えてきたことです:

  • ウィンドウのスクリーンショット/グラフィックスコンテキストでのOCR(Mac OS X 10.4上で動作し、商用製品で使用できる優れたオープンソースフレームワーク) Evernoteは、画像内の単語を見つけるのに非常に優れています。 カスタムの自社製エンジンを使用するのか、オープンソース/商用のエンジンを使用するのかはわかりませんが、これが「有効な」解決策である場合は、それが私が使用するエンジンの種類になります。 理想的には、アクティブなアプリケーションのウィンドウで単語のフレームを検出します(他のアプリケーションのフレームを取得する方法は?)。

  • Quartzによるテキストの描画にある種の「フック」をかけ、単語が描画されるときにその位置を傍受すること(一見すると非常に実行可能ではないようです)

  • AppleScriptですが、それはアプリケーションが提供するAPIに大きく依存し(私が見たものからWord文書内の単語の座標を取得できるとは思わない)、それは_遅い_です。

  • …​ アイデアのうち…​

私の目標は、段落のテキストを含む文字列に基づいて、段落内のすべての単語のフレームを正しい順序で並べることです。

ヒントを事前にありがとう!

  1  1


ベストアンサー

出発点として、あなたはhttp://github.com/jessegrosjean/quickcursor[QuickCursorのコード]を見てみるとよいでしょう。 http://developer.apple.com/mac/library/documentation/Accessibility/Reference/AccessibilityCarbonRef / Reference / reference.html [AX Accessibility API]を介して、さまざまなアプリケーションからテキストを取得します。 これで、単語のピクセル配置は取得されませんが、少なくともそのUI要素内のテキストに関連付けられているNSStringが返されます。 もちろん、これは問題のアプリがこれらのAPIをサポートしなければならないことを意味します。私はMS Officeスイートがそうするかどうかわかりません。 また、編集可能な要素のみをサポートしているため、Safariの編集不可能なWebページも機能しません。 しかし、それはあなたにいくつかのアイデアの出発点を与えるかもしれません。

QCUIElement。{m、h}、それから QCAppDelegate.m(` beginQuickCursorEdit: `)の実装を見てください。 抽象化されたQCUIElementの実装は、次のように単純なようです。

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

編集:ああ! アクセシビリティ・インスペクタのサンプルコードをチェックしてください。 実際にはページ上の要素のAXPositionを取得できます。 今、それは一語ずつではありませんが、私たちは近づいています。 それはあなたにテキストブロックのx、yの配置、そしてテキストブロックに含まれている単語を教えてくれるでしょう。

2


これは可能ですが、確実に機能させるのは非常に困難です。 例を見るために スペルキャッチャーの直接接続機能で遊ぶことができます。

1


タイトルとURLをコピーしました