fix: 修复两个OCR问题

1. 修复_clean_ocr_prefix误删登录关键词导致答非所问
   - 噪声前缀后必须跟标点/空格或字符串结束,不能紧跟中文字符
   - 登录插件,哪里可以下载到?不再被清理为插件,哪里可以下载到?

2. 修复EasyOCR静默原生崩溃检测
   - 父进程:空stderr+空crash log也计入CUDA崩溃计数,2次后强制CPU
   - Worker:添加CUDA驱动DLL预检,加载失败时强制CPU模式
This commit is contained in:
youpaishidifu
2026-08-07 14:50:29 +08:00
parent 5627a2b88a
commit 5c4a17043a
2 changed files with 24 additions and 4 deletions
+15
View File
@@ -137,6 +137,21 @@ try:
os.environ.setdefault("OMP_NUM_THREADS", "1")
os.environ.setdefault("MKL_NUM_THREADS", "1")
# ── CUDA 驱动预检:在 import torch 之前探测 CUDA 驱动是否可用 ──
# 防止 CUDA 驱动损坏导致 import torch 时原生崩溃(crash log 为空的静默崩溃)
if os.environ.get("EASYOCR_FORCE_CPU") != "1":
try:
import ctypes
ctypes.windll.nvcuda # 尝试加载 CUDA 驱动 DLL
sys.stderr.write("[easyocr_worker] CUDA 驱动 DLL 加载成功\n")
sys.stderr.flush()
except Exception as _cuda_drv_err:
os.environ["EASYOCR_FORCE_CPU"] = "1"
os.environ["CUDA_VISIBLE_DEVICES"] = ""
sys.stderr.write(f"[easyocr_worker] ⚠️ CUDA 驱动加载失败({_cuda_drv_err}),强制 CPU 模式\n")
sys.stderr.flush()
_write_crash_log(f"{datetime.now()} [easyocr_worker] CUDA 驱动预检失败: {_cuda_drv_err}")
# ── 预检:物理内存+虚拟内存是否足够加载 CUDA 库 ──
_vm = _get_virtual_memory_info()
# ⭐ 统一使用 GlobalMemoryStatusEx(与 monitor.py / Task Manager 一致)