Vision API를 rails에 도입
google cloud platform 설정
[홈 화면]
① 프로젝트 만들기
[프로젝트 화면]
<인증 정보>
②API 키 발행
제한은 모두 「없음」으로 한다
<라이브러리>
③ 좋아하는 api를 선택하고 "활성화"를 누릅니다.
이 예에서는 Vision API를 사용합니다.
~Vision API의 이미지~
[인수] [반환값]
고양이 이미지 ▶ (Vision API) ▶ 배열 [머리, 고양이, 눈]
Rails 작업 환경 설정
①.env 파일 만들기
마우스 오른쪽 버튼 클릭 [new file] "/.env"
gemfile
gem 'dotenv-rails'
② 프로젝트와 연관하기 위한 API 키를 기입
.env
GOOGLE_API_KEY="APIキーの値"
③lib에 라이브러리의 호출 설정을 기재.
lib/vision.rb
require 'base64'
require 'json'
require 'net/https'
module Vision
class << self
def get_image_data(image_file)
# APIのURL作成
api_url = "https://vision.googleapis.com/v1/images:annotate?key=#{ENV['GOOGLE_API_KEY']}"
# 画像をbase64にエンコード
base64_image = Base64.encode64(open("#{Rails.root}/public/uploads/#{image_file.id}").read)
# APIリクエスト用のJSONパラメータ
params = {
requests: [{
image: {
content: base64_image
},
features: [
{
type: 'LABEL_DETECTION'
}
]
}]
}.to_json
# Google Cloud Vision APIにリクエスト
uri = URI.parse(api_url)
https = Net::HTTP.new(uri.host, uri.port)
https.use_ssl = true
request = Net::HTTP::Post.new(uri.request_uri)
request['Content-Type'] = 'application/json'
response = https.request(request, params)
# APIレスポンス出力
JSON.parse(response.body)['responses'][0]['labelAnnotations'].pluck('description').take(3)
end
end
end
④config에서 lib에 작성한 파일을 읽는 기술을 추가
config/application.rb
:
:
config.load_defaults 5.2
config.paths.add 'lib', eager_load: true # 追加
:
:
⑤ 기술 예
해석 결과의 카테고리를 관련지어 보존하는 테이블을 만든다.
해석하고 싶은 화상이 보존되고 있는 테이블이 photos라고 하면, 어소시에이션도 고려해, photo_id로 한다.
scheme.rb
create_table "tags", force: :cascade do |t|
t.string "name"
t.integer "photo_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
bash
rails db:migrate
controller
#Visionモデルに画像を渡すと、その画像の解析し、当てはまるカテゴリーを配列として返す。
tags = Vision.get_image_data(photo.image)
#該当したタグの配列をeach文で小分けにしてcreateする。
#1対多の便利な機能、「親.子供create」と記述すれば、親_idが勝手に保存される。
tags.each do |tag|
photo.tags.create(name: tag)
end
보기
<div class="tag-box">
<% @photo.tags.each do |tag| %>
<span class="label"><%= tag.name %></span>
<% end %>
<?div>
이런 느낌이 된다.
Reference
이 문제에 관하여(Vision API를 rails에 도입), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/dam-san/items/775791b60f90b830c754텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)