场景1: 某些包含中文的公式上指标异常
例子:
gt:
\begin{matrix}\mathrm{SEAF}&=&\frac{\sum(各串联补偿装置的额定补偿容量\times该串联补偿装置的可用时间)} { 该串联补偿系统的额定补偿容量\times统计期间}\&=&\mathrm {\frac {\sum(Q_N\times AH)}{Q_N\times PH}\times100%} \end{matrix}
pred:
\begin{matrix}\mathrm{SEAF}&=&\frac{\sum(各串联补偿装置的额定补偿容量\times该串联补偿装置的可用时间)} { 该串联补偿系统的额定补偿容量\times统计期间}\&=&\mathrm {\frac {\sum(Q_N\times AH)}{Q_N\times PH}\times100%} \end{matrix}
正常的CDM为1,但是实际上代码会报错。
问题定位: https://github.com/opendatalab/UniMERNet/blob/main/cdm/modules/latex2bbox_color.py#L206
这里会将检测有中文的公式讲所有的\mathrm替换为\text。问题来了,\mathrm里面包括了latex,换成\text 语法就错了
场景2: 某些latex公式会因为分词失败,导致指标计算有异常
例子:
gt: \sum_{\begin{array}{c}m,n>0\end{array}}x^{m}y^{n}=\frac{xy}{(1-x)(1-y)}.
pred: \sum_{\begin{subarray}{c}m,n>0\end{subarray}}x^{m}y^{n}=\frac{xy}{(1-x)(1-y)}.
问题定位:https://github.com/opendatalab/UniMERNet/blob/main/cdm/modules/tokenize_latex/tokenize_latex.py#L40
CDM采用了katex AST来做tokenize,而katex的parser不支持subarray
场景3: 若latex不含显示多行环境,如array/matrix,会自动将多行降级为单行
例子:
gt: \begin{array}{r}
\displaystyle \int_{0}^{\infty} \left( x - \frac{x^3}{2} + \frac{x^5}{2 \cdot 4} - \frac{x^7}{2 \cdot 4 \cdot 6} + \cdots \right) \
\left( 1 + \frac{x^2}{2^2} + \frac{x^4}{2^2 \cdot 4^2} + \frac{x^6}{2^2 \cdot 4^2 \cdot 6^2} + \cdots \right) dx.
\end{array}
pred: \int_0^\infty\left(x-\frac{x^3}2+\frac{x^5}{2\cdot4}+\cdots\right)\\left(1+\frac{x^2}{2^2}+\frac{x^4}{2^2\cdot4^2}+\frac{x^6}{2^2\cdot4^2\cdot6^2}+\cdots\right)dx.
场景1: 某些包含中文的公式上指标异常
例子:
gt:
\begin{matrix}\mathrm{SEAF}&=&\frac{\sum(各串联补偿装置的额定补偿容量\times该串联补偿装置的可用时间)} { 该串联补偿系统的额定补偿容量\times统计期间}\&=&\mathrm {\frac {\sum(Q_N\times AH)}{Q_N\times PH}\times100%} \end{matrix}
pred:
\begin{matrix}\mathrm{SEAF}&=&\frac{\sum(各串联补偿装置的额定补偿容量\times该串联补偿装置的可用时间)} { 该串联补偿系统的额定补偿容量\times统计期间}\&=&\mathrm {\frac {\sum(Q_N\times AH)}{Q_N\times PH}\times100%} \end{matrix}
正常的CDM为1,但是实际上代码会报错。
问题定位: https://github.com/opendatalab/UniMERNet/blob/main/cdm/modules/latex2bbox_color.py#L206
这里会将检测有中文的公式讲所有的\mathrm替换为\text。问题来了,\mathrm里面包括了latex,换成\text 语法就错了
场景2: 某些latex公式会因为分词失败,导致指标计算有异常
例子:
gt: \sum_{\begin{array}{c}m,n>0\end{array}}x^{m}y^{n}=\frac{xy}{(1-x)(1-y)}.
pred: \sum_{\begin{subarray}{c}m,n>0\end{subarray}}x^{m}y^{n}=\frac{xy}{(1-x)(1-y)}.
问题定位:https://github.com/opendatalab/UniMERNet/blob/main/cdm/modules/tokenize_latex/tokenize_latex.py#L40
CDM采用了katex AST来做tokenize,而katex的parser不支持subarray
场景3: 若latex不含显示多行环境,如array/matrix,会自动将多行降级为单行
例子:
gt: \begin{array}{r}
\displaystyle \int_{0}^{\infty} \left( x - \frac{x^3}{2} + \frac{x^5}{2 \cdot 4} - \frac{x^7}{2 \cdot 4 \cdot 6} + \cdots \right) \
\left( 1 + \frac{x^2}{2^2} + \frac{x^4}{2^2 \cdot 4^2} + \frac{x^6}{2^2 \cdot 4^2 \cdot 6^2} + \cdots \right) dx.
\end{array}
pred: \int_0^\infty\left(x-\frac{x^3}2+\frac{x^5}{2\cdot4}+\cdots\right)\\left(1+\frac{x^2}{2^2}+\frac{x^4}{2^2\cdot4^2}+\frac{x^6}{2^2\cdot4^2\cdot6^2}+\cdots\right)dx.