hiroi-sora / Umi-OCR

OCR software, free and offline. 开源、免费的离线OCR软件。支持截屏/批量导入图片,PDF文档识别,排除水印/页眉页脚,扫描/生成二维码。内置多国语言库。
MIT License
27.63k stars 2.77k forks source link

希望数学公式能提供Markdown渲染预览 #323

Open Ward-zzZ opened 10 months ago

Ward-zzZ commented 10 months ago

如题,有些时候数学公式识别出来不一定正确,如果能提供MD预览,就可以快速在识别结果上修改

hiroi-sora commented 10 months ago

建议收到,之后会考虑

hiroi-sora commented 9 months ago

目前的前端框架支持简单Markdown渲染。但如果要支持latex语法渲染,我研究了一下,都要付出一定的代价。

方案1:

python使用 matplotlib 库将latex字符串渲染为图片,交给前端显示。 matplotlib 大小 16MB 左右。

方案2:

qml中加载一个web浏览器内核,通过 MathJax 等js库渲染网页,将网页嵌入软件面板中显示。qt的浏览器内核要 100MB 左右。

方案3:

python请求在线API服务,获取图片。无法离线使用。

方案4:

生成一个内置 MathJax 库的网页html文件,调用系统浏览器打开渲染。基本无需占用存储空间,但是操作较繁琐,而且不能实时预览更新。

方案5:

使用 LaTeXML 等命令行工具将字符串转为xml文本。但是该工具的安装非常麻烦,且可能无法绿色化(提取出能单独运行的exe)。


总之,我暂时没有找到一个能平衡空间占用与性能的方案。如果各位有建议可以提。

realDGD commented 9 months ago

总之,我暂时没有找到一个能平衡空间占用与性能的方案。如果各位有建议可以提。

天若的开源版本没有渲染的功能,但是闭源有😂在识别出来的那一刻才进行渲染,而不是实时渲染可以减少空间占用和性能吗

hiroi-sora commented 9 months ago

@realDGD

感谢你提供的线索。我出于学习的目的 反编译了天若OCR闭源版本,发现它是采用第2种方案。

首先,它的前端界面库 DSkin 原生支持 Html5+CSS3 ,允许直接显示html格式的公式。

然后,首次运行时下载一个 MathJax.js 。通过该js库,将 Latex 格式的文本转变为 html 元素,将该元素更新到软件界面上。

image

hiroi-sora commented 9 months ago

image

柳暗花明又一村!我初步实现了公式渲染。

具体原理是,借助 hfmath.js 这个项目,用js脚本将 latex 字符串转变为 svg 字符串。然后在qml中渲染svg图像。

全程只使用qml引擎自带的js解释器,无需引入额外组件,离线运行,支持实时刷新。

不足:

  1. 只支持纯latex公式,不支持混合文本和公式的Markdown格式。
  2. 只支持显示图像,无法用鼠标划选公式。

综合效果没有天若的 MathJax.js 方案那么好,但至少能用😂

realDGD commented 9 months ago
  1. 只支持纯latex公式,不支持混合文本和公式的Markdown格式。

感谢开发者。

我在用pix2text serve中地Mixed模式会碰到将公式识别成普通文本的问题,我觉得这种东西还是专品专用比较好。

开发者是否可将这个功能单独提出来,采取不同的快捷键的方式分别进行文字识别,公式识别和混合识别。我记得pix2text项目是有cnocr,cnstd两个分支。

另外,可能是我一开始用的是天若OCR养成了使用习惯,对于截图OCR的功能我更倾向于文本识别,表格识别,公式识别的划分,而不是采用mixed。同时,该软件截图功能也很全(画图,序号,马赛克,撤销与重做,录制等等),加上翻译功能,我完全不用再安装其他的截图等软件,可以说是All in One。但是天若从2022年后就没更新了,发邮件也没人回复,很多服务的接口都没有(虽然可以自己写,但无奈实在是不会C#)。

我看目前支持本地公式OCR的面向用户的项目其实挺少的(也有可能是这个功能的使用对象比较小众,最近挺火的PixPin也没人在request提这个功能。),感觉这个方向很不错。

RarityBrown commented 8 months ago

纯公式的情况下也许可以考虑 CortexJS,目前 SimpleTex 正在使用的方案,不仅支持实时渲染预览,还支持一定程度的 wysiwyg 公式编辑。

ztayty commented 4 months ago

如题,有些时候数学公式识别出来不一定正确,如果能提供MD预览,就可以快速在识别结果上修改

OpenDataLab 开源的这个MinerU项目可以很好地把PDF里的公式提取出来,专门为大模型语料从复杂文档(PDF、网页、电子书)中提取开发的工具,效果挺好,速度也很快,需要的话,可以看看:https://github.com/opendatalab/MinerU