From daf7d10690c01575c1e137cd0d4459261faa9f39 Mon Sep 17 00:00:00 2001 From: Dimitar Topuzov Date: Tue, 27 Aug 2019 17:19:54 +0300 Subject: [PATCH 1/3] chore: adjust cv2.dilate --- core/utils/image_utils.py | 2 +- core_tests/unit/utils/image_tests.py | 7 +++++++ .../unit/utils/resources/app_ios_default.png | Bin 0 -> 52216 bytes 3 files changed, 8 insertions(+), 1 deletion(-) create mode 100644 core_tests/unit/utils/resources/app_ios_default.png diff --git a/core/utils/image_utils.py b/core/utils/image_utils.py index 76f5ac67..3ced119d 100644 --- a/core/utils/image_utils.py +++ b/core/utils/image_utils.py @@ -126,7 +126,7 @@ def get_text(image_path, use_cv2=True): thresh = cv2.adaptiveThreshold(gray, 255, 1, 1, 11, 2) # apply some dilation and erosion to join the gaps - change iteration to detect more or less area's - thresh = cv2.dilate(thresh, None, iterations=5) + thresh = cv2.dilate(thresh, None, iterations=10) thresh = cv2.erode(thresh, None, iterations=3) # Find the contours diff --git a/core_tests/unit/utils/image_tests.py b/core_tests/unit/utils/image_tests.py index 2c9ee9fd..13dc303d 100644 --- a/core_tests/unit/utils/image_tests.py +++ b/core_tests/unit/utils/image_tests.py @@ -23,6 +23,7 @@ class ImageUtilsTests(unittest.TestCase): app_image = os.path.join(current_folder, 'resources', 'app.png') app_image_ng = os.path.join(current_folder, 'resources', 'app_ng.png') app_image_ios = os.path.join(current_folder, 'resources', 'app_ios.png') + app_image_default_ios = os.path.join(current_folder, 'resources', 'app_ios_default.png') iphone_image = os.path.join(current_folder, 'resources', 'screenshot.png') unicode_image = os.path.join(current_folder, 'resources', 'unicode.png') blue = numpy.array([255, 188, 48]) @@ -43,6 +44,12 @@ def test_03_get_main_color(self): @unittest.skipIf(os.environ.get('TRAVIS', None) is not None, 'Skip on Travis.') def test_04_get_text(self): + # OCR on iOS 13 + text = ImageUtils.get_text(self.app_image_default_ios) + assert 'taps left' in text + assert 'Tap the button' in text + assert 'TAP' in text + # OCR on Hello-World app text = ImageUtils.get_text(self.app_image_ios) assert 'My App' in text diff --git a/core_tests/unit/utils/resources/app_ios_default.png b/core_tests/unit/utils/resources/app_ios_default.png new file mode 100644 index 0000000000000000000000000000000000000000..ca2a6c1c7592bb29a392418b29d46aa2873232fd GIT binary patch literal 52216 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 Date: Wed, 28 Aug 2019 02:21:22 -0700 Subject: [PATCH 2/3] chore: fix get text with tesseract 4.1 Get text in tesseract@4.1 return it without spaces. Fix: - add `string.whitespace` to char_whitelist --- core/utils/image_utils.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/core/utils/image_utils.py b/core/utils/image_utils.py index 3ced119d..18cb298d 100644 --- a/core/utils/image_utils.py +++ b/core/utils/image_utils.py @@ -105,7 +105,8 @@ def get_main_color(image_path): @staticmethod def get_text(image_path, use_cv2=True): - char_whitelist = string.digits + char_whitelist = string.whitespace + char_whitelist += string.digits char_whitelist += string.ascii_lowercase char_whitelist += string.ascii_uppercase @@ -126,7 +127,7 @@ def get_text(image_path, use_cv2=True): thresh = cv2.adaptiveThreshold(gray, 255, 1, 1, 11, 2) # apply some dilation and erosion to join the gaps - change iteration to detect more or less area's - thresh = cv2.dilate(thresh, None, iterations=10) + thresh = cv2.dilate(thresh, None, iterations=5) thresh = cv2.erode(thresh, None, iterations=3) # Find the contours From 5adbe12936a21d7b453cd223d6a28c8a28338a80 Mon Sep 17 00:00:00 2001 From: dtopuzov Date: Wed, 28 Aug 2019 02:42:06 -0700 Subject: [PATCH 3/3] chore: fix lint error --- core_tests/unit/utils/image_tests.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core_tests/unit/utils/image_tests.py b/core_tests/unit/utils/image_tests.py index 13dc303d..244866b5 100644 --- a/core_tests/unit/utils/image_tests.py +++ b/core_tests/unit/utils/image_tests.py @@ -49,7 +49,7 @@ def test_04_get_text(self): assert 'taps left' in text assert 'Tap the button' in text assert 'TAP' in text - + # OCR on Hello-World app text = ImageUtils.get_text(self.app_image_ios) assert 'My App' in text