File size: 4,000 Bytes
3ba6a9d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
ae1d809
 
 
 
3ba6a9d
ae1d809
 
 
7bc81d5
ae1d809
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1271dfc
 
 
 
ae1d809
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3ba6a9d
ae1d809
 
 
 
 
 
 
 
 
 
 
 
3ba6a9d
ae1d809
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
---
title: FastCDM
emoji: ⚡️
colorFrom: blue
colorTo: indigo
sdk: docker
pinned: false
short_description: High-performance LaTeX formula evaluation tool using KaTeX.
tags:
- latex
- formula-recognition
- evaluation
- katex
---

<div align="center">

# ⚡️FastCDM

[**[GitHub Repo]**](https://github.com/SoMarkAI/FastCDM) | [**[HuggingFace Spaces]**](https://huggingface.co/spaces/SoMark/FastCDM)

<p>
  <a href="https://pypi.org/project/fastcdm/">
    <img src="https://img.shields.io/badge/pypi-v0.1.1-blue" 
         alt="PyPI package version">
  </a>
  <a href="https://www.python.org">
    <img src="https://img.shields.io/badge/python-3.8%2B-blue" 
         alt="Python versions">
  </a>
  <a href="#">
    <img src="https://img.shields.io/badge/license-Apache%202.0-blue"
         alt="GitHub license">
  </a>
</p>

</div>

## 🚀 简介

[CDM](https://github.com/opendatalab/UniMERNet/tree/main/cdm) 通过将预测和真实的LaTeX公式渲染为图像,然后使用视觉特征提取和定位技术进行精确的字符级匹配,结合空间位置信息,确保了评估的客观性和准确性。

**FastCDM** 旨在解决性能问题。作为原版 [CDM](https://github.com/opendatalab/UniMERNet/tree/main/cdm) 的高性能优化版本,FastCDM采用浏览器的Katex渲染引擎,而非传统的Latex编译,速度得到了极大的提升。

### 🎯 项目目标

FastCDM的核心目标是**在训练过程中提供便捷的使用体验**,帮助推动公式识别任务的进步。我们致力于:
- 提供简单易用的API接口,方便在训练循环中集成评估
- 支持实时评估和批量评估两种模式
- 提供训练过程中的评估指标可视化工具

### 为什么选择 FastCDM?

1.  **极速性能**:基于KaTeX的渲染引擎,相比传统LaTeX编译流程快数十倍
2.  **简化部署**:无需安装复杂的LaTeX环境(ImageMagick、texlive-full等)
3.  **准确评估**:采用字符检测匹配方法,避免传统文本指标的不公平性问题
4.  **持续优化**:对CDM符号支持进行补充完善,并持续迭代改进
5.  **易于集成**:提供统一的API接口,方便集成到各种训练框架中,未来将集成PyTorch、Transformers等多个主流训练框架

### ⚠️ 注意

虽然 KaTeX 跑得比八卦记者还快,但它毕竟是为了 Web 优化的轻量级选手,无法做到对所有 LaTeX 诡异语法的 **100%** 支持。

对于绝大部分的常规公式,它完美胜任。这是一个合理且能走得长远的技术选型。

可以在这里查阅 KaTeX 的支持范围:🔗 [KaTeX Support Table](https://katex.org/docs/support_table)

---

## 使用方法

### 安装

需要提前安装`node.js``chromedriver`* `node.js`的安装可以参考[这里](https://nodejs.org/)。
* `chromedriver`的安装可以参考[这里](docs/chromedriver_installation.md)。

```bash
pip install fastcdm
```

### 快速开始

```python
from fastcdm import FastCDM

chromedriver_path = "driver/chromedriver"

# 初始化 FastCDM 评估器
evaluator = FastCDM(chromedriver_path=chromedriver_path)

# 评估
cdm_score, recall, precision = evaluator.compute(gt="E = mc^2", pred="E + 1 = mc^2", visualize=False)

# 评估,并可视化
cdm_score, recall, precision, vis_img = evaluator.compute(gt="E = mc^2", pred="E + 1 = mc^2", visualize=True)
```

### 交互Demo

我们提供了一个Gradio开发的可视化Demo,您可以在[HuggingFace Spaces](https://huggingface.co/spaces/SoMark/FastCDM)中尝试使用。也可以本地启动:

```bash
python3 scripts/app.py
```

## 贡献与反馈

我们欢迎所有形式的贡献,包括但不限于:
- 提交问题报告
- 建议改进
- 提交代码变更(请先开issue讨论)

请通过项目的[issues](https://github.com/SoMarkAI/FastCDM/issues)与我们联系。

---

## 协议

本项目基于 Apache 2.0 协议开源。您可以在遵守协议条款的前提下自由使用、修改和分发本项目的代码。