当前位置: 首页 > news >正文

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

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

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

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

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

# OCR Manager class
class OCRManager:def __init__(self):self.reader = Noneself.loaded_event = threading.Event()self.error = Nonedef load_in_background(self, langs=None):if langs is None:langs = ['en']#endiftry: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加载慢的问题~~~

相关文章:

  • Pandas 核心数据结构详解:Series 和 DataFrame 完全指南
  • MyBatisPlus——逻辑删除
  • import jsonlines ModuleNotFoundError: No module named ‘jsonlines‘
  • 什么是 OpenFeigin ?微服务中的具体使用方式
  • 专业音乐播放器分享,Foobar2000多格式解码的技术实现,界面自定义的实用技巧
  • 【栈】------例题1【铁轨 Rails】
  • react 自定义状态管理库
  • MySQL中的SELECT FOR UPDATE的用法与原理
  • Linux系统移植11:修改网络驱动
  • Python数据操作
  • 大模型的微调和RAG,是如何选择的?
  • 华为云Flexus+DeepSeek征文|体验华为云ModelArts快速搭建Dify-LLM应用开发平台并创建自己dify钉钉群聊机器人
  • 国产服务器【银河麒麟v10】【CPU鲲鹏920】部署es 7.15.2
  • Android 的AppBarLayout 与LinearLayput的区别
  • AntV G 入门教程
  • maven编译报错java: Compilation failed: internal java compiler error
  • 如何用一台服务器用dify私有部署通用的大模型应用?
  • 小白成长之路-Rsync+sersync实现数据实时同步
  • dotnet core webapi EF 连接mysql数据库
  • 洪千武—华为海外HRBP
  • 国企门户网站建设方案/优化大师百科
  • wordpress全文/seo 重庆
  • 政府网站系统源码/软文发稿公司
  • 重庆平台网站建设/软文自助发稿平台
  • 福州网站制作有限公司/360优化大师旧版本
  • 咋做211校徽加网站/广州优化疫情防控措施