LaTeX
在上世紀(jì)80年代初期,由美國計算機(jī)學(xué)家萊斯利·蘭伯特開發(fā)的LaTeX邑闲,可以生成復(fù)雜表格和數(shù)學(xué)公式戳寸,得到高印刷質(zhì)量的科技和數(shù)學(xué)類文檔書籍等。目前在學(xué)術(shù)圈和各大出版商都廣泛的使用這種系統(tǒng)來排版努释、編輯科學(xué)文檔碘梢,尤其是數(shù)學(xué)論文、書籍等伐蒂。數(shù)學(xué)公式的編輯排版得到了良好的解決煞躬,提高了印刷質(zhì)量。目前LaTeX的主流編輯器有Texworks逸邦、TextStudio恩沛、WinEdt等,當(dāng)然也可以使用Visual Studio Code缕减、Sublime Text雷客、Atom等文本編輯器配合各自的插件搭建LaTeX編輯環(huán)境。如果有志于學(xué)術(shù)研究烛卧、經(jīng)常編寫論文佛纫、學(xué)術(shù)海報、雜志和書籍的話总放,建議可以了解一下呈宇。快速入門LaTeX也不是一件困難的事情局雄,網(wǎng)上也有大量的資料可查甥啄。
但隨著互聯(lián)網(wǎng)的發(fā)展,在頁面中展示數(shù)學(xué)公式還存在若干的問題炬搭;為解決在瀏覽器中渲染數(shù)學(xué)公式蜈漓,先后出現(xiàn)了MathJax和Katex穆桂。它們的數(shù)學(xué)公式代碼標(biāo)記大致相同,均可實現(xiàn)在瀏覽器顯示出LaTeX格式的公式融虽∠硗辏可能大家都知道,現(xiàn)在很多的自媒體和博客等后臺都有圖文編輯功能有额,很多支持markdown(比如技術(shù)博客CSDN般又,知乎還支持公式編輯);但是也有很多平臺不支持公式的編輯和渲染巍佑,比如公眾號就不支持茴迁。因此,這些平臺上的數(shù)學(xué)內(nèi)容都是圖片萤衰,用起來...誰用誰知道...堕义。目前我的公眾號中,數(shù)學(xué)類的圖文都是通過Visual Studio Code或Sublime Text配合相關(guān)插件來編寫markdown脆栋,然后將其中的公式轉(zhuǎn)化為圖片倦卖,再粘貼到公眾號圖文編輯器。目前的內(nèi)容平臺筹吐,貌似沒怎么考慮到這種需求糖耸。
雖然TeX格式的數(shù)學(xué)公式編寫和渲染都已解決,但離廣泛使用還很遠(yuǎn)丘薛,原因很多。個人覺得邦危,有一個很大的原因就是公式編寫對大多數(shù)人來說洋侨,還是陌生+繁瑣,我們的習(xí)慣是手寫倦蚪。這也是數(shù)學(xué)在線教育希坚、網(wǎng)絡(luò)數(shù)學(xué)內(nèi)容傳播的一個痛點,而且圖片格式的數(shù)學(xué)公式是不利于百度陵且、Google等搜索引擎的檢索的裁僧。那有沒有什么好的辦法呢?有慕购,公式識別聊疲!請看下文。
公式識別
數(shù)學(xué)公式的識別重要性不言而喻沪悲,同時公式的識別(印刷體的識別获洲、手寫體的識別)要比文字的識別要困難的多。目前谷歌殿如、百度贡珊、阿里巴巴等互聯(lián)網(wǎng)巨頭的AI項目都是通用AI項目最爬,均沒有公式識別。幸好门岔,還是有些人在努力的爱致,而且還不錯。比如寒随,接下來主要介紹的Mathpix糠悯。
使用Python調(diào)用Mathpix的API,只是每月只能免費調(diào)用1000次牢裳,超過一千是收費的逢防;當(dāng)然還需要登錄,完成注冊蒲讯,獲取“app_key”忘朝,國內(nèi)用戶請Email聯(lián)系:support@mathpix.com。下面是調(diào)用代碼判帮,更多細(xì)節(jié)可參其考官網(wǎng)局嘁。
import urllib.request as Request
import urllib.parse as parse
import sys
import base64
import json
class math_formula_recognize:
def __init__(self):
self.mathpix_url = 'https://api.mathpix.com/v3/latex'
self.headers = {'User-Agent': "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.96 Safari/537.36",
'app_id':'XXXXX',
'app_key':'YYYYYYYYYY',
'Content-type': 'application/json'}
def get_Latex(self,image_path = 'test1.jpg'):
try:
image_uri = "data:image/jpg;base64," + str(base64.b64encode(open(image_path, "rb").read()))
data = {'url': image_uri}
data = parse.urlencode(data).encode('utf-8')
req = Request.Request(url = self.mathpix_url,headers = self.headers,data = data)
res = Request.urlopen(req).read()
print(res)
except Exception as e:
raise e
if __name__ == '__main__':
test = math_formula_recognize()
test.get_Latex()
除了通過API使用,還可在官網(wǎng)下載相關(guān)的轉(zhuǎn)化工具晦墙。
用戶體驗
什么時候公式識別能夠做到實時準(zhǔn)確的識別手寫體悦昵,同時完成渲染,那么會大大的助力網(wǎng)絡(luò)上數(shù)學(xué)內(nèi)容的豐富和交流晌畅。