2017-06-14 2 views
1
require 'net/http' 

uri = URI('https://westcentralus.api.cognitive.microsoft.com/vision/v1.0/ocr') 
uri.query = URI.encode_www_form({ 

    'language' => 'unk', 
    'detectOrientation ' => 'true' 
}) 

request = Net::HTTP::Post.new(uri.request_uri) 

request['Content-Type'] = 'application/octet-stream' 

request['Ocp-Apim-Subscription-Key'] = 'MY_SUBSCRIPTION_KEY' 

request.body = "raw_image_binary" 


response = Net::HTTP.start(uri.host, uri.port, :use_ssl => uri.scheme == 'https') do |http| 
    http.request(request) 
end 

puts response.body 

私はこれを応答として受け取りました。ルーブルを使用してMicrosoft AzureコンピュータビジョンAPIにURLの代わりにbase64を渡す正しい構文は何ですか

{ "コード": "InvalidImageFormat"、 "requestId": "3aee7147-2acc-4f64-b1c6-8453815eda38"、 "メッセージ": "入力データが有効画像ではありません。"}

HELP! !

答えて

1

画像ファイルをRubyのコンテンツタイプapplication/octet-streamでAzure Computer Vision APIに渡したいので、画像のbase64文字列を渡さずにresponse.bodyにバイナリ画像データを渡す必要があります。

動作させるには、現在のコードの代わりに以下のコードを使用してください。

# Supported image formats: JPEG, PNG, GIF, BMP. 
request.body = File.binread("<your image file name>") 
# Or `request.body = File.open("<your image file name>") {|io| io.read}` also works 
+0

ありがとうございましたありがとうございました! :D –

関連する問題