google-cloud-vision 0.20.2 → 0.21.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -26,10 +26,9 @@ module Google
26
26
  # See {Google::Cloud::Vision::Image#properties}.
27
27
  #
28
28
  # @example
29
- # require "google/cloud"
29
+ # require "google/cloud/vision"
30
30
  #
31
- # gcloud = Google::Cloud.new
32
- # vision = gcloud.vision
31
+ # vision = Google::Cloud::Vision.new
33
32
  #
34
33
  # image = vision.image "path/to/logo.jpg"
35
34
  #
@@ -38,13 +37,13 @@ module Google
38
37
  #
39
38
  class Properties
40
39
  ##
41
- # @private The ImageProperties Google API Client object.
42
- attr_accessor :gapi
40
+ # @private The ImageProperties GRPC object.
41
+ attr_accessor :grpc
43
42
 
44
43
  ##
45
44
  # @private Creates a new Properties instance.
46
45
  def initialize
47
- @gapi = {}
46
+ @grpc = nil
48
47
  end
49
48
 
50
49
  ##
@@ -53,9 +52,9 @@ module Google
53
52
  # @return [Array<Color>] An array of the image's dominant colors.
54
53
  #
55
54
  def colors
56
- return [] unless @gapi.dominant_colors
57
- @colors ||= Array(@gapi.dominant_colors.colors).map do |c|
58
- Color.from_gapi c
55
+ return [] unless @grpc.dominant_colors
56
+ @colors ||= Array(@grpc.dominant_colors.colors).map do |c|
57
+ Color.from_grpc c
59
58
  end
60
59
  end
61
60
 
@@ -88,9 +87,9 @@ module Google
88
87
  end
89
88
 
90
89
  ##
91
- # @private New Annotation::Properties from a Google API Client object.
92
- def self.from_gapi gapi
93
- new.tap { |f| f.instance_variable_set :@gapi, gapi }
90
+ # @private New Annotation::Properties from a GRPC object.
91
+ def self.from_grpc grpc
92
+ new.tap { |f| f.instance_variable_set :@grpc, grpc }
94
93
  end
95
94
 
96
95
  ##
@@ -100,10 +99,9 @@ module Google
100
99
  # image the color occupies in the image.
101
100
  #
102
101
  # @example
103
- # require "google/cloud"
102
+ # require "google/cloud/vision"
104
103
  #
105
- # gcloud = Google::Cloud.new
106
- # vision = gcloud.vision
104
+ # vision = Google::Cloud::Vision.new
107
105
  #
108
106
  # image = vision.image "path/to/logo.jpg"
109
107
  # properties = image.properties
@@ -119,13 +117,13 @@ module Google
119
117
  #
120
118
  class Color
121
119
  ##
122
- # @private The ColorInfo Google API Client object.
123
- attr_accessor :gapi
120
+ # @private The ColorInfo GRPC object.
121
+ attr_accessor :grpc
124
122
 
125
123
  ##
126
124
  # @private Creates a new Color instance.
127
125
  def initialize
128
- @gapi = {}
126
+ @grpc = nil
129
127
  end
130
128
 
131
129
  ##
@@ -134,7 +132,7 @@ module Google
134
132
  # @return [Float] A value in the interval [0, 255].
135
133
  #
136
134
  def red
137
- @gapi.color.red
135
+ @grpc.color.red
138
136
  end
139
137
 
140
138
  ##
@@ -143,7 +141,7 @@ module Google
143
141
  # @return [Float] A value in the interval [0, 255].
144
142
  #
145
143
  def green
146
- @gapi.color.green
144
+ @grpc.color.green
147
145
  end
148
146
 
149
147
  ##
@@ -152,7 +150,7 @@ module Google
152
150
  # @return [Float] A value in the interval [0, 255].
153
151
  #
154
152
  def blue
155
- @gapi.color.blue
153
+ @grpc.color.blue
156
154
  end
157
155
 
158
156
  ##
@@ -163,7 +161,7 @@ module Google
163
161
  # @return [Float] A value in the range [0, 1].
164
162
  #
165
163
  def alpha
166
- @gapi.color.alpha || 1.0
164
+ @grpc.color.alpha || 1.0
167
165
  end
168
166
 
169
167
  def rgb
@@ -178,7 +176,7 @@ module Google
178
176
  # @return [Float] A value in the range [0, 1].
179
177
  #
180
178
  def score
181
- @gapi.score
179
+ @grpc.score
182
180
  end
183
181
 
184
182
  ##
@@ -187,7 +185,7 @@ module Google
187
185
  # @return [Float] A value in the range [0, 1].
188
186
  #
