Cocoa 또는 Carbon을 사용하여 화면에서 단어의 프레임(위치 및 크기) 찾기

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

문제

어려운 것은 다음과 같습니다.

화면에서 단어의 위치와 크기(해당 프레임)를 찾을 수 있어야 합니다(첫 번째 발생이면 충분하며 거기에서 다음 단어를 얻을 수 있어야 합니다).

예를 들어, Mac용 Word, Excel, PowerPoint는 물론 Safari 등에서 단어 위치를 감지하고 싶습니다.

솔루션은 최대한 빨라야 합니다.초당 최소 5-6 단어를 찾을 수 있어야 하며 CPU 시간을 최대한 적게 사용할 수 있어야 합니다.

지금까지 내가 생각한 것은 다음과 같습니다.

  • 창 스크린샷/그래픽 컨텍스트의 OCR(Mac OS X 10.4에서 작동하고 상용 제품에서 사용할 수 있는 좋은 오픈 소스 프레임워크가 있습니까?)Evernote는 이미지에서 단어를 찾는 데 매우 능숙합니다.맞춤형 사내 엔진을 사용하는지 아니면 오픈 소스/상용 엔진을 사용하는지 모르겠지만 이것이 "유효한" 솔루션이라면 사용하고 싶은 종류의 엔진이 될 것입니다.이상적으로는 활성 응용 프로그램 창에서 단어의 프레임을 감지합니다(다른 응용 프로그램의 프레임을 가져오는 방법).
  • Quartz에서 텍스트 그리기에 일종의 "후크"를 가져오고 텍스트가 그려질 때 단어의 위치를 ​​가로챕니다(언뜻 보기에는 실현 가능해 보이지 않습니다!).
  • AppleScript이지만 응용 프로그램이 제공하는 API에 따라 많이 달라집니다(제가 본 것에서는 Word 문서에서 단어의 좌표를 얻을 수 없을 것 같습니다). 느린.
  • ...아이디어 부족...

내 목표는 단락의 텍스트가 포함된 문자열을 기반으로 단락의 모든 단어 프레임을 올바른 순서로 가져오는 것입니다.

어떤 힌트라도 미리 감사드립니다!

도움이 되었습니까?

해결책

시작 장소로 다음을 살펴보는 것이 좋습니다. QuickCursor의 코드.다양한 응용프로그램에서 텍스트를 검색합니다. AX 접근성 API.이제 단어의 픽셀 배치를 가져오지는 않지만 최소한 해당 UI 요소의 텍스트와 연결된 NSString을 반환합니다.물론 이는 해당 앱이 이러한 API를 지원해야 함을 의미합니다.MS Office 제품군이 그럴지는 모르겠습니다.또한 편집 가능한 요소만 지원하므로 Safari에서 편집 불가능한 웹페이지도 작동하지 않습니다.그러나 그것은 몇 가지 아이디어의 출발점이 될 수 있습니다.

다음을 살펴보세요. QCUIElement.{m,h}, 그런 다음 QCAppDelegate.m (beginQuickCursorEdit:)...추상화된 QCUIElement의 구현은 다음과 같이 간단해 보입니다.

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

편집하다:아하!접근성 검사기 샘플 코드를 확인하세요. UIElementInspector.실제로 페이지에 있는 요소의 AXPosition을 가져올 수 있습니다.이제는 말로는 아니지만 점점 가까워지고 있어요.텍스트 블록의 x, y 위치와 텍스트 블록에 포함된 단어를 알려줍니다.

다른 팁

이는 가능하지만 안정적으로 작업하기가 매우 어렵습니다.당신은 가지고 놀 수 있습니다 스펠 캐쳐의 다이렉트 커넥트 예를 볼 수 있는 기능입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top