国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于微信小程序的可手寫算式計(jì)算器設(shè)計(jì)

2020-07-25 04:41:02宋汝良施運(yùn)淵
江蘇科技信息 2020年16期
關(guān)鍵詞:字符識(shí)別計(jì)算器手寫

宋汝良,施運(yùn)淵

(上海夢(mèng)創(chuàng)雙楊數(shù)據(jù)科技股份有限公司,上海 200333)

0 引言

隨著人們?cè)絹碓阶非笊畹谋憷?,普通?jì)算器已無法滿足人們的需求。手寫計(jì)算器允許用戶像在紙上一樣在自己的移動(dòng)電話或平板電腦上寫不同的公式,并獲得計(jì)算結(jié)果。由于手寫計(jì)算器學(xué)習(xí)成本低,操作簡單,它為人們的學(xué)習(xí)、工作和生活帶來了極大的便利。

1 項(xiàng)目背景

可手寫算式計(jì)算器首先要求能對(duì)手寫的文字、數(shù)字及符號(hào)進(jìn)行識(shí)別。光學(xué)字符識(shí)別技術(shù)為這一需求提供了條件。光學(xué)字符識(shí)別(Optical Character Recognition,OCR)是指通過電子設(shè)備(例如掃描儀或數(shù)碼相機(jī))檢查打印在紙上的字符,通過檢測深色和明亮圖案確定形狀,然后將形狀轉(zhuǎn)換為使用字符識(shí)別方法的計(jì)算機(jī)文本[1]。手寫字符識(shí)別一直是模式識(shí)別領(lǐng)域研究的前沿領(lǐng)域,在圖像處理中對(duì)手寫文檔的OCR有很大的需求。研究人員已經(jīng)提出了許多用于字符識(shí)別的方法,歷史上字符識(shí)別系統(tǒng)已經(jīng)發(fā)展了大致3個(gè)時(shí)代[8]。最早的字符識(shí)別器出現(xiàn)在20世紀(jì)40年代中期,直到1980年的研究都受到強(qiáng)大的計(jì)算機(jī)硬件和數(shù)據(jù)采集的推動(dòng)。然而,字符識(shí)別研究主要集中在不使用任何語義信息的形狀識(shí)別技術(shù)上。1990年后,字符識(shí)別系統(tǒng)的真正進(jìn)步是在不斷增長的信息技術(shù)的支持下使用新的方法和開發(fā)工具實(shí)現(xiàn)的。20世紀(jì)90年代初期,圖像處理和模式識(shí)別技術(shù)與人工智能方法有效結(jié)合。如今,除了功能更強(qiáng)大的計(jì)算機(jī)和諸如照相機(jī)、掃描儀和電子平板電腦之類的精確電子設(shè)備外,研究人員還有效利用了諸如隱馬爾可夫模型、神經(jīng)網(wǎng)絡(luò)等方法。市面上也出現(xiàn)了各種開源OCR庫,其中的Tesseract非常強(qiáng)大,它可以支持包括中文在內(nèi)的60多種語言的識(shí)別,并且可以由用戶自定義字體。我們將手寫字體作為一種自定義字體,便可以利用Tesseract庫對(duì)手寫文本進(jìn)行識(shí)別。

在對(duì)圖像中的文本進(jìn)行識(shí)別前,使用閾值分割[2]等方法對(duì)圖像進(jìn)行處理時(shí)常用的手段。閾值化是最簡單的圖像分割方法,閾值可用于從灰度圖像中創(chuàng)建二進(jìn)制圖像。二值圖像還可通過分割方法由彩色圖像生成。分割是將源圖像中的每個(gè)像素分配給兩個(gè)或更多類的過程。閾值分割技術(shù)中,常用的閾值選取方法包括灰度直方圖峰谷法[3]、最小誤差法[4]、Otsu法[5]、最大熵自動(dòng)閾值法[6-7]等。其中Otsu法被認(rèn)為是閾值選取的最優(yōu)方法之一。

