喻煒
(湖北科技學(xué)院計算機(jī)科學(xué)與技術(shù)學(xué)院,湖北咸寧,437100)
在這些互聯(lián)網(wǎng)的產(chǎn)品中,逐漸在往人工智能或自動化方面發(fā)展,其中自動識別系統(tǒng)無疑是最為豐富的產(chǎn)品類型之一。1989年到今天,文字識別已經(jīng)經(jīng)歷了漫長的歲月,各大單位長期的打磨研究,由清華大學(xué)、中國科學(xué)院、北京信息工程學(xué)院等多家院校各自開發(fā)除了適用于各個場景的文字識別系統(tǒng)。如清華大學(xué)的工程系開發(fā)出了清華TH-OCR產(chǎn)品,尚書OCR產(chǎn)品由漢王集團(tuán)開發(fā),他們走在了技術(shù)發(fā)展的最前端,并占領(lǐng)了大部分的市場份額,也代表了當(dāng)今文字識別系統(tǒng)的最先進(jìn)的技術(shù)。在未來OCR技術(shù)的普及一定會極大改善人們的常規(guī)行為和生活,給數(shù)字化信息時代帶來更實質(zhì)性的跨越。
數(shù)字信息存儲在未來一定還會發(fā)生更多變化,當(dāng)今的重要載體主要還是會有書面的文檔去對信息存儲作出一個穩(wěn)定性和安全性的要求,所以這兩種載體都是當(dāng)今信息存儲的重要部分。為了能讓數(shù)字信息和書面文檔共同推進(jìn)社會的發(fā)展,所以O(shè)CR技術(shù)要把兩者共存,從更新的技術(shù)里讓兩種存儲形式都能展示出自己的亮點,所以解決書面文檔和數(shù)字信息相輔相成的問題就具有更多的實際意義和應(yīng)用前景,本文基于Java平臺的文字識別系統(tǒng)的研究可能出現(xiàn)更多的難度但也能帶來研究價值。
我國在OCR領(lǐng)域里的研究相對國外比較晚,由于60年代時我國不僅受限于國際經(jīng)濟(jì)技術(shù),在文字方面的種類識別也非常的困難。在國外信息科研家的多年研究探索下,20世紀(jì)時已經(jīng)開始普及OCR技術(shù)的應(yīng)用,因為不受限于經(jīng)濟(jì)和文字方面的影響,但是在我國發(fā)展初期階段還沒有這種認(rèn)識,并且我國的漢字就英文或數(shù)字而言種類實在太多,不僅結(jié)構(gòu)復(fù)雜而且光常用的漢字就有3000多種,所以在我國發(fā)展初期階段對于識別文字、字符的研究相對滯后許多。在我國社會主義的引導(dǎo)下各種數(shù)字化科技飛速發(fā)展,所以21世紀(jì)時OCR技術(shù)在國內(nèi)已經(jīng)有了發(fā)展前景,傳統(tǒng)的文字提取和處理都給OCR技術(shù)的廣闊發(fā)展帶來了幫助。隨著國內(nèi)外信息的交互,這種領(lǐng)域的技術(shù)已經(jīng)比較成熟實用,基于PC計算機(jī)的重復(fù)和頻繁的交互,人們的逐漸投入了OCR,這種機(jī)會給文字識別領(lǐng)域帶來了另一波推廣高潮,使更多的人參加到文字識別的深度學(xué)習(xí)研究里,在當(dāng)今技術(shù)已經(jīng)產(chǎn)生卷積神經(jīng)網(wǎng)絡(luò)、循環(huán)神經(jīng)網(wǎng)絡(luò)、深度置信網(wǎng)絡(luò)等各種深度算法結(jié)構(gòu),使還在實驗室階段的OCR技術(shù)帶來了質(zhì)的飛躍。
本系統(tǒng)首先通過一個面板容器類把所有功能容納在一起,主要使用Eclipse中的圖形化用戶界面的工具包,這是一個輕量級的容器可以使我們與用戶的交互界面更加簡單、快捷,所以我們所有的模塊都在這個主面板中,然后用子窗體給父窗體傳值,完成各個構(gòu)造方法與其他方法。我們的模塊功能在主面板中被劃分為:選擇圖片文字識別、清空、復(fù)制、截圖識別、清除、重識。[16]設(shè)計好系統(tǒng)的模塊之后,我們將設(shè)置各按鈕字體和大小以及位置,除了按鈕模塊的劃分外,還有用戶回顯的模塊,例如圖片預(yù)覽標(biāo)簽以及狀態(tài)提示標(biāo)簽、文本域的輸出、文本域的滾動條、各方位分面板等,當(dāng)這些模塊全部劃分設(shè)計出來之后即可將各組件依次加入相應(yīng)方位面板,然后設(shè)置當(dāng)前系統(tǒng)風(fēng)格,寫好主方法之后依次調(diào)用其他方法,傳入可選參數(shù)調(diào)用接口等,系統(tǒng)概要執(zhí)行流程圖參見圖1。

