tests/avocado: Allow newer versions of tesseract in the nextcube test
Current Linux distros ship version 5 of the tesseract OCR software, so the nextcube screen test is ignored there. Let's make the check more flexible to allow newer versions, too, and remove the old v3 test since most Linux distros don't ship this version anymore. Message-ID: <20231101204323.35533-1-huth@tuxfamily.org> Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org> Signed-off-by: Thomas Huth <huth@tuxfamily.org>
This commit is contained in:
parent
e416fd79d5
commit
645198d58b
@ -55,25 +55,16 @@ class NextCubeMachine(QemuSystemTest):
|
|||||||
self.assertEqual(width, 1120)
|
self.assertEqual(width, 1120)
|
||||||
self.assertEqual(height, 832)
|
self.assertEqual(height, 832)
|
||||||
|
|
||||||
@skipUnless(tesseract_available(3), 'tesseract v3 OCR tool not available')
|
|
||||||
def test_bootrom_framebuffer_ocr_with_tesseract_v3(self):
|
|
||||||
screenshot_path = os.path.join(self.workdir, "dump.ppm")
|
|
||||||
self.check_bootrom_framebuffer(screenshot_path)
|
|
||||||
lines = tesseract_ocr(screenshot_path, tesseract_version=3)
|
|
||||||
text = '\n'.join(lines)
|
|
||||||
self.assertIn('Backplane', text)
|
|
||||||
self.assertIn('Ethernet address', text)
|
|
||||||
|
|
||||||
# Tesseract 4 adds a new OCR engine based on LSTM neural networks. The
|
# Tesseract 4 adds a new OCR engine based on LSTM neural networks. The
|
||||||
# new version is faster and more accurate than version 3. The drawback is
|
# new version is faster and more accurate than version 3. The drawback is
|
||||||
# that it is still alpha-level software.
|
# that it is still alpha-level software.
|
||||||
@skipUnless(tesseract_available(4), 'tesseract v4 OCR tool not available')
|
@skipUnless(tesseract_available(4), 'tesseract OCR tool not available')
|
||||||
def test_bootrom_framebuffer_ocr_with_tesseract_v4(self):
|
def test_bootrom_framebuffer_ocr_with_tesseract(self):
|
||||||
screenshot_path = os.path.join(self.workdir, "dump.ppm")
|
screenshot_path = os.path.join(self.workdir, "dump.ppm")
|
||||||
self.check_bootrom_framebuffer(screenshot_path)
|
self.check_bootrom_framebuffer(screenshot_path)
|
||||||
lines = tesseract_ocr(screenshot_path, tesseract_version=4)
|
lines = tesseract_ocr(screenshot_path, tesseract_version=4)
|
||||||
text = '\n'.join(lines)
|
text = '\n'.join(lines)
|
||||||
self.assertIn('Testing the FPU, SCC', text)
|
self.assertIn('Testing the FPU', text)
|
||||||
self.assertIn('System test failed. Error code', text)
|
self.assertIn('System test failed. Error code', text)
|
||||||
self.assertIn('Boot command', text)
|
self.assertIn('Boot command', text)
|
||||||
self.assertIn('Next>', text)
|
self.assertIn('Next>', text)
|
||||||
|
@ -21,13 +21,13 @@ def tesseract_available(expected_version):
|
|||||||
version = res.stdout_text.split()[1]
|
version = res.stdout_text.split()[1]
|
||||||
except IndexError:
|
except IndexError:
|
||||||
version = res.stderr_text.split()[1]
|
version = res.stderr_text.split()[1]
|
||||||
return int(version.split('.')[0]) == expected_version
|
return int(version.split('.')[0]) >= expected_version
|
||||||
|
|
||||||
match = re.match(r'tesseract\s(\d)', res)
|
match = re.match(r'tesseract\s(\d)', res)
|
||||||
if match is None:
|
if match is None:
|
||||||
return False
|
return False
|
||||||
# now this is guaranteed to be a digit
|
# now this is guaranteed to be a digit
|
||||||
return int(match.groups()[0]) == expected_version
|
return int(match.groups()[0]) >= expected_version
|
||||||
|
|
||||||
|
|
||||||
def tesseract_ocr(image_path, tesseract_args='', tesseract_version=3):
|
def tesseract_ocr(image_path, tesseract_args='', tesseract_version=3):
|
||||||
|
Loading…
Reference in New Issue
Block a user