google-cloud-vision 0.31.0 → 0.32.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (80) hide show
  1. checksums.yaml +4 -4
  2. data/.yardopts +2 -9
  3. data/LICENSE +1 -1
  4. data/README.md +94 -0
  5. data/lib/google/cloud/vision.rb +200 -535
  6. data/lib/google/cloud/vision/v1.rb +129 -55
  7. data/lib/google/cloud/vision/v1/doc/google/cloud/vision/v1/image_annotator.rb +9 -0
  8. data/lib/google/cloud/vision/v1/doc/google/cloud/vision/v1/product_search.rb +88 -0
  9. data/lib/google/cloud/vision/v1/doc/google/cloud/vision/v1/product_search_service.rb +539 -0
  10. data/lib/google/cloud/vision/v1/doc/google/cloud/vision/v1/text_annotation.rb +3 -3
  11. data/lib/google/cloud/vision/v1/doc/google/cloud/vision/v1/web_detection.rb +2 -1
  12. data/lib/google/cloud/vision/{version.rb → v1/doc/google/protobuf/empty.rb} +13 -6
  13. data/lib/google/cloud/vision/v1/doc/google/protobuf/field_mask.rb +230 -0
  14. data/lib/google/cloud/vision/v1/doc/google/protobuf/timestamp.rb +109 -0
  15. data/lib/google/cloud/vision/v1/geometry_pb.rb +1 -0
  16. data/lib/google/cloud/vision/v1/helpers.rb +972 -0
  17. data/lib/google/cloud/vision/v1/image_annotator_client.rb +4 -4
  18. data/lib/google/cloud/vision/v1/image_annotator_pb.rb +5 -0
  19. data/lib/google/cloud/vision/v1/image_annotator_services_pb.rb +2 -1
  20. data/lib/google/cloud/vision/v1/product_search_client.rb +1337 -0
  21. data/lib/google/cloud/vision/v1/product_search_client_config.json +116 -0
  22. data/lib/google/cloud/vision/v1/product_search_pb.rb +45 -0
  23. data/lib/google/cloud/vision/v1/product_search_service_pb.rb +191 -0
  24. data/lib/google/cloud/vision/v1/product_search_service_services_pb.rb +224 -0
  25. data/lib/google/cloud/vision/v1p3beta1.rb +233 -0
  26. data/lib/google/cloud/vision/v1p3beta1/credentials.rb +42 -0
  27. data/lib/google/cloud/vision/v1p3beta1/doc/google/cloud/vision/v1p3beta1/geometry.rb +72 -0
  28. data/lib/google/cloud/vision/v1p3beta1/doc/google/cloud/vision/v1p3beta1/image_annotator.rb +763 -0
  29. data/lib/google/cloud/vision/v1p3beta1/doc/google/cloud/vision/v1p3beta1/product_search.rb +154 -0
  30. data/lib/google/cloud/vision/v1p3beta1/doc/google/cloud/vision/v1p3beta1/product_search_service.rb +533 -0
  31. data/lib/google/cloud/vision/v1p3beta1/doc/google/cloud/vision/v1p3beta1/text_annotation.rb +254 -0
  32. data/lib/google/cloud/vision/v1p3beta1/doc/google/cloud/vision/v1p3beta1/web_detection.rb +101 -0
  33. data/lib/google/cloud/vision/v1p3beta1/doc/google/longrunning/operations.rb +93 -0
  34. data/lib/google/cloud/vision/v1p3beta1/doc/google/protobuf/any.rb +130 -0
  35. data/lib/google/cloud/vision/v1p3beta1/doc/google/protobuf/empty.rb +29 -0
  36. data/lib/google/cloud/vision/v1p3beta1/doc/google/protobuf/field_mask.rb +230 -0
  37. data/lib/google/cloud/vision/v1p3beta1/doc/google/protobuf/timestamp.rb +109 -0
  38. data/lib/google/cloud/vision/v1p3beta1/doc/google/protobuf/wrappers.rb +90 -0
  39. data/lib/google/cloud/vision/v1p3beta1/doc/google/rpc/status.rb +84 -0
  40. data/lib/google/cloud/vision/v1p3beta1/doc/google/type/color.rb +156 -0
  41. data/lib/google/cloud/vision/v1p3beta1/doc/google/type/latlng.rb +65 -0
  42. data/lib/google/cloud/vision/v1p3beta1/geometry_pb.rb +43 -0
  43. data/lib/google/cloud/vision/v1p3beta1/helpers.rb +972 -0
  44. data/lib/google/cloud/vision/v1p3beta1/image_annotator_client.rb +302 -0
  45. data/lib/google/cloud/vision/v1p3beta1/image_annotator_client_config.json +36 -0
  46. data/lib/google/cloud/vision/v1p3beta1/image_annotator_pb.rb +304 -0
  47. data/lib/google/cloud/vision/v1p3beta1/image_annotator_services_pb.rb +55 -0
  48. data/lib/google/cloud/vision/v1p3beta1/product_search_client.rb +1351 -0
  49. data/lib/google/cloud/vision/v1p3beta1/product_search_client_config.json +116 -0
  50. data/lib/google/cloud/vision/v1p3beta1/product_search_pb.rb +64 -0
  51. data/lib/google/cloud/vision/v1p3beta1/product_search_service_pb.rb +191 -0
  52. data/lib/google/cloud/vision/v1p3beta1/product_search_service_services_pb.rb +222 -0
  53. data/lib/google/cloud/vision/v1p3beta1/text_annotation_pb.rb +94 -0
  54. data/lib/google/cloud/vision/v1p3beta1/web_detection_pb.rb +51 -0
  55. metadata +53 -122
  56. data/AUTHENTICATION.md +0 -179
  57. data/CHANGELOG.md +0 -109
  58. data/CODE_OF_CONDUCT.md +0 -40
  59. data/CONTRIBUTING.md +0 -188
  60. data/LOGGING.md +0 -32
  61. data/OVERVIEW.md +0 -202
  62. data/TROUBLESHOOTING.md +0 -37
  63. data/lib/google-cloud-vision.rb +0 -146
  64. data/lib/google/cloud/vision/annotate.rb +0 -303
  65. data/lib/google/cloud/vision/annotation.rb +0 -553
  66. data/lib/google/cloud/vision/annotation/crop_hint.rb +0 -126
  67. data/lib/google/cloud/vision/annotation/entity.rb +0 -225
  68. data/lib/google/cloud/vision/annotation/face.rb +0 -1497
  69. data/lib/google/cloud/vision/annotation/normalized_vertex.rb +0 -76
  70. data/lib/google/cloud/vision/annotation/object_localization.rb +0 -115
  71. data/lib/google/cloud/vision/annotation/properties.rb +0 -220
  72. data/lib/google/cloud/vision/annotation/safe_search.rb +0 -153
  73. data/lib/google/cloud/vision/annotation/text.rb +0 -1015
  74. data/lib/google/cloud/vision/annotation/vertex.rb +0 -91
  75. data/lib/google/cloud/vision/annotation/web.rb +0 -420
  76. data/lib/google/cloud/vision/credentials.rb +0 -57
  77. data/lib/google/cloud/vision/image.rb +0 -832
  78. data/lib/google/cloud/vision/location.rb +0 -98
  79. data/lib/google/cloud/vision/project.rb +0 -367
  80. data/lib/google/cloud/vision/service.rb +0 -83