圖1 概要執(zhí)行流程圖
首先我使用Java作為本系統(tǒng)開發(fā)語言,我覺得Java 在近十多年來經(jīng)久不衰的編程語言中一直占著最大的比重是有他的原因的,不僅有著一次編譯,處處都可運(yùn)行的跨平臺優(yōu)點,而且我覺得我也可以使用Java將業(yè)務(wù)邏輯實現(xiàn)為最完善的。首先項目整體需要使用Eclipse開發(fā)工具,根據(jù)現(xiàn)在互聯(lián)網(wǎng)項目發(fā)展的技術(shù)可行性看出來大部分項目都會采用Eclipse開發(fā)工具,再利用百度應(yīng)用程序接口集成一些優(yōu)秀的API接口保證后臺的高可用和系統(tǒng)安全,再通過添加libraries完成圖形化界面的部署,配置后達(dá)到一定程度的高可用和易維護(hù),充分說明本系統(tǒng)在技術(shù)方面可行。
從第三章需求分析模塊的介紹可以看到,我們設(shè)計的所有模塊都需要設(shè)計到一個圖形化的界面工具包,所以我首先要實現(xiàn)在eclipse中引入這個強(qiáng)大的Swing的編程插件。設(shè)計完圖形界面的主窗體之后再來建立各個模塊之間的距離以及大小,上傳文件功能主要功能是判斷用戶上傳的文件是否為空和是否是圖片才能進(jìn)行文字識別,首先此方法實例化文件對象,如果文件不存在,則新建文件,通過File文件類型實例化文件對象,在創(chuàng)建文件的方法中可以用 if (!file.exists())判斷文件是否存在,通過try和catch來捕捉上傳時遇到的異常。然后使用J Button此方法返回一個“讀取文件”按鈕,通過File Reader來讀取文件內(nèi)容,上面第二章介紹到文件上傳時是上傳到內(nèi)存,所以上傳時要用Buffered Reader給文件開辟一個緩存空間。同樣用此方法返回一個“寫入文件”按鈕,在上面的方法中使用File Writer里的get text將文本框內(nèi)容全部寫入文件,在控制臺輸出提示“文件寫入成功”。
剛才提到過圖片重識并不需要重新再次上傳圖片文件,所以能夠減少用戶多余的操作,本系統(tǒng)編寫的代碼中也不需要再次編寫識別文字的功能,只需要在panel的主面板中調(diào)用重識對象進(jìn)行方法的重載,省去filter文件的過濾,直接將圖片傳入可選參數(shù)調(diào)用接口,再次解析JSON數(shù)據(jù)格式,其中需要注意的是在本方法執(zhí)行時要依次調(diào)用其他模塊的文字識別功能,否則將出現(xiàn)Exception類型的異常。
當(dāng)需要識別的文字在電腦中無法進(jìn)行保存時需要使用截圖識別功能,所以此截圖功能不需要上傳文件可以同步截圖時進(jìn)行上傳。首先要繼承J Window的總類才能使用截圖功能,把構(gòu)造方法中的get Default Toolkit方法進(jìn)行調(diào)用,設(shè)置Size方法,從而獲取屏幕尺寸,所以當(dāng)我們調(diào)用此方法時,電腦屏幕將產(chǎn)生一個遮罩層,這個遮罩層就是根據(jù)set bounds來獲取屏幕的整個尺寸和分辨率,從而讓遮罩層覆蓋到整個電腦屏幕進(jìn)行截圖。
內(nèi)容展示功能即把圖片識別后的文字進(jìn)行窗體回顯,所以首先解決的問題是如何進(jìn)行文字識別與提取。本系統(tǒng)的識別預(yù)處理到實際存儲有五個流程,主要步驟分為:把待識別的圖形中的文字區(qū)域進(jìn)行裁剪功能,利用最小方差的技術(shù)測量文字內(nèi)容的水平位置,將平均高度劃分出文字行,根據(jù)每一行劃分出來的空間特征逐個提取文字或者字符對象得出點陣坐標(biāo)方位,創(chuàng)建一個字符串把每個文本內(nèi)容全部存入,通過接口的字庫實現(xiàn)提取和對比,最后從而達(dá)到文字識別的效果。
本人結(jié)合當(dāng)前辦公、會議等場景實際工作情況,介紹了在現(xiàn)代信息化技術(shù)的發(fā)展中文字識別系統(tǒng)的設(shè)計與開發(fā)的必要性,從而說明了本文所研究的目的與意義,選擇了JAVA作為最適合的開發(fā)工具,本人所開發(fā)出的系統(tǒng)體現(xiàn)了在如今眾多文字識別平臺的特殊性和創(chuàng)新,通過具體的功能需求分析保證了本系統(tǒng)開發(fā)架構(gòu)的完整性,并且在社會、經(jīng)濟(jì)等多層方面都是可行的。對系統(tǒng)文件上傳和文字識別的主要功能進(jìn)行了測試,能夠滿足本系統(tǒng)的研究需求,綜合來說,系統(tǒng)整體界面簡潔且功能齊全。