def requires_tesseract(func): """Decorator for tests that require Tesseract to be installed.""" try: _tesseract_version() except: raise SkipTest("tesseract isn't installed") return func
def test_that_with_old_tesseract_ocr_raises_an_exception_with_patterns(): # pylint: disable=W0212 if _tesseract_version() >= distutils.version.LooseVersion('3.03'): raise SkipTest('tesseract is too new') stbt.ocr(frame=load_image('ocr/192.168.10.1.png'), mode=stbt.OcrMode.SINGLE_WORD, tesseract_user_patterns=[r'\d\*.\d\*.\d\*.\d\*'])
def test_tesseract_user_patterns(patterns): # pylint:disable=protected-access if _tesseract_version() < LooseVersion('3.03'): raise SkipTest('tesseract is too old') # Now the real test: assert u'192.168.10.1' == stbt.ocr( frame=load_image('ocr/192.168.10.1.png'), mode=stbt.OcrMode.SINGLE_WORD, tesseract_user_patterns=patterns)
def test_that_ocr_engine_has_an_effect(): if _tesseract_version() < LooseVersion("4.0"): raise SkipTest('tesseract is too old') f = load_image("ocr/ambig.png") # This is a regression in tesseract 4.0's legacy engine, compared to 3.04: assert "sillyness" not in stbt.ocr(f, engine=stbt.OcrEngine.TESSERACT) assert "sillyness" not in stbt.ocr(f) # ...but the new LSTM engine does read it correctly: assert "sillyness" in stbt.ocr(f, engine=stbt.OcrEngine.LSTM) with temporary_config({'ocr.engine': 'LSTM'}): assert "sillyness" in stbt.ocr(f)
def test_that_setting_config_options_has_an_effect(): # Unfortunately there are many tesseract config options and they are very # complicated so it's difficult to write a test that tests that a config # option is having the correct effect. Due to the difficulty in determining # "correctness" instead here we test that setting a config option has an # effect at all. This at least excercises our code which sets config # options. I'm not happy about this and I hope to be able to replace this # once we have more experience with these settings in the real world. if _tesseract_version() >= LooseVersion('3.04'): hocr_mode_config = { "tessedit_create_txt": 0, "tessedit_create_hocr": 1 } else: hocr_mode_config = {"tessedit_create_hocr": 1} assert (stbt.ocr(frame=load_image('ocr/ambig.png'), tesseract_config=hocr_mode_config) != stbt.ocr(frame=load_image('ocr/ambig.png')))
def test_that_setting_config_options_has_an_effect(): # Unfortunately there are many tesseract config options and they are very # complicated so it's difficult to write a test that tests that a config # option is having the correct effect. Due to the difficulty in determining # "correctness" instead here we test that setting a config option has an # effect at all. This at least excercises our code which sets config # options. I'm not happy about this and I hope to be able to replace this # once we have more experience with these settings in the real world. if _tesseract_version() >= LooseVersion('3.04'): hocr_mode_config = { "tessedit_create_txt": 0, "tessedit_create_hocr": 1} else: hocr_mode_config = { "tessedit_create_hocr": 1} assert (stbt.ocr(frame=load_image('ocr/ambig.png'), tesseract_config=hocr_mode_config) != stbt.ocr(frame=load_image('ocr/ambig.png')))