Spaces:
Sleeping
Sleeping
Download unimernet_decoder.py from MasterSayn/ocr-app-private: direct link, hf CLI and curl.
- Browser
- Download file 1.8 kB
-
https://huggingface.co/spaces/MasterSayn/ocr-app-private/resolve/main/unimernet_decoder.py
- Command line
-
hf download hf://spaces/MasterSayn/ocr-app-private/unimernet_decoder.py
-
curl -L -o unimernet_decoder.py https://huggingface.co/spaces/MasterSayn/ocr-app-private/resolve/main/unimernet_decoder.py
1.8 kB
| """ | |
| UniMERNet & Micro-Math Post-Processor for Math OCR Pipeline. | |
| Translates complex 2D LaTeX representations into compact UTN28 UnicodeMath strings. | |
| """ | |
| import re | |
| def clean_and_normalize_unicodemath(text: str) -> str: | |
| """ | |
| Säubert und normalisiert Formel-Strings nach den UTN28 UnicodeMath Standards. | |
| Behebt fehlende Klammern, fehlerhafte Indizes und LaTeX-Restbestände. | |
| """ | |
| if not text: | |
| return "" | |
| s = text.strip() | |
| # 1. Ersetze LaTeX-Befehle durch echte Unicode-Zeilen | |
| latex_replacements = { | |
| r'\alpha': 'α', r'\beta': 'β', r'\gamma': 'γ', r'\delta': 'δ', r'\Delta': 'Δ', | |
| r'\epsilon': 'ε', r'\eta': 'η', r'\theta': 'θ', r'\kappa': 'κ', r'\lambda': 'λ', | |
| r'\mu': 'μ', r'\nu': 'ν', r'\xi': 'ξ', r'\pi': 'π', r'\rho': 'ρ', | |
| r'\sigma': 'σ', r'\Sigma': 'Σ', r'\tau': 'τ', r'\phi': 'φ', r'\Phi': 'Φ', | |
| r'\psi': 'ψ', r'\omega': 'ω', r'\Omega': 'Ω', | |
| r'\int': '∫', r'\iint': '∬', r'\iiint': '∭', r'\sum': '∑', r'\prod': '∏', | |
| r'\sqrt': '√', r'\partial': '∂', r'\infty': '∞', r'\approx': '≈', | |
| r'\neq': '≠', r'\le': '≤', r'\ge': '≥', r'\pm': '±', r'\cdot': '·', | |
| r'\times': '×', r'\rightarrow': '→', r'\in': '∈', r'\forall': '∀', | |
| r'\quad': ' ', r'\qquad': ' ', r'\;': ' ', r'\,': ' ' | |
| } | |
| for k, v in latex_replacements.items(): | |
| s = s.replace(k, v) | |
| # 2. Behebe LaTeX \frac{a}{b} -> (a)/(b) | |
| frac_pattern = re.compile(r'\\frac\{([^{}]+)\}\{([^{}]+)\}') | |
| while frac_pattern.search(s): | |
| s = frac_pattern.sub(r'(\1)/(\2)', s) | |
| # 3. Entferne verbliebene $ oder \ | |
| s = s.replace('$', '').replace('\\', '') | |
| # 4. Formatiere doppelte Klammern sauber | |
| s = re.sub(r'\s+', ' ', s) | |
| return s.strip() | |