巧妙解决easyocr在cpu_mode下加载慢的问题~

EasyOCR是一个基于Python的开源光学字符识别(OCR)工具,支持80多种语言,包括中文、英文等,适用于文档处理、自动化测试等多种场景。

不过,由于easyocr需要加载大模型所以在cpu_mode下加载会特别慢... 那么该如何解决呢?

由于,博主的项目除了加载easyocr之外,还有其它很多需要加载或初始化的内容,所以博主就想到让easyocr在后台加载,同时进行其它加载和初始化的方式... 这样,两个任务同时进行,速度就快了...

首先,需要创建一个OCRManager的class

# OCR Manager class
class OCRManager:

    def __init__(self):

        self.reader = None
        self.loaded_event = threading.Event()
        self.error = None

    def load_in_background(self, langs=None):

        if langs is None:
            langs = ['en']
        #endif

        try:

            self.reader = easyocr.Reader(langs, gpu=False)    # init EasyOCR Reader(CPU mode)
            self.loaded_event.set()

        except Exception as e:

            self.error = e

        #end try

#end class

然后在主程序中先将class加载到background,然后执行自已的其它代码,并在检查加载完成后才可始ocr的动作,代码如下:

# =============================================================================
#                               Main program
# =============================================================================

# create EasyOCR Manager
ocr_manager = OCRManager()

# Load OCR models in a background thread
loader_thread = threading.Thread(target=ocr_manager.load_in_background, daemon=True)
loader_thread.start()

# any codes add here
# ...


# Wait for model loading
while not ocr_manager.loaded_event.is_set():
    win32api.Sleep(100)
# end while

# Check if model loaded successfully
if ocr_manager.error:
    print(f"EasyOCR load failed ~ {ocr_manager.error}")
    sys.exit(0)
# endif

# test code
ocr_result = ocr_manager.reader.readtext("test.png", allowlist="0123456789", detail=0 )
print(ocr_result)

如上,我们就通过background加载的方式解决了easyocr在cpu_mode加载慢的问题~~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

happybasic

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值