2015-08-01 3 views
2

Я просто Tryout некоторых новых технологий и узнать о abbyy gem я создал бесплатную учетную запись на http://ocrsdk.com/plans-and-pricing/Брус отправить business_card.png в Abbyy с ROR

Я следую инструкции по жемчужине

class Client < ActiveRecord::Base 
    def abbyy 
    client = Abbyy::Client.new 
    client.process_business_card self.business_card, exportFormat: 'xml', imageSource: 'photo' 
    # Errno::ENOENT: No such file or directory - https://appname-dev.s3.amazonaws.com/uploads/client/business_card/1/bizcard.jpg 
    client.get_task_status 
    client.get 
    end 
end 

, но я получаю эту ошибку

не

Errno :: ENOENT: нет такого файла или каталога - https://appname-dev.s3.amazonaws.com/uploads/client/business_card/1/bizcard.jpg

Я удостоверился что каталог я отправляю является публичной

здесь ссылку на демо-приложение https://github.com/mzaragoza/abbyy

+0

Позвольте мне знать, если вы получите эту работу. –

+0

@AlbyMoore Похоже, что это было решено :) – EugZol

ответ

3

Добавить require 'open-uri' в верхней части файла.

Затем загрузите файл, и только потом отдать его Abby:

def abby 
    require 'tempfile' 
    card = Tempfile.new('business_card') 
    card.binmode 
    stream = open(self.business_card.url) 
    card.write(stream.read) 
    stream.close 
    card.close 
    client = Abbyy::Client.new 
    client.process_business_card card.path, exportFormat: 'xml', imageSource: 'photo' 
    client.get_task_status 
    client.get 
ensure 
    # ensuring every handle is closed, and ignoring exceptions, which could arise if handles already closed 
    # or haven't been opened 
    stream.close rescue nil 
    card.close rescue nil 
    card.unlink rescue nil 
end 
+0

Спасибо за предложение, я все еще получаю ту же ошибку https://www.evernote.com/l/AP3lTXBfCl5CRaE6nkFzv1ox9EF9y3V0B5w – MZaragoza

+0

Пожалуйста, сообщите нам, что такое клиент # business_card? Прикрепление скрепки или что-то еще? – EugZol

+0

его изображение несущей волны, размещенное на AWS S3 – MZaragoza