Ejemplo n.º 1
0
    def read_text(self, locator: Optional[str] = None, invert: bool = False):
        """Read text using OCR from the screen, or an area of the
        screen defined by the given locator.

        :param locator: Location of element to read text from
        :param invert:  Invert image colors, useful for reading white text
                        on dark background
        """
        ensure_recognition()

        if locator is not None:
            element = self.ctx.wait_for_element(locator)
            if not isinstance(element, Region):
                raise ValueError("Locator must resolve to a region")

            self.logger.info("Reading text from element: %s", element)
            image = screen.grab(element)
        else:
            self.logger.info("Reading text from screen")
            image = screen.grab()

        screen.log_image(image)

        if invert:
            image = ImageOps.invert(image)

        start_time = time.time()
        text = ocr.read(image)
        self.logger.info("Read text in %.2f seconds", time.time() - start_time)

        return text
Ejemplo n.º 2
0
def test_read_when_no_tesseract(monkeypatch):
    monkeypatch.setattr("pytesseract.pytesseract.tesseract_cmd",
                        "totallynotatesseract.exe")

    expected_text = ("tesseract is not installed or not in PATH, "
                     "see library documentation for installation instructions")
    with pytest.raises(EnvironmentError) as err:
        _ = ocr.read(GNUCASH_MAIN_WINDOW)

    assert str(err.value) == expected_text
Ejemplo n.º 3
0
    def read_text(self, locator: Optional[str] = None, invert: bool = False):
        """Read text using OCR from the screen, or an area of the
        screen defined by the given locator.

        :param locator: Location of element to read text from
        :param invert:  Invert image colors, useful for reading white text
                        on dark background

        Usage examples:

        .. code-block:: robotframework

            ${label_region}=  Find Element  image:label.png
            ${value_region}=  Move Region   ${label_region}  100  0
            ${text}=          Read Text     ${value_region}

        .. code-block:: python

            label_region = desktop.find_element("image:label.png")
            value_region = desktop.move_region(label_region, 100, 0)
            text = desktop.read_text(value_region)

        """
        ensure_recognition()

        if locator is not None:
            element = self.ctx.wait_for_element(locator)
            if not isinstance(element, Region):
                raise ValueError("Locator must resolve to a region")

            self.logger.info("Reading text from element: %s", element)
            image = screen.grab(element)
        else:
            self.logger.info("Reading text from screen")
            image = screen.grab()

        screen.log_image(image)

        if invert:
            image = ImageOps.invert(image)

        start_time = time.time()
        text = ocr.read(image)
        self.logger.info("Read text in %.2f seconds", time.time() - start_time)

        return text
Ejemplo n.º 4
0
def test_read(arg):
    output = ocr.read(arg)

    assert "File Edit View Actions Business Reports Tools Windows Help" in output
    assert "Save Close Open Edit New Delete" in output