【第三方插件】公式摘录识别Latex|imagetotex 公式Html渲染,配合 Markdown插件使用 #Ver.1.0.3 已获官方签名##

讲在最前面

1.0.0的设想 之前,我在这里面发过帖子:https://bbs.marginnote.com.cn/t/topic/23926 , 寒假又是比较空闲,就琢磨着开发一下插件。不得不说,MN插件开发比较难上手,这里也十分感谢 @ourongxing 的ohmymn,它基本上已经将框架搭建好了,开发插件已经不需要花很多时间在UI设计以及事件接收上,其次它的调试和打包做得也十分人性化,如果有意向尝试一下的也可以去试试OhMyMN的模板。 imagetotex这个插件就是将图片转换成latex。需要输入mathpix的API ID和API KEY。我那时候买的价格是1美元(免费一千次/一个月,相比于普通50次,学生100次来说已经够用了)不知道何时涨价到了20美元。确实离谱了一点点!如果真的有很多同学需要用到latex,我考虑的是添加另外两种方式:
  1. 使用自建服务,但是由于开源的Latex-OCR真的很少(就是那些给出权重文件的),因此我在尝试这些训练模型后,找到比较好的就只有:https://github.com/kingyiusuen/image-to-latex。
    大家可以前往自建的 image-to-latex 去感受一下,基本上只能识别单行公式或者两行公式。

  2. 使用讯飞的api,它是免费申请并且也拥有很多次请求机会。不过我试了一下,与mathpix也差了很大一截。

