mathpix API python代码实现(最新版本)

mathpix这个软件作为公式识别工具一直很火。不过网上现在对于其API的使用教程,有些已经过时,使用的是很久以前的接口了。
笔者在阅读了官方的API说明之后,就“印刷体”的API进行了python代码实现(还有一个是“手写体”,原理一致,不过并不常用)
导包:

#!/usr/bin/env python
import sys
import base64
import requests
import json
import  os
import time
import  re

主题部分:

start = time.time()

picture_path = "pdf_picture/" #想要转化的图片文件夹的路径
list_img_test = os.listdir(picture_path)
list_img_test.sort(key=lambda x : float(re.findall(r"\d+\.?\d*",x)[0]))

list_one = []  #用于保存转化后的每一个latex代码

for i in list_img_test:
    file_path = os.path.join(picture_path , i)
    image_uri = "data:image/jpg;base64," + base64.b64encode(open(file_path, "rb").read()).decode()
    r = requests.post("https://api.mathpix.com/v3/text",
        data=json.dumps({'src': image_uri}),
        headers={"app_id": " ", "app_key": " ",
#这里写上自己的app_id ,app_key
                 "Content-type": "application/json"})
    list_one.append(eval(json.dumps(json.loads(r.text), indent=4, sort_keys=True))["text"])

end = time.time()

print("time_for_processing:"+ str(end-start))

下面是部分的识别结果

mathpix API python代码实现(最新版本)_第1张图片

将得到的latex结果输出到txt中,进行保存:

import datetime

time_stamp = datetime.datetime.now()
time_stamp
#使用时间作为文件名的一部分,那么就不会重复了!
result_test_txt = 'result ' + str(time_stamp) + ".txt"
fileObject = open(result_test_txt, 'w')

for ip in list_one:
    fileObject.write(ip)
    
    print(list_one)                #不知道为什么,直接复制输出结果,在latex是会报错的,但是输出到txt文件中,再复制一下,就没事

    #这里加入latex中的换行符\\,这样可以直接复制到latex中
    fileObject.write('\\')
    fileObject.write('\\')
    fileObject.write('\n')
fileObject.close()
print("完成")

你可能感兴趣的:(ocr,python,api,图像识别)