TesseractOCR-iOS 无法找到 traineddata 文件问题 & Xcode Group 与 Folder Reference 的区别

TesseractOCR-iOS 无法找到 traineddata 文件问题 & Xcode Group 与 Folder Reference 的区别

    最近在玩儿 OCR,运行 APP 的时候遇到了一个找不到资源文件的问题,导致无法识别。Google 了一下,把资源文件的引入方式从 Group 改成 Folder Reference,问题就解决了。但是不知道为什么这样能解决问题,就继续查了一些资料,了解一下 Group 与 Folder Reference 的区别,总结如下。

    从设计目的上来看,Group 是想让你用来引入代码的,Folder Reference 是想让你用来引入资源文件的。从处理逻辑上看,Xcode 会为 Group 下面的每一个文件生成一个 Reference,并最终把 Group 下面的文件都平铺放到 Product Bundle 的根目录下面;而 Folder Reference 会为文件夹生成一个 Reference,不管内部文件的变动,最终文件会保持目录结构不变 copy 到 Product Bundle 下面;从特性上来看,用 Group 里面的文件可以单独控制,设置 target,设置是否被引入工程等等;Folder Reference 里面的文件可以通过 File System 自由的改动(一些图标通过 Finder 直接 copy 进去),要么全部引入,要么全部不引入。所以说,Group 适合用于引入代码,Folder Reference 适合用于引入资源文件。

    回过头说下最开始的问题,为什么 TesseractOCR-iOS 无法找到 traineddata 文件。是因为我是通过 Group 引入,文件都会平铺到 Product Bundle 根目录下面,而内部初始化逻辑是在主 Bundle 下面的 tessdata 目录下面找的,路径不匹配,所以报了无法找到 traineddata 文件的错误。

...
        if (self.absoluteDataPath == nil) {
            // config Tesseract to search trainedData in tessdata folder of the application bundle;
            _absoluteDataPath = [NSBundle mainBundle].bundlePath;
        }

        setenv("TESSDATA_PREFIX", [_absoluteDataPath stringByAppendingString:@"/"].fileSystemRepresentation, 1);

...

    参考链接:Reference 1 , Reference 2

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值