离线LaTex公式识别V1.0开发
离线LaTex公式识别V1.0开发
前期的工作
请看博文-离线LaTex公式识别V0.9开发
已完成的内容
- LaTex公式识别的GUI。
- 支持将LaTex复制为MathML。
- 支持读取剪切板的图片。
部分UI换成iconfont下载的一些元素。
读懂pyqt的一些代码。基本实现了万能君的软件库的所有功能。
开发过程暂时告一段落。
主要添加的代码
初始化方面
# 初始化剪切板监听
self.clipboard = QApplication.clipboard()
# 初始化剪切板监听(默认不开启)
self.clipboard.dataChanged.connect(self.on_clipboard_data_changed)
self.tempField.setRange(0, 1)
self.tempField.setSingleStep(0.1)
self.checkbox = QCheckBox("Enable listening to clipboard | 使能读取剪切板", self)
self.checkbox.setChecked(True) # 设置初始状态为选中
self.checkbox.stateChanged.connect(self.on_checkbox_change)
# Create retry button
self.MathMLButton = QPushButton('LaTex2MathML|复制为MathML', self)
self.MathMLButton.setEnabled(False)
# self.MathMLButton.clicked.connect(self.returnSnip)
self.MathMLButton.clicked.connect(self.mathml)
# Create LaTex button
self.LaTexButton = QPushButton('LaTex_Copy|复制为LaTex', self)
self.LaTexButton.setEnabled(False)
self.LaTexButton.clicked.connect(self.latex)
函数方面:
def on_checkbox_change(self, state):
if self.checkbox.isChecked():
self.clipboard.dataChanged.connect(self.on_clipboard_data_changed)
else:
self.clipboard.dataChanged.disconnect(self.on_clipboard_data_changed)
def on_clipboard_data_changed(self):
# 检查剪切板中是否有图像数据
clipboard = QApplication.clipboard()
mime_data = clipboard.mimeData()
if mime_data.hasImage():
# 从剪切板获取图像数据
qimage = mime_data.imageData()
img = Image.fromqimage(qimage)
# img = ImageQt.fromqimage(qimage)
self.img = img
self.returnSnip(self.img)
@pyqtSlot()
def mathml(self):
math = latex2mathml.converter.convert(self.text)
pp.copy(math)
@pyqtSlot()
def latex(self):
result = self.text
pp.copy(result)
GitHub工程见Pix2Text-GUI
删除内容
公式识别软件,不是刚需,之前的版本占用了8G的内存,其中torch占用3个G(GPU版本),模型2个多G、属实是本末倒置。因此本版本删除了Nougat、Texify,以节约工具占用的存储空间。
尽管Pix2Text在印刷体的识别精度某些程度上是不如Nougat、Texify的,但是它支持手写体公式的识别,此外模型也是比较小的,不到200MB。
经过瘦身后的工具占用空间1.2G。
尽量的在瘦身。
使用案例
印刷体
手写公式
下载地址
链接:https://pan.quark.cn/s/4f49a9abaa85
提取码:UvM1