首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Cocoa或Cocoa在屏幕上查找单词的框架(位置和大小)

使用Cocoa或Cocoa在屏幕上查找单词的框架(位置和大小)
EN

Stack Overflow用户
提问于 2009-10-30 19:50:07
回答 2查看 828关注 0票数 1

这里有一个很难的问题:

我需要能够找到一个字的位置和大小(它的框架)在屏幕上(它的第一次出现就足够了,从那里我应该能够得到下一个)。

例如,我希望能够在(但不限于) Word、Excel和Mac的PowerPoint中以及Safari和其他方面检测单词的位置。

解决方案应尽可能快;我应该能够找到至少5-6字每秒,并使用尽可能少的CPU时间。

到目前为止,我是这样想的:

  • 窗口屏幕截图/图形上下文中的OCR (任何在MacOSX10.4上工作并可用于商业产品的良好开源框架)。Evernote非常擅长在图像中识别单词。我不知道它是使用自定义内部引擎还是开放源码/商业引擎,但如果这是一个“有效”解决方案,我希望使用这种引擎。理想情况下,我会在活动应用程序的窗口中检测单词的框架(如何获得另一个应用程序的框架?)。
  • 获得某种“钩子”的石英绘图文本和拦截的位置时,该词绘制(似乎不太可行,乍一看!)。
  • AppleScript,但这在很大程度上取决于应用程序提供了什么API (我认为您无法从我所看到的Word文档中获得一个单词的坐标),而且速度很慢。
  • ..。毫无创意..。

我的目标是根据包含段落文本的字符串,将所有单词的框架按正确的顺序排列在一个段落中。

谢谢您的提示!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-10-30 21:40:39

作为一个起点,您可能想看看QuickCursor码。它通过AX可访问性API从许多不同的应用程序中检索文本。现在,它不会获取单词的像素位置,但它至少会返回与UI元素中的文本相关联的NSString。当然,这意味着该应用程序必须支持这些app;我不知道MS套件是否会支持这些app。此外,它只支持可编辑的元素,所以Safari中不可编辑的网页也不能工作。但它可能会给你一些想法提供一个起点。

看看QCUIElement.{m,h},然后是QCAppDelegate.m (beginQuickCursorEdit:)中的实现.他抽象的QCUIElement的实现似乎很简单,如:

代码语言:javascript
复制
QCUIElement *focusedElement = [QCUIElement focusedElement];
id value = focusedElement.value;

编辑:啊哈!查看可访问性检查器示例代码:UIElementInspector。它实际上可以获得页面上元素的AXPosition。现在,不是一字一句,但我们越来越近了。它将告诉您文本块的x,y位置,以及文本块中包含的单词。

票数 2
EN

Stack Overflow用户

发布于 2009-10-30 23:48:27

这是可能的,但很难得到可靠的工作。您可以使用法术捕手的直接连接特性来查看一个示例。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1651938

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档