ocr.py 1.1 KB

123456789101112131415161718192021222324252627282930313233343536
  1. import importlib
  2. import os
  3. os.environ['FLAGS_log_level'] = '20' # 20=INFO, 30=WARNING, 40=ERROR
  4. def capture_and_ocr(region):
  5. # 动态导入所需库
  6. Image = importlib.import_module('PIL.Image')
  7. ImageGrab = importlib.import_module('PIL.ImageGrab')
  8. np = importlib.import_module('numpy')
  9. PaddleOCR = importlib.import_module('paddleocr').PaddleOCR
  10. try:
  11. # 读取屏幕截图
  12. screenshot = ImageGrab.grab(bbox=region)
  13. # 将 PIL.Image 转换为 numpy 数组
  14. screenshot_np = np.array(screenshot)
  15. # 初始化OCR(只在需要时创建)
  16. ocr = PaddleOCR(use_angle_cls=True) # 支持中文
  17. result = ocr.ocr(screenshot_np, cls=True)
  18. # 提取每个识别结果的文本部分
  19. final_texts = [line[1][0] for line in result[0]]
  20. return final_texts
  21. finally:
  22. # 清理内存
  23. del Image, ImageGrab, np, PaddleOCR, ocr, screenshot, screenshot_np
  24. if 'result' in locals():
  25. del result
  26. if 'final_texts' in locals():
  27. del final_texts
  28. # 强制垃圾回收
  29. import gc
  30. gc.collect()