GithubHelp home page GithubHelp logo

motion-ocr's Introduction

MotionOCR

A RubyMotion wrapper for the OCR engine Tesseract.

Installation

First, install the gem:

gem install motion-ocr

Then, reference it in your RubyMotion project Rakefile:

# -*- coding: utf-8 -*-
$:.unshift("/Library/RubyMotion/lib")
require 'motion/project/template/ios'

require 'motion-ocr'

And that's it. Build your project and MotionOCR will be ready for action.

Use

ocr             = Motion::OCR.new
image_with_text = UIImage.imageNamed('phototest.gif').CGImage

ocr.scan(image_with_text) # returns a String containing the detected text in the image

Options

You use your own Tesseract language file (available at https://code.google.com/p/tesseract-ocr/downloads/list).

Put the language file (e.g., spa.traineddata) into your app's ressources/tessdata directory. Then pass the language to MotionOCR:

ocr = Motion::OCR.new language: 'spa'

motion-ocr's People

Contributors

clemenshelm avatar ferdev avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

motion-ocr's Issues

Undefined symbols for architecture i386

I am trying to use motion-ocr with the following code:

Rakefile

$:.unshift("/Library/RubyMotion/lib")
require 'motion/project/template/ios'
require 'motion-ocr'

begin
  require 'bundler'
  Bundler.require
rescue LoadError
end

Motion::Project::App.setup do |app|
  # Use `rake config' to see complete project settings.
  app.name = 'ocr'
end

app_delegate.rb

class AppDelegate
  def application(application, didFinishLaunchingWithOptions: launchOptions)
    true
  end
end

Gemfile

source 'https://rubygems.org'

gem 'rake'
gem 'motion-ocr'

Running rake gets this error:

andy@cowboy[~/workspace/ocr]$ rake
There was an error in your Gemfile, and Bundler cannot continue.
     Build ./build/iPhoneSimulator-7.0-Development
   Compile ./app/app_delegate.rb
      Link ./build/iPhoneSimulator-7.0-Development/ocr.app/ocr
Undefined symbols for architecture i386:
  "std::string::find_last_of(char const*, unsigned long) const", referenced from:
      tesseract::WordSizeModel::Init(std::string const&, std::string const&) in libMotionOCR.a(word_size_model.o)
  "std::string::find_first_of(std::string const&, unsigned long) const", referenced from:
      tesseract::CubeUtils::SplitStringUsing(std::string const&, std::string const&, std::vector<std::string, std::allocator<std::string> >*) in libMotionOCR.a(cube_utils.o)
  "std::string::find_first_not_of(std::string const&, unsigned long) const", referenced from:
      tesseract::CubeUtils::SplitStringUsing(std::string const&, std::string const&, std::vector<std::string, std::allocator<std::string> >*) in libMotionOCR.a(cube_utils.o)
  "std::string::data() const", referenced from:
      tesseract::CubeUtils::SplitStringUsing(std::string const&, std::string const&, std::vector<std::string, std::allocator<std::string> >*) in libMotionOCR.a(cube_utils.o)
  "std::string::find(char, unsigned long) const", referenced from:
      tesseract::TessLangModel::IsLeadingPunc(int) in libMotionOCR.a(tess_lang_model.o)
      tesseract::TessLangModel::IsTrailingPunc(int) in libMotionOCR.a(tess_lang_model.o)
      tesseract::TessLangModel::IsDigit(int) in libMotionOCR.a(tess_lang_model.o)
      tesseract::WordSizeModel::Init(std::string const&, std::string const&) in libMotionOCR.a(word_size_model.o)
  "std::string::size() const", referenced from:
      tesseract::CubeUtils::SplitStringUsing(std::string const&, std::string const&, std::vector<std::string, std::allocator<std::string> >*) in libMotionOCR.a(cube_utils.o)
      SVNetwork::Flush() in libMotionOCR.a(svutil.o)
  "std::string::c_str() const", referenced from:
      tesseract::CachedFile::Open() in libMotionOCR.a(cached_file.o)
      tesseract::CharBigrams::Create(std::string const&, std::string const&) in libMotionOCR.a(char_bigrams.o)
      tesseract::CharSamp::SetLabel(std::string) in libMotionOCR.a(char_samp.o)
      tesseract::CharSampSet::CreateCharDumpFile(std::string) in libMotionOCR.a(char_samp_set.o)
      tesseract::CharSampSet::FromCharDumpFile(std::string) in libMotionOCR.a(char_samp_set.o)
      tesseract::ConvNetCharClassifier::LoadFoldingSets(std::string const&, std::string const&, tesseract::LangModel*) in libMotionOCR.a(conv_net_classifier.o)
      tesseract::ConvNetCharClassifier::LoadNets(std::string const&, std::string const&) in libMotionOCR.a(conv_net_classifier.o)
      ...
  "std::string::length() const", referenced from:
      tesseract::ConvNetCharClassifier::LoadFoldingSets(std::string const&, std::string const&, tesseract::LangModel*) in libMotionOCR.a(conv_net_classifier.o)
      tesseract::CubeUtils::IsCaseInvariant(int const*, tesseract::CharSet*, UNICHARSET*) in libMotionOCR.a(cube_utils.o)
      tesseract::HybridNeuralNetCharClassifier::LoadFoldingSets(std::string const&, std::string const&, tesseract::LangModel*) in libMotionOCR.a(hybrid_neural_net_classifier.o)
      SVNetwork::Flush() in libMotionOCR.a(svutil.o)
      tesseract::TesseractCubeCombiner::ComputeCombinerFeatures(std::string const&, int, tesseract::CubeObject*, tesseract::WordAltList*, std::vector<double, std::allocator<double> >*, bool*) in libMotionOCR.a(tesseract_cube_combiner.o)
      tesseract::WordUnigrams::Create(std::string const&, std::string const&) in libMotionOCR.a(word_unigrams.o)
  "std::string::substr(unsigned long, unsigned long) const", referenced from:
      tesseract::CubeUtils::SplitStringUsing(std::string const&, std::string const&, std::vector<std::string, std::allocator<std::string> >*) in libMotionOCR.a(cube_utils.o)
      tesseract::WordSizeModel::Init(std::string const&, std::string const&) in libMotionOCR.a(word_size_model.o)
  "std::string::compare(char const*) const", referenced from:
      bool std::operator==<char, std::char_traits<char>, std::allocator<char> >(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, char const*) in libMotionOCR.a(cube_line_object.o)
      bool std::operator!=<char, std::char_traits<char>, std::allocator<char> >(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, char const*) in libMotionOCR.a(cube_object.o)
      bool std::operator==<char, std::char_traits<char>, std::allocator<char> >(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, char const*) in libMotionOCR.a(cube_reco_context.o)
      bool std::operator==<char, std::char_traits<char>, std::allocator<char> >(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, char const*) in libMotionOCR.a(cube_search_object.o)
      bool std::operator==<char, std::char_traits<char>, std::allocator<char> >(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, char const*) in libMotionOCR.a(cube_tuning_params.o)
      bool std::operator==<char, std::char_traits<char>, std::allocator<char> >(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, char const*) in libMotionOCR.a(tess_lang_model.o)
      bool std::operator!=<char, std::char_traits<char>, std::allocator<char> >(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, char const*) in libMotionOCR.a(tess_lang_model.o)
      ...
  "std::string::compare(std::string const&) const", referenced from:
      tesseract::TesseractCubeCombiner::CompareStrings(std::string const&, std::string const&, bool, bool) in libMotionOCR.a(tesseract_cube_combiner.o)
      tesseract::TesseractCubeCombiner::ComputeCombinerFeatures(std::string const&, int, tesseract::CubeObject*, tesseract::WordAltList*, std::vector<double, std::allocator<double> >*, bool*) in libMotionOCR.a(tesseract_cube_combiner.o)
      bool std::operator==<char, std::char_traits<char>, std::allocator<char> >(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) in libMotionOCR.a(tesseract_cube_combiner.o)
      bool std::operator!=<char, std::char_traits<char>, std::allocator<char> >(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) in libMotionOCR.a(word_size_model.o)
  "std::string::operator[](unsigned long) const", referenced from:
      tesseract::CubeUtils::SplitStringUsing(std::string const&, std::string const&, std::vector<std::string, std::allocator<std::string> >*) in libMotionOCR.a(cube_utils.o)
  "std::allocator<char>::allocator()", referenced from:
      tesseract::CharBigrams::Create(std::string const&, std::string const&) in libMotionOCR.a(char_bigrams.o)
      tesseract::CharSamp::stringLabel() const in libMotionOCR.a(char_samp.o)
      tesseract::ConvNetCharClassifier::LoadFoldingSets(std::string const&, std::string const&, tesseract::LangModel*) in libMotionOCR.a(conv_net_classifier.o)
      tesseract::ConvNetCharClassifier::LoadNets(std::string const&, std::string const&) in libMotionOCR.a(conv_net_classifier.o)
      tesseract::CubeTuningParams::Load(std::string) in libMotionOCR.a(cube_tuning_params.o)
      tesseract::CubeUtils::SplitStringUsing(std::string const&, std::string const&, std::vector<std::string, std::allocator<std::string> >*) in libMotionOCR.a(cube_utils.o)
      tesseract::HybridNeuralNetCharClassifier::LoadNets(std::string const&, std::string const&) in libMotionOCR.a(hybrid_neural_net_classifier.o)
      ...
  "std::allocator<char>::~allocator()", referenced from:
      tesseract::CharBigrams::Create(std::string const&, std::string const&) in libMotionOCR.a(char_bigrams.o)
      tesseract::CharSamp::stringLabel() const in libMotionOCR.a(char_samp.o)
      std::basic_string<int, std::char_traits<int>, std::allocator<int> >::_Rep::_M_destroy(std::allocator<int> const&) in libMotionOCR.a(char_samp.o)
      std::basic_string<int, std::char_traits<int>, std::allocator<int> >::_Rep::_S_create(unsigned long, unsigned long, std::allocator<int> const&) in libMotionOCR.a(char_samp.o)
      std::basic_string<int, std::char_traits<int>, std::allocator<int> >::_Rep::_M_destroy(std::allocator<int> const&) in libMotionOCR.a(char_set.o)
      std::basic_string<int, std::char_traits<int>, std::allocator<int> >::_Rep::_S_create(unsigned long, unsigned long, std::allocator<int> const&) in libMotionOCR.a(char_set.o)
      tesseract::ConvNetCharClassifier::LoadFoldingSets(std::string const&, std::string const&, tesseract::LangModel*) in libMotionOCR.a(conv_net_classifier.o)
      ...
  "std::ostream::operator<<(std::ostream& (*)(std::ostream&))", referenced from:
      SVNetwork::SVNetwork(char const*, int) in libMotionOCR.a(svutil.o)
      SVNetwork::SVNetwork(char const*, int) in libMotionOCR.a(svutil.o)
  "std::ostream::operator<<(int)", referenced from:
      SVNetwork::SVNetwork(char const*, int) in libMotionOCR.a(svutil.o)
      SVNetwork::SVNetwork(char const*, int) in libMotionOCR.a(svutil.o)
  "std::string::clear()", referenced from:
      tesseract::CubeUtils::UTF32ToUTF8(int const*, std::string*) in libMotionOCR.a(cube_utils.o)
      tesseract::CubeUtils::ReadFileToString(std::string const&, std::string*) in libMotionOCR.a(cube_utils.o)
      tesseract::TessLangModel::RemoveInvalidCharacters(std::string*) in libMotionOCR.a(tess_lang_model.o)
  "std::string::erase(unsigned long, unsigned long)", referenced from:
      SVNetwork::Flush() in libMotionOCR.a(svutil.o)
  "std::string::append(char const*)", referenced from:
      std::basic_string<char, std::char_traits<char>, std::allocator<char> > std::operator+<char, std::char_traits<char>, std::allocator<char> >(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, char const*) in libMotionOCR.a(cube_reco_context.o)
      SVNetwork::Send(char const*) in libMotionOCR.a(svutil.o)
      std::basic_string<char, std::char_traits<char>, std::allocator<char> > std::operator+<char, std::char_traits<char>, std::allocator<char> >(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, char const*) in libMotionOCR.a(tesseract_cube_combiner.o)
  "std::string::append(char const*, unsigned long)", referenced from:
      tesseract::CubeUtils::ReadFileToString(std::string const&, std::string*) in libMotionOCR.a(cube_utils.o)
  "std::string::append(std::string const&)", referenced from:
      std::basic_string<char, std::char_traits<char>, std::allocator<char> > std::operator+<char, std::char_traits<char>, std::allocator<char> >(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) in libMotionOCR.a(char_bigrams.o)
      std::basic_string<char, std::char_traits<char>, std::allocator<char> > std::operator+<char, std::char_traits<char>, std::allocator<char> >(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) in libMotionOCR.a(conv_net_classifier.o)
      std::basic_string<char, std::char_traits<char>, std::allocator<char> > std::operator+<char, std::char_traits<char>, std::allocator<char> >(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) in libMotionOCR.a(cube_reco_context.o)
      std::basic_string<char, std::char_traits<char>, std::allocator<char> > std::operator+<char, std::char_traits<char>, std::allocator<char> >(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) in libMotionOCR.a(cube_tuning_params.o)
      std::basic_string<char, std::char_traits<char>, std::allocator<char> > std::operator+<char, std::char_traits<char>, std::allocator<char> >(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) in libMotionOCR.a(hybrid_neural_net_classifier.o)
      std::basic_string<char, std::char_traits<char>, std::allocator<char> > std::operator+<char, std::char_traits<char>, std::allocator<char> >(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) in libMotionOCR.a(tesseract_cube_combiner.o)
      std::basic_string<char, std::char_traits<char>, std::allocator<char> > std::operator+<char, std::char_traits<char>, std::allocator<char> >(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) in libMotionOCR.a(word_size_model.o)
      ...
  "std::string::reserve(unsigned long)", referenced from:
      tesseract::CubeUtils::ReadFileToString(std::string const&, std::string*) in libMotionOCR.a(cube_utils.o)
  "std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(char const*, std::allocator<char> const&)", referenced from:
      tesseract::CharBigrams::Create(std::string const&, std::string const&) in libMotionOCR.a(char_bigrams.o)
      tesseract::CharSamp::stringLabel() const in libMotionOCR.a(char_samp.o)
      tesseract::ConvNetCharClassifier::LoadFoldingSets(std::string const&, std::string const&, tesseract::LangModel*) in libMotionOCR.a(conv_net_classifier.o)
      tesseract::ConvNetCharClassifier::LoadNets(std::string const&, std::string const&) in libMotionOCR.a(conv_net_classifier.o)
      tesseract::CubeTuningParams::Load(std::string) in libMotionOCR.a(cube_tuning_params.o)
      tesseract::HybridNeuralNetCharClassifier::LoadNets(std::string const&, std::string const&) in libMotionOCR.a(hybrid_neural_net_classifier.o)
      tesseract::HybridNeuralNetCharClassifier::LoadFoldingSets(std::string const&, std::string const&, tesseract::LangModel*) in libMotionOCR.a(hybrid_neural_net_classifier.o)
      ...
  "std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(char const*, unsigned long, std::allocator<char> const&)", referenced from:
      tesseract::CubeUtils::SplitStringUsing(std::string const&, std::string const&, std::vector<std::string, std::allocator<std::string> >*) in libMotionOCR.a(cube_utils.o)
  "std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(std::string const&)", referenced from:
      std::basic_string<char, std::char_traits<char>, std::allocator<char> > std::operator+<char, std::char_traits<char>, std::allocator<char> >(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) in libMotionOCR.a(char_bigrams.o)
      tesseract::CharSampSet::EnumSamples(std::string, tesseract::CharSampEnum*) in libMotionOCR.a(char_samp_set.o)
      std::basic_string<char, std::char_traits<char>, std::allocator<char> > std::operator+<char, std::char_traits<char>, std::allocator<char> >(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) in libMotionOCR.a(conv_net_classifier.o)
      std::basic_string<char, std::char_traits<char>, std::allocator<char> > std::operator+<char, std::char_traits<char>, std::allocator<char> >(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, char const*) in libMotionOCR.a(cube_reco_context.o)
      std::basic_string<char, std::char_traits<char>, std::allocator<char> > std::operator+<char, std::char_traits<char>, std::allocator<char> >(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) in libMotionOCR.a(cube_reco_context.o)
      tesseract::CubeTuningParams::Create(std::string const&, std::string const&) in libMotionOCR.a(cube_tuning_params.o)
      std::basic_string<char, std::char_traits<char>, std::allocator<char> > std::operator+<char, std::char_traits<char>, std::allocator<char> >(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) in libMotionOCR.a(cube_tuning_params.o)
      ...
  "std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string()", referenced from:
      tesseract::CachedFile::CachedFile(std::string) in libMotionOCR.a(cached_file.o)
      tesseract::CachedFile::CachedFile(std::string) in libMotionOCR.a(cached_file.o)
      tesseract::CharBigrams::Create(std::string const&, std::string const&) in libMotionOCR.a(char_bigrams.o)
      tesseract::ConvNetCharClassifier::LoadFoldingSets(std::string const&, std::string const&, tesseract::LangModel*) in libMotionOCR.a(conv_net_classifier.o)
      tesseract::ConvNetCharClassifier::LoadNets(std::string const&, std::string const&) in libMotionOCR.a(conv_net_classifier.o)
      tesseract::Tesseract::cube_recognize(tesseract::CubeObject*, PAGE_RES_IT*) in libMotionOCR.a(cube_control.o)
      tesseract::CubeRecoContext::CubeRecoContext(tesseract::Tesseract*) in libMotionOCR.a(cube_reco_context.o)
      ...
  "std::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string()", referenced from:
      tesseract::CachedFile::CachedFile(std::string) in libMotionOCR.a(cached_file.o)
      tesseract::CachedFile::~CachedFile() in libMotionOCR.a(cached_file.o)
      tesseract::CachedFile::~CachedFile() in libMotionOCR.a(cached_file.o)
      tesseract::CachedFile::CachedFile(std::string) in libMotionOCR.a(cached_file.o)
      tesseract::CharBigrams::Create(std::string const&, std::string const&) in libMotionOCR.a(char_bigrams.o)
      void std::_Destroy<std::string>(std::string*) in libMotionOCR.a(char_bigrams.o)
      std::basic_string<char, std::char_traits<char>, std::allocator<char> > std::operator+<char, std::char_traits<char>, std::allocator<char> >(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) in libMotionOCR.a(char_bigrams.o)
      ...
  "std::string::operator=(char const*)", referenced from:
      tesseract::CubeRecoContext::CubeRecoContext(tesseract::Tesseract*) in libMotionOCR.a(cube_reco_context.o)
      tesseract::CubeRecoContext::GetDataFilePath(std::string*) const in libMotionOCR.a(cube_reco_context.o)
      tesseract::CubeRecoContext::CubeRecoContext(tesseract::Tesseract*) in libMotionOCR.a(cube_reco_context.o)
      tesseract::CubeRecoContext::Load(tesseract::TessdataManager*, UNICHARSET*) in libMotionOCR.a(cube_reco_context.o)
  "std::string::operator=(std::string const&)", referenced from:
      tesseract::CachedFile::CachedFile(std::string) in libMotionOCR.a(cached_file.o)
      tesseract::CachedFile::CachedFile(std::string) in libMotionOCR.a(cached_file.o)
      tesseract::CharBigrams::Create(std::string const&, std::string const&) in libMotionOCR.a(char_bigrams.o)
      tesseract::ConvNetCharClassifier::LoadFoldingSets(std::string const&, std::string const&, tesseract::LangModel*) in libMotionOCR.a(conv_net_classifier.o)
      tesseract::ConvNetCharClassifier::LoadNets(std::string const&, std::string const&) in libMotionOCR.a(conv_net_classifier.o)
      tesseract::CubeTuningParams::Create(std::string const&, std::string const&) in libMotionOCR.a(cube_tuning_params.o)
      std::string* std::__copy_backward<false, std::random_access_iterator_tag>::__copy_b<std::string*, std::string*>(std::string*, std::string*, std::string*) in libMotionOCR.a(cube_utils.o)
      ...
  "std::string::operator[](unsigned long)", referenced from:
      tesseract::CubeUtils::IsCaseInvariant(int const*, tesseract::CharSet*, UNICHARSET*) in libMotionOCR.a(cube_utils.o)
  "std::string::operator+=(char const*)", referenced from:
      tesseract::CharBigrams::Create(std::string const&, std::string const&) in libMotionOCR.a(char_bigrams.o)
      tesseract::ConvNetCharClassifier::LoadFoldingSets(std::string const&, std::string const&, tesseract::LangModel*) in libMotionOCR.a(conv_net_classifier.o)
      tesseract::ConvNetCharClassifier::LoadNets(std::string const&, std::string const&) in libMotionOCR.a(conv_net_classifier.o)
      tesseract::CubeTuningParams::Create(std::string const&, std::string const&) in libMotionOCR.a(cube_tuning_params.o)
      tesseract::CubeUtils::UTF32ToUTF8(int const*, std::string*) in libMotionOCR.a(cube_utils.o)
      tesseract::HybridNeuralNetCharClassifier::LoadNets(std::string const&, std::string const&) in libMotionOCR.a(hybrid_neural_net_classifier.o)
      tesseract::HybridNeuralNetCharClassifier::LoadFoldingSets(std::string const&, std::string const&, tesseract::LangModel*) in libMotionOCR.a(hybrid_neural_net_classifier.o)
      ...
  "std::string::operator+=(char)", referenced from:
      ScrollView::SendPolygon() in libMotionOCR.a(scrollview.o)
  "std::ios_base::Init::Init()", referenced from:
      __static_initialization_and_destruction_0(int, int) in libMotionOCR.a(svmnode.o)
      __static_initialization_and_destruction_0(int, int) in libMotionOCR.a(svpaint.o)
      __static_initialization_and_destruction_0(int, int) in libMotionOCR.a(svutil.o)
  "std::ios_base::Init::~Init()", referenced from:
      ___tcf_0 in libMotionOCR.a(svmnode.o)
      ___tcf_0 in libMotionOCR.a(svpaint.o)
      ___tcf_0 in libMotionOCR.a(svutil.o)
  "std::_Rb_tree_decrement(std::_Rb_tree_node_base*)", referenced from:
      std::_Rb_tree_iterator<std::pair<char const* const, int> >::operator--() in libMotionOCR.a(paramsd.o)
      std::_Rb_tree_iterator<std::pair<int const, ParamContent*> >::operator--() in libMotionOCR.a(paramsd.o)
      std::_Rb_tree_iterator<std::pair<std::pair<ScrollView*, SVEventType> const, std::pair<SVSemaphore*, SVEvent*> > >::operator--() in libMotionOCR.a(scrollview.o)
      std::_Rb_tree_iterator<std::pair<int const, ScrollView*> >::operator--() in libMotionOCR.a(scrollview.o)
  "std::_Rb_tree_increment(std::_Rb_tree_node_base*)", referenced from:
      std::_Rb_tree_iterator<std::pair<int const, ParamContent*> >::operator++() in libMotionOCR.a(paramsd.o)
      std::_Rb_tree_iterator<std::pair<char const* const, int> >::operator++() in libMotionOCR.a(paramsd.o)
      std::_Rb_tree_iterator<std::pair<int const, ScrollView*> >::operator++() in libMotionOCR.a(scrollview.o)
      std::_Rb_tree_iterator<std::pair<std::pair<ScrollView*, SVEventType> const, std::pair<SVSemaphore*, SVEvent*> > >::operator++() in libMotionOCR.a(scrollview.o)
      std::_Rb_tree_iterator<std::pair<std::pair<ScrollView*, SVEventType> const, std::pair<SVSemaphore*, SVEvent*> > >::operator++(int) in libMotionOCR.a(scrollview.o)
  "std::__throw_logic_error(char const*)", referenced from:
      int* std::basic_string<int, std::char_traits<int>, std::allocator<int> >::_S_construct<int const*>(int const*, int const*, std::allocator<int> const&, std::forward_iterator_tag) in libMotionOCR.a(char_samp.o)
      int* std::basic_string<int, std::char_traits<int>, std::allocator<int> >::_S_construct<int const*>(int const*, int const*, std::allocator<int> const&, std::forward_iterator_tag) in libMotionOCR.a(conv_net_classifier.o)
      int* std::basic_string<int, std::char_traits<int>, std::allocator<int> >::_S_construct<int const*>(int const*, int const*, std::allocator<int> const&, std::forward_iterator_tag) in libMotionOCR.a(hybrid_neural_net_classifier.o)
      int* std::basic_string<int, std::char_traits<int>, std::allocator<int> >::_S_construct<int const*>(int const*, int const*, std::allocator<int> const&, std::forward_iterator_tag) in libMotionOCR.a(word_list_lang_model.o)
      int* std::basic_string<int, std::char_traits<int>, std::allocator<int> >::_S_construct<int*>(int*, int*, std::allocator<int> const&, std::forward_iterator_tag) in libMotionOCR.a(word_list_lang_model.o)
  "std::__throw_length_error(char const*)", referenced from:
      std::basic_string<int, std::char_traits<int>, std::allocator<int> >::_Rep::_S_create(unsigned long, unsigned long, std::allocator<int> const&) in libMotionOCR.a(char_samp.o)
      std::basic_string<int, std::char_traits<int>, std::allocator<int> >::_Rep::_S_create(unsigned long, unsigned long, std::allocator<int> const&) in libMotionOCR.a(char_set.o)
      std::basic_string<int, std::char_traits<int>, std::allocator<int> >::_Rep::_S_create(unsigned long, unsigned long, std::allocator<int> const&) in libMotionOCR.a(conv_net_classifier.o)
      std::basic_string<int, std::char_traits<int>, std::allocator<int> >::_Rep::_S_create(unsigned long, unsigned long, std::allocator<int> const&) in libMotionOCR.a(cube_utils.o)
      std::vector<std::string, std::allocator<std::string> >::_M_insert_aux(__gnu_cxx::__normal_iterator<std::string*, std::vector<std::string, std::allocator<std::string> > >, std::string const&) in libMotionOCR.a(cube_utils.o)
      std::basic_string<int, std::char_traits<int>, std::allocator<int> >::_Rep::_S_create(unsigned long, unsigned long, std::allocator<int> const&) in libMotionOCR.a(hybrid_neural_net_classifier.o)
      std::vector<tesseract::NeuralNet*, std::allocator<tesseract::NeuralNet*> >::_M_fill_insert(__gnu_cxx::__normal_iterator<tesseract::NeuralNet**, std::vector<tesseract::NeuralNet*, std::allocator<tesseract::NeuralNet*> > >, unsigned long, tesseract::NeuralNet* const&) in libMotionOCR.a(hybrid_neural_net_classifier.o)
      ...
  "std::__throw_out_of_range(char const*)", referenced from:
      std::basic_string<int, std::char_traits<int>, std::allocator<int> >::_M_check(unsigned long, char const*) const in libMotionOCR.a(word_list_lang_model.o)
  "std::_Rb_tree_rebalance_for_erase(std::_Rb_tree_node_base*, std::_Rb_tree_node_base&)", referenced from:
      std::_Rb_tree<std::pair<ScrollView*, SVEventType>, std::pair<std::pair<ScrollView*, SVEventType> const, std::pair<SVSemaphore*, SVEvent*> >, std::_Select1st<std::pair<std::pair<ScrollView*, SVEventType> const, std::pair<SVSemaphore*, SVEvent*> > >, std::less<std::pair<ScrollView*, SVEventType> >, std::allocator<std::pair<std::pair<ScrollView*, SVEventType> const, std::pair<SVSemaphore*, SVEvent*> > > >::erase(std::_Rb_tree_iterator<std::pair<std::pair<ScrollView*, SVEventType> const, std::pair<SVSemaphore*, SVEvent*> > >) in libMotionOCR.a(scrollview.o)
  "std::_Rb_tree_insert_and_rebalance(bool, std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::_Rb_tree_node_base&)", referenced from:
      std::_Rb_tree<char const*, std::pair<char const* const, int>, std::_Select1st<std::pair<char const* const, int> >, std::less<char const*>, std::allocator<std::pair<char const* const, int> > >::_M_insert(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::pair<char const* const, int> const&) in libMotionOCR.a(paramsd.o)
      std::_Rb_tree<int, std::pair<int const, ParamContent*>, std::_Select1st<std::pair<int const, ParamContent*> >, std::less<int>, std::allocator<std::pair<int const, ParamContent*> > >::_M_insert(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::pair<int const, ParamContent*> const&) in libMotionOCR.a(paramsd.o)
      std::_Rb_tree<std::pair<ScrollView*, SVEventType>, std::pair<std::pair<ScrollView*, SVEventType> const, std::pair<SVSemaphore*, SVEvent*> >, std::_Select1st<std::pair<std::pair<ScrollView*, SVEventType> const, std::pair<SVSemaphore*, SVEvent*> > >, std::less<std::pair<ScrollView*, SVEventType> >, std::allocator<std::pair<std::pair<ScrollView*, SVEventType> const, std::pair<SVSemaphore*, SVEvent*> > > >::_M_insert(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::pair<std::pair<ScrollView*, SVEventType> const, std::pair<SVSemaphore*, SVEvent*> > const&) in libMotionOCR.a(scrollview.o)
      std::_Rb_tree<int, std::pair<int const, ScrollView*>, std::_Select1st<std::pair<int const, ScrollView*> >, std::less<int>, std::allocator<std::pair<int const, ScrollView*> > >::_M_insert(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::pair<int const, ScrollView*> const&) in libMotionOCR.a(scrollview.o)
  "std::cerr", referenced from:
      SVNetwork::SVNetwork(char const*, int) in libMotionOCR.a(svutil.o)
      SVNetwork::SVNetwork(char const*, int) in libMotionOCR.a(svutil.o)
  "std::cout", referenced from:
      SVNetwork::SVNetwork(char const*, int) in libMotionOCR.a(svutil.o)
      SVNetwork::SVNetwork(char const*, int) in libMotionOCR.a(svutil.o)
  "std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&)", referenced from:
      SVNetwork::SVNetwork(char const*, int) in libMotionOCR.a(svutil.o)
      SVNetwork::SVNetwork(char const*, int) in libMotionOCR.a(svutil.o)
  "std::basic_ostream<char, std::char_traits<char> >& std::operator<<<std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)", referenced from:
      SVNetwork::SVNetwork(char const*, int) in libMotionOCR.a(svutil.o)
      SVNetwork::SVNetwork(char const*, int) in libMotionOCR.a(svutil.o)
  "std::basic_ostream<char, std::char_traits<char> >& std::operator<<<char, std::char_traits<char>, std::allocator<char> >(std::basic_ostream<char, std::char_traits<char> >&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)", referenced from:
      SVNetwork::SVNetwork(char const*, int) in libMotionOCR.a(svutil.o)
      SVNetwork::SVNetwork(char const*, int) in libMotionOCR.a(svutil.o)
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)
rake aborted!
Command failed with status (1): [/Applications/Xcode.app/Contents/Developer...]
/Library/RubyMotion/lib/motion/project/builder.rb:304:in `build'
/Library/RubyMotion/lib/motion/project/app.rb:76:in `build'
/Library/RubyMotion/lib/motion/project/template/ios.rb:46:in `block (2 levels) in <top (required)>'
/Library/RubyMotion/lib/motion/project/template/ios.rb:63:in `block in <top (required)>'
/Users/andy/.rvm/gems/ruby-1.9.3-p327@ocr/bin/ruby_noexec_wrapper:14:in `eval'
/Users/andy/.rvm/gems/ruby-1.9.3-p327@ocr/bin/ruby_noexec_wrapper:14:in `<main>'
Tasks: TOP => build:simulator
(See full trace by running task with --trace)

Any ideas how to fix this?

Can't get it to work with RubyMotion 1.33 and ruby 1.9.2

very simple project with only in the app delegate

ocr = MotionOCR.new

image_with_text = UIImage.imageNamed('ocr-test.png').CGImage
puts ocr.scan(image_with_text)

But the application fails with the following error

Error opening data file /Users/Elie/Library/Application Support/iPhone Simulator/6.1/Applications/A5938C0C-ED55-476C-A8C2-B7C0ECC59688/Documents/tessdata/eng.traineddata

Do I need to install something else to get it to work?

OS X?

How easy would it be to get this to also work on OS X? When I compile it I obviously get an error on #import <UIKit/UIKit.h>.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.