前言
OCR文字識別征峦,指利用OCR (Optical Character Recognition迟几,光學(xué)字符識別)技術(shù),將圖片栏笆、照片上的文字內(nèi)容类腮,直接轉(zhuǎn)換為可編輯文本的技術(shù)。軟件可以把圖片轉(zhuǎn)換成可以編輯的文字蛉加。支持JPG蚜枢、PNG、GIF针饥、BMP厂抽、DOC等圖片格式。
場景
1丁眼、想要實(shí)現(xiàn)身份證識別及銀行卡識別筷凤。
2、不想用第三方(免費(fèi)識別有上限苞七,要想更多識別需要花錢)只想實(shí)現(xiàn)身份證和銀行卡識別藐守,沒必要花錢。
3蹂风、不想用第三方開源框架(OpenCV吗伤、TesseractOCRiOS等)集成內(nèi)存太大,為了這兩個(gè)功能硫眨,沒必要app包過于增大足淆。
4巢块、本demo 就簡單的搞了一下(通過c++,簡單有效的識別身份證及銀行卡)巧号。
5族奢、不講原理,只講怎樣使用demo丹鸿,不依賴與其他庫越走,直接拷貝。
最終效果
1靠欢、身份證:(姓名廊敌、性別、民族门怪、出生日期骡澈、住址、身份證號碼掷空、簽發(fā)機(jī)關(guān)肋殴、有效期限)并截取到身份證正反面圖像。
2坦弟、銀行卡:(卡號护锤、銀行名稱)并截取到銀行卡圖像。
使用
1酿傍、在你的項(xiàng)目的Info.plist文件中烙懦,添加權(quán)限描述(Key Value)
Privacy - Camera Usage Description 是否允許訪問相機(jī)。
Privacy - Photo Library Usage Description 是否允許訪問相冊赤炒。
2氯析、JYBD_IDCardRecognition 文件夾直接拖入工程中。
3可霎、運(yùn)行程序
錯(cuò)誤一、 ENABLE_BITCODE 錯(cuò)誤
解決方法:在TARGETS和PROJECT 兩處宴杀,中的 Buid Setting 下找到 Enable Bitcode 將其設(shè)置為NO癣朗; Xcode8 環(huán)境下會檢測.a 文件, 所以將 Enable Testability 設(shè)置為 NO旺罢。
錯(cuò)誤二旷余、
Undefined symbols for architecture arm64:
"_ZIM_SaveImage", referenced from:
ImgSave(tagIMG, char const*) in libbankcard.a(gjimage.o)
"_ZIM_LoadImage", referenced from:
ImgLoad(tagIMG&, char const*) in libbankcard.a(gjimage.o)
"_ZIM_DoneImage", referenced from:
ImgLoad(tagIMG&, char const*) in libbankcard.a(gjimage.o)
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
解決辦法:在TARGETS和PROJECT 兩處中build settings 搜索 ENABLE_TESTABILITY 改為NO
錯(cuò)誤三、 duplicate symbols for architecture arm64(.o文件重復(fù)導(dǎo)入了)
解決辦法 : 把idcardios.a從 Link Binary With Libraries (3 items)里面刪了就好了扁达。
注意:只刪除idcardios.a正卧,其他不要?jiǎng)h。
4跪解、 在你的項(xiàng)目中的相應(yīng)處倒入頭文件
import "JYBDBankCardVC.h"
import "JYBDIDCardVC.h"
pragma mark - 身份證掃描
- (IBAction)shoot:(UIButton *)sender {
__weak __typeof__(self) weakSelf = self;
JYBDIDCardVC *AVCaptureVC = [[JYBDIDCardVC alloc] init];
AVCaptureVC.finish = ^(JYBDCardIDInfo *info, UIImage *image)
{
IDInfoViewController *infoM = [[IDInfoViewController alloc]init];
infoM.IDInfo = info;
infoM.IDImage = image;
[weakSelf.navigationController pushViewController:infoM animated:YES];
};
[self.navigationController pushViewController:AVCaptureVC animated:YES];
}
pragma mark - 銀行卡掃描
- (IBAction)shootAction:(UIButton *)sender {
__weak __typeof__(self) weakSelf = self;
JYBDBankCardVC *vc = [[JYBDBankCardVC alloc]init];
vc.finish = ^(JYBDBankCardInfo *info, UIImage *image) {
IDInfoViewController *infoM = [[IDInfoViewController alloc]init];
infoM.cardInfo = info;
infoM.IDImage = image;
[weakSelf.navigationController pushViewController:infoM animated:YES];
};
[self.navigationController pushViewController:vc animated:YES];
}
4炉旷、使用真機(jī),使用真機(jī),使用真機(jī)(不支持模擬器)窘行。大功告成饥追。
5、demo 地址:https://github.com/tiantianios/JYBDAVCapture.git
6罐盔、掃描屬于本地掃描但绕,沒有次數(shù)限制。
7惶看、有問題留言或聯(lián)系作者qq:1269456913捏顺。
8、可以轉(zhuǎn)載纬黎,但要注明出處幅骄。
作者:tiantianios
原文:https://blog.csdn.net/tiantianios/article/details/82112660