Commit b87ce793 authored by dmMaze's avatar dmMaze
Browse files

fix empty system language packs crashing the ocr imports #256

parent f0a2c013
Loading
Loading
Loading
Loading
+115 −103
Original line number Diff line number Diff line
@@ -10,7 +10,7 @@ from utils.registry import Registry
OCR = Registry('OCR')
register_OCR = OCR.register_module

from ..base import BaseModule, DEFAULT_DEVICE, DEVICE_SELECTOR
from ..base import BaseModule, DEFAULT_DEVICE, DEVICE_SELECTOR, LOGGER

class OCRBase(BaseModule):

@@ -247,6 +247,10 @@ import platform
if platform.mac_ver()[0] >= '10.15':
    from .macos_ocr import get_supported_languages
    APPLEVISIONFRAMEWORK = None

    macos_ocr_supported_languages = get_supported_languages()

    if len(macos_ocr_supported_languages) > 0:
        @register_OCR('macos_ocr')
        class OCRApple(OCRBase):
            params = {
@@ -305,12 +309,17 @@ if platform.mac_ver()[0] >= '10.15':

                self.confidence = self.params['confidence_level']
                self.model.min_confidence = self.confidence
    else:
        LOGGER.warning(f'No supported language packs found for MacOS, MacOS OCR will be unavailable.')
                

if platform.system() == 'Windows' and platform.version() >= '10.0.10240.0':
    from .windows_ocr import get_supported_language_packs
    from .windows_ocr import winocr_available_recognizer_languages

    languages_display_name = [lang.display_name for lang in get_supported_language_packs()]
    languages_tag = [lang.language_tag for lang in get_supported_language_packs()]
    if len(winocr_available_recognizer_languages) > 0:

        languages_display_name = [lang.display_name for lang in winocr_available_recognizer_languages]
        languages_tag = [lang.language_tag for lang in winocr_available_recognizer_languages]
        WINDOWSOCRENGINE = None
        @register_OCR('windows_ocr')
        class OCRWindows(OCRBase):
@@ -354,3 +363,6 @@ if platform.system() == 'Windows' and platform.version() >= '10.0.10240.0':
            def updateParam(self, param_key: str, param_content):
                super().updateParam(param_key, param_content)
                self.engine.lang = self.get_engine_lang()

    else:
        LOGGER.warning(f'No supported language packs found for windows, Windows OCR will be unavailable.')
 No newline at end of file
+10 −7
Original line number Diff line number Diff line
@@ -19,8 +19,11 @@ def ocr(byte, width, height, lang='en'):
async def coroutine(awaitable):
    return await awaitable 

winocr_available_recognizer_languages = get_supported_language_packs()

if len(winocr_available_recognizer_languages) > 0:
    class WindowsOCR:
    lang = get_supported_language_packs()[0].language_tag
        lang = winocr_available_recognizer_languages[0].language_tag
        
        def __call__(self, img: np.ndarray) -> str:
            img = cv2.cvtColor(img, cv2.COLOR_BGR2RGBA)