修复: OCR md文档预检 + 日志显示完整文本
1. 分割前 md 预检:在时间戳分割前用 _is_markdown_document 检查整行, 避免分割打断 md 链接/标题语法导致碎片漏过_BqDgv_过滤 2. 强化 _is_markdown_document:新增 .md) 文件引用模式 (如 gin.md) 分割后残缺链接)+ 内联 # # 标题标记 3. 调试日志不再截断:normalize/clean 显示前120字符+长度, split parts 显示前60字符,定位问题不靠猜
This commit is contained in:
+13
-3
@@ -726,19 +726,23 @@ class MessageMonitor:
|
||||
for i, rl in enumerate(ocr_lines):
|
||||
before = rl
|
||||
rl = self._normalize_ocr_text(rl)
|
||||
logger.debug(f"[ocr] stage[{i}] normalize: {before[:50]!r} -> {rl[:50]!r}")
|
||||
logger.debug(f"[ocr] stage[{i}] normalize: len={len(before)} -> {rl[:120]!r}")
|
||||
# 先清理 & 碎片(OCR 把时间戳右边缘的 : 读成 &)
|
||||
# 必须在时间戳分割前做,否则 "13:5&07" 无法被时间戳正则捕获
|
||||
rl = rl.replace('&', '')
|
||||
# 把全角 :统一成半角 :,让后续正则统一匹配
|
||||
rl = rl.replace(':', ':')
|
||||
logger.debug(f"[ocr] stage[{i}] clean: {rl[:80]!r}")
|
||||
logger.debug(f"[ocr] stage[{i}] clean: len={len(rl)} -> {rl[:120]!r}")
|
||||
# 分割"msg1 14:24 msg2 13:27 msg3" → ["msg1", "msg2", "msg3"]
|
||||
# 使用更宽松的 \d{1,2}(允许单数字),因为 & 移除后 "5&07"→"507"
|
||||
# 打破的时间戳如 "13:5 07" 也尽量捕获
|
||||
rl = re.sub(r'\s+', ' ', rl) # 多重空格压为一个
|
||||
# ⭐ 分割前 md 预检:rl 中 md 语法完整(链接、标题等),分割后碎片会丢失语法
|
||||
if self._is_markdown_document(rl):
|
||||
logger.debug(f"[ocr] stage[{i}] markdown document detected pre-split, skip line")
|
||||
continue
|
||||
parts = re.split(r'(\d{1,2}:\d{1,2}(?::\d{1,2})?)', rl)
|
||||
logger.debug(f"[ocr] stage[{i}] split -> {len(parts)} parts: {[p[:30] for p in parts if p.strip()]}")
|
||||
logger.debug(f"[ocr] stage[{i}] split -> {len(parts)} parts: {[p[:60] for p in parts if p.strip()]}")
|
||||
buf = ''
|
||||
for part in parts:
|
||||
if re.match(r'^\d{1,2}:\d{1,2}', part):
|
||||
@@ -1125,6 +1129,9 @@ class MessageMonitor:
|
||||
# 包含 markdown 链接 [text](url)
|
||||
if re.search(r'\[.+?\]\(.+?\)', text):
|
||||
return True
|
||||
# 包含 .md 文件引用(如 "gin.md)" 分割后断开的链接)
|
||||
if re.search(r'\S+\.md\)', text):
|
||||
return True
|
||||
# 行首是 - 或 * 列表项(标准 md 列表)
|
||||
if re.match(r'^[\-\*]\s', text):
|
||||
return True
|
||||
@@ -1135,6 +1142,9 @@ class MessageMonitor:
|
||||
pipes = text.count('|')
|
||||
if pipes >= 3:
|
||||
return True
|
||||
# 内联 # # 标题标记(如 "# # 必装依赖" → 分割后 `# #` 或 `# #`)
|
||||
if re.search(r'#\s*#', text):
|
||||
return True
|
||||
return False
|
||||
|
||||
def _paste_and_send(self, platform: str, text: str) -> bool:
|
||||
|
||||
Reference in New Issue
Block a user