2015-04-04 26 views
3

我正在開發一個應用程序與openCV和Tesaract框架。 它在「沒有64位支持」的情況下運行良好,但現在每個版本都需要64位支持。 所以,我有我的項目中tessaract架構更新到Tesasract ios SDK錯誤打開數據文件/tessdata/eng.traineddata

莢 'TesseractOCRiOS', '3.4.0'

。 現在項目運行良好,所有設備。 但是,當我掃描的任何圖像,我總是得到如下錯誤:

錯誤打開數據文件/tessdata/eng.traineddata請確保 TESSDATA_PREFIX環境變量設置爲 你「tessdata」的父目錄目錄。加載語言'eng'失敗Tesseract 無法加載任何語言!

我已經通過谷歌上的每個鏈接沒有成功。 我可以確保在我的項目中添加了「tessdata」文件夾作爲文件夾參考。

任何幫助真的會有所幫助。謝謝。

回答

4

無論如何,我得到了解決方案。 只需更新莢最新版本讓你的POD文件應該是這樣

莢 'TesseractOCRiOS', '4.0.0'

如果文件目錄未找到它automaticaly管理 「tessdata」。你只需要確保它存在於你的應用程序包中。

然後你可以初始化它像

_tesseract = new tesseract::TessBaseAPI(); 
_tesseract->Init([[self pathToLangugeFIle] cStringUsingEncoding:NSUTF8StringEncoding], "eng"); 

的功能應該像

- (NSString*) pathToLangugeFIle{ 

    // Set up the tessdata path. This is included in the application bundle 
    // but is copied to the Documents directory on the first run. 
    NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentPath = ([documentPaths count] > 0) ? [documentPaths objectAtIndex:0] : nil; 

    NSString *dataPath = [documentPath stringByAppendingPathComponent:@"tessdata"]; 
    NSFileManager *fileManager = [NSFileManager defaultManager]; 
    // If the expected store doesn't exist, copy the default store. 
    if (![fileManager fileExistsAtPath:dataPath]) { 
     // get the path to the app bundle (with the tessdata dir) 
     NSString *bundlePath = [[NSBundle mainBundle] bundlePath]; 
     NSString *tessdataPath = [bundlePath stringByAppendingPathComponent:@"tessdata"]; 
     if (tessdataPath) { 
      [fileManager copyItemAtPath:tessdataPath toPath:dataPath error:NULL]; 
     } 
    } 

    setenv("TESSDATA_PREFIX", [[documentPath stringByAppendingString:@"/"] UTF8String], 1); 

    return dataPath; 
} 
相關問題