Skip to content

Commit 64e7c2f

Browse files
committed
Fix proper extraction of tesseract version
1 parent 1827fe0 commit 64e7c2f

File tree

2 files changed

+10
-8
lines changed

2 files changed

+10
-8
lines changed

pytesseract/pytesseract.py

+7-5
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
from tempfile import NamedTemporaryFile
2222
from time import sleep
2323

24+
from packaging.version import InvalidVersion
2425
from packaging.version import parse
2526
from packaging.version import Version
2627
from PIL import Image
@@ -387,13 +388,14 @@ def get_tesseract_version():
387388
raise TesseractNotFoundError()
388389

389390
raw_version = output.decode(DEFAULT_ENCODING)
390-
strip_version = raw_version.lstrip(string.printable[10:])
391+
str_version, *_ = raw_version.lstrip(string.printable[10:]).partition(' ')
392+
str_version, *_ = str_version.partition('-')
391393

392394
try:
393-
version = parse(strip_version)
394-
assert version > TESSERACT_MIN_VERSION
395-
except AttributeError:
396-
raise SystemExit(f'Invalid tesseract version: "{strip_version}"')
395+
version = parse(str_version)
396+
assert version >= TESSERACT_MIN_VERSION
397+
except (AssertionError, InvalidVersion):
398+
raise SystemExit(f'Invalid tesseract version: "{raw_version}"')
397399

398400
return version
399401

tests/pytesseract_test.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -448,14 +448,14 @@ def test_file_to_dict(input_args, expected):
448448
('tesseract_version', 'expected'),
449449
(
450450
(b'3.5.0', '3.5.0'),
451-
(b'4.1-a8s6f8d3f', '4.1-a8s6f8d3f'),
452-
(b'v4.0.0-beta1.9', '4.0.0-beta1.9'),
451+
(b'4.1-a8s6f8d3f', '4.1'),
452+
(b'v4.0.0-beta1.9', '4.0.0'),
453453
),
454454
)
455455
def test_get_tesseract_version(tesseract_version, expected):
456456
with mock.patch('subprocess.check_output', spec=True) as output_mock:
457457
output_mock.return_value = tesseract_version
458-
assert get_tesseract_version.__wrapped__() == expected
458+
assert get_tesseract_version.__wrapped__().public == expected
459459

460460

461461
@pytest.mark.parametrize(

0 commit comments

Comments
 (0)