189
187
  def pixel_fraction
190
- @gapi.pixel_fraction
188
+ @grpc.pixel_fraction
191
189
  end
192
190
 
193
191
  ##
@@ -209,10 +207,10 @@ module Google
209
207
  end
210
208
 
211
209
  ##
212
- # @private New Annotation::Properties from a Google API Client
210
+ # @private New Annotation::Properties from a GRPC
213
211
  # object.
214
- def self.from_gapi gapi
215
- new.tap { |f| f.instance_variable_set :@gapi, gapi }
212
+ def self.from_grpc grpc
213
+ new.tap { |f| f.instance_variable_set :@grpc, grpc }
216
214
  end
217
215
  end
218
216
  end
@@ -27,10 +27,9 @@ module Google
27
27
  # adult, spoof, medical, violence).
28
28
  #
29
29
  # @example
30
- # require "google/cloud"
30
+ # require "google/cloud/vision"
31
31
  #
32
- # gcloud = Google::Cloud.new
33
- # vision = gcloud.vision
32
+ # vision = Google::Cloud::Vision.new
34
33
  #
35
34
  # image = vision.image "path/to/face.jpg"
36
35
  #
@@ -39,23 +38,23 @@ module Google
39
38
  # safe_search.spoof #=> "VERY_UNLIKELY"
40
39
  #
41
40
  class SafeSearch
42
- POSITIVE_RATINGS = %w(POSSIBLE LIKELY VERY_LIKELY)
41
+ POSITIVE_RATINGS = %i(POSSIBLE LIKELY VERY_LIKELY)
43
42
 
44
43
  ##
45
- # @private The SafeSearchAnnotation Google API Client object.
46
- attr_accessor :gapi
44
+ # @private The SafeSearchAnnotation GRPC object.
45
+ attr_accessor :grpc
47
46
 
48
47
  ##
49
48
  # @private Creates a new SafeSearch instance.
50
49
  def initialize
51
- @gapi = {}
50
+ @grpc = nil
52
51
  end
53
52
 
54
53
  ##
55
54
  # Adult likelihood rating. Possible values are `VERY_UNLIKELY`,
56
55
  # `UNLIKELY`, `POSSIBLE`, `LIKELY`, and `VERY_LIKELY`.
57
56
  def adult
58
- @gapi.adult
57
+ @grpc.adult
59
58
  end
60
59
 
61
60
  ##
@@ -72,7 +71,7 @@ module Google
72
71
  # Spoof likelihood rating. Possible values are `VERY_UNLIKELY`,
73
72
  # `UNLIKELY`, `POSSIBLE`, `LIKELY`, and `VERY_LIKELY`.
74
73
  def spoof
75
- @gapi.spoof
74
+ @grpc.spoof
76
75
  end
77
76
 
78
77
  ##
@@ -89,7 +88,7 @@ module Google
89
88
  # Medical likelihood rating. Possible values are `VERY_UNLIKELY`,
90
89
  # `UNLIKELY`, `POSSIBLE`, `LIKELY`, and `VERY_LIKELY`.
91
90
  def medical
92
- @gapi.medical
91
+ @grpc.medical
93
92
  end
94
93
 
95
94
  ##
@@ -106,7 +105,7 @@ module Google
106
105
  # Violence likelihood rating. Possible values are `VERY_UNLIKELY`,
107
106
  # `UNLIKELY`, `POSSIBLE`, `LIKELY`, and `VERY_LIKELY`.
108
107
  def violence
109
- @gapi.violence
108
+ @grpc.violence
110
109
  end
111
110
 
112
111
  ##
@@ -143,9 +142,9 @@ module Google
143
142
  end
144
143
 
145
144
  ##
146
- # @private New Annotation::SafeSearch from a Google API Client object.
147
- def self.from_gapi gapi
148
- new.tap { |f| f.instance_variable_set :@gapi, gapi }
145
+ # @private New Annotation::SafeSearch from a GRPC object.
146
+ def self.from_grpc grpc
147
+ new.tap { |f| f.instance_variable_set :@grpc, grpc }
149
148
  end
150
149
  end
151
150
  end
@@ -25,10 +25,9 @@ module Google
25
25
  # The result of text, or optical character recognition (OCR), detection.
26
26
  #
27
27
  # @example
28
- # require "google/cloud"
28
+ # require "google/cloud/vision"
29
29
  #
30
- # gcloud = Google::Cloud.new
31
- # vision = gcloud.vision
30
+ # vision = Google::Cloud::Vision.new
32
31
  #
33
32
  # image = vision.image "path/to/text.png"
34
33
  #
@@ -40,13 +39,13 @@ module Google
40
39
  #