1.0.1 1.0.1应该是最终版本,感觉大家对于latex插件需求不高,目前是配合[markdown插件](https://bbs.marginnote.com.cn/t/topic/7280)实现可视化。
1.0.2 1.0.1不是最终版本,1.0.2更新了一个免费的API(讯飞API,它的申请方式会在下方说明),但是基于目前MN3开放的API有限(也有可能是我TS开发能力有限),我将一部分操作放在了我的云服务器上,如果您不介意您的APIKey,APPID以及APISecret发送到我的云服务器可以进行使用。虽然这个操作会对暴露你的密钥(仅向我),但是作为MN3运营团队的一员我保证不会泄漏任何信息,自己也不会存储这些信息;其次,目前讯飞的公式识别应该是不会收费的,超过限额只会停用或者是需要通过身份证认证申请提额,不会造成经济的损失;再次也可以联系讯飞支持区重置密钥。

1.0.3支持复制到剪贴板,并且支持增加前缀后缀。

:warning::现在MN3的一个html接口仍然存在问题,因此在未更新新版本之前需要开启纯文本输出,否则会出现闪退,gif图片使用的是修复api后的demo版本。

如何申请API密钥

Mathpix

里面有截屏2022-02-09 21.58.42,由于我已经买过,所以也有点忘记了,应该是需要用信用卡(如果你有paypal也可以用paypal),价格的话根据图片所示一次性配置费上涨到了19.99美元,原本是1美元。
购买后,右上角登录,控制台中在OCR API Organizations中可以找到对应的App ID和App Key。每月限1000次免费,之后计费,并且似乎是超额后还能使用,下个月会给你寄账单。对于一般的学生而言1000次够用。

讯飞

创建一个自己的账号,然后进入上方网页中的服务管理,它会让你创建一个应用。


创建完后可以找到,每日限500次,一定够用,精度不高。
截屏2022-02-09 22.08.15

下载

:link: 插件下载链接

imagetotex_v1.0.3.mnaddon (10.9 KB)

使用方法(以Mathpix API为例)

  1. 填写API Key和API ID。注意:一定要在输入后按回车进行确认,这样配置才会保存!
    截屏2022-02-08 14.57.13

  2. 开启识别,自动表示为html格式,需要使用markdown插件进行代码修改;删除原图只支持合并卡片的操作,不支持单独制作卡片操作;纯文本输出即为1.0.0原有功能。
    :warning::现在MN3的一个html接口仍然存在问题,因此在未更新新版本之前需要开启纯文本输出,否则会出现闪退,gif图片使用的是修复api后的demo版本。
    :warning::如果同时有两个API,请保证仅开启一个“开启识别,避免出现识别两次的情况”
    注:不知道为什么有时候会有延迟
    :warning::相比于Mathpix,讯飞精度还是有待提高。
    Mathpix识别
    20220208_152925
    讯飞识别
    1

工作流程

首先,我要说一下开启插件后怎样才算进行一次调用。

只有在选区摘录(矩形框摘录、自由选区摘录)的时候才会调用接口进行latex识别。使用文本摘录不掉用接口。

也就是说,如果你有一个已经识别了的PDF,或是在用OCR Pro则可以用文本摘录摘录文本,然后用摘录框摘录数学公式,mathpix应该也支持识别化学等一堆公式。
以下是我的操作示例:
20220210_193417

5 个赞

好像有个 appendhtmlcomment 的方法,你 tag 和 markdown 插件 tag 一样就行,不过我没试过。markdown 插件的逻辑可以先去了解一下。

1 个赞

作者辛苦了!app id和key是账户邮箱和密码吗?

是用的mathpix的api,和账号密码登录mathpix snipping不一样,https://mathpix.com/ocr。
原本是1美元就能开通,现在似乎要19.99美元。
现在我还在找一个便宜点的api,感觉讯飞的有点不大行,百度的又是限总共1000次。

我加了一个免费的讯飞API,有兴趣可以去看看。然后现在的MN3版本(iOS和MacOS)都有一个接口没有修复,等到开发者更新新版本后才可以关闭“纯文本输出”这个按钮。

好的,太牛啦,我现在就去试试

识别后得到的是一个表达式,然后要再复制粘贴进markdown里吗? :yum:

现在是需要自己去复制的,由于mn3开放的一个接口有问题,已经反馈给开发者并且在最新的测试版本里面修复了,你可以看看倒数第二个动图,那是关闭了纯文本输出后的效果

好的大佬:stuck_out_tongue_closed_eyes:现在重启一次mn就要重新输入id和key(*゚ロ゚)
您是说再下个版本会直接显示而不用再复制粘贴了吗?很期待
但是讯飞识别率太低 mathpix一个月20美元又确实太贵了:rofl:
希望mn官方以后能出个更好的latex识别吧:thinking:

不好意思哦,我才发现这个问题,已经修改好了。是的,我也发现讯飞的拉胯,似乎是对单行简单公式的精度还可以。我向开发者建议了使用Myscript的SDK(应该是按套付费,所以如果采取我感觉是买断制吧),我也尝试了它的Demo感觉可以尝试,会和开发者介绍的。Myscript就是APP Store里的Nebo和Myscript Calculator的开发商,Notability也用了它的SDK。

谢谢作者!这个插件虽然目前处理latex还是有点麻烦但是已经迈出了一大步,感谢:heart:

我下了这个插件,软件说这个插件,没有官方认证过,就不能放在插件库里啊?这个该怎么处理?

要开启这个开关,我应该会在MN3更新后去申请签名,因为现在还是必须开启纯文本输出(有一个接口需要开发者修复)。

这个买api是每个月要19.9$元吗,还是一次19.9买断的终身Api

终身买断,每月1000次,只不过以前只要1美元的。

就是信用卡这个一般学生没有啊,哎,谢谢你的回复

是的,我也是向父母要的那个时候。

修复API的下个版本大概什么时候更新呢

以及插件开发有什么doc吗

最近有点忙,所以回复慢了,插件这一块可以关注一下ourongxing,GitHub - mnaddon/ohmymn: MarginNote Addon Control Panel and Development Framework. ,现在MarginNote API的注释算是写完了,但是OhMyMN的API应该还需要时间,由于ourongxing和我都有毕设,所以推迟了一下计划。
API的修复是下个小版本,但是我也还不知道什么时候更新。
插件开发的文档也还需要时间去写,不过已经在计划内并且已经开始写了。