0
点赞
收藏
分享

微信扫一扫

python 怎么获取屏幕上的文字坐标

Raow1 2024-09-23 阅读 16

在计算机视觉和桌面自动化领域,获取屏幕上的文本坐标是一项常见的需求。实现该功能通常涉及到图像处理技术,尤其是使用光学字符识别(OCR)库,以便从屏幕捕获图像中提取和定位文本信息。本文将讨论如何使用Python以及一些相关库(如Pillowpytesseract)来获取屏幕上的文字坐标。

1. 环境准备

在开始之前,你需要确保安装了以下Python库:

pip install Pillow pytesseract opencv-python pyautogui

同时,需要确保安装Tesseract OCR引擎。你可以在这里找到安装说明:[Tesseract OCR](

2. 项目结构

在本项目中,我们将创建一个简单的Python类ScreenTextLocator来捕获屏幕上的文本坐标。该类的主要功能包括:

  • 截取指定区域的屏幕图像
  • 使用OCR方法识别图像中的文本
  • 提取文本及其坐标

以下是该类的结构图:

classDiagram
    class ScreenTextLocator {
        +capture_screen(x: int, y: int, width: int, height: int)
        +extract_text(image: Image) 
        +get_text_coordinates(text: str) 
    }

3. 实现类的方法

现在让我们实现ScreenTextLocator类。该类将包括三个主要方法:capture_screenextract_textget_text_coordinates

3.1 截取屏幕

首先,我们需要一个方法来截取屏幕上的图像。在该例中,我们使用pyautogui库跳过GUI进行屏幕截图。

import pyautogui
from PIL import Image
import pytesseract
import cv2
import numpy as np

class ScreenTextLocator:

    def capture_screen(self, x: int, y: int, width: int, height: int) -> Image:
        screenshot = pyautogui.screenshot(region=(x, y, width, height))
        return screenshot

此方法将使用pyautogui.screenshot方法捕获屏幕的特定区域,并返回一个Pillow图像对象。

3.2 提取文本

接下来,我们需要实现extract_text方法,这将使用pytesseract进行OCR。

    def extract_text(self, image: Image) -> str:
        # 将图像转换为灰度图
        image_cv = cv2.cvtColor(np.array(image), cv2.COLOR_RGB2BGR)
        text = pytesseract.image_to_string(image_cv)
        return text

3.3 获取文本坐标

最后,我们需要一个方法来获取文本及其位置。我们将使用pytesseractimage_to_data来获取文本和位置信息。

    def get_text_coordinates(self, image: Image):
        image_cv = cv2.cvtColor(np.array(image), cv2.COLOR_RGB2BGR)
        data = pytesseract.image_to_data(image_cv, output_type=pytesseract.Output.DICT)
        coordinates = []
        for i in range(len(data['text'])):
            if int(data['conf'][i]) > 60:  # 过滤掉低置信度的结果
                (x, y, w, h) = (data['left'][i], data['top'][i], data['width'][i], data['height'][i])
                coordinates.append({
                    'text': data['text'][i],
                    'coordinates': (x, y, w, h)
                })
        return coordinates

4. 主程序

下面是如何使用ScreenTextLocator类的示例代码:

if __name__ == "__main__":
    locator = ScreenTextLocator()
    screenshot = locator.capture_screen(0, 0, 800, 600)  # 指定区域
    text = locator.extract_text(screenshot)
    coordinates = locator.get_text_coordinates(screenshot)

    print("Extracted Text:", text)
    print("Text Coordinates:", coordinates)

5. 项目计划

项目实施的时间表如下:

gantt
    title 项目时间表
    dateFormat  YYYY-MM-DD
    section 初始化
    安装库               :a1, 2023-10-01, 1d
    环境配置             :after a1  , 1d
    section 开发
    实现截屏功能         :a2, 2023-10-03, 2d
    实现OCR识别功能      :after a2  , 2d
    实现坐标提取功能     :after a2  , 3d
    section 测试
    完成单元测试         :a3, 2023-10-08, 2d

6. 结论

通过上述步骤,我们成功实现了一个简单的Python程序,该程序可以从屏幕上提取文本及其坐标。该程序可以扩展到更复杂的应用,如自动化测试、桌面助手等。希望本文能对你有所帮助,推动你在图像处理和自动化领域的探索!

举报

相关推荐

0 条评论