41
40
  class Text
42
41
  ##
43
- # @private The EntityAnnotation Google API Client object.
44
- attr_accessor :gapi
42
+ # @private The EntityAnnotation GRPC object.
43
+ attr_accessor :grpc
45
44
 
46
45
  ##
47
46
  # @private Creates a new Text instance.
48
47
  def initialize
49
- @gapi = {}
48
+ @grpc = nil
50
49
  @words = []
51
50
  end
52
51
 
@@ -56,7 +55,7 @@ module Google
56
55
  # @return [String] The entire text including newline characters.
57
56
  #
58
57
  def text
59
- @gapi.description
58
+ @grpc.description
60
59
  end
61
60
 
62
61
  ##
@@ -67,7 +66,7 @@ module Google
67
66
  # language code.
68
67
  #
69
68
  def locale
70
- @gapi.locale
69
+ @grpc.locale
71
70
  end
72
71
 
73
72
  ##
@@ -76,9 +75,9 @@ module Google
76
75
  # @return [Array<Vertex>]
77
76
  #
78
77
  def bounds
79
- return [] unless @gapi.bounding_poly
80
- @bounds ||= Array(@gapi.bounding_poly.vertices).map do |v|
81
- Vertex.from_gapi v
78
+ return [] unless @grpc.bounding_poly
79
+ @bounds ||= Array(@grpc.bounding_poly.vertices).map do |v|
80
+ Vertex.from_grpc v
82
81
  end
83
82
  end
84
83
 
@@ -118,15 +117,15 @@ module Google
118
117
  end
119
118
 
120
119
  ##
121
- # @private New Annotation::Text from an array of Google API Client
120
+ # @private New Annotation::Text from an array of GRPC
122
121
  # objects.
123
- def self.from_gapi gapi_list
124
- text, *words = Array gapi_list
122
+ def self.from_grpc grpc_list
123
+ text, *words = Array grpc_list
125
124
  return nil if text.nil?
126
125
  new.tap do |t|
127
- t.instance_variable_set :@gapi, text
126
+ t.instance_variable_set :@grpc, text
128
127
  t.instance_variable_set :@words,
129
- words.map { |w| Word.from_gapi w }
128
+ words.map { |w| Word.from_grpc w }
130
129
  end
131
130
  end
132
131
 
@@ -136,10 +135,9 @@ module Google
136
135
  # A word within a detected text (OCR). See {Text}.
137
136
  #
138
137
  # @example
139
- # require "google/cloud"
138
+ # require "google/cloud/vision"
140
139
  #
141
- # gcloud = Google::Cloud.new
142
- # vision = gcloud.vision
140
+ # vision = Google::Cloud::Vision.new
143
141
  #
144
142
  # image = vision.image "path/to/text.png"
145
143
  # text = image.text
@@ -154,13 +152,13 @@ module Google
154
152
  #
155
153
  class Word
156
154
  ##
157
- # @private The EntityAnnotation Google API Client object.
158
- attr_accessor :gapi
155
+ # @private The EntityAnnotation GRPC object.
156
+ attr_accessor :grpc
159
157
 
160
158
  ##
161
159
  # @private Creates a new Word instance.
162
160
  def initialize
163
- @gapi = {}
161
+ @grpc = nil
164
162
  end
165
163
 
166
164
  ##
@@ -169,7 +167,7 @@ module Google
169
167
  # @return [String]
170
168
  #
171
169
  def text
172
- @gapi.description
170
+ @grpc.description
173
171
  end
174
172
 
175
173
  ##
@@ -178,9 +176,9 @@ module Google
178
176
  # @return [Array<Vertex>]
179
177
  #
180
178
  def bounds
181
- return [] unless @gapi.bounding_poly
182
- @bounds ||= Array(@gapi.bounding_poly.vertices).map do |v|
183
- Vertex.from_gapi v
179
+ return [] unless @grpc.bounding_poly
180
+ @bounds ||= Array(@grpc.bounding_poly.vertices).map do |v|
181
+ Vertex.from_grpc v
184
182
  end
185
183
  end
186
184
 
@@ -209,10 +207,10 @@ module Google
209
207
  end
210
208
 
211
209
  ##
212
- # @private New Annotation::Text::Word from a Google API Client
210
+ # @private New Annotation::Text::Word from a GRPC
213
211
  # object.
214
- def self.from_gapi gapi
215
- new.tap { |w| w.instance_variable_set :@gapi, gapi }
212
+ def self.from_grpc grpc
213
+ new.tap { |w| w.instance_variable_set :@grpc, grpc }
216
214
  end
217
215
  end