網(wǎng)絡(luò)時(shí)代的來臨為人們的生活帶來了極大便利,手機(jī)等移動(dòng)端產(chǎn)品越來越普及。微信作為智能終端下跨平臺(tái)的即時(shí)通信工具,具有十分龐大的用戶群體[9]。為了進(jìn)一步方便用戶體驗(yàn)手寫計(jì)算器的便利,我們以微信小程序的形式呈現(xiàn)最終的程序。微信小程序是一種無須下載即可使用的應(yīng)用程序,它基于微信這一廣泛使用的應(yīng)用程序,以類似于網(wǎng)頁應(yīng)用的形式呈現(xiàn)給用戶。用戶可以通過掃描二維碼或在微信中進(jìn)行搜索來打開應(yīng)用程序。

2 項(xiàng)目介紹

本項(xiàng)目是一個(gè)微信小程序,可用于識(shí)別和計(jì)算手寫數(shù)學(xué)公式。進(jìn)入小程序后,有兩個(gè)界面:識(shí)別界面和個(gè)人信息界面。在識(shí)別界面中,用戶可以選擇直接手寫數(shù)學(xué)公式進(jìn)行計(jì)算,也可以上傳照片進(jìn)行識(shí)別。編寫公式時(shí),如果輸入有誤,則可以使用“橡皮擦”功能擦除書寫的部分或選擇清空畫布。上載照片將要求用戶使用相機(jī)授予小程序并獲得相冊(cè)。用戶選擇照片后,單擊“上載”按鈕將照片上載到服務(wù)器。我們將使用Python腳本和Tesseract來處理,識(shí)別和計(jì)算用戶上傳的圖像。識(shí)別結(jié)果和計(jì)算結(jié)果將返回給用戶。用戶可以選擇收集此計(jì)算。在個(gè)人信息界面中,用戶可以查看個(gè)人收藏夾和歷史記錄并管理收藏夾。項(xiàng)目具有如下具體功能:

(1)識(shí)別手寫算式。微信小程序提供了一個(gè)畫布控件,可用于獲取用戶手指在控件范圍內(nèi)的移動(dòng)。我們?yōu)楫嫴荚O(shè)置淺色背景,并用黑色標(biāo)記書寫軌跡,可以有效增強(qiáng)前景背景的對(duì)比度,從而提高識(shí)別精度。

(2)識(shí)別圖片中的算式。對(duì)于用戶上傳的圖像,我們使用閾值分割等方法對(duì)圖像進(jìn)行處理,并將其轉(zhuǎn)換為清晰的二進(jìn)制圖像以進(jìn)行識(shí)別。

(3)計(jì)算結(jié)果。識(shí)別結(jié)果將首先轉(zhuǎn)換為特定的格式字符串,以表示數(shù)學(xué)公式及其空間結(jié)構(gòu)。然后使用python腳本來處理和計(jì)算字符串以獲得最終結(jié)果。

(4)收藏與歷史。用戶可以選擇在返回結(jié)果后收藏或取消收藏,或者在個(gè)人信息界面中查看歷史記錄和管理收藏。

3 技術(shù)細(xì)節(jié)

3.1 微信小程序的設(shè)計(jì)與實(shí)現(xiàn)

微信小程序基于MCCM框架的思想,網(wǎng)頁與數(shù)據(jù)緊密結(jié)合。數(shù)據(jù)上的每次更改都會(huì)更改或重新呈現(xiàn)網(wǎng)頁。在微信小程序中,這種操作是通過功能“setData”來實(shí)現(xiàn)的,在該功能中傳遞了重新渲染功能。

圖1 可手寫算式計(jì)算器微信小程序首頁

本文所提出的可手寫算式計(jì)算器的微信小程序首頁設(shè)計(jì)如圖1所示。首頁分為3個(gè)主要模塊,分別為圖片識(shí)別(淺色區(qū)域)、手寫識(shí)別(深色區(qū)域)和下方的任務(wù)欄。用戶可以選擇使用圖片識(shí)別功能,來識(shí)別圖片中的算式并獲取計(jì)算結(jié)果。當(dāng)選擇手寫識(shí)別功能時(shí),用戶可以在屏幕上手寫算式并識(shí)別、計(jì)算。圖片識(shí)別和手寫識(shí)別模塊如圖2所示。

圖2 圖片識(shí)別(左)和手寫識(shí)別(右)

我們也提供了收藏和查看計(jì)算歷史的功能,幫助用戶快速找到之前計(jì)算過的結(jié)果。收藏和歷史功能的界面如圖3所示。

圖3 收藏功能(左)和歷史功能(右)

3.2 后端模型

