youpaishidifu
d793d1c992
fix: 增强噪声压制 - 检测混合文字乱码(Latin+CJK交错)
...
- 在_is_noise_text中新增混合文字乱码检测
- 检测Latin大写字母被CJK分割成多个不连续块的模式
- 如'HHWH尸端自哪内柙登录槟J!'这类OCR垃圾现在会被过滤
- 修复unicode_radicals.md末尾格式错误(缺少补充字符列)
- 从git追踪中移除easyocr_worker_state.json(运行时状态文件)
2026-08-08 22:50:05 +08:00
youpaishidifu
09ea05fc79
fix: EasyOCR启动异常+超时保护+消息搅和隔离
...
1. 修复负冷却时间bug:启动失败时若未设置冷却,现在设置30s冷却
2. EasyOCR worker添加超时保护:readtext()使用concurrent.futures包装,30s超时
3. Windows OCR消息搅和隔离:EasyOCR超时+Windows OCR多时间戳→返回空结果
4. 添加easyocr_worker_state.json到.gitignore
2026-08-08 22:14:02 +08:00
youpaishidifu
e88a2ec49c
fix: 加强用户协议内容过滤和停止信号优先级
...
- 修复_is_noise_text函数:改用re.search替代re.match,新增_AGREEMENT_KEYWORDS多关键词检测
- 短文本(<80字)中匹配>=2个协议特征词才拦截,提高准确率
- 加强停止信号优先级:在OCR处理各阶段添加_running检查点
- 预分割后、stage splitting循环内、逐行过滤前均检查_running
- OCR返回后立即检查_running,确保急停/手动停止响应时间≤单行处理时间
2026-08-08 20:44:30 +08:00
youpaishidifu
bc59f0f5ab
@
...
fix: 牛头不对马嘴 + 时间戳过滤强化
问题1 - 牛头不对马嘴:
OCR截屏同时捕获聊天窗口+用户协议文档,协议中的正式法律用语
("玩家应尊重他人的合法权益")被误当成用户消息触发自动回复。
修复: _is_noise_text新增用户协议/服务条款文档内容检测:
- "玩家/用户 应/必须/须/不得 + 尊重/遵守/履行..."
- "运营方/服务提供方 + 有权/有义务/保留"
- "本协议/条款/规定"开头
- 同时含"权利"+"义务"的陈述句(排除疑问句)
问题2 - 时间戳过滤强化:
10:59的消息在12:22仍被处理。非过去日期路径所有时间戳>300s时
仍返回True("放行给DB去重"),导致历史消息重新处理。
修复: _ocr_text_has_fresh_timestamp非过去日期路径改为严格5分钟窗口:
所有时间戳>300s → return False(丢弃),不再放行给DB去重。
@
2026-08-08 12:33:41 +08:00
youpaishidifu
2a2161820f
修复启动卡顿:线程分批启动避免GIL竞争+病句过滤增强
2026-08-08 10:33:48 +08:00
youpaishidifu
7fc737d80f
fix : #1448 相关性短查询放行 + #1449 严格300s报废
...
#1448 auto_reply: _has_content_relevance() 不再对≤2token短查询无条件放行
- 短查询必须整个query作为子串出现在文档中才放行
- 修复下载→前置依赖误匹配(无任何共同token/token交集)
#1449 monitor: 严格300s报废策略
- stage splitting: 继承时间戳>300s一律丢弃,移除新鲜内容/提问豁免
- 区块级: 硬截止从1800s→300s,移除CJK内容/新鲜特征bypass
- 修复16:07消息在21:08仍被处理的问题
2026-08-07 22:42:14 +08:00
youpaishidifu
5c4a17043a
fix: 修复两个OCR问题
...
1. 修复_clean_ocr_prefix误删登录关键词导致答非所问
- 噪声前缀后必须跟标点/空格或字符串结束,不能紧跟中文字符
- 登录插件,哪里可以下载到?不再被清理为插件,哪里可以下载到?
2. 修复EasyOCR静默原生崩溃检测
- 父进程:空stderr+空crash log也计入CUDA崩溃计数,2次后强制CPU
- Worker:添加CUDA驱动DLL预检,加载失败时强制CPU模式
2026-08-07 14:50:29 +08:00
youpaishidifu
5627a2b88a
修复三个OCR过滤问题:
...
1. Task #1440 : 时间戳过滤器加强到5分钟窗口
- 继承时间戳超过5分钟(300s)的消息直接丢弃
- 修复:12:09的消息能通过13:49的过滤器(差100分钟)
2. Task #1441 : bot自身消息查库过滤
- 新增get_recent_bot_replies方法查询数据库
- 检查OCR读到的内容与数据库中bot回复重合率≥90%则丢弃
- 修复:bot回复的消息被OCR读到后直接回复用户的问题
3. Task #1442 : 数据库时间戳混乱修复
- 修改record_bot_reply和record_user_message使用本地时间
- SQLite的CURRENT_TIMESTAMP返回UTC时间导致时间戳混乱
- 修复:部分消息created_at在凌晨但实际测试不在凌晨
同时包含Task #1436的链接文本清理修复
2026-08-07 14:09:29 +08:00
youpaishidifu
ad091561fe
修复3个OCR过滤问题:
...
1. 时间戳过滤误判:昨天前缀剥离后裸时间戳被当未来时间拦截,添加skip_future_check传递
2. 纯时间戳触发查库:_on_new_message入口检查中文字符,无中文跳过查库
3. 偏旁库补全:添加U+4E28(丨),启用U+4E3F(丿)过滤
2026-08-07 12:43:36 +08:00
youpaishidifu
4635e2c366
修复OCR混合消息导致知识库答非所问:新增反向包含剥离逻辑
...
问题:OCR截屏把用户新消息和bot旧回复拼成一行,如
登录插件在哪下载?,从未注册过草原,使用全新的邮箱
原剥离逻辑(r in ts)因OCR截断导致精确子串匹配失效,
混合文本传入知识库搜索匹配到invite.md的新用户定义而非正确文档。
修复:在poll过滤阶段新增反向包含剥离——将消息按逗号分段,
检查每段是否为已知bot回复(r)的子串,剥离匹配的bot片段,
保留用户真正提问部分。支持中文逗号和ASCII逗号分隔。
2026-08-07 11:26:39 +08:00
youpaishidifu
87c0bd9f62
fix: 修复时间戳提问豁免无上限+知识库链接文字误匹配
...
Bug1: 提问豁免(_is_question_message)让继承极老时间戳的消息绕过过滤,
如22:07的消息在次日10:43仍通过stage splitting放行。
修复:给提问豁免加24h硬上限,继承时间戳>24h不再豁免。
Bug2: protect.md heading含[sdf1_login登录插件](...)链接,
heading_no_link_text保留链接文字,导致phrase_in_text匹配触发5x加分。
修复:新增full_text_phrase(移除整个链接含文字),
所有短语匹配改为用full_text_phrase,链接文字不再参与评分。
2026-08-07 10:54:47 +08:00
youpaishidifu
9944d74798
fix(easyocr): 顶层崩溃全程留痕,消除"一声不吭"结束进程
...
- easyocr_worker.py: 新增 worker 状态文件 easyocr_worker_state.json
(pid/mode/status/last_img_len/ts/error),就绪/忙碌/空闲实时落盘;
强化 sys.excepthook / _flush_exit / _signal_handler 崩溃写状态+crash.log
- monitor.py: _kill_easyocr_proc 杀前诊断三路
(状态文件 + 残留stderr + crash.log尾),以 warning 汇总进主日志;
_read_easyocr_crash_tail 新增 ignore_age 跳过60s时间窗用于诊断路径
- unicode_radicals.md: 丿(U+4E3F)行改 - 不参与偏旁过滤,修复OCR碎片误杀儿下载等
2026-08-06 22:55:29 +08:00
youpaishidifu
3df59c53ad
修复时间戳过期过滤器和hash跳过逻辑
...
1. 时间戳过期过滤器:移除无条件放行逻辑,时间戳过期超过600s的消息必须丢弃
- 原逻辑:只要块内有中文消息内容就放行,导致过期消息仍被批准
- 新逻辑:时间戳过期超过600s且无新鲜特征的消息直接丢弃
2. hash跳过逻辑:消息必须已被回复才能跳过
- 原逻辑:只要上一帧已入队就跳过,导致消息从未处理过但hash相同时被静默跳过
- 新逻辑:必须确认消息已被回复(_last_hash_replied),才能跳过
- 新增_last_hash_replied标志跟踪消息是否已被回复
2026-08-06 21:19:35 +08:00
youpaishidifu
ef422ef776
修复急停冻结/消息hash跳过/正常调度冷却误触三处问题
...
1. 急停冻结: gui.py 将 monitor.stop() 移到后台线程执行,避免 terminate+wait 阻塞 GUI 主线程 6~8s 触发 Windows 冻结弹窗;窗口关闭同样后台 stop。
2. 消息丢失: 仅当上一帧 OCR 已成功入队才允许相同 hash 帧跳过;新增 _is_question_message 提问豁免,使继承极老时间戳的明确提问(如'资源包是强制的,还是可选的?')不再被误判为远古历史永久丢弃。
3. 正常调度冷却: 正常资源释放(每N次调用杀进程)清除残留 30s 冷却并重置失败计数器;正常重启握手阶段的初始化超时/崩溃/协议/握手错误不再施加 30s 冷静期,交由系统自行调度启停。
2026-08-06 20:32:50 +08:00
youpaishidifu
1291a402de
修复三个问题:消息搅和打包、QQ系统消息过滤、OCR噪声残片过滤
...
1. 消息搅和打包修复(#1414):
- 将'同poll多条取最后'逻辑改为遍历处理所有消息
- 每条消息独立处理,不再丢弃旧消息
- 基线轮只处理一次,后续消息正常处理
2. QQ系统消息残片过滤(#1415):
- 添加'你撤回了, 条消息'模式匹配
- 添加'撤回了一条消息'模式匹配
- 在_is_system_message函数中实现
3. OCR噪声残片过滤:
- 添加'留, C'等逗号+字母组合噪声模式
- 添加纯逗号+字母噪声模式
- 在_is_noise_text函数中实现
2026-08-06 16:56:28 +08:00
youpaishidifu
4c044c6e7c
fix: 时间戳过滤器1漏消息——疑问句特征正则过严
...
_looks_fresh_content 原正则 (疑问词)\s*[??] 只匹配空白不匹配汉字,
导致'如何配置的?'/'在哪可以下载?'等正常疑问句(疑问词与问号间隔文字)匹配失败,
整块OCR文本被静默丢弃('登录插件在哪可以下载?'丢失)。
修复:
1. _looks_fresh_content 改为允许疑问词与问号间 ≤30 字非句末标点(同句内)
2. 最新时间戳≤600s 分支增加 _block_has_cjk_message 兜底放行,与硬截止分支一致
经诊断脚本复现确认:修复前返回False(丢弃),修复后返回True(放行)
2026-08-06 16:34:24 +08:00
youpaishidifu
41436cbe27
fix: 进程名正则空备选项导致所有文本被误杀
...
墨刀|) → 墨刀),去掉多余的|形成空备选项
此前^(?:...|墨刀|)匹配所有文本(空字符串开头=任何文本)
2026-08-06 16:12:00 +08:00
youpaishidifu
1169487dda
fix: EasyOCR崩溃日志残留+锁竞争误杀
...
1. 新增_truncate_easyocr_crash_log():worker成功启动后截断崩溃日志,清除旧条目防止混淆用户
2. 锁竞争超时(15s)不再计入consecutive_failures:worker在忙处理大图是正常行为,不触发杀进程
3. 锁超时仅重置call_count防止'正常释放'误触发
2026-08-06 16:02:33 +08:00
youpaishidifu
88593898be
强化EasyOCR超时计数:锁竞争超时/内层超时/外层超时/BrokenPipe均计入consecutive_failures+重置call_count,防'3次超时却正常释放'误触发
2026-08-06 14:28:33 +08:00
youpaishidifu
37ce6a0916
修复消息静默丢失+微信唤醒不稳定:_is_noise_text进程名正则缺失闭合括号导致异常返回空列表(QQ/微信均受影响);_ensure_foreground增加keybd_event骗取前台权限+SetWindowPos强置顶兜底
2026-08-06 10:43:21 +08:00
youpaishidifu
8575b5141b
修复语法错误:内存检查逻辑移回try块内,修复空行缩进问题
2026-08-06 10:03:50 +08:00
youpaishidifu
4ef261bfe7
修复语法错误:内存检查逻辑移回try块内
2026-08-06 09:54:15 +08:00
youpaishidifu
53175f57eb
修复EasyOCR三个问题:正常调度误判、内存检测误判、消息hash漏消息
2026-08-05 23:20:00 +08:00
youpaishidifu
4418a46460
修复三个问题:时间戳过滤放宽、系统进程名过滤、EasyOCR CUDA崩溃修复
...
1. 放宽时间戳过滤:窗口30s→60s,消息长度4字→20字,包含中文即放行
2. 添加系统进程名过滤:200+个Windows/第三方进程名模式,防止混入OCR文本
3. EasyOCR崩溃修复:检测内存不足时设置CUDA_VISIBLE_DEVICES=''禁用CUDA,避免import torch加载CUDA库导致崩溃
2026-08-05 21:57:53 +08:00
youpaishidifu
fd5d2ee73a
修复内存泄漏和回复截断问题
...
1. 内存泄漏修复(Bug D):
- 在 easyocr_worker.py 中添加 GPU 清理函数和信号处理器
- 在 monitor.py 中创建 _kill_easyocr_proc() 辅助方法
- 使用 terminate→wait→kill→gc.collect() 安全终止序列替换所有直接 kill()
- 确保 CUDA 上下文在子进程退出时正确清理
2. 回复截断修复(Bug E):
- 在 knowledge_base.py 的 search() 方法中检测指南类查询
- 对于步骤类查询(如何/怎么/教程等),合并同一文档的所有步骤 section
- 确保用户获得完整的操作指南而非单个步骤
2026-08-05 17:56:07 +08:00
youpaishidifu
4aeb03d869
fix: 内存误判(psutil→GlobalMemoryStatusEx) + 时间戳硬截止(>30min丢弃)
...
- easyocr_worker.py: 删除psutil物理内存检查,统一使用GlobalMemoryStatusEx
(Windows上psutil可比Task Manager少报~1.7GB,导致4.2GB可用误判为2.5GB)
- monitor.py: _ocr_text_has_fresh_timestamp()加硬截止——最新时间戳>1800s(30min)
无论是否含CJK均丢弃,修复15:09看到13:34消息(90min前)被误回复
- 新增_timestamp_age_seconds()辅助方法
2026-08-05 15:25:33 +08:00
youpaishidifu
49a95fb808
修复commit charge阈值判断和OCR乱码字符检测
2026-08-05 14:47:44 +08:00
youpaishidifu
4d7017be6a
修复知识库搜索:表格内容不再被切分,表格section优先返回
...
- knowledge_base.py: _split_body_by_list_items检测表格区域,不切分表格行
- knowledge_base.py: 添加独立表格section,确保表格内容可被搜索匹配
- knowledge_base.py: 表格兜底策略:最佳文档含操作/支持表格时强制加入并置顶
- knowledge_base.py: reranking后无条件优先返回含操作/支持的表格section
- .gitignore: 添加msg_history.db和诊断脚本到忽略列表
2026-08-05 13:22:27 +08:00
youpaishidifu
271ea21489
fix: 偏旁过滤失效 - Unicode列改为真实码点+常用字同形写-防误杀 (windowmsgbot)
2026-08-05 10:43:26 +08:00
youpaishidifu
3bae125392
修复漏消息:gate整块丢弃+行合并黏时间戳+stage尾部连坐 (windowmsgbot)
...
- 新增 _block_has_cjk_message:整屏时间戳全过期但含中文消息内容时放行给下游去重
- gate 两个全过期分支改为含中文消息内容即放行,不再整块丢弃连坐新消息
- stage splitting 中段/尾部不再按继承旧时间戳丢弃,仅>2h且非新鲜才丢远古历史
- 行合并增加 _TS_START 正则,禁止独立时间戳行被黏进消息
- 新增 _normalize_timestamps 规整 OCR 逐字空格/全角冒号时间戳,修复孤儿空格导致漏消息
- 内存泄漏修复保持不动(锁超时/句柄释放/启动失败计数/双重内存预检/看门狗)
2026-08-04 21:31:35 +08:00
youpaishidifu
7d3c73a3bf
fix: OCR噪声检测 - 用户消息与bot回复相似度≥90%时跳过
...
问题:OCR把bot回复内容误识别为用户消息,导致重复回复
根因:EasyOCR读取屏幕时,把右侧bot回复区域的文本也读取为用户消息
修复:
- 新增_last_bot_reply_content变量存储最近bot回复内容
- record_bot_reply方法更新该变量
- 消息处理前检查相似度,≥90%则跳过
- 添加SequenceMatcher导入
2026-08-04 15:44:25 +08:00
youpaishidifu
7e6d105b73
fix: EasyOCR超时也计入连续失败计数 - 防止超时跳过绕过杀进程逻辑
...
问题:连续3次EasyOCR超时未触发杀进程,因为'超时跳过'日志未增加失败计数器
根因:只在_q.get()返回None时增加计数器,线程超时is_alive()检查未增加计数器
修复:EasyOCR线程超时时也增加_easyocr_consecutive_failures,达到阈值触发杀进程
2026-08-04 15:27:06 +08:00
youpaishidifu
33848de623
fix: 修复cleaned_item未定义错误 - 调整清理顺序
...
问题:QQ轮询时cleaned_item变量未定义
根因:OCR清理函数调用顺序错误,在使用变量后才定义变量
修复:将cleaned_item = self._clean_ocr_prefix(item)移到使用前
2026-08-04 15:14:40 +08:00
youpaishidifu
597ed7d2fd
fix: 微信窗口被覆盖时无法唤醒 - 保留PID快速EnumWindows + 冷却缩短到10s
...
问题根因:
1. UIA (auto.WindowControl) 在窗口被其他程序覆盖时搜索不稳定
2. 缓存HWND验证失败时,PID也被清空,导致每次都要从psutil全进程扫描重新找PID
3. 搜索失败后30s冷却太长
修复:
- 仅清HWND,保留PID供后续EnumWindows快速复用(毫秒级,跳过psutil扫描)
- 新增PID快速路径:验证失败后先用缓存PID直接EnumWindows,再走UIA和psutil兜底
- 冷却时间从30s缩短到10s,加快恢复轮询
2026-08-04 14:03:19 +08:00
youpaishidifu
a3b0e35581
fix: EasyOCR内存不足时强制CPU模式,避免CUDA加载导致系统冻结
...
- monitor.py: 内存阈值从2GB提高到3GB,CUDA加载torch需要大量内存
- easyocr_worker.py: 新增物理内存预检(3GB阈值),不足时强制CPU模式
- easyocr_worker.py: _init_reader()再次检查物理内存,双重保障
- 改进错误日志:记录内存详细信息(总量、使用率)
- 解决:内存不足时仍加载CUDA导致电脑冻结的问题
2026-08-04 12:18:54 +08:00
youpaishidifu
7d8d39f7b6
fix: 修复OCR日期提取错误导致时间戳误判为未来的问题
...
- OCR常把日期和时间连在一起:2026/8/319:45:20 → 匹配到2026/8/31(未来/非法)
- 改进日期解析:从d向下截断,找到第一个合法且≤今天的日期
- 处理:2026/8/31(未来8月31日)→ 2026/8/3(过去8月3日)
- 处理:2026/8/32(非法日期)→ 2026/8/3(过去8月3日)
- 这样has_past_date=True,时间戳19:44/21:13等不会被误判为未来时间
2026-08-04 09:47:57 +08:00
youpaishidifu
161d2dd95b
修复基线抑制后截图 hash 导致消息被跳过的问题:
...
- 基线抑制时清除截图 hash(_last_screenshot_hash.pop)
- 防止下次轮询时 hash 相同直接跳过 OCR,导致消息永远等不到回复
- 更新注释:从'三项关键处置'改为'四项关键处置'
2026-08-03 23:07:01 +08:00
youpaishidifu
d6691f6037
修复 EasyOCR 连续启动失败不触发重启的问题:
...
- 新增 _easyocr_consecutive_startup_failures 计数器,跟踪子进程无法启动的次数
- 当连续3次启动失败时,清除冷却时间并重置状态,强制重试启动
- 前2次保留冷却(预留初始化时间),第3次强制清除冷却
- 在所有重置 _easyocr_consecutive_failures 的地方同步重置启动失败计数
- 解决 EasyOCR 全程未启动但从未触发杀进程重启的问题
2026-08-03 22:34:22 +08:00
youpaishidifu
795a245de7
修复两个bug:
...
1. 问题3:OCR逗号断行 - 在_process_ocr_output中添加连续行合并逻辑,防止EasyOCR将中文逗号视为行边界导致消息前半段丢失
2. 问题4:回复重试逻辑失效 - 为_paste_and_send添加force_retry参数,_execute_reply重试时跳过60秒冷却检查,实现真正的5秒间隔重试机制
2026-08-03 21:31:14 +08:00
youpaishidifu
d87e482e1e
修复微信端知识库答非所问 + QQ OCR 漏消息(双 bug 修复)
...
knowledge_base.py(问题2:微信端答非所问):
- 文档级标题语义匹配改为 token 级(原仅字面子串匹配),OCR 丢失"php"只剩"管理员端默认"也能正确命中 phpadmin
- 新增"管理员+默认"组合强偏好:无"领地"时 phpadmin ×3.0、protect ×0.4,避免退化查询误选 protect/全局配置
- section 级重排新增 bonus +30:查询含"管理员+默认"时,偏好正文真正含"密码/登录/ypshidifu"的 section,压过"## 目录"目录项
monitor.py(问题1 + 问题2 上游):
- 新增 _split_and_denoise_segments:按消息边界预分割 + 分段噪声隔离,修复 Windows OCR 大杂烩把用户消息当噪声整段丢弃(QQ 漏消息)
- 候选行剥离 bot 自身旧回复文本:OCR 把用户新提问与屏上 bot 旧回复拼成一行时,先剥离旧回复再走过滤,消除答非所问的上游拼接根因
测试:新增 debug_kb.py 复现退化查询、test_kb.py 回归;跨主题回归全部正确,py_compile 通过
2026-08-03 20:52:08 +08:00
youpaishidifu
8ed93382e0
修复两个bug:1. EasyOCR线程崩溃(_OCR_TIMEOUT未定义) 2. 知识库搜索优化(核心名词匹配奖励+文档标题语义匹配)
2026-08-03 18:17:43 +08:00
youpaishidifu
47996cd1b8
微信窗口验证修复:支持国内版weixin.exe进程名
2026-08-03 17:44:43 +08:00
youpaishidifu
c51a585bb9
微信窗口验证增强日志,诊断窗口无效原因
2026-08-03 17:32:04 +08:00
youpaishidifu
24036ecab9
fix: indentation error in _is_white_bubble_pixel decorator
2026-08-03 16:48:24 +08:00
youpaishidifu
c6c8cc0571
@
...
fix: 微信颜色检测放宽+KB精确匹配+自动回复重试
1. monitor.py - 微信白色气泡检测阈值放宽(>=245->>=240, >=3->>=2)
适配新版微信UI颜色变化,减少漏检
2. knowledge_base.py - 精确短语匹配(5x加分)+子串匹配(2.5x/1.5x)
防止查询被不相关文档抢走高分
3. gui.py - 自动回复发送失败重试(3次/5秒间隔)
连续失败退避本轮,避免反复抢焦点
4. .gitignore - 补充build目录下的证书/构建产物
@
2026-08-03 16:42:21 +08:00
youpaishidifu and WorkBuddy
708bcbf315
fix: 微信截图调试诊断 - 调试截图提前保存+PrintWindow失败回退
...
- 调试截图保存提前到所有检查之前(之前在size check之后,太小的图不保存)
- PrintWindow结果太小(<50px)时自动回退到屏幕截图
- 添加详细诊断日志(唤醒结果、可见性、前台状态、截图尺寸)
- QQ截图同样优化(PrintWindow太小回退+调试截图提前保存)
根因:微信PrintWindow返回None或空白图时,代码直接return[]不保存任何调试图片
导致用户看到截屏文件夹空白但日志说继续截图
Co-Authored-By: WorkBuddy <noreply@workbuddy.ai >
2026-08-03 16:13:23 +08:00
youpaishidifu
99e2a1cfe7
fix: 两个问题修复
...
1. QQ截图路径空值导致[Errno 2]错误 - 添加时间戳生成路径
2. 窗口被遮挡时使用PrintWindow API截取内容
- 新增_screenshot_window函数使用PrintWindow API
- QQ和微信截图逻辑:当窗口不在前台时尝试PrintWindow
- PrintWindow失败时回退到屏幕截图
2026-08-03 15:42:36 +08:00
youpaishidifu
2162a49068
fix: 昨天的时间戳不再被误判为今天未来的21:14
...
- 在_ocr_text_has_fresh_timestamp中提取日期信息(如2026/8/2)
- 如果日期是过去的(昨天或更早),跳过未来时间戳拦截
- 修改_is_timestamp_old函数,添加skip_future_check参数
- 解决问题:OCR文本包含2026/8/2 21:14:38,被误判为今天未来的21:14
2026-08-03 15:20:28 +08:00
youpaishidifu
b07fc75d99
@
...
fix: window activation bug - verify PID before using cached HWND
Root cause: _ensure_hwnd cached HWND without verifying the owning process.
When target app exits, OS reuses HWND value for another process, causing
activation of wrong window (e.g. browser/editor disguised as QQ/WeChat).
Changes:
- Add _validate_wechat_window() to verify process name == WeChat.exe
- _ensure_hwnd cache hit: verify HWND belongs to target process via PID
- TXGuiFoundation fallback: verify PID belongs to QQ.exe/TIM.exe
- _find_qq_window_fresh: same PID verification for TXGuiFoundation
- _ocr_read_wechat: validate window before OCR capture
- Raise min window size threshold from 200x100 to 300x200 everywhere
@
2026-08-03 14:47:23 +08:00
youpaishidifu
fa67eb407e
@
...
修复3个问题:
1. EasyOCR OOM降级CPU+重启恢复重检内存:_init_easyocr和_ensure_easyocr_subprocess添加内存检测,<2GB强制CPU;start()添加full_restart参数,用户手动启用时重置OOM计数重新评估GPU/CPU
2. PyInstaller exe闪退:spec入口改main.py,main.py添加EASYOCR_WORKER环境变量检测跳转worker逻辑;build.bat只清理build/build和dist不删spec/hooks
3. QQ OCR _processed_path未定义:补充ts和_processed_path变量定义
@
2026-08-03 10:12:07 +08:00