Google Cloud Vision API로 이미지에서 문자열 검색

8747 단어 google루비googleapi
이미지로부터 캐릭터 라인을 취득하는 API는 그 밖에도 여러가지 했던 적이 있지만, 아무도 이마이치였던 기억. Google 선생님이라는 것으로 기대해 Google Cloud Vision API 시험해 보았다.

API KEY를 Google Developers Console에서 생성



Google Developers Console


  • Google Developers Console

  • 프로젝트 만들기





    결제 방법 설정



    이것을 설정하지 않으면 API를 치지 않습니다.



    Cloud Vision API 사용





    API KEY 얻기



    「인증 정보」⇒「Create Credentials」⇒「API 키」⇒「브라우저 키」로 API KEY를 작성한다



    검증



    확인할 이미지





    샘플 프로그램



  • 문서을 참고로 파라미터 설정
  • require 'base64'
    require 'json'
    require 'net/http'
    require 'uri'
    require 'open-uri'
    
    VISION_API_URL = "https://vision.googleapis.com/v1/images:annotate"
    API_KEY        = "Google Developers Consoleで作成したキー"
    URL            = "#{VISION_API_URL}?key=#{API_KEY}"
    INPUT_IMG_FILE = 'http://blog-imgs-42-origin.fc2.com/k/o/t/kotomona/20101125183059615.jpg'
    
    begin
      uri           = URI.parse(URL)
      https         = Net::HTTP.new(uri.host, uri.port)
      https.use_ssl = true
    
      req                 = Net::HTTP::Post.new(uri.request_uri)
      req["Content-Type"] = "application/json"
      param               = {
        "requests" =>
        [
          {
            "image" =>
            {
              "content" => Base64.strict_encode64(open(INPUT_IMG_FILE).read)
            },
            "features" =>
            [
              {
                "type"       => "LABEL_DETECTION",
                "maxResults" => 10
              },
              {
                "type"       => "TEXT_DETECTION",
                "maxResults" => 10
              }
            ]
          }
        ]
      }
      req.body = param.to_json
      res      = https.request(req)
    
      case res
      when Net::HTTPSuccess
        puts res.body
      else
        res.error!
      end
    rescue => e
      puts "error = #{e.message}"
    end
    

    응답


    {
      "responses": [
        {
          "labelAnnotations": [
            {
              "mid": "/m/0215n",
              "description": "cartoon",
              "score": 0.93569827
            },
            {
              "mid": "/m/05qdh",
              "description": "painting",
              "score": 0.75862324
            },
            {
              "mid": "/m/0dgsmq8",
              "description": "artwork",
              "score": 0.71173751
            },
            {
              "mid": "/m/012h24",
              "description": "comics",
              "score": 0.63047028
            },
            {
              "mid": "/m/01kr8f",
              "description": "illustration",
              "score": 0.62665105
            }
          ],
          "textAnnotations": [
            {
              "locale": "ja",
              "description": "た\nC&as\nパスケが\nしたいです……\n",
              "boundingPoly": {
                "vertices": [
                  {
                    "x": 236,
                    "y": 143
                  },
                  {
                    "x": 395,
                    "y": 143
                  },
                  {
                    "x": 395,
                    "y": 502
                  },
                  {
                    "x": 236,
                    "y": 502
                  }
                ]
              }
            }
          ]
        }
      ]
    }
    

    좋은 웹페이지 즐겨찾기