喻煒
(湖北科技學院計算機科學與技術學院,湖北咸寧,437100)
在這些互聯(lián)網的產品中,逐漸在往人工智能或自動化方面發(fā)展,其中自動識別系統(tǒng)無疑是最為豐富的產品類型之一。1989年到今天,文字識別已經經歷了漫長的歲月,各大單位長期的打磨研究,由清華大學、中國科學院、北京信息工程學院等多家院校各自開發(fā)除了適用于各個場景的文字識別系統(tǒng)。如清華大學的工程系開發(fā)出了清華TH-OCR產品,尚書OCR產品由漢王集團開發(fā),他們走在了技術發(fā)展的最前端,并占領了大部分的市場份額,也代表了當今文字識別系統(tǒng)的最先進的技術。在未來OCR技術的普及一定會極大改善人們的常規(guī)行為和生活,給數字化信息時代帶來更實質性的跨越。
數字信息存儲在未來一定還會發(fā)生更多變化,當今的重要載體主要還是會有書面的文檔去對信息存儲作出一個穩(wěn)定性和安全性的要求,所以這兩種載體都是當今信息存儲的重要部分。為了能讓數字信息和書面文檔共同推進社會的發(fā)展,所以OCR技術要把兩者共存,從更新的技術里讓兩種存儲形式都能展示出自己的亮點,所以解決書面文檔和數字信息相輔相成的問題就具有更多的實際意義和應用前景,本文基于Java平臺的文字識別系統(tǒng)的研究可能出現(xiàn)更多的難度但也能帶來研究價值。
我國在OCR領域里的研究相對國外比較晚,由于60年代時我國不僅受限于國際經濟技術,在文字方面的種類識別也非常的困難。在國外信息科研家的多年研究探索下,20世紀時已經開始普及OCR技術的應用,因為不受限于經濟和文字方面的影響,但是在我國發(fā)展初期階段還沒有這種認識,并且我國的漢字就英文或數字而言種類實在太多,不僅結構復雜而且光常用的漢字就有3000多種,所以在我國發(fā)展初期階段對于識別文字、字符的研究相對滯后許多。在我國社會主義的引導下各種數字化科技飛速發(fā)展,所以21世紀時OCR技術在國內已經有了發(fā)展前景,傳統(tǒng)的文字提取和處理都給OCR技術的廣闊發(fā)展帶來了幫助。隨著國內外信息的交互,這種領域的技術已經比較成熟實用,基于PC計算機的重復和頻繁的交互,人們的逐漸投入了OCR,這種機會給文字識別領域帶來了另一波推廣高潮,使更多的人參加到文字識別的深度學習研究里,在當今技術已經產生卷積神經網絡、循環(huán)神經網絡、深度置信網絡等各種深度算法結構,使還在實驗室階段的OCR技術帶來了質的飛躍。
本系統(tǒng)首先通過一個面板容器類把所有功能容納在一起,主要使用Eclipse中的圖形化用戶界面的工具包,這是一個輕量級的容器可以使我們與用戶的交互界面更加簡單、快捷,所以我們所有的模塊都在這個主面板中,然后用子窗體給父窗體傳值,完成各個構造方法與其他方法。我們的模塊功能在主面板中被劃分為:選擇圖片文字識別、清空、復制、截圖識別、清除、重識。[16]設計好系統(tǒng)的模塊之后,我們將設置各按鈕字體和大小以及位置,除了按鈕模塊的劃分外,還有用戶回顯的模塊,例如圖片預覽標簽以及狀態(tài)提示標簽、文本域的輸出、文本域的滾動條、各方位分面板等,當這些模塊全部劃分設計出來之后即可將各組件依次加入相應方位面板,然后設置當前系統(tǒng)風格,寫好主方法之后依次調用其他方法,傳入可選參數調用接口等,系統(tǒng)概要執(zhí)行流程圖參見圖1。
圖1 概要執(zhí)行流程圖
首先我使用Java作為本系統(tǒng)開發(fā)語言,我覺得Java 在近十多年來經久不衰的編程語言中一直占著最大的比重是有他的原因的,不僅有著一次編譯,處處都可運行的跨平臺優(yōu)點,而且我覺得我也可以使用Java將業(yè)務邏輯實現(xiàn)為最完善的。首先項目整體需要使用Eclipse開發(fā)工具,根據現(xiàn)在互聯(lián)網項目發(fā)展的技術可行性看出來大部分項目都會采用Eclipse開發(fā)工具,再利用百度應用程序接口集成一些優(yōu)秀的API接口保證后臺的高可用和系統(tǒng)安全,再通過添加libraries完成圖形化界面的部署,配置后達到一定程度的高可用和易維護,充分說明本系統(tǒng)在技術方面可行。
從第三章需求分析模塊的介紹可以看到,我們設計的所有模塊都需要設計到一個圖形化的界面工具包,所以我首先要實現(xiàn)在eclipse中引入這個強大的Swing的編程插件。設計完圖形界面的主窗體之后再來建立各個模塊之間的距離以及大小,上傳文件功能主要功能是判斷用戶上傳的文件是否為空和是否是圖片才能進行文字識別,首先此方法實例化文件對象,如果文件不存在,則新建文件,通過File文件類型實例化文件對象,在創(chuàng)建文件的方法中可以用 if (!file.exists())判斷文件是否存在,通過try和catch來捕捉上傳時遇到的異常。然后使用J Button此方法返回一個“讀取文件”按鈕,通過File Reader來讀取文件內容,上面第二章介紹到文件上傳時是上傳到內存,所以上傳時要用Buffered Reader給文件開辟一個緩存空間。同樣用此方法返回一個“寫入文件”按鈕,在上面的方法中使用File Writer里的get text將文本框內容全部寫入文件,在控制臺輸出提示“文件寫入成功”。
剛才提到過圖片重識并不需要重新再次上傳圖片文件,所以能夠減少用戶多余的操作,本系統(tǒng)編寫的代碼中也不需要再次編寫識別文字的功能,只需要在panel的主面板中調用重識對象進行方法的重載,省去filter文件的過濾,直接將圖片傳入可選參數調用接口,再次解析JSON數據格式,其中需要注意的是在本方法執(zhí)行時要依次調用其他模塊的文字識別功能,否則將出現(xiàn)Exception類型的異常。
當需要識別的文字在電腦中無法進行保存時需要使用截圖識別功能,所以此截圖功能不需要上傳文件可以同步截圖時進行上傳。首先要繼承J Window的總類才能使用截圖功能,把構造方法中的get Default Toolkit方法進行調用,設置Size方法,從而獲取屏幕尺寸,所以當我們調用此方法時,電腦屏幕將產生一個遮罩層,這個遮罩層就是根據set bounds來獲取屏幕的整個尺寸和分辨率,從而讓遮罩層覆蓋到整個電腦屏幕進行截圖。
內容展示功能即把圖片識別后的文字進行窗體回顯,所以首先解決的問題是如何進行文字識別與提取。本系統(tǒng)的識別預處理到實際存儲有五個流程,主要步驟分為:把待識別的圖形中的文字區(qū)域進行裁剪功能,利用最小方差的技術測量文字內容的水平位置,將平均高度劃分出文字行,根據每一行劃分出來的空間特征逐個提取文字或者字符對象得出點陣坐標方位,創(chuàng)建一個字符串把每個文本內容全部存入,通過接口的字庫實現(xiàn)提取和對比,最后從而達到文字識別的效果。
本人結合當前辦公、會議等場景實際工作情況,介紹了在現(xiàn)代信息化技術的發(fā)展中文字識別系統(tǒng)的設計與開發(fā)的必要性,從而說明了本文所研究的目的與意義,選擇了JAVA作為最適合的開發(fā)工具,本人所開發(fā)出的系統(tǒng)體現(xiàn)了在如今眾多文字識別平臺的特殊性和創(chuàng)新,通過具體的功能需求分析保證了本系統(tǒng)開發(fā)架構的完整性,并且在社會、經濟等多層方面都是可行的。對系統(tǒng)文件上傳和文字識別的主要功能進行了測試,能夠滿足本系統(tǒng)的研究需求,綜合來說,系統(tǒng)整體界面簡潔且功能齊全。