一起来摸鱼,拿Matlab剁手的那种

1. 前言

西安疫情以来总共做了20次核酸,今天是居家的第26天,这让人不得不想起两年前摸鱼时为武汉、祖国加油的场景:MATLAB 爬取天气预报数据。希望下周可以解封吧。

被困家里,不知不觉又开启了摸鱼模式…

事情的经过是这样的,大概一个半月前碰到免费办信用卡还送礼物的那种活动,为了那份吸引人的礼物,很自然的办了卡。当时我就立马想起,很快啊,终于可以做两年前办不到的事情:申请MathpixOCRAPI;另外,可以与先前的文字识别工具(手把手教你,一个案例学会用Matlab App Designer设计文字识别工具(附源码))相结合,开始造新的轮子了!

想法归想法,现实中说翻车就翻车,一顿骚操作之后…

Inked2_LI

原来可以花1$就可以申请到MathpixOCR API,还免费赠送1000/500调用次数,现在需要20倍的价格,不得不说Mathpix这一波韭菜割得让人心痒痒。

45
一次性设置费用调用API次数费用

现在已经没有每月免费调用1000/500次的优惠了,已经根据上个月调用次数,例如在1到10万次,API每次被调用的费用是0.004$,下个月1号进行结算费用这种模式,不清楚后续API一次性设置费用会不会涨价,不过为Mathpix这样一款优秀的工具付费也是值得的,大家觉得呢?

拿到手的MathpixOCR API Keys是这样的:

7

关于更多Mathpix的信息可以阅读以下相关的推文

  • 神器mathpix收费了?教你轻松调用API获得每个月500次免费识别!https://zhuanlan.zhihu.com/p/380433944
  • 调用Mathpix API 自制Mathpix snipping (每月1000次免费!!!)https://blog.csdn.net/weixin_44984664/article/details/105242426

2. ReadWords工具

这次工具改版,主要是在上一次文字识别工具基础上增加公式识别的功能,实现方法上利用标准的MVC设计模式,将界面与逻辑分离,而不像手把手教你,一个案例学会用Matlab App Designer设计文字识别工具(附源码)中介绍的把所有实现封装成一个类,主要界面如下所示

11_1
文字识别公式识别

其次,增加了一些快捷键功能:

快捷键

其中公式识别演示如下:

1

更多工具使用介绍请移步以下sph(ID:export/UzFfAgtgekIEAQAAAAAAmVUU0atXYwAAAAstQy6ubaLX4KHWvLEZgBPEy4MoXjRvfv38zNPgMJqlU3VSiFct2sTy3HkDzpSz)

3. 关于公式识别工具的实现

接下来我想简单聊一聊公式识别功能的实现,这个主要是通过调用MathpixOCR API实现,需要两个主要的参数:App IDApp Key,待识别的图像通过base64编码,作为API的请求参数。

通过参考【调用Mathpix API 自制Mathpix snipping (每月1000次免费!!!)https://blog.csdn.net/weixin_44984664/article/details/105242426】给出的Python代码

import os
import base64
import requests
import json

env = os.environ
default_headers = {
    'app_id': env.get('APP_ID', 您的App ID),
    'app_key': env.get('APP_KEY', 您的App Key),
    'Content-type': 'application/json'
}

service = 'https://api.mathpix.com/v3/latex'


def image_uri(filename):
    image_data = open(filename, "rb").read()
    return "data:image/jpg;base64," + base64.b64encode(image_data).decode()


# Call the Mathpix service with the given arguments, headers, and timeout.
def latex(args, headers=default_headers, timeout=30):
    print(json.dumps(args))
    r = requests.post(service,
                      data=json.dumps(args),
                      headers=headers,
                      timeout=timeout)

    return json.loads(r.text)


def convert():
    r = latex({'src': image_uri(r"49.png"), 'formats': ['latex_simplified'], 'ocr': ['math', 'text']})
    print(r['latex_simplified'])
    latex1 = r['latex_simplified']
    return latex1


if __name__ == '__main__':
    convert()

可以很容易的用MATLAB实现,请求头中用weboptionsHeaderFields属性来设置,对于其他请求参数,如src, formats,可以放到一个结构体中,作为参数,和weboptions一起传入webwrite函数,最后获取MathpixOCR API响应的内容。

options = weboptions('RequestMethod', 'post');
options.HeaderFields = {'Content-Type', 'application/json'; ...
    'app_id', appID; ...
    'app_key', appKey};

以官网上提供的一个例子为例,

limit

formatslatex_simplified参数时,可以得到如下的响应结果

9

4. 工具获取

工具可以免费获取并使用,只需在gzh后台回复关键词:ReadWords_V1.0.1

需要注意的是:

  • 文字识别和公式识别是可以独立使用的,不想申请MathpixOCR API的朋友们,可以只使用百度 API,每个月有上千次的免费调用,这样的羊毛我们必须得薅…

  • 工具不会将你的API keys发送给除MathpixOCR API服务器之外的任何人(目前实现的原理是:当首次填写API keys时,工具会将API keys 离线保存到当前目录,文件名为appidkey.mat百度 API对应的是apikey.mat,只不过工具对上述文件进行了系统隐藏,显式查看需要用到命令: !attrib -s -h 文件名。)

  • 提供了三种安装方式:(分别对应文件夹mlappinstall, freeinstallwebinstall

    1. Matlab小程序安装,mlappinstall文件
    2. 工具免安装exe,条件是目标计算机上安装了R2021b版本的Matlab Runtime
    3. 工具安装exe,需要联网自动下载Matlab Runtime,自动安装工具。

5. 结语

一直以来,我比较喜欢利用MVC的设计模式构建GUI/APP工具,虽然初次构建要比用guide/appdesigner设计器构建速度慢,也不是那么直观,但随着界面、逻辑越复杂化,越能体现出这种模式的优点。当然我们自己设计工具,哪种方法便利、顺手就用哪种。

这次通过将先前的文字识别工具:手把手教你,一个案例学会用Matlab App Designer设计文字识别工具(附源码) 重新用MVC模式重构,让我对这一模式有了新的认识和理解,也算是这两天摸鱼的收获吧。

工具中新增加的快捷键功能具有一定的局限性,即只能将焦点作用在uifigure上时才会生效,不能监听全局的键盘按键,这也是ReadWords工具后续版本优化的主要方向,也是难点,因为当前MATLAB的GUI/APP还没有实现这样的功能,或许需要借助其他语言帮助实现。

今天的分享就到这里了,喜欢这款工具的朋友们不妨下载下来试着玩一玩,有需要改进的地方请留言,祝大家周末愉快,希望国内疫情快快结束,祖国加油!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值