离线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 buttonself.MathMLButton = QPushButton('LaTex2MathML|复制为MathML', self)self.MathMLButton.setEnabled(False)# self.MathMLButton.clicked.connect(self.returnSnip)self.MathMLButton.clicked.connect(self.mathml)# Create LaTex buttonself.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 = imgself.returnSnip(self.img)@pyqtSlot()def mathml(self):math = latex2mathml.converter.convert(self.text)pp.copy(math)@pyqtSlot()def latex(self):result = self.textpp.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