我剛開始用Tesseract庫弄髒自己的手,但結果真的很糟糕。iOS Tesseract:效果不好
我按照Git存儲庫(https://github.com/gali8/Tesseract-OCR-iOS)中的說明操作。我的ViewController使用下面的方法來開始識別:
Tesseract *t = [[Tesseract alloc] initWithLanguage:@"deu"];
t.delegate = self;
[t setVariableValue:@"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" forKey:@"tessedit_char_whitelist"];
[t setImage:img];
[t recognize];
NSLog(@"Recognized text: %@", [t recognizedText]);
labelRecognizedText.text = [t recognizedText];
t = nil;
樣本圖像從項目tempalte
效果很好(這告訴我,該項目本身設置正確),但每當我嘗試使用其他圖像,公認的文字是一個完整的混亂。例如,我試圖把我的取景器的畫面顯示樣本圖像:
https://dl.dropboxusercontent.com/u/607872/tesseract.jpg(1.5 MB)
但正方體承認:
Recognized text: s f l TO if v Ysssifss f
ssqxizg ss sfzzlj z
s N T IYIOGY Z I l EY s s
k Es ETL ZHE s UEY
z xhks Fsjs Es z VIII c
s I XFTZT c s h V Ijzs
L s sk sisijk J
s f s ssj Jss sssHss H VI
s s H
i s H st xzs
s s k 4 is x2 IV
Illlsiqss sssnsiisfjlisszxiij s
K
即使字符白名單隻包含數字,我沒有得到,甚至接近什麼形象看起來像一個結果:
Recognized text: 3 74 211
1
1 1 1
3 53 379 1
3 1 33 5 3 2
3 9 73
1 61 2 2
3 1 6 5 212 7
1
4 9 4
1 17
111 11 1 1 11 1 1 1 1
我認爲有一些錯誤的方式是照片採取從我目前使用的iPad迷你相機,但我無法弄清楚什麼和爲什麼。
任何提示?
更新#1
迴應托馬斯:
我跟在您的文章的教程,但前進的道路上遇到了幾個錯誤...
- 的
UIImage+OpenCV
類別不能用於我的ARC項目 - 我無法導入
<opencv2/...>
在我的控制器,自動完成不提供它(並因此[UIImage CVMat]
沒有定義)
我覺得有什麼毛病我的集成OpenCV的,儘管我跟着你好教程,並添加了框架。我是否需要在我的Mac上構建OpenCV,還是僅僅在我的Xcode項目中包含框架就足夠了?
因爲我真的不知道你可能會考慮爲「重要」在這一點(我已經讀了幾帖和教程,嘗試了不同的步驟),隨意問:)
更新#2
@Tomas:謝謝,ARC部分是必不可少的。我的ViewController已經被重命名爲.mm
。忘記關於「無法導入opencv2 /」的部分,因爲我已經將它包含在我的TestApp-Prefix.pch
(如Hello-tutorial中所述)。
下一個挑戰;)
我注意到,當我用相機拍攝的圖像,爲roi
對象的範圍並不成功計算。我玩弄了設備方向,並在我的視圖中放置了一個UIImage
以查看圖像處理步驟,但有時(即使圖像正確對齊),值爲負值,因爲bounds.size()
- for
-loop中的if
- 見面。最糟糕的情況是:minX/Y和maxX/Y從來沒有碰過。長話短說:以Mat roi = inranged(cv::Rect(
開頭的行會引發異常(斷言失敗,因爲值爲< 0
)。我不知道輪廓線的數量是否重要,但我認爲是因爲圖像越大,斷言例外的可能性越大。
說實話:我沒有時間閱讀OpenCV的文檔並理解你的代碼是幹什麼的,但到目前爲止,我認爲沒有辦法。似乎不幸的是,我的初始任務(掃描收據,運行OCR,顯示錶中的項目)需要比我想象的更多的資源(=時間)。
感謝您的建議,我更新了我的問題。 – Dennis
我已經更新了筆記部分的一些評論 –
謝謝!我提高了你的帖子,並再次編輯我的問題。 – Dennis