修复3个OCR问题: easyocr子进程ready握手+60s初始化预算, 偏旁过滤改Unicode范围判断, 新旧消息按新鲜特征放行

- easyocr_worker.py: 初始化完成后输出{"ready":true}握手, 父进程不再把3-10s初始化计入10s请求超时
- monitor.py: _ensure_easyocr_subprocess重写 - 60s握手预算(daemon线程+Queue), stderr PIPE捕获崩溃原因, 崩溃/超时改30s冷却自动重试(不再永久broken)
- monitor.py: 删除markdown表格字符key偏旁库, 改U+2E80-U+2FDF码位范围判断, 修复"地图"/"太"等正常汉字被误判为偏旁丢弃
- monitor.py: _looks_fresh_content新鲜特征判断 - 旧时间戳但含疑问词/问句/句尾标点的消息放行, 不再整块丢弃
- 新增test_easyocr_handshake.py: 子进程握手+OCR往返回归测试(实测通过: 28s含初始化, 识别'你好世界测试123')
This commit is contained in:
youpaishidifu
2026-08-01 13:00:57 +08:00
parent d2389ec3e1
commit ba0e6e2450
3 changed files with 268 additions and 85 deletions
+4
View File
@@ -63,6 +63,10 @@ def _process_image(img_b64: str, reader) -> str:
def _main():
reader = _init_reader()
# ⭐ 就绪握手:初始化完成后先输出 {"ready": true},让父进程知道可以开始请求
# 否则父进程的 10s 请求超时会包含 3-10s 的初始化时间 → 永远超时
sys.stdout.write(json.dumps({"ready": True}, ensure_ascii=False) + "\n")
sys.stdout.flush()
sys.stderr.write("[easyocr_worker] 就绪,等待 stdin 输入\n")
sys.stderr.flush()