swift項目中引入圖片中的數(shù)字識別技術

最近項目中需要實現(xiàn)拍照或從相冊中選圖,并截取圖片某部分信息讀取上面的數(shù)字和字母,耗了一天半才解決,也是醉了,現(xiàn)在寫個博客記錄一下解決過程,誰如果有該需求,也可做個參考。

一、我的項目是使用cocopods管理第三方的,因此圖片識別的第三方庫TesseractOCRiOS(光學字符識別)也是通過cocopods導入的

在podFile中添加第三方庫

pod 'TesseractOCRiOS'

如果在pod進來的第三方庫文件夾中沒看到這個framework,關掉工程重新打開就看到了

到項目的target中,進入General搜索?Linked Frameworks and Libraries ,在里面查看有無TesseractOCR.framework,沒有就點擊下方+號主動添加進來,并添加CoreImage.framework 和libc++.tbd依賴庫, 如下如所示


第二步,導入語言庫

下載Tesseract 的語言包,git地址:https://github.com/tesseract-ocr/tessdata,由于該語言庫文件夾太大,當時我們常用的只有兩種,一個是“eng“英文、一個是“chi_sim“中文。?如果只需要用到英文和數(shù)字識別,tessdata文件夾中只需要留eng.traineddata這一個文件即可,其他的語言庫文件都可以刪除,將tessdata 文件夾從 Finder 中拖進 Xcode 項目中

注意:不要勾選Create groups,需要勾選Create folder reference,將文件夾路徑引入,確認在 Build Phases 的 Copy Bundlle Resources 下面有 tessdata 一項,否者運行時會報錯,說在 tessdata 的父目錄中未設置 TESSDATA_PREFIX 環(huán)境變量。

在 項目 target 的 Build Settings 中,找到 C++ Standard Library,將它設置為 Compiler Default。然后找到 Enable Bitcode,將它設置為 NO。

類似地,回到左邊的項目導航器中,選擇 Pods 項目,找到 TesseractOCRiOS target 的 Build Settings,找到 C++ Standard Library 將它設置為 Compiler Default。然后找到 Enable Bitcoe 將它設置為 NO。然后搜索Other Linker Flags,在所有已有的key后面添加-lstdc++

二、使用識別技術

由于項目是swift,而該framework是oc代碼編寫的,所以要使用需要橋接頭文件,在橋接文件中添加頭文件,引入第三方文件

#import <TesseractOCR/TesseractOCR.h>

在需要使用識別技術的ViewController里引入頭文件

import?TesseractOCR

實現(xiàn)代碼:在選擇圖片或拍照的代理方法中拿到image,并傳入到識別方法中(該方法自己定義,傳入UIImage類型的參數(shù),參考文章下面的博文鏈接,處理一下圖片尺寸)

// 1if let tesseract = G8Tesseract(language: "eng") {

? // 2? tesseract.engineMode = .tesseractCubeCombined

? // 3? tesseract.pageSegmentationMode = .auto

? // 4? tesseract.image = image.g8_blackAndWhite()

? // 5? tesseract.recognize()

//拿到了識別到的文字,自己控制顯示方式

? // 6? let text = tesseract.recognizedText

}

上述代碼運行會報錯,代碼崩潰在framework的文件中,大概崩潰原因提示是:unable to init CubeRecoContext object

查了Stack Overflow,解決方法是將?tesseract.engineMode改成.tesseractOnly,這樣就可以運行了

Stack Overflow的問題描述和解決辦法截圖:



至此差不多就沒問題可以用了,我參考了好幾個博文,很有幫助,鏈接如下,如文章又不對的地方,煩請留言指正,謝謝!

Tesseract OCR(光學字符識別)教程

iOS 身份證識別之TesseractOCR簡單實用

iOS身份證號碼識別

TesseractOCRiOS(光學字符識別)的簡單使用

Tesseract OCR iOS 教程

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內容