本項(xiàng)目后端使用Django框架。我們共設(shè)計(jì)了兩個(gè)Django模型,分別為WeUser模型和RecognizeItem。WeUser用來保存用戶信息以及和數(shù)據(jù)庫交互。RecognizeItem模型用來保存每次的識(shí)別記錄。本項(xiàng)目共包含9個(gè)視圖,分別對(duì)應(yīng)圖片上傳、識(shí)別、計(jì)算、收藏、取消收藏,以及識(shí)別記錄、用戶信息、識(shí)別歷史、收藏的查詢等。

3.3 Tesseract庫的應(yīng)用

3.3.1 Tesseract模型訓(xùn)練

我們選擇數(shù)學(xué)字符集來訓(xùn)練模型,并生成了訓(xùn)練數(shù)據(jù)的標(biāo)準(zhǔn)模式。一個(gè)標(biāo)準(zhǔn)的訓(xùn)練數(shù)據(jù)集合示例如圖4所示。

圖4 Tesseract模型訓(xùn)練數(shù)據(jù)示例

我們將數(shù)學(xué)符號(hào)作為一種新的字體。這種新的字體被用于訓(xùn)練并被保存,之后我們使用了輔助工具(jTessBoxEditor.jar等)對(duì)訓(xùn)練結(jié)果進(jìn)行更正,以獲得更精準(zhǔn)的結(jié)果。

3.3.2 識(shí)別

所有被捕獲或者上傳的圖片將首先經(jīng)過Python腳本的二值化處理,以獲取更清晰的算式圖像[10]。之后對(duì)于二值圖像,程序?qū)⒏鶕?jù)其空間結(jié)構(gòu)對(duì)其進(jìn)行分塊,并分別對(duì)每一塊進(jìn)行識(shí)別。通過分塊,程序?qū)⒖梢杂行ёR(shí)別分?jǐn)?shù)、根式、指數(shù)、對(duì)數(shù)、三角函數(shù)等復(fù)雜算式。分塊的主要思想是在像素基本檢測包含手寫文本的區(qū)域是否存在空白行或者空白列,這些空白的行和列將作為分塊的分割線。根據(jù)分塊所在空間位置,程序?qū)?duì)結(jié)果進(jìn)行組合,并得到最終結(jié)果。

4 結(jié)語

本項(xiàng)目是一個(gè)可識(shí)別并計(jì)算手寫算式的微信小程序,使用Django作為服務(wù)后端,使用Python結(jié)合開源項(xiàng)目Tesseract的方式進(jìn)行手寫算式的識(shí)別。具有輕量級(jí)、界面清爽、功能全面、使用簡單的優(yōu)點(diǎn)。本項(xiàng)目也在持續(xù)更新中,后續(xù)本項(xiàng)目將支持更多算式的計(jì)算,并努力提升識(shí)別的精確度,為用戶帶來更好的體驗(yàn)。

猜你喜歡
字符識(shí)別計(jì)算器手寫
手寫比敲鍵盤更有助于學(xué)習(xí)和記憶
我手寫我心
抓住身邊事吾手寫吾心
[計(jì)算器不是萬能的]
基于集成學(xué)習(xí)的MINIST手寫數(shù)字識(shí)別
電子制作(2018年18期)2018-11-14 01:48:08
一種改進(jìn)深度學(xué)習(xí)網(wǎng)絡(luò)結(jié)構(gòu)的英文字符識(shí)別
儀表字符識(shí)別中的圖像處理算法研究
基于CUDA和深度置信網(wǎng)絡(luò)的手寫字符識(shí)別
基于CUDA和深度置信網(wǎng)絡(luò)的手寫字符識(shí)別
一個(gè)損壞的計(jì)算器
讀寫算(中)(2015年10期)2015-11-07 07:24:10
富平县| 廉江市| 长海县| 井冈山市| 嘉定区| 旅游| 南昌县| 霸州市| 惠水县| 诸城市| 车致| 二连浩特市| 嘉禾县| 普陀区| 莱西市| 陇川县| 津南区| 虎林市| 东乡县| 湛江市| 汉川市| 内江市| 盐亭县| 宁津县| 三明市| 高邑县| 平凉市| 合作市| 南宁市| 龙江县| 满城县| 贞丰县| 柘城县| 盘山县| 宁乡县| 祁门县| 恭城| 嘉荫县| 吉安县| 景德镇市| 长汀县|