@@ -1,98 +0,0 @@
1
- # Copyright 2016 Google LLC
2
- #
3
- # Licensed under the Apache License, Version 2.0 (the "License");
4
- # you may not use this file except in compliance with the License.
5
- # You may obtain a copy of the License at
6
- #
7
- # https://www.apache.org/licenses/LICENSE-2.0
8
- #
9
- # Unless required by applicable law or agreed to in writing, software
10
- # distributed under the License is distributed on an "AS IS" BASIS,
11
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
- # See the License for the specific language governing permissions and
13
- # limitations under the License.
14
-
15
-
16
- module Google
17
- module Cloud
18
- module Vision
19
- ##
20
- # # Location
21
- #
22
- # A latitude/longitude pair with values conforming to the [WGS84
23
- # standard](http://www.unoosa.org/pdf/icg/2012/template/WGS_84.pdf).
24
- #
25
- # @attr [Float] latitude The degrees latitude conforming to the [WGS84
26
- # standard](http://www.unoosa.org/pdf/icg/2012/template/WGS_84.pdf).
27
- # @attr [Float] longitude The degrees longitude conforming to the [WGS84
28
- # standard](http://www.unoosa.org/pdf/icg/2012/template/WGS_84.pdf).
29
- #
30
- # @example
31
- # require "google/cloud/vision"
32
- #
33
- # vision = Google::Cloud::Vision.new
34
- #
35
- # image = vision.image "path/to/landmark.jpg"
36
- # entity = image.landmark
37
- #
38
- # location = entity.locations.first
39
- #
40
- # location.latitude #=> 43.878264
41
- # location.longitude #=> -103.45700740814209
42
- #
43
- class Location
44
- attr_accessor :latitude, :longitude
45
-
46
- ##
47
- # @private Creates a new Location instance.
48
- def initialize latitude, longitude
49
- @latitude = latitude
50
- @longitude = longitude
51
- end
52
-
53
- ##
54
- # Returns the object's property values as an array.
55
- #
56
- # @return [Array]
57
- #
58
- def to_a
59
- [latitude, longitude]
60
- end
61
-
62
- ##
63
- # Converts object to a hash. All keys will be symbolized.
64
- #
65
- # @return [Hash]
66
- #
67
- def to_h
68
- { latitude: latitude, longitude: longitude }
69
- end
70
-
71
- # @private
72
- def to_s
73
- "(latitude: #{latitude.inspect}, longitude: #{longitude.inspect})"
74
- end
75
-
76
- # @private
77
- def inspect
78
- "#<#{self.class.name} #{self}>"
79
- end
80
-
81
- ##
82
- # @private New GRPC LatLng object.
83
- def to_grpc
84
- Google::Type::LatLng.new(
85
- latitude: latitude,
86
- longitude: longitude
87
- )
88
- end
89
-
90
- ##
91
- # @private New Location from a GRPC LatLng object.
92
- def self.from_grpc grpc
93
- new grpc.latitude, grpc.longitude
94
- end
95
- end
96
- end
97
- end
98
- end
@@ -1,367 +0,0 @@
1
- # Copyright 2016 Google LLC
2
- #
3
- # Licensed under the Apache License, Version 2.0 (the "License");
4
- # you may not use this file except in compliance with the License.
5
- # You may obtain a copy of the License at
6
- #
7
- # https://www.apache.org/licenses/LICENSE-2.0
8
- #
9
- # Unless required by applicable law or agreed to in writing, software
10
- # distributed under the License is distributed on an "AS IS" BASIS,
11
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
- # See the License for the specific language governing permissions and
13
- # limitations under the License.
14
-
15
-
16
- require "google/cloud/errors"
17
- require "google/cloud/vision/service"
18
- require "google/cloud/vision/credentials"
19
- require "google/cloud/vision/annotate"
20
- require "google/cloud/vision/image"
21
- require "google/cloud/vision/annotation"
22
-
23
- module Google
24
- module Cloud
25
- module Vision
26
- ##
27
- # # Project
28
- #
29
- # Google Cloud Vision allows developers to easily integrate vision
30
- # detection features within applications, including image labeling, face
31
- # and landmark detection, optical character recognition (OCR), and tagging
32
- # of explicit content.
33
- #
34
- # @example
35
- # require "google/cloud/vision"
36
- #
37
- # vision = Google::Cloud::Vision.new
38
- #
39
- # image = vision.image "path/to/landmark.jpg"
40
- #
41
- # annotation = vision.annotate image, labels: true
42
- #
43
- # annotation.labels.map &:description
44
- # # ["stone carving", "ancient history", "statue", "sculpture",
45
- # # "monument", "landmark"]
46
- #
47
- # See Google::Cloud#vision
48
- class Project
49
- ##
50
- # @private The Service object.
51
- attr_accessor :service
52
-
53
- ##
54
- # @private Creates a new Project instance.
55
- def initialize service
56
- @service = service
57
- end
58
-
59
- # The Vision project connected to.
60
- #
61
- # @example
62
- # require "google/cloud/vision"
63
- #
64
- # vision = Google::Cloud::Vision.new(
65
- # project_id: "my-project",
66
- # credentials: "/path/to/keyfile.json"
67
- # )
68
- #
69
- # vision.project_id #=> "my-project"
70
- #
71
- def project_id
72
- service.project
73
- end
74
- alias project project_id
75
-
76
- ##
77
- # Returns a new image from the given source.
78
- #
79
- # Cloud Vision sets upper limits on file size as well as on the total
80
- # combined size of all images in a request. Reducing your file size can
81
- # significantly improve throughput; however, be careful not to reduce
82
- # image quality in the process. See [Best Practices - Image
83
- # Sizing](https://cloud.google.com/vision/docs/best-practices#image_sizing)
84
- # for current file size limits.
85
- #
86
- # Note that an object in Google Cloud Storage is a single entity;
87
- # permissions affect only that object. "Directory permissions" do not
88
- # exist (though default bucket permissions do exist). Make sure the code
89
- # which performs your request has access to that image.
90
- #
91
- # @see https://cloud.google.com/vision/docs/best-practices Best
92
- # Practices
93
- #
94
- # @param [String, IO, StringIO, Tempfile, Google::Cloud::Storage::File]
95
- # source A string file path, publicly-accessible image HTTP/HTTPS URL,
96
- # or Cloud Storage URI of the form
97
- # `"gs://bucketname/path/to/image_filename"`; or a File, IO, StringIO,
98
- # or Tempfile instance; or an instance of
99
- # Google::Cloud::Storage::File.
100
- #
101
- # @return [Image] An image for the Vision service.
102
- #
103
- # @example With a publicly-accessible image HTTP/HTTPS URL:
104
- # require "google/cloud/vision"
105
- #
106
- # vision = Google::Cloud::Vision.new
107
- #
108
- # image = vision.image "https://www.example.com/images/landmark.jpg"
109
- #
110
- # @example With a Google Cloud Storage URI:
111
- # require "google/cloud/vision"
112
- #
113
- # vision = Google::Cloud::Vision.new
114
- #
115
- # image = vision.image "gs://bucket-name/path_to_image_object"
116
- #
117
- # @example With a local file path:
118
- # require "google/cloud/vision"
119
- #
120
- # vision = Google::Cloud::Vision.new
121
- #
122
- # image = vision.image "path/to/landmark.jpg"
123
- #
124
- def image source
125
- return source if source.is_a? Image
126
- Image.from_source source, self
127
- end
128
-
129
- ##
130
- # Performs detection of Cloud Vision
131
- # [features](https://cloud.google.com/vision/reference/rest/v1/images/annotate#Feature)
132
- # on the given image(s). If no options for features are provided,
133
- # **all** image detection features will be performed, with a default of
134
- # `100` results for faces, landmarks, logos, labels, crop_hints, and
135
- # web. If any feature option is provided, only the specified feature
136
- # detections will be performed. Please review
137
- # [Pricing](https://cloud.google.com/vision/docs/pricing) before use, as
138
- # a separate charge is incurred for each feature performed on an image.
139
- #
140
- # Cloud Vision sets upper limits on file size as well as on the total
141
- # combined size of all images in a request. Reducing your file size can
142
- # significantly improve throughput; however, be careful not to reduce
143
- # image quality in the process. See [Best Practices - Image
144
- # Sizing](https://cloud.google.com/vision/docs/best-practices#image_sizing)
145
- # for current file size limits.
146
- #
147
- # @see https://cloud.google.com/vision/docs/requests-and-responses Cloud
148
- # Vision API Requests and Responses
149
- # @see https://cloud.google.com/vision/reference/rest/v1/images/annotate#AnnotateImageRequest
150
- # AnnotateImageRequest
151
- # @see https://cloud.google.com/vision/docs/pricing Cloud Vision Pricing
152
- #
153
- # @param [Image, Object] images The image or images to annotate. This
154
- # can be an {Image} instance, or any other type that converts to an
155
- # {Image}: A string file path, publicly-accessible image HTTP/HTTPS
156
- # URL, or Cloud Storage URI of the form
157
- # `"gs://bucketname/path/to/image_filename"`; or a File, IO, StringIO,
158
- # or Tempfile instance; or an instance of
159
- # Google::Cloud::Storage::File.
160
- # @param [Boolean, Integer] faces Whether to perform the facial
161
- # detection feature. The maximum number of results is configured in
162
- # {Google::Cloud::Vision.default_max_faces}, or may be provided here.
163
- # Optional.
164
- # @param [Boolean, Integer] landmarks Whether to perform the landmark
165
- # detection feature. The maximum number of results is configured in
166
- # {Google::Cloud::Vision.default_max_landmarks}, or may be provided
167
- # here. Optional.
168
- # @param [Boolean, Integer] logos Whether to perform the logo detection
169
- # feature. The maximum number of results is configured in
170
- # {Google::Cloud::Vision.default_max_logos}, or may be provided here.
171
- # Optional.
172
- # @param [Boolean, Integer] labels Whether to perform the label
173
- # detection feature. The maximum number of results is configured in
174
- # {Google::Cloud::Vision.default_max_labels}, or may be provided here.
175
- # Optional.
176
- # @param [Boolean] text Whether to perform the text detection feature
177
- # (OCR for shorter documents with sparse text). Optional.
178
- # @param [Boolean] document Whether to perform the document text
179
- # detection feature (OCR for longer documents with dense text).
180
- # Optional.
181
- # @param [Boolean] safe_search Whether to perform the safe search
182
- # feature. Optional.
183
- # @param [Boolean] properties Whether to perform the image properties
184
- # feature (currently, the image's dominant colors.) Optional.
185
- # @param [Boolean, Integer] crop_hints Whether to perform the crop hints
186
- # feature. Optional.
187
- # @param [Boolean, Integer] web Whether to perform the web annotation
188
- # feature. Optional.
189
- # @param [Boolean, Integer] object_localizations Whether to perform the
190
- # object localizations feature. Optional.
191
- #
192
- # @yield [annotate] A block for requests that involve multiple feature
193
- # configurations. See {Annotate#annotate}.
194
- # @yieldparam [Annotate] annotate the Annotate object
195
- #
196
- # @return [Annotation, Array<Annotation>] The results for all image
197
- # detections, returned as a single {Annotation} instance for one
198
- # image, or as an array of {Annotation} instances, one per image, for
199
- # multiple images.
200
- #
201
- # @example With a single image:
202
- # require "google/cloud/vision"
203
- #
204
- # vision = Google::Cloud::Vision.new
205
- #
206
- # image = vision.image "path/to/landmark.jpg"
207
- #
208
- # annotation = vision.annotate image, labels: true
209
- #
210
- # annotation.labels.map &:description
211
- # # ["stone carving", "ancient history", "statue", "sculpture",
212
- # # "monument", "landmark"]
213
- #
214
- # @example With multiple images:
215
- # require "google/cloud/vision"
216
- #
217
- # vision = Google::Cloud::Vision.new
218
- #
219
- # face_img = vision.image "path/to/face.jpg"
220
- # landmark_img = vision.image "path/to/landmark.jpg"
221
- #
222
- # annotations = vision.annotate face_img, landmark_img, labels: true
223
- #
224
- # annotations[0].labels.count #=> 4
225
- # annotations[1].labels.count #=> 6
226
- #
227
- # @example With multiple images and configurations passed in a block:
228
- # require "google/cloud/vision"
229
- #
230
- # vision = Google::Cloud::Vision.new
231
- #
232
- # face_img = vision.image "path/to/face.jpg"
233
- # landmark_img = vision.image "path/to/landmark.jpg"
234
- # text_image = vision.image "path/to/text.png"
235
- #
236
- # annotations = vision.annotate do |annotate|
237
- # annotate.annotate face_img, faces: true, labels: true
238
- # annotate.annotate landmark_img, landmarks: true
239
- # annotate.annotate text_image, text: true
240
- # end
241
- #
242
- # annotations[0].faces.count #=> 1
243
- # annotations[0].labels.count #=> 4
244
- # annotations[1].landmarks.count #=> 1
245
- # annotations[2].text.pages.count #=> 1
246
- #
247
- # @example Maximum result values can also be provided:
248
- # require "google/cloud/vision"
249
- #
250
- # vision = Google::Cloud::Vision.new
251
- #
252
- # image = vision.image "path/to/landmark.jpg"
253
- #
254
- # annotation = vision.annotate image, labels: 3
255
- #
256
- # annotation.labels.map &:description
257
- # # ["stone carving", "ancient history", "statue"]
258
- #
259
- def annotate *images, faces: false, landmarks: false, logos: false,
260
- labels: false, text: false, document: false,
261
- safe_search: false, properties: false, crop_hints: false,
262
- web: false, object_localizations: false
263
- a = Annotate.new self
264
- a.annotate(*images, faces: faces, landmarks: landmarks, logos: logos,
265
- labels: labels, text: text, document: document,
266
- safe_search: safe_search, properties: properties,
267
- crop_hints: crop_hints, web: web,
268
- object_localizations: object_localizations)
269
-
270
- yield a if block_given?
271
-
272
- grpc = service.annotate a.requests
273
- annotations = Array(grpc.responses).map do |g|
274
- raise Error.from_error(g.error) if g.error
275
- Annotation.from_grpc g
276
- end
277
- return annotations.first if annotations.count == 1
278
- annotations
279
- end
280
-
281
- # rubocop:disable LineLength
282
-
283
- ##
284
- # Run asynchronous image detection and annotation for a list of generic
285
- # files, such as PDF files, which may contain multiple pages and
286
- # multiple images per page. Progress and results can be retrieved
287
- # through the google.longrunning.Operations interface.
288
- # Operation.metadata contains OperationMetadata (metadata).
289
- # Operation.response contains AsyncBatchAnnotateFilesResponse
290
- # (results).
291
- #
292
- # @param requests [Array<Google::Cloud::Vision::V1::AsyncAnnotateFileRequest|Hash>]
293
- # Individual async file annotation requests for this batch.
294
- # A hash of the same form as
295
- # `Google::Cloud::Vision::V1::AsyncAnnotateFileRequest` can also be
296
- # provided.
297
- # @param options [Google::Gax::CallOptions]
298
- # Overrides the default settings for this call, e.g, timeout,
299
- # retries, etc.
300
- # @return [Google::Gax::Operation]
301
- # @raise [Google::Gax::GaxError] if the RPC is aborted.
302
- #
303
- # @example
304
- # require "google/cloud/vision"
305
- #
306
- # # Create a new vision client.
307
- # vision_client = Google::Cloud::Vision.new project_id: 'project_id'
308
- # requests = [{
309
- # input_config: {
310
- # gcs_source: { uri: 'source_uri' },
311
- # mime_type: "application/pdf"
312
- # },
313
- # features: [{ type: :DOCUMENT_TEXT_DETECTION }],
314
- # output_config: {
315
- # gcs_destination: { uri: 'destination_uri' },
316
- # batch_size: 2
317
- # }
318
- # }]
319
- #
320
- # # Register a callback during the method call.
321
- # operation = vision_client
322
- # .async_batch_annotate_files(requests) do |op|
323
- # raise op.results.message if op.error?
324
- # op_results = op.results
325
- # # Process the results.
326
- #
327
- # metadata = op.metadata
328
- # # Process the metadata.
329
- # end
330
- #
331
- # # Or use the return value to register a callback.
332
- # operation.on_done do |op|
333
- # raise op.results.message if op.error?
334
- # op_results = op.results
335
- # # Process the results.
336
- #
337
- # metadata = op.metadata
338
- # # Process the metadata.
339
- # end
340
- #
341
- # # Manually reload the operation.
342
- # operation.reload!
343
- #
344
- # # Or block until the operation completes, triggering callbacks on
345
- # # completion.
346
- # operation.wait_until_done!
347
- #
348
- def async_batch_annotate_files requests, options = {}
349
- service.service.async_batch_annotate_files requests, options
350
- end
351
-
352
- # rubocop:enable LineLength
353
-
354
- alias mark annotate
355
- alias detect annotate
356
-
357
- protected
358
-
359
- ##
360
- # Raise an error unless an active connection is available.
361
- def ensure_service!
362
- raise "Must have active connection" unless service
363
- end
364
- end
365
- end
366
- end
367
- end