العثور على إطار الكلمة (الموضع والحجم) على الشاشة باستخدام الكاكاو أو الكربون

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

سؤال

وهنا واحدة صعبة:

أحتاج إلى أن أكون قادرًا على العثور على موضع الكلمة وحجمها (إطارها) على الشاشة (ظهورها الأول يكفي، ومن هناك يجب أن أكون قادرًا على الحصول على الكلمات التالية).

على سبيل المثال، أود أن أكون قادرًا على اكتشاف مواضع الكلمات في (على سبيل المثال لا الحصر) Word وExcel وPowerPoint لنظام التشغيل Mac، بالإضافة إلى Safari وغيرها.

يجب أن يكون الحل في أسرع وقت ممكن؛يجب أن أكون قادرًا على العثور على ما لا يقل عن 5-6 كلمات في الثانية واستخدام أقل وقت ممكن لوحدة المعالجة المركزية.

إليك ما فكرت به حتى الآن:

  • التعرف الضوئي على الحروف في لقطة الشاشة/سياق الرسومات للنافذة (أي إطار عمل جيد مفتوح المصدر يعمل على نظام التشغيل Mac OS X 10.4 ويمكن استخدامه في منتج تجاري؟).Evernote جيد جدًا في اكتشاف الكلمات في الصور.لا أعرف ما إذا كان يستخدم محركًا داخليًا مخصصًا أو محركًا مفتوح المصدر/تجاريًا ولكن هذا سيكون نوع المحرك الذي أرغب في استخدامه إذا كان هذا حلاً "صالحًا".من الناحية المثالية، سأكتشف إطار الكلمة في نافذة التطبيق النشط (كيفية الحصول على إطار تطبيق آخر؟).
  • الحصول على نوع من "الربط" على رسم النص على الكوارتز واعتراض موقع الكلمة عند رسمها (لا يبدو ذلك ممكنًا للوهلة الأولى!).
  • AppleScript، ولكنه يعتمد كثيرًا على واجهة برمجة التطبيقات التي يقدمها التطبيق (لا أعتقد أنه يمكنك الحصول على إحداثيات كلمة في مستند Word مما رأيته) بطيء.
  • ...نفذت أفكاري ...

هدفي هو الحصول على جميع إطارات الكلمة في الفقرة بالترتيب الصحيح بناءً على سلسلة تحتوي على نص الفقرة.

ويرجع الفضل في ذلك مسبقا لأية تلميحات!

هل كانت مفيدة؟

المحلول

كنقطة انطلاق، قد ترغب في إلقاء نظرة على رمز QuickCursor.يقوم باسترداد النص من العديد من التطبيقات المختلفة من خلال واجهات برمجة التطبيقات لإمكانية الوصول إلى AX.الآن، لن يلتقط موضع البكسل للكلمة، ولكنه سيعيد على الأقل NSString المرتبط بالنص الموجود في عنصر واجهة المستخدم هذا.بالطبع هذا يعني أن التطبيق المعني يجب أن يدعم واجهات برمجة التطبيقات هذه؛لا أعرف ما إذا كانت مجموعة MS Office ستفعل ذلك أم لا.بالإضافة إلى ذلك، فهو يدعم فقط العناصر القابلة للتحرير، لذلك لن تعمل صفحة الويب غير القابلة للتحرير في Safari أيضًا.ولكنها قد تعطيك نقطة انطلاق لبعض الأفكار.

نلقي نظرة على QCUIElement.{m,h}, ، ومن ثم التنفيذ في QCAppDelegate.m (beginQuickCursorEdit:)...يبدو أن تنفيذ QCUIElement المستخرج الخاص به بسيط مثل:

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

يحرر:آها!تحقق من نموذج كود Accessibility Inspector: UIElementInspector.يمكنه بالفعل الحصول على AXPosition للعناصر الموجودة على الصفحة.الآن، الأمر لا يتعلق بكلمة بكلمة، ولكننا نقترب أكثر.سيخبرك بموضع x وy لكتلة النص، بالإضافة إلى الكلمات الموجودة في كتلة النص.

نصائح أخرى

وهذا أمر ممكن، ولكن من الصعب جدًا العمل بشكل موثوق.يمكنك اللعب مع الاتصال المباشر لـ Spell Catcher ميزة لرؤية مثال.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top