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
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
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
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