从截图里面识别数字_手把手教你怎么用macOS 自带的Automator 做自己的OCR公式识别工具...

前言

因为平时会看一些文献,需要摘抄里面的公式做笔记,但是公式又多又长的时候,用手打latex就不是那么香了。而且有时候还会记不住latex语法,这可真是太为难胖虎我了。所以,像手打latex公式这么机械化的事情当然是要交给专门的工具去做啦,自己只用把心思放在学(zou)习(shen)上就好了。

本着折腾不止的精神,索性就自己做一个呗,而且还免费,而且的而且只需要有一些coding基础就可以完成,so easy的好不好。ps:这里使用的是python。pss:即便你是编程小白,我也都把代码贴出来了,基本上可以开盖即用。

【工具功能】:摁下相应的快捷键,截取文档公式,等一会儿会儿,latex公式就在你的剪贴板里了。就问香不香?终于不用手打了。


大致思路

  1. 先截屏,截取文献中的公式;
  2. 对截图进行OCR识别,得到latex公式,就可以放进自己的markdown文档里面,就大功告成了。
    (是不是很简单,全剧终 )

其实,要在macOS自带的自动化工具「Automator」里面实现这个「OCR公式识别工具」也是这样的思路,不过得先准备OCR公式识别的API,并写好python脚本。


API准备

1. API准备

这里使用的是mathpix,可以去官网申请API:

Mathpix Snip​mathpix.com
db783092ce0d0b389ab26037a46f4a1c.png

每个月有好多次的免费额度,如果是个人使用的话,完全够用,也不用花钱,省下一笔巨款 。

2. OCR 公式识别python脚本

按照官方文档调用API,写识别公式的python脚本。

官方文档​docs.mathpix.com

当然,你也可以使用我写好的脚本,将你的 app_idapp_key 填写到对应位置。

#!/usr/bin/env python
import sys
import base64
import requests
import json
import os
from argparse import ArgumentParser, RawDescriptionHelpFormatter
import pyperclip
​
​
def sendPic(file_path):
​
  image_uri = "data:image/jpg;base64," + base64.b64encode(open(file_path, "rb").read()).decode()
  headers = {"app_id": "YourAppId", 
              "app_key": "YourAppKey",
              "Content-type": "application/json"}
  r = requests.post("https://api.mathpix.com/v3/text",
              data=json.dumps({'src': image_uri, "format": ["latex_simplified"]}),
              headers=headers)
​
  res = json.dumps(json.loads(r.text), indent=4, sort_keys=True)
​
  return eval(res)["latex_styled"]
​
​
​
​
if __name__ == "__main__":
  parser = ArgumentParser(description=__doc__, formatter_class=RawDescriptionHelpFormatter)
  parser.add_argument("-i", dest="image", type=str, default=None, help="path to image file. Default None to use clipboard")
  args = parser.parse_args()
  image = args.image
​
  try:
    res = sendPic(image)
    print(res)
    pyperclip.copy(res)
  except Exception as e:
    pass

用Automator制作workflow

  1. 先新建一个项目,这里选择「快速操作」:

a303d62d7fc3416ef22573d0e6736ba1.png

2. 然后,按照之前所说的,先获取截图:

f444257ae2a6ff7a5e35386162f79719.png

3. 正常情况下,这个时候将截图传给刚才写好的python程序:

使用命令行启动刚才的python程序;此时的截图名为“Desktop.png”,通过命令行参数-i 传给python程序;不过,需要注意的是这个截图的路径不是“Desktop.png”,应该在前面加上你的用户路径。

a20743573b0783c80db3698fb55d1ffa.png

4. 测试:点击右上角的「运行」试试看这个workflow有没有问题。如果没有问题的话,你的截图里面的公式就已经在剪贴板里了。当然,你也可以在「运行shell脚本」后面加一个「显示通知」组件作为提示,不然,网络不好的时候,你也不知道什么时候能调用完API。

5. 设置快捷键:如果测试完毕都没有问题,可以在「系统设置-键盘-快捷键-服务」里面,找到刚才的workflow,并添加快捷键。

40c3373933ec724d66b63330cdf3a203.png
一定要自己动手试一试呀~如果你觉得这个小工具还有点意思的话,不如点个赞再走呀~
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值