Android平台OCR工具之Tess two使用

2021-07-29 20:35:47 字數 2642 閱讀 4556

ocr (optical character recognition,光學字元識別)是指電子裝置(例如掃瞄器或數位相機)檢查紙上列印的字元,通過檢測暗、亮的模式確定其形狀,然後用字元識別方法將形狀翻譯成計算機文字的過程;

tesseract是ray smith於1985到2023年間在惠普布里斯托實驗室開發的乙個ocr引擎,曾經在1995 unlv精確度測試中名列前茅。但2023年後基本停止了開發。2023年,google邀請smith加盟,重啟該專案。目前專案的許可證是apache 2.0。該專案目前支援windows、linux和mac os等主流平台。但作為乙個引擎,它只提供命令列工具。 

現階段的tesseract由google負責維護,是最好的開源ocr engine之一,並且支援中文。

中文:chi-sim.traineddata

英文:eng.traineddata

tess-two在git上位址為:

我編譯使用的環境:

ndk環境的具體配置及cygwin的安裝方法可以參照這篇部落格:windows下android ndk環境搭建

編譯需要耗費挺長時間,編譯完成後,會在tess-two目錄下生成libs資料夾,其中包含了編譯生成的.so檔案,可以進行使用。

編譯完成後,新建工程,將之前編譯好的libs資料夾下的armeabi和armeabi-v7a資料夾拷貝至新建工程的libs資料夾下,將tess-two工程中src資料夾下的兩個包直接拷貝至**中或者打成jar進行使用。工程如下:

識別函式:

/**

* 識別中文字,需要放入非同步執行緒中進行執行

* *@param bitmap

*@return

*@throws ioexception

*/public string parseimagetostring(string imagepath) throws ioexception

// 獲取bitmap

bitmapfactory.options options = new bitmapfactory.options();

options.insamplesize = 2;

bitmap bitmap = bitmapfactory.decodefile(imagepath, options);

// 旋轉角度

int rotate = 0;

exifinte***ce exif = new exifinte***ce(imagepath);

// 先獲取當前影象的方向,判斷是否需要旋轉

int imageorientation = exif

.getattributeint(exifinte***ce.tag_orientation,

exifinte***ce.orientation_normal);

log.i(tag, "current image orientation is " + imageorientation);

switch (imageorientation)

log.i(tag, "current image need rotate: " + rotate);

// 獲取當前的寬和高

int w = bitmap.getwidth();

int h = bitmap.getheight();

// 使用matrix對進行處理

matrix mtx = new matrix();

mtx.prerotate(rotate);

// 旋轉

bitmap = bitmap.createbitmap(bitmap, 0, 0, w, h, mtx, false);

bitmap = bitmap.copy(bitmap.config.argb_8888, true);

// 開始呼叫tess函式對影象進行識別

tessbaseapi baseapi = new tessbaseapi();

baseapi.setdebug(true);

// 使用預設語言初始化baseapi

baseapi.init(tessconstantconfig.tessbase_path,

tessconstantconfig.default_language_chi);

baseapi.setimage(bitmap);

// 獲取返回值

string recognizedtext = baseapi.getutf8text();

baseapi.end();

return recognizedtext;

}

經過測試,發現tess-two的識別率不是很高,對一般電腦輸入文字生成的,識別度較高,但對於手寫問題,識別率較低,可能需要進一步進行訓練。下邊是我識別的結果截圖:

總結tess-two的使用方法,大致可分為以下幾步:

新建工程測試,訓練

我是**

OCR文字捕獲工具

initiator 是一款易於使用的小型 macos ocr 光學字元識別 應用程式,可提取和識別 mac 計算機螢幕上的任何不可編輯文字。作為一項額外功能,它可以將圖形檔案轉換為可編輯的文字。捕獲文字和圖形!將您的生產力提公升到乙個新的水平!如果您之前使用過 mac 內建的截圖應用程式或任何其他截...

手機平台人像識別ocr技術

手機平台人像識別技術 人臉活體檢測識別技術 產品背景 隨著深度學習方法的應用,手機平台人像識別技術 技術的識別率已經得到質的提公升,目前我司的 手機平台人像識別技術 率已經達到99 手機平台人像識別技術 技術與其他生物特徵識別技術相吃比,在實際應用中具有天然獨到的優勢 通過攝像頭直接獲取,可以非接觸...

OCR雲識別之雲識別OCR

一 ocr雲識別行業背景 大資料 分析 整合 資源分配。沒有雲的概念,這一切都是扯淡一樣的。雲 已經讓各行各業更加的智慧型化 無縫結合。ocr雲識別已經從傳統的pc端公升級到移動端,再到現在的雲端。跟上時代的潮流,漫步雲端,才能走的更遠。二 ocr雲識別形式 公共雲和私有雲 簡單來說,雲服務可以將企...