218
216
  end
@@ -28,10 +28,9 @@ module Google
28
28
  # @attr_reader [Integer] y The Y coordinate.
29
29
  #
30
30
  # @example
31
- # require "google/cloud"
31
+ # require "google/cloud/vision"
32
32
  #
33
- # gcloud = Google::Cloud.new
34
- # vision = gcloud.vision
33
+ # vision = Google::Cloud::Vision.new
35
34
  #
36
35
  # image = vision.image "path/to/text.png"
37
36
  # text = image.text
@@ -82,8 +81,8 @@ module Google
82
81
  ##
83
82
  # @private New Annotation::Entity::Bounds::Vertex from a Google API
84
83
  # Client object.
85
- def self.from_gapi gapi
86
- new gapi.x, gapi.y
84
+ def self.from_grpc grpc
85
+ new grpc.x, grpc.y
87
86
  end
88
87
  end
89
88
  end
@@ -31,23 +31,22 @@ module Google
31
31
  # The Cloud Vision API supports a variety of image file formats, including
32
32
  # JPEG, PNG8, PNG24, Animated GIF (first frame only), and RAW. See [Best
33
33
  # Practices - Image
34
- # Types](https://cloud.google.com/vision/docs/image-best-practices#image_types)
34
+ # Types](https://cloud.google.com/vision/docs/best-practices#image_types)
35
35
  # for the list of formats. Be aware that Cloud Vision sets upper limits on
36
36
  # file size as well as the total combined size of all images in a request.
37
37
  # Reducing your file size can significantly improve throughput; however,
38
38
  # be careful not to reduce image quality in the process. See [Best
39
39
  # Practices - Image
40
- # Sizing](https://cloud.google.com/vision/docs/image-best-practices#image_sizing)
40
+ # Sizing](https://cloud.google.com/vision/docs/best-practices#image_sizing)
41
41
  # for current file size limits.
42
42
  #
43
- # @see https://cloud.google.com/vision/docs/image-best-practices Best
43
+ # @see https://cloud.google.com/vision/docs/best-practices Best
44
44
  # Practices
45
45
  #
46
46
  # @example
47
- # require "google/cloud"
47
+ # require "google/cloud/vision"
48
48
  #
49
- # gcloud = Google::Cloud.new
50
- # vision = gcloud.vision
49
+ # vision = Google::Cloud::Vision.new
51
50
  #
52
51
  # image = vision.image "path/to/text.png"
53
52
  #
@@ -96,10 +95,9 @@ module Google
96
95
  # @return [Array<Annotation::Face>] The results of face detection.
97
96
  #
98
97
  # @example
99
- # require "google/cloud"
98
+ # require "google/cloud/vision"
100
99
  #
101
- # gcloud = Google::Cloud.new
102
- # vision = gcloud.vision
100
+ # vision = Google::Cloud::Vision.new
103
101
  # image = vision.image "path/to/face.jpg"
104
102
  #
105
103
  # faces = image.faces
@@ -135,10 +133,9 @@ module Google
135
133
  # @return [Array<Annotation::Entity>] The results of landmark detection.
136
134
  #
137
135
  # @example
138
- # require "google/cloud"
136
+ # require "google/cloud/vision"
139
137
  #
140
- # gcloud = Google::Cloud.new
141
- # vision = gcloud.vision
138
+ # vision = Google::Cloud::Vision.new
142
139
  # image = vision.image "path/to/landmark.jpg"
143
140
  #
144
141
  # landmarks = image.landmarks
@@ -175,10 +172,9 @@ module Google
175
172
  # @return [Array<Annotation::Entity>] The results of logo detection.
176
173
  #
177
174
  # @example
178
- # require "google/cloud"
175
+ # require "google/cloud/vision"
179
176
  #
180
- # gcloud = Google::Cloud.new
181
- # vision = gcloud.vision
177
+ # vision = Google::Cloud::Vision.new
182
178
  # image = vision.image "path/to/logo.jpg"
183
179
  #
184
180
  # logos = image.logos
@@ -215,10 +211,9 @@ module Google
215
211
  # @return [Array<Annotation::Entity>] The results of label detection.
216
212
  #
217
213
  # @example
218
- # require "google/cloud"
214
+ # require "google/cloud/vision"
219
215
  #
220
- # gcloud = Google::Cloud.new
221
- # vision = gcloud.vision
216
+ # vision = Google::Cloud::Vision.new
222
217
  # image = vision.image "path/to/face.jpg"
223
218
  #
224
219
  # labels = image.labels
@@ -253,10 +248,9 @@ module Google
253
248
  # @return [Annotation::Text] The results of text (OCR) detection.
