ios - Xcode 上的 Tesseract 运行错误

标签 ios objective-c xcode tesseract

我一直在 Xcode 上测试 Tesseract。我按照访问 http://lois.di-qual.net/blog/install-and-use-tesseract-on-ios-with-tesseract-ios/ 中的说明进行操作.但问题是,当我运行程序时,我在控制台上收到以下错误:

Error opening data file /Users/mdriduanulislam/Library/Application Support/iPhone 
Simulator/7.0/Applications/0ABCEAB3-3793-44C9-8914-
A99BB6B4EF9F/Documents/tessdata/eng.traineddata

Please make sure the TESSDATA_PREFIX environment variable is set to the parent directory
of your "tessdata" directory.

Failed loading language 'eng'
Tesseract couldn't load any languages!`

我在 StackOveflow 上被问到 1 个问题,但答案并不令人满意。有人可以告诉我为什么会出现问题以及问题的可能解决方案吗?我急切地等待正确的答案。

最佳答案

这是因为您的文档文件夹中没有语言文件。使用下面的代码将 bundle 中添加的语言文件保存到文档文件夹中。在启动 tesseract Tesseract* tesseract = [[Tesseract alloc] initWithDataPath:@"tessdata"language:@"eng"];

之前调用此方法
- (void)storeLanguageFile {

        NSFileManager *fileManager = [NSFileManager defaultManager];
        NSString *docsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
        NSString *path = [docsDirectory stringByAppendingPathComponent:@"/tessdata/eng.traineddata"];
        if(![fileManager fileExistsAtPath:path])
        {
            NSData *data = [NSData dataWithContentsOfFile:[[[NSBundle mainBundle] resourcePath] stringByAppendingString:@"/tessdata/eng.traineddata"]];
            NSError *error;
            [[NSFileManager defaultManager] createDirectoryAtPath:[docsDirectory stringByAppendingPathComponent:@"/tessdata"] withIntermediateDirectories:YES attributes:nil error:&error];
            [data writeToFile:path atomically:YES];
        }
}

- (NSString *)scanImage:(UIImage *)image {

        Tesseract *tesseract = [[Tesseract alloc] initWithDataPath:@"/tessdata" language:@"eng"];

        [tesseract setVariableValue:@"0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" forKey:@"tessedit_char_whitelist"];
        [tesseract setVariableValue:@".,:;'" forKey:@"tessedit_char_blacklist"];

        if (image) {
            [tesseract setImage:image];
            [tesseract setRect:CGRectMake(0, point.y- 25, image.size.width, 50)];
            [tesseract recognize];
            return [tesseract recognizedText];
        }
        return nil;
    }

关于ios - Xcode 上的 Tesseract 运行错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21299571/

相关文章:

iphone - 将其添加到项目时无法将任何新的 .H 文件添加到目标,

ios - 场景更改后音乐停止播放 SKAudioNode Xcode 8

iphone - 将设备添加到配置文件后是否必须重新存档项目?

ios - 在 iOS 10 中使用 UNNotificationSettings 检查通知类型

ios - 在所有州应用程序中捕获位置

objective-c - 初始化 NSDictionary

ios - 使用 iOS 7 的自动布局的一些具体帮助

iphone - 在 iOS 中显示多个 View 的最佳实践

iphone - 如何在用户单击 UITableViewCell Accessory DetailDisclosureButton 时显示选项

XCode 项目导航器错误