MCPcopy Create free account
hub / github.com/BIT-DataLab/Edit-Banana / FormulaProcessor

Class FormulaProcessor

modules/text/processors/formula.py:40–366  ·  view source on GitHub ↗

公式处理器 处理流程: 1. 从 Pix2Text 结果提取有效公式 2. 计算公式与 layout OCR 文字块的重叠 3. 用公式替换被覆盖的文字块 4. 保留未被覆盖的 layout OCR 文字块

Source from the content-addressed store, hash-verified

38
39
40class FormulaProcessor:
41 """
42 公式处理器
43
44 处理流程:
45 1. 从 Pix2Text 结果提取有效公式
46 2. 计算公式与 layout OCR 文字块的重叠
47 3. 用公式替换被覆盖的文字块
48 4. 保留未被覆盖的 layout OCR 文字块
49 """
50
51 # 数学符号指示器
52 MATH_INDICATORS = [
53 '\\frac', '\\sum', '\\int', '\\prod', '\\approx', '\\equiv',
54 '\\neq', '\\leq', '\\geq', '=', '\\mathbb', '\\mathbf',
55 '\\pi', '\\theta', '\\sigma', '_', '^', '\\sqrt',
56 '_t', '_i', '_j', '_{'
57 ]
58
59 # 无效模式(Pix2Text 误识别)
60 INVALID_PATTERNS = [
61 '\\Updownarrow',
62 '\\dagger', '\\hat{\\varUpsilon}',
63 '\\underline', '\\underbrace', '\\overbrace',
64 '\\varPsi', '\\vdots', '\\Im',
65 '\\widehat{\\left\\{', # 误识别的图形元素
66 ]
67
68 # 重复模式检测(如 \b=\b=\b= 或 \\Xi}\\Xi})
69 REPETITIVE_PATTERN = re.compile(r'(.{2,10}?)\1{3,}')
70
71 # LaTeX 命令替换
72 LATEX_REPLACEMENTS = [
73 ('\\boldsymbol', '\\mathbf'),
74 ('\\cfrac', '\\frac'),
75 (r'\ ', ' '),
76 ('\\mathrm{o l d}', '\\text{old}'),
77 # 修复误识别的圈乘符号
78 ('\\circledR', '\\otimes'),
79 ('\\copyright', '\\otimes'),
80 ('\\textcircled{x}', '\\otimes'),
81 ('\\textcircled{\\times}', '\\otimes'),
82 ('\\textcircled{r}', '\\otimes'),
83 ('\\textcircled{R}', '\\otimes'),
84 ]
85
86 def __init__(self, overlap_threshold: float = 0.2, text_similarity_threshold: float = 0.8):
87 """
88 初始化公式处理器
89
90 Args:
91 overlap_threshold: 覆盖率阈值
92 text_similarity_threshold: 文本相似度阈值
93 """
94 self.overlap_threshold = overlap_threshold
95 self.text_similarity_threshold = text_similarity_threshold
96
97 def merge_ocr_results(

Callers 2

__init__Method · 0.85
formula.pyFile · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected