فهرست منبع

fix(mfr): improve LaTeX whitespace handling in unimernet model

- Preserve "\ " sequences during whitespace removal
- Add temporary substitution to prevent incorrect processing of "\ " sequences
- Restore "\ " sequences after removing unnecessary whitespace
myhloli 6 ماه پیش
والد
کامیت
bfb80cb2e5
1فایلهای تغییر یافته به همراه9 افزوده شده و 1 حذف شده
  1. 9 1
      magic_pdf/model/sub_modules/mfr/unimernet/unimernet_hf/modeling_unimernet.py

+ 9 - 1
magic_pdf/model/sub_modules/mfr/unimernet/unimernet_hf/modeling_unimernet.py

@@ -60,6 +60,10 @@ class TokenizerWrapper:
 def latex_rm_whitespace(s: str):
     """Remove unnecessary whitespace from LaTeX code.
     """
+
+    # 先保存 "\ " 序列,防止被错误处理
+    s = re.sub(r'\\ ', r'\\SPACE', s)
+
     text_reg = r'(\\(operatorname|mathrm|text|mathbf)\s?\*? {.*?})'
     letter = r'[a-zA-Z]'
     noletter = r'[\W_^\d]'
@@ -73,7 +77,11 @@ def latex_rm_whitespace(s: str):
         news = re.sub(r'(%s)\s+?(%s)' % (letter, noletter), r'\1\2', news)
         if news == s:
             break
-    return s
+
+    # 恢复 "\ " 序列
+    news = re.sub(r'\\SPACE', r'\\ ', news)
+
+    return news
 
 
 class UnimernetModel(VisionEncoderDecoderModel):