gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 17:00:29 25 4
gpt4 key购买 nike

这是一个困难的问题:

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

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

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

这是我到目前为止的想法:

  • 窗口屏幕截图/图形上下文中的 OCR(有什么好的开源框架可以在 Mac OS X 10.4 上运行并且可以在商业产品中使用吗?)。 Evernote 非常擅长识别图像中的文字。我不知道它是否使用自定义的内部引擎或开源/商业引擎,但如果这是一个“有效”的解决方案,那么这将是我想要使用的引擎。理想情况下,我会在事件应用程序的窗口中检测单词的框架(如何获取另一个应用程序的框架?)。
  • 在 Quartz 文本绘制上获得某种“钩子(Hook)”,并在绘制时截取单词的位置(乍一看似乎不太可行!)。
  • AppleScript,但它在很大程度上取决于应用程序提供的 API(我认为您无法从我所见的情况中获得 Word 文档中单词的坐标),并且速度
  • ...没有想法...

我的目标是根据包含段落文本的字符串以正确的顺序获取段落中的所有单词框架。

预先感谢您的任何提示!

最佳答案

作为起点,您可能需要查看 QuickCursor's code 。它通过AX Accessibility APIs从许多不同的应用程序检索文本。 。现在,它不会获取单词的像素位置,但它至少会返回与该 UI 元素中的文本关联的 NSString。当然,这意味着相关应用程序必须支持这些 API;我不知道 MS Office 套件是否可以。此外,它仅支持可编辑元素,因此 Safari 中不可编辑的网页也将无法工作。但它可能会给您一些想法的起点。

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

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

编辑:啊哈!查看辅助功能检查器示例代码:UIElementInspector 。它实际上可以获取页面上元素的AXPosition。现在,这不是逐字逐句,但我们越来越接近。它会告诉您文本 block 的 x,y 位置,以及文本 block 中包含的单词。

关于objective-c - 使用 Cocoa 或 Carbon 在屏幕上查找单词的框架(位置和大小),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1651938/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com