# LaTeX 字符渲染问题分析与修复报告 ## 问题描述 OCR 识别完成后,某些 LaTeX 字符(如 `\lambda`、`\vdots`)没有被成功渲染。 ## 问题诊断 ### 1. LaTeX 语法检查 ✅ **结论**: LaTeX 语法完全正确。 - `\lambda` - 希腊字母 λ (Unicode U+03BB) - `\vdots` - 垂直省略号 ⋮ (Unicode U+22EE) 这两个都是标准的 LaTeX 命令,不存在语法问题。 ### 2. 后处理管道分析 ✅ **位置**: `app/services/ocr_service.py` **结论**: OCR 后处理管道不会破坏这些字符。 后处理分为三个阶段: #### Stage 0: 修复 OCR 数字错误 ```python _fix_ocr_number_errors(expr) ``` - **影响范围**: 仅处理数字、小数点和空格 - **对 `\lambda` 和 `\vdots` 的影响**: ✅ 无影响 #### Stage 1: 拆分粘连命令 ```python _split_glued_command_token(token) ``` - **工作原理**: 仅处理 `_COMMANDS_NEED_SPACE` 白名单中的命令 - **白名单内容**: `cdot`, `times`, `div`, `int`, `sum`, `sin`, `cos` 等 - **`\lambda` 和 `\vdots` 是否在白名单中**: ❌ 不在 - **逻辑**: 如果命令不在白名单中,直接返回原值 - **对 `\lambda` 和 `\vdots` 的影响**: ✅ 无影响 #### Stage 2: 规范化微分符号 ```python _DIFFERENTIAL_UPPER_PATTERN.sub(r"\\mathrm{d} \1", expr) _DIFFERENTIAL_LOWER_PATTERN.sub(r"d \1", expr) ``` - **匹配模式**: `(?