2015-08-24 36 views
5

我已经安装了tesseract-ocr(0.1.5)宝石。macse上的Tesseract-ocr宝石问题x

依赖性也被安装(超正方体/ 00年3月4日和leptonica/1.72)

的Mac OS X Yosemity。

当我做rake db:migrate出现错误:

rake aborted! 
CompilationError: compile error: see logs at /var/folders/xg/g9n7qvns5z1gsr_yjh09n1nm0000gn/T/.ffi-inline-501/d2f8bb8a1867b800ff8ad69a3b850c91521b3760.log 
/Users/user/.rvm/gems/[email protected]/gems/ffi-inline-0.0.4.3/lib/ffi/inline/compilers/gcc.rb:35:in `compile' 
/Users/user/.rvm/gems/[email protected]/gems/ffi-inline-0.0.4.3/lib/ffi/inline/builders/c.rb:114:in `shared_object' 
/Users/user/.rvm/gems/[email protected]/gems/ffi-inline-0.0.4.3/lib/ffi/inline/builders.rb:90:in `block in build' 
/Users/user/.rvm/gems/[email protected]/gems/ffi-inline-0.0.4.3/lib/ffi/inline/builders.rb:87:in `instance_eval' 
/Users/user/.rvm/gems/[email protected]/gems/ffi-inline-0.0.4.3/lib/ffi/inline/builders.rb:87:in `build' 
/Users/user/.rvm/gems/[email protected]/gems/ffi-inline-0.0.4.3/lib/ffi/inline/inline.rb:54:in `singleton_inline' 
/Users/user/.rvm/gems/[email protected]/gems/ffi-inline-0.0.4.3/lib/ffi/inline/inline.rb:39:in `inline' 
/Users/user/.rvm/gems/[email protected]/gems/tesseract-ocr-0.1.5/lib/tesseract/c/baseapi.rb:30:in `<module:BaseAPI>' 
/Users/user/.rvm/gems/[email protected]/gems/tesseract-ocr-0.1.5/lib/tesseract/c/baseapi.rb:27:in `<module:C>' 
/Users/user/.rvm/gems/[email protected]/gems/tesseract-ocr-0.1.5/lib/tesseract/c/baseapi.rb:25:in `<module:Tesseract>' 
/Users/user/.rvm/gems/[email protected]/gems/tesseract-ocr-0.1.5/lib/tesseract/c/baseapi.rb:25:in `<top (required)>' 
/Users/user/.rvm/gems/[email protected]/gems/activesupport-4.2.3/lib/active_support/dependencies.rb:274:in `require' 
/Users/user/.rvm/gems/[email protected]/gems/activesupport-4.2.3/lib/active_support/dependencies.rb:274:in `block in require' 
/Users/user/.rvm/gems/[email protected]/gems/activesupport-4.2.3/lib/active_support/dependencies.rb:240:in `load_dependency' 
/Users/user/.rvm/gems/[email protected]/gems/activesupport-4.2.3/lib/active_support/dependencies.rb:274:in `require' 
/Users/user/.rvm/gems/[email protected]/gems/tesseract-ocr-0.1.5/lib/tesseract/c.rb:83:in `<top (required)>' 
/Users/user/.rvm/gems/[email protected]/gems/activesupport-4.2.3/lib/active_support/dependencies.rb:274:in `require' 
/Users/user/.rvm/gems/[email protected]/gems/activesupport-4.2.3/lib/active_support/dependencies.rb:274:in `block in require' 
/Users/user/.rvm/gems/[email protected]/gems/activesupport-4.2.3/lib/active_support/dependencies.rb:240:in `load_dependency' 
/Users/user/.rvm/gems/[email protected]/gems/activesupport-4.2.3/lib/active_support/dependencies.rb:274:in `require' 
/Users/user/.rvm/gems/[email protected]/gems/tesseract-ocr-0.1.5/lib/tesseract/api.rb:26:in `<top (required)>' 
/Users/user/.rvm/gems/[email protected]/gems/activesupport-4.2.3/lib/active_support/dependencies.rb:274:in `require' 
/Users/user/.rvm/gems/[email protected]/gems/activesupport-4.2.3/lib/active_support/dependencies.rb:274:in `block in require' 
/Users/user/.rvm/gems/[email protected]/gems/activesupport-4.2.3/lib/active_support/dependencies.rb:240:in `load_dependency' 
/Users/user/.rvm/gems/[email protected]/gems/activesupport-4.2.3/lib/active_support/dependencies.rb:274:in `require' 
/Users/user/.rvm/gems/[email protected]/gems/tesseract-ocr-0.1.5/lib/tesseract-ocr.rb:35:in `<top (required)>' 
/Users/user/.rvm/gems/[email protected]/gems/bundler-1.10.6/lib/bundler/runtime.rb:76:in `require' 
/Users/user/.rvm/gems/[email protected]/gems/bundler-1.10.6/lib/bundler/runtime.rb:76:in `block (2 levels) in require' 
/Users/user/.rvm/gems/[email protected]/gems/bundler-1.10.6/lib/bundler/runtime.rb:72:in `each' 
/Users/user/.rvm/gems/[email protected]/gems/bundler-1.10.6/lib/bundler/runtime.rb:72:in `block in require' 
/Users/user/.rvm/gems/[email protected]/gems/bundler-1.10.6/lib/bundler/runtime.rb:61:in `each' 
/Users/user/.rvm/gems/[email protected]/gems/bundler-1.10.6/lib/bundler/runtime.rb:61:in `require' 
/Users/user/.rvm/gems/[email protected]/gems/bundler-1.10.6/lib/bundler.rb:134:in `require' 
/Users/user/work/project/config/application.rb:17:in `<top (required)>' 
/Users/user/work/project/Rakefile:4:in `<top (required)>' 

在日志:

g++ -dynamic -bundle -fPIC -o /var/folders/xg/g9n7qvns5z1gsr_yjh09n1nm0000gn/T/.ffi-inline-501/d2f8bb8a1867b800ff8ad69a3b850c91521b3760.dylib /var/folders/xg/g9n7qvns5z1gsr_yjh09n1nm0000gn/T/.ffi-inline-501/d2f8bb8a1867b800ff8ad69a3b850c91521b3760.cpp -ltesseract 2>>/var/folders/xg/g9n7qvns5z1gsr_yjh09n1nm0000gn/T/.ffi-inline-501/d2f8bb8a1867b800ff8ad69a3b850c91521b3760.log 
/Users/user/.rvm/gems/[email protected]/gems/tesseract-ocr-0.1.5/lib/tesseract/c/baseapi.rb:171:10: error: no matching member function for call to 'SetImage' 
           api->SetImage(pix); 
           ~~~~~^~~~~~~~ 
/usr/local/include/tesseract/baseapi.h:354:8: note: candidate function not viable: 1st argument ('const Pix *') would lose const qualifier 
    void SetImage(Pix* pix); 
    ^
/usr/local/include/tesseract/baseapi.h:341:8: note: candidate function not viable: requires 5 arguments, but 1 was provided 
    void SetImage(const unsigned char* imagedata, int width, int height, 
    ^
/Users/user/.rvm/gems/[email protected]/gems/tesseract-ocr-0.1.5/lib/tesseract/c/baseapi.rb:183:49: error: cannot initialize a parameter of type 'tesseract::TessResultRenderer *' with an lvalue of type 'STRING *' 
           return api->ProcessPages(filename, NULL, 0, output); 
                      ^~~~~~ 
/usr/local/include/tesseract/baseapi.h:542:63: note: passing argument to parameter 'renderer' here 
        int timeout_millisec, TessResultRenderer* renderer); 
                  ^
/Users/user/.rvm/gems/[email protected]/gems/tesseract-ocr-0.1.5/lib/tesseract/c/baseapi.rb:189:65: error: cannot initialize a parameter of type 'tesseract::TessResultRenderer *' with an lvalue of type 'STRING *' 
           return api->ProcessPage(pix, page_index, filename, NULL, 0, output); 
                          ^~~~~~ 
/usr/local/include/tesseract/baseapi.h:558:40: note: passing argument to parameter 'renderer' here 
        TessResultRenderer* renderer); 
            ^

我该如何解决呢?

更新:这不是重复的问题。它没有帮助Error setting up the tesseract OCR in gem in rails

回答

8

的Tesseract开发者版本在3.0.4版本和正方体-OCR宝石改变了不少一些东西,失去了与它的兼容性。我看到的最佳解决方案是现在降级。您可能在Mac上安装了以前版本的Tesseract,使用brew info tesseract来查找。如果是这样,只需使用brew switch。我做了brew cleanup最近,所以我不得不卸载正方体,并从老配方安装它,就像这样:

$ brew uninstall tesseract 
$ brew install https://raw.githubusercontent.com/Homebrew/homebrew/8ba134eda537d2cee7daa7ebdd9f728389d9c53e/Library/Formula/tesseract.rb 

这将安装正方体3.02.02_3d,这似乎是工作。 您可以在tesseract-ocr repo找到更多信息并跟踪此问题。

+0

这不起作用。抛出一堆警告和不赞成的错误 –

+0

@MaheshMesta抱歉,无法帮助,从那时起就没有与tesseract一起工作。我想你必须自己解决它,在[回购](https://github.com/meh/ruby-tesseract-ocr/issues/50)中做一些炒作 – parkh

0

从日志中生成它表明我失踪的头文件,我的问题是,我引用了错误的版本是这样, 将这些代码宝石文件解决了这个问题对我来说

ENV['CFLAGS'] = '-I/usr/local/Cellar/tesseract/3.02.02_3/include -I/usr/local/Cellar/leptonica/1.71_1/include' 
ENV['LDFLAGS'] = '-L/usr/local/Cellar/tesseract/3.02.02_3/lib -L/usr/local/Cellar/leptonica/1.71_1/lib' 

还做检查自己的正方体和leptonica

+0

我写道这个旧修复程序没有帮助。 –

1

如果您不想降级Tesseract,另一个快速而肮脏的方法是将Tesseract作为shell命令执行,并打开它保存的文件以访问内容(注意:字符串插值在shell命令中起作用)

input_image = 'input.tif' 
`tesseract #{input_image} output -l eng` 
file = File.open('output.txt')