google-cloud-vision 0.22.1 → 0.23.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/google/cloud/vision.rb +133 -6
- data/lib/google/cloud/vision/annotate.rb +55 -24
- data/lib/google/cloud/vision/annotation.rb +93 -11
- data/lib/google/cloud/vision/annotation/crop_hint.rb +126 -0
- data/lib/google/cloud/vision/annotation/text.rb +789 -11
- data/lib/google/cloud/vision/annotation/web.rb +420 -0
- data/lib/google/cloud/vision/image.rb +153 -17
- data/lib/google/cloud/vision/project.rb +29 -8
- data/lib/google/cloud/vision/v1/doc/google/cloud/vision/v1/image_annotator.rb +148 -81
- data/lib/google/cloud/vision/v1/doc/google/cloud/vision/v1/text_annotation.rb +231 -0
- data/lib/google/cloud/vision/v1/doc/google/cloud/vision/v1/web_detection.rb +73 -0
- data/lib/google/cloud/vision/v1/image_annotator_client.rb +4 -4
- data/lib/google/cloud/vision/v1/image_annotator_pb.rb +24 -0
- data/lib/google/cloud/vision/v1/image_annotator_services_pb.rb +3 -3
- data/lib/google/cloud/vision/v1/text_annotation_pb.rb +88 -0
- data/lib/google/cloud/vision/v1/web_detection_pb.rb +40 -0
- data/lib/google/cloud/vision/version.rb +1 -1
- metadata +8 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5bdbd68499f14f96adeff2ab43a46eb094c2cbc1
|
4
|
+
data.tar.gz: 3ac3f507e6960ba31dff0c6723320e49fab0ac6c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 98d7660ad9d58a22e402df61af630b8014c1c59c27754383c1d40536e9b6c014bedabbef579e29f08c261ac3ad6b18855c6bf1505585fb244637a7469aa63b4f
|
7
|
+
data.tar.gz: 2e53399f5efdd0f1712cf6877f7617c97951bade9f4c2fbfa519fb31b4f5759f31cddf2d10c957b84b0d5e13a0a83c93c30acc5171e80aac5eb18020c86b2a5e
|
data/lib/google/cloud/vision.rb
CHANGED
@@ -62,6 +62,16 @@ module Google
|
|
62
62
|
# image = vision.image "path/to/landmark.jpg"
|
63
63
|
# ```
|
64
64
|
#
|
65
|
+
# Or any publicly-accessible image HTTP/HTTPS URL:
|
66
|
+
#
|
67
|
+
# ```ruby
|
68
|
+
# require "google/cloud/vision"
|
69
|
+
#
|
70
|
+
# vision = Google::Cloud::Vision.new
|
71
|
+
#
|
72
|
+
# image = vision.image "https://www.example.com/images/landmark.jpg"
|
73
|
+
# ```
|
74
|
+
#
|
65
75
|
# Or, you can initialize the image with a Google Cloud Storage URI:
|
66
76
|
#
|
67
77
|
# ```ruby
|
@@ -98,7 +108,8 @@ module Google
|
|
98
108
|
# ```
|
99
109
|
#
|
100
110
|
# To run multiple features on an image in a single request, pass the image
|
101
|
-
# (or a string file path
|
111
|
+
# (or a string file path, publicly-accessible image HTTP/HTTPS URL, or
|
112
|
+
# Storage URI) to {Vision::Project#annotate}:
|
102
113
|
#
|
103
114
|
# ```ruby
|
104
115
|
# require "google/cloud/vision"
|
@@ -159,7 +170,7 @@ module Google
|
|
159
170
|
# annotations[0].faces.count #=> 1
|
160
171
|
# annotations[0].labels.count #=> 4
|
161
172
|
# annotations[1].landmarks.count #=> 1
|
162
|
-
# annotations[2].text.
|
173
|
+
# annotations[2].text.pages.count #=> 1
|
163
174
|
# ```
|
164
175
|
#
|
165
176
|
# The maximum number of results returned when performing face, landmark,
|
@@ -430,14 +441,130 @@ module Google
|
|
430
441
|
# # labels = vision.image("path/to/labels.jpg").labels 5
|
431
442
|
#
|
432
443
|
attr_accessor :default_max_labels
|
444
|
+
|
445
|
+
##
|
446
|
+
# The default max results to return for crop hints detection requests.
|
447
|
+
# This is used on {Project#annotate} as well as {Image#crop_hints}.
|
448
|
+
#
|
449
|
+
# The default value is 100.
|
450
|
+
#
|
451
|
+
# @example Using the default setting on {Project#annotate}:
|
452
|
+
# require "google/cloud/vision"
|
453
|
+
#
|
454
|
+
# vision = Google::Cloud::Vision.new
|
455
|
+
#
|
456
|
+
# Google::Cloud::Vision.default_max_crop_hints #=> 100
|
457
|
+
#
|
458
|
+
# img = "path/to/landmarks.jpg"
|
459
|
+
# annotation = vision.annotate img, crop_hints: true
|
460
|
+
# # This is the same as calling
|
461
|
+
# # annotation = vision.annotate img, crop_hints: 100
|
462
|
+
#
|
463
|
+
# @example Updating the default setting on {Project#annotate}:
|
464
|
+
# require "google/cloud/vision"
|
465
|
+
#
|
466
|
+
# vision = Google::Cloud::Vision.new
|
467
|
+
#
|
468
|
+
# # Set a new default
|
469
|
+
# Google::Cloud::Vision.default_max_crop_hints = 5
|
470
|
+
#
|
471
|
+
# img = "path/to/landmarks.jpg"
|
472
|
+
# annotation = vision.annotate img, crop_hints: true
|
473
|
+
# # This is the same as calling
|
474
|
+
# # annotation = vision.annotate img, crop_hints: 5
|
475
|
+
#
|
476
|
+
#
|
477
|
+
# @example Using the default setting on {Image#crop_hints}:
|
478
|
+
# require "google/cloud/vision"
|
479
|
+
#
|
480
|
+
# vision = Google::Cloud::Vision.new
|
481
|
+
#
|
482
|
+
# Google::Cloud::Vision.default_max_crop_hints #=> 100
|
483
|
+
#
|
484
|
+
# crop_hints = vision.image("path/to/landmarks.jpg").crop_hints
|
485
|
+
# # This is the same as calling
|
486
|
+
# # crop_hints = vision.image("path/to/landmarks.jpg").crop_hints 100
|
487
|
+
#
|
488
|
+
# @example Updating the default setting on {Image#crop_hints}:
|
489
|
+
# require "google/cloud/vision"
|
490
|
+
#
|
491
|
+
# vision = Google::Cloud::Vision.new
|
492
|
+
#
|
493
|
+
# # Set a new default
|
494
|
+
# Google::Cloud::Vision.default_max_crop_hints = 5
|
495
|
+
#
|
496
|
+
# crop_hints = vision.image("path/to/landmarks.jpg").crop_hints
|
497
|
+
# # This is the same as calling
|
498
|
+
# # crop_hints = vision.image("path/to/landmarks.jpg").crop_hints 5
|
499
|
+
#
|
500
|
+
attr_accessor :default_max_crop_hints
|
501
|
+
|
502
|
+
##
|
503
|
+
# The default max results to return for web detection requests.
|
504
|
+
# This is used on {Project#annotate} as well as {Image#web}.
|
505
|
+
#
|
506
|
+
# The default value is 100.
|
507
|
+
#
|
508
|
+
# @example Using the default setting on {Project#annotate}:
|
509
|
+
# require "google/cloud/vision"
|
510
|
+
#
|
511
|
+
# vision = Google::Cloud::Vision.new
|
512
|
+
#
|
513
|
+
# Google::Cloud::Vision.default_max_web #=> 100
|
514
|
+
#
|
515
|
+
# img = "path/to/landmarks.jpg"
|
516
|
+
# annotation = vision.annotate img, web: true
|
517
|
+
# # This is the same as calling
|
518
|
+
# # annotation = vision.annotate img, web: 100
|
519
|
+
#
|
520
|
+
# @example Updating the default setting on {Project#annotate}:
|
521
|
+
# require "google/cloud/vision"
|
522
|
+
#
|
523
|
+
# vision = Google::Cloud::Vision.new
|
524
|
+
#
|
525
|
+
# # Set a new default
|
526
|
+
# Google::Cloud::Vision.default_max_web = 5
|
527
|
+
#
|
528
|
+
# img = "path/to/landmarks.jpg"
|
529
|
+
# annotation = vision.annotate img, web: true
|
530
|
+
# # This is the same as calling
|
531
|
+
# # annotation = vision.annotate img, web: 5
|
532
|
+
#
|
533
|
+
#
|
534
|
+
# @example Using the default setting on {Image#web}:
|
535
|
+
# require "google/cloud/vision"
|
536
|
+
#
|
537
|
+
# vision = Google::Cloud::Vision.new
|
538
|
+
#
|
539
|
+
# Google::Cloud::Vision.default_max_web #=> 100
|
540
|
+
#
|
541
|
+
# web = vision.image("path/to/landmarks.jpg").web
|
542
|
+
# # This is the same as calling
|
543
|
+
# # web = vision.image("path/to/landmarks.jpg").web 100
|
544
|
+
#
|
545
|
+
# @example Updating the default setting on {Image#web}:
|
546
|
+
# require "google/cloud/vision"
|
547
|
+
#
|
548
|
+
# vision = Google::Cloud::Vision.new
|
549
|
+
#
|
550
|
+
# # Set a new default
|
551
|
+
# Google::Cloud::Vision.default_max_web = 5
|
552
|
+
#
|
553
|
+
# web = vision.image("path/to/landmarks.jpg").web
|
554
|
+
# # This is the same as calling
|
555
|
+
# # web = vision.image("path/to/landmarks.jpg").web 5
|
556
|
+
#
|
557
|
+
attr_accessor :default_max_web
|
433
558
|
end
|
434
559
|
|
435
560
|
# Set the default values.
|
436
561
|
# Update the comments documentation when these change.
|
437
|
-
self.default_max_faces
|
438
|
-
self.default_max_landmarks
|
439
|
-
self.default_max_logos
|
440
|
-
self.default_max_labels
|
562
|
+
self.default_max_faces = 100
|
563
|
+
self.default_max_landmarks = 100
|
564
|
+
self.default_max_logos = 100
|
565
|
+
self.default_max_labels = 100
|
566
|
+
self.default_max_crop_hints = 100
|
567
|
+
self.default_max_web = 100
|
441
568
|
|
442
569
|
##
|
443
570
|
# Creates a new object for connecting to the Vision service.
|
@@ -103,12 +103,19 @@ module Google
|
|
103
103
|
# detection feature. The maximum number of results is configured in
|
104
104
|
# {Google::Cloud::Vision.default_max_labels}, or may be provided here.
|
105
105
|
# Optional.
|
106
|
-
# @param [Boolean] text Whether to perform the text
|
106
|
+
# @param [Boolean] text Whether to perform the text detection feature
|
107
|
+
# (OCR for shorter documents with sparse text). Optional.
|
108
|
+
# @param [Boolean] document Whether to perform the document text
|
109
|
+
# detection feature (OCR for longer documents with dense text).
|
107
110
|
# Optional.
|
108
111
|
# @param [Boolean] safe_search Whether to perform the safe search
|
109
112
|
# feature. Optional.
|
110
113
|
# @param [Boolean] properties Whether to perform the image properties
|
111
114
|
# feature (currently, the image's dominant colors.) Optional.
|
115
|
+
# @param [Boolean, Integer] crop_hints Whether to perform the crop hints
|
116
|
+
# feature. Optional.
|
117
|
+
# @param [Boolean, Integer] web Whether to perform the web annotation
|
118
|
+
# feature. Optional.
|
112
119
|
#
|
113
120
|
# @return [Annotation, Array<Annotation>] The results for all image
|
114
121
|
# detections, returned as a single {Annotation} instance for one
|
@@ -133,13 +140,14 @@ module Google
|
|
133
140
|
# annotations[0].faces.count #=> 1
|
134
141
|
# annotations[0].labels.count #=> 4
|
135
142
|
# annotations[1].landmarks.count #=> 1
|
136
|
-
# annotations[2].text.
|
143
|
+
# annotations[2].text.pages.count #=> 1
|
137
144
|
#
|
138
145
|
def annotate *images, faces: false, landmarks: false, logos: false,
|
139
|
-
labels: false, text: false,
|
140
|
-
properties: false
|
141
|
-
|
142
|
-
|
146
|
+
labels: false, text: false, document: false,
|
147
|
+
safe_search: false, properties: false, crop_hints: false,
|
148
|
+
web: false
|
149
|
+
add_requests(images, faces, landmarks, logos, labels, text, document,
|
150
|
+
safe_search, properties, crop_hints, web)
|
143
151
|
end
|
144
152
|
|
145
153
|
protected
|
@@ -150,9 +158,10 @@ module Google
|
|
150
158
|
end
|
151
159
|
|
152
160
|
def add_requests images, faces, landmarks, logos, labels, text,
|
153
|
-
safe_search, properties
|
161
|
+
document, safe_search, properties, crop_hints, web
|
154
162
|
features = annotate_features(faces, landmarks, logos, labels, text,
|
155
|
-
safe_search, properties
|
163
|
+
document, safe_search, properties,
|
164
|
+
crop_hints, web)
|
156
165
|
|
157
166
|
Array(images).flatten.each do |img|
|
158
167
|
i = image(img)
|
@@ -164,20 +173,34 @@ module Google
|
|
164
173
|
end
|
165
174
|
end
|
166
175
|
|
167
|
-
def annotate_features faces, landmarks, logos, labels, text,
|
168
|
-
safe_search, properties
|
176
|
+
def annotate_features faces, landmarks, logos, labels, text, document,
|
177
|
+
safe_search, properties, crop_hints, web
|
169
178
|
return default_features if default_features?(
|
170
|
-
faces, landmarks, logos, labels, text, safe_search,
|
179
|
+
faces, landmarks, logos, labels, text, document, safe_search,
|
180
|
+
properties, crop_hints, web)
|
171
181
|
|
172
|
-
faces, landmarks, logos, labels =
|
173
|
-
faces, landmarks, logos, labels)
|
182
|
+
faces, landmarks, logos, labels, crop_hints, web = validate_max_args(
|
183
|
+
faces, landmarks, logos, labels, crop_hints, web)
|
184
|
+
|
185
|
+
f = value_features faces, landmarks, logos, labels, crop_hints, web
|
186
|
+
f + boolean_features(text, document, safe_search, properties)
|
187
|
+
end
|
174
188
|
|
189
|
+
def value_features faces, landmarks, logos, labels, crop_hints, web
|
175
190
|
f = []
|
176
191
|
f << feature(:FACE_DETECTION, faces) unless faces.zero?
|
177
192
|
f << feature(:LANDMARK_DETECTION, landmarks) unless landmarks.zero?
|
178
193
|
f << feature(:LOGO_DETECTION, logos) unless logos.zero?
|
179
194
|
f << feature(:LABEL_DETECTION, labels) unless labels.zero?
|
195
|
+
f << feature(:CROP_HINTS, crop_hints) unless crop_hints.zero?
|
196
|
+
f << feature(:WEB_DETECTION, web) unless web.zero?
|
197
|
+
f
|
198
|
+
end
|
199
|
+
|
200
|
+
def boolean_features text, document, safe_search, properties
|
201
|
+
f = []
|
180
202
|
f << feature(:TEXT_DETECTION, 1) if text
|
203
|
+
f << feature(:DOCUMENT_TEXT_DETECTION, 1) if document
|
181
204
|
f << feature(:SAFE_SEARCH_DETECTION, 1) if safe_search
|
182
205
|
f << feature(:IMAGE_PROPERTIES, 1) if properties
|
183
206
|
f
|
@@ -188,11 +211,12 @@ module Google
|
|
188
211
|
type: type, max_results: max_results)
|
189
212
|
end
|
190
213
|
|
191
|
-
def default_features? faces, landmarks, logos, labels, text,
|
192
|
-
safe_search, properties
|
214
|
+
def default_features? faces, landmarks, logos, labels, text, document,
|
215
|
+
safe_search, properties, crop_hints, web
|
193
216
|
faces == false && landmarks == false && logos == false &&
|
194
|
-
labels == false && text == false &&
|
195
|
-
properties == false
|
217
|
+
labels == false && text == false && document == false &&
|
218
|
+
safe_search == false && properties == false &&
|
219
|
+
crop_hints == false && web == false
|
196
220
|
end
|
197
221
|
|
198
222
|
def default_features
|
@@ -204,21 +228,28 @@ module Google
|
|
204
228
|
feature(:LABEL_DETECTION,
|
205
229
|
Google::Cloud::Vision.default_max_labels),
|
206
230
|
feature(:TEXT_DETECTION, 1),
|
231
|
+
feature(:DOCUMENT_TEXT_DETECTION, 1),
|
207
232
|
feature(:SAFE_SEARCH_DETECTION, 1),
|
208
|
-
feature(:IMAGE_PROPERTIES, 1)
|
233
|
+
feature(:IMAGE_PROPERTIES, 1),
|
234
|
+
feature(:CROP_HINTS, Google::Cloud::Vision.default_max_crop_hints),
|
235
|
+
feature(:WEB_DETECTION, Google::Cloud::Vision.default_max_web)
|
209
236
|
]
|
210
237
|
end
|
211
238
|
|
212
|
-
def
|
213
|
-
faces
|
239
|
+
def validate_max_args faces, landmarks, logos, labels, crop_hints, web
|
240
|
+
faces = validate_max_value(
|
214
241
|
faces, Google::Cloud::Vision.default_max_faces)
|
215
|
-
landmarks
|
242
|
+
landmarks = validate_max_value(
|
216
243
|
landmarks, Google::Cloud::Vision.default_max_landmarks)
|
217
|
-
logos
|
244
|
+
logos = validate_max_value(
|
218
245
|
logos, Google::Cloud::Vision.default_max_logos)
|
219
|
-
labels
|
246
|
+
labels = validate_max_value(
|
220
247
|
labels, Google::Cloud::Vision.default_max_labels)
|
221
|
-
|
248
|
+
crop_hints = validate_max_value(
|
249
|
+
crop_hints, Google::Cloud::Vision.default_max_crop_hints)
|
250
|
+
web = validate_max_value(
|
251
|
+
web, Google::Cloud::Vision.default_max_web)
|
252
|
+
[faces, landmarks, logos, labels, crop_hints, web]
|
222
253
|
end
|
223
254
|
|
224
255
|
def validate_max_value value, default_value
|
@@ -18,6 +18,8 @@ require "google/cloud/vision/annotation/entity"
|
|
18
18
|
require "google/cloud/vision/annotation/text"
|
19
19
|
require "google/cloud/vision/annotation/safe_search"
|
20
20
|
require "google/cloud/vision/annotation/properties"
|
21
|
+
require "google/cloud/vision/annotation/crop_hint"
|
22
|
+
require "google/cloud/vision/annotation/web"
|
21
23
|
|
22
24
|
module Google
|
23
25
|
module Cloud
|
@@ -105,7 +107,7 @@ module Google
|
|
105
107
|
# annotation.face? #=> true
|
106
108
|
#
|
107
109
|
def face?
|
108
|
-
faces.
|
110
|
+
faces.any?
|
109
111
|
end
|
110
112
|
|
111
113
|
##
|
@@ -163,7 +165,7 @@ module Google
|
|
163
165
|
# annotation.landmark? #=> true
|
164
166
|
#
|
165
167
|
def landmark?
|
166
|
-
landmarks.
|
168
|
+
landmarks.any?
|
167
169
|
end
|
168
170
|
|
169
171
|
##
|
@@ -221,7 +223,7 @@ module Google
|
|
221
223
|
# annotation.logo? #=> true
|
222
224
|
#
|
223
225
|
def logo?
|
224
|
-
logos.
|
226
|
+
logos.any?
|
225
227
|
end
|
226
228
|
|
227
229
|
##
|
@@ -279,7 +281,7 @@ module Google
|
|
279
281
|
# annotation.label? #=> true
|
280
282
|
#
|
281
283
|
def label?
|
282
|
-
labels.
|
284
|
+
labels.any?
|
283
285
|
end
|
284
286
|
|
285
287
|
##
|
@@ -297,7 +299,8 @@ module Google
|
|
297
299
|
# text = annotation.text
|
298
300
|
#
|
299
301
|
def text
|
300
|
-
@text ||=
|
302
|
+
@text ||= \
|
303
|
+
Text.from_grpc(@grpc.text_annotations, @grpc.full_text_annotation)
|
301
304
|
end
|
302
305
|
|
303
306
|
##
|
@@ -321,7 +324,7 @@ module Google
|
|
321
324
|
##
|
322
325
|
# The results of safe_search detection.
|
323
326
|
#
|
324
|
-
# @return [SafeSearch]
|
327
|
+
# @return [SafeSearch, nil]
|
325
328
|
#
|
326
329
|
# @example
|
327
330
|
# require "google/cloud/vision"
|
@@ -359,7 +362,7 @@ module Google
|
|
359
362
|
##
|
360
363
|
# The results of properties detection.
|
361
364
|
#
|
362
|
-
# @return [Properties]
|
365
|
+
# @return [Properties, nil]
|
363
366
|
#
|
364
367
|
# @example
|
365
368
|
# require "google/cloud/vision"
|
@@ -394,6 +397,83 @@ module Google
|
|
394
397
|
!properties.nil?
|
395
398
|
end
|
396
399
|
|
400
|
+
##
|
401
|
+
# The results of crop hints detection.
|
402
|
+
#
|
403
|
+
# @return [Array<CropHint>]
|
404
|
+
#
|
405
|
+
# @example
|
406
|
+
# require "google/cloud/vision"
|
407
|
+
#
|
408
|
+
# vision = Google::Cloud::Vision.new
|
409
|
+
# image = vision.image "path/to/face.jpg"
|
410
|
+
#
|
411
|
+
# annotation = vision.annotate image, crop_hints: true
|
412
|
+
# crop_hints = annotation.crop_hints
|
413
|
+
#
|
414
|
+
def crop_hints
|
415
|
+
return [] unless @grpc.crop_hints_annotation
|
416
|
+
grpc_crop_hints = @grpc.crop_hints_annotation.crop_hints
|
417
|
+
@crop_hints ||= Array(grpc_crop_hints).map do |ch|
|
418
|
+
CropHint.from_grpc ch
|
419
|
+
end
|
420
|
+
end
|
421
|
+
|
422
|
+
##
|
423
|
+
# Whether there is a result for crop hints detection.
|
424
|
+
#
|
425
|
+
# @return [Boolean]
|
426
|
+
#
|
427
|
+
# @example
|
428
|
+
# require "google/cloud/vision"
|
429
|
+
#
|
430
|
+
# vision = Google::Cloud::Vision.new
|
431
|
+
# image = vision.image "path/to/face.jpg"
|
432
|
+
#
|
433
|
+
# annotation = vision.annotate image, crop_hints: true
|
434
|
+
# annotation.crop_hints? #=> true
|
435
|
+
#
|
436
|
+
def crop_hints?
|
437
|
+
crop_hints.any?
|
438
|
+
end
|
439
|
+
|
440
|
+
##
|
441
|
+
# The results of web detection.
|
442
|
+
#
|
443
|
+
# @return [Web]
|
444
|
+
#
|
445
|
+
# @example
|
446
|
+
# require "google/cloud/vision"
|
447
|
+
#
|
448
|
+
# vision = Google::Cloud::Vision.new
|
449
|
+
# image = vision.image "path/to/face.jpg"
|
450
|
+
#
|
451
|
+
# annotation = vision.annotate image, web: true
|
452
|
+
# web = annotation.web
|
453
|
+
#
|
454
|
+
def web
|
455
|
+
return nil unless @grpc.web_detection
|
456
|
+
@web ||= Web.from_grpc(@grpc.web_detection)
|
457
|
+
end
|
458
|
+
|
459
|
+
##
|
460
|
+
# Whether there is a result for web detection.
|
461
|
+
#
|
462
|
+
# @return [Boolean]
|
463
|
+
#
|
464
|
+
# @example
|
465
|
+
# require "google/cloud/vision"
|
466
|
+
#
|
467
|
+
# vision = Google::Cloud::Vision.new
|
468
|
+
# image = vision.image "path/to/face.jpg"
|
469
|
+
#
|
470
|
+
# annotation = vision.annotate image, web: true
|
471
|
+
# annotation.web? #=> true
|
472
|
+
#
|
473
|
+
def web?
|
474
|
+
!web.nil?
|
475
|
+
end
|
476
|
+
|
397
477
|
##
|
398
478
|
# Deeply converts object to a hash. All keys will be symbolized.
|
399
479
|
#
|
@@ -402,16 +482,18 @@ module Google
|
|
402
482
|
def to_h
|
403
483
|
{ faces: faces.map(&:to_h), landmarks: landmarks.map(&:to_h),
|
404
484
|
logos: logos.map(&:to_h), labels: labels.map(&:to_h),
|
405
|
-
text: text.
|
406
|
-
properties: properties.to_h
|
485
|
+
text: text.to_h, safe_search: safe_search.to_h,
|
486
|
+
properties: properties.to_h, crop_hints: crop_hints.map(&:to_h),
|
487
|
+
web: web.to_h }
|
407
488
|
end
|
408
489
|
|
409
490
|
# @private
|
410
491
|
def to_s
|
411
492
|
tmplt = "(faces: %i, landmarks: %i, logos: %i, labels: %i," \
|
412
|
-
" text: %s, safe_search: %s, properties: %s
|
493
|
+
" text: %s, safe_search: %s, properties: %s," \
|
494
|
+
" crop_hints: %s, web: %s)"
|
413
495
|
format tmplt, faces.count, landmarks.count, logos.count, labels.count,
|
414
|
-
text?, safe_search?, properties?
|
496
|
+
text?, safe_search?, properties?, crop_hints?, web?
|
415
497
|
end
|
416
498
|
|
417
499
|
# @private
|