254
249
  #
255
250
  # @example
256
- # require "google/cloud"
251
+ # require "google/cloud/vision"
257
252
  #
258
- # gcloud = Google::Cloud.new
259
- # vision = gcloud.vision
253
+ # vision = Google::Cloud::Vision.new
260
254
  # image = vision.image "path/to/text.png"
261
255
  #
262
256
  # text = image.text
@@ -281,10 +275,9 @@ module Google
281
275
  # @return [Annotation::SafeSearch] The results of safe search detection.
282
276
  #
283
277
  # @example
284
- # require "google/cloud"
278
+ # require "google/cloud/vision"
285
279
  #
286
- # gcloud = Google::Cloud.new
287
- # vision = gcloud.vision
280
+ # vision = Google::Cloud::Vision.new
288
281
  # image = vision.image "path/to/face.jpg"
289
282
  #
290
283
  # safe_search = image.safe_search
@@ -307,10 +300,9 @@ module Google
307
300
  # detection.
308
301
  #
309
302
  # @example
310
- # require "google/cloud"
303
+ # require "google/cloud/vision"
311
304
  #
312
- # gcloud = Google::Cloud.new
313
- # vision = gcloud.vision
305
+ # vision = Google::Cloud::Vision.new
314
306
  # image = vision.image "path/to/logo.jpg"
315
307
  #
316
308
  # properties = image.properties
@@ -345,13 +337,15 @@ module Google
345
337
  end
346
338
 
347
339
  ##
348
- # @private The Google API Client object for the Image.
349
- def to_gapi
340
+ # @private The GRPC object for the Image.
341
+ def to_grpc
350
342
  if io?
351
343
  @io.rewind
352
- Google::Apis::VisionV1::Image.new content: @io.read
344
+ Google::Cloud::Vision::V1::Image.new content: @io.read
353
345
  elsif url?
354
- Google::Apis::VisionV1::Image.new source: { gcs_image_uri: @url }
346
+ Google::Cloud::Vision::V1::Image.new(
347
+ source: Google::Cloud::Vision::V1::ImageSource.new(
348
+ gcs_image_uri: @url))
355
349
  else
356
350
  fail ArgumentError, "Unable to use Image with Vision service."
357
351
  end
@@ -430,10 +424,9 @@ module Google
430
424
  # great deal if the hint is wrong).
431
425
  #
432
426
  # @example
433
- # require "google/cloud"
427
+ # require "google/cloud/vision"
434
428
  #
435
- # gcloud = Google::Cloud.new
436
- # vision = gcloud.vision
429
+ # vision = Google::Cloud::Vision.new
437
430
  #
438
431
  # image = vision.image "path/to/landmark.jpg"
439
432
  # image.context.area.min = { longitude: -122.0862462,
@@ -468,12 +461,13 @@ module Google
468
461
 
469
462
  ##
470
463
  # @private
471
- def to_gapi
464
+ def to_grpc
472
465
  return nil if empty?
473
- gapi = Google::Apis::VisionV1::ImageContext.new
474
- gapi.lat_long_rect = area.to_gapi unless area.empty?
475
- gapi.language_hints = languages unless languages.empty?
476
- gapi
466
+
467
+ args = {}
468
+ args[:lat_long_rect] = area.to_grpc unless area.empty?
469
+ args[:language_hints] = languages unless languages.empty?
470
+ Google::Cloud::Vision::V1::ImageContext.new args
477
471
  end
478
472
 
479
473
  ##
@@ -482,10 +476,9 @@ module Google
482
476
  # A Lat/long rectangle that specifies the location of the image.
483
477
  #
484
478
  # @example
485
- # require "google/cloud"
479
+ # require "google/cloud/vision"
486
480
  #
487
- # gcloud = Google::Cloud.new
488
- # vision = gcloud.vision
481
+ # vision = Google::Cloud::Vision.new
489
482
  #
490
483
  # image = vision.image "path/to/landmark.jpg"
491
484
  #
@@ -563,11 +556,11 @@ module Google
563
556
  { min_lat_lng: min.to_h, max_lat_lng: max.to_h }
564
557
  end
565
558
 
566
- def to_gapi
559
+ def to_grpc
567
560
  return nil if empty?
568
- Google::Apis::VisionV1::LatLongRect.new(
569
- min_lat_lng: min.to_gapi,
570
- max_lat_lng: max.to_gapi
561
+ Google::Cloud::Vision::V1::LatLongRect.new(
562
+ min_lat_lng: min.to_grpc,
563
+ max_lat_lng: max.to_grpc
571
564
  )
572
565
  end
573
566
  end