iOS--OCR圖片識別


  應公司財務需求,要做一個收據識別功能。所以在網上搜索了下三方SDK,其中tesseract-ocr受到了大多數網友的推薦。我當然是前往https://github.com/gali8/Tesseract-OCR-iOS 進行sdk查看下載了。然后直接下載並不好用,各種缺包,不過開發者也是有心了,提供了完善的安裝說明。

點擊藍色的Installation,可以按照官方說明文檔進行pod 下載 

pod 'TesseractOCRiOS', '4.0.0'

根據文檔所述,我們還需要拖入tessdata文件夾,里面有語言包,常用包括eng英文解析和chi_sim中文解析。https://code.google.com/p/tesseract-ocr/downloads/list我們可以前往谷歌進行下載,也可以在github Tesseract-OCR-iOS中,找到他們使用的tessdata文件夾,單獨下載。然后將tessdata直接拖入項目中,這里需要注意的是,拖入的時候選擇creater folder references。

  TesseractOCRiOS的使用非常簡單,點開上面藍色的 usage examples,就有包括swift在內的各種調用方式。需要注意的只有幾點,一是

    G8Tesseract *tesseract = [[G8Tesseract alloc] initWithLanguage:@"eng+ita"];

@“eng+ita”代表會搜索多個文件解析(eng.traineddata和ita.traineddata),如果只想使用eng,就可以只用使用@“eng”;這個github項目是沒有提供中文解析功能的,我們需要去下載chi_sim.traineddata導入項目中,導入需要注意到是:打開 項目,show in finder,然后將chi_sim直接放入tessdata文件中即可。如果使用后result為空,亂碼,甚至於崩潰,可能是chi_sim版本不對,可以去搜索3.0.1的chi_sim,重新導入項目中使用。

  當然,某種情況下TesseractOCRiOS確實好用,我解析文檔內容准確率極高,甚至於使用網上的解析銀行卡和身份證也是相當可以的。但是,針對於油墨打印的發票內容,就有心無力了,各種解析亂碼,錯誤,連數字都因為油墨擴散的原因解析錯誤。

  在查詢了資料發現,ocr僅僅具備圖片識別,意思就是需要使用我們處理好的圖片進行識別,本身並沒有對圖片進行很好的處理,唯一的濾鏡方式g8_blackAndWhite僅僅也是針對英文與數字,因此,我為工程導入了OpenCV,本想直接采用pod openCV,然后又是一個大坑,根本沒發pod,沒辦法,前往官網,下載了opcv2.framework,導入到項目中。使用的第一件事就是enum(NO,。。。)出錯,Expected identifier,NO這個define的宏無法解析,因為OC使用的是c語言方式解析,而openCV使用的C++編寫。那么我們也只能采用混合編寫模式了,將使用opencv控制器改為c++編譯。

選擇type方式為 C++ source;或者將文件名由.m改為.mm或.cpp

  另外exposure_compensate.hpp:66:12: Expected identifier 
同樣的報錯在blender里,解決:點到源代碼處把NO改為NO_EXPOSURE_COMPENSATOR = 0,就好了

  當然,還有其他的錯誤,文件前綴為AV或_objc文件出現錯誤,一般是因為少導入了AVFoundtion,coreMedia,coreVideo,AssertsLibrary等框架。而使用opencv調用相冊的時候,需要設置隱私權限提示。

    <key>NSPhotoLibraryUsageDescription</key>
    <string>我們將要使用你的相冊</string>
    <key>NSPhotoLibraryAddUsageDescription</key>
    <string>我們將要使用你的相冊</string>
    <key>NSAppleMusicUsageDescription</key>
    <string>要使用到您的媒體庫</string>
    <key>NSCameraUsageDescription</key>
    <string>我們將要使用你的相機</string>

  使用opencv對拍照的圖片進行 灰度處理,閥值處理,腐蝕:白色背景縮小,黑色擴大,區域設置等等功能,讓圖片更加清晰明顯,便於識別。

  ps:坑爹的是,這並沒有很好的解決油墨發票上數字文字不清晰,難以識別的問題,僅僅提高了識別成功率,但是並沒有很大的實際作用。一句mmp不知當講不當講,為什么不打印成a4效果。后續有看到圖片識別訓練,需要服務器配合,以及使用各大公司收費ocr。



 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM