google-cloud-vision 0.31.0 → 0.32.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.
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
@@ -0,0 +1,84 @@
1
+ # Copyright 2018 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 Rpc
18
+ # The `Status` type defines a logical error model that is suitable for different
19
+ # programming environments, including REST APIs and RPC APIs. It is used by
20
+ # [gRPC](https://github.com/grpc). The error model is designed to be:
21
+ #
22
+ # * Simple to use and understand for most users
23
+ # * Flexible enough to meet unexpected needs
24
+ #
25
+ # = Overview
26
+ #
27
+ # The `Status` message contains three pieces of data: error code, error message,
28
+ # and error details. The error code should be an enum value of
29
+ # {Google::Rpc::Code}, but it may accept additional error codes if needed. The
30
+ # error message should be a developer-facing English message that helps
31
+ # developers *understand* and *resolve* the error. If a localized user-facing
32
+ # error message is needed, put the localized message in the error details or
33
+ # localize it in the client. The optional error details may contain arbitrary
34
+ # information about the error. There is a predefined set of error detail types
35
+ # in the package `google.rpc` that can be used for common error conditions.
36
+ #
37
+ # = Language mapping
38
+ #
39
+ # The `Status` message is the logical representation of the error model, but it
40
+ # is not necessarily the actual wire format. When the `Status` message is
41
+ # exposed in different client libraries and different wire protocols, it can be
42
+ # mapped differently. For example, it will likely be mapped to some exceptions
43
+ # in Java, but more likely mapped to some error codes in C.
44
+ #
45
+ # = Other uses
46
+ #
47
+ # The error model and the `Status` message can be used in a variety of
48
+ # environments, either with or without APIs, to provide a
49
+ # consistent developer experience across different environments.
50
+ #
51
+ # Example uses of this error model include:
52
+ #
53
+ # * Partial errors. If a service needs to return partial errors to the client,
54
+ # it may embed the `Status` in the normal response to indicate the partial
55
+ # errors.
56
+ #
57
+ # * Workflow errors. A typical workflow has multiple steps. Each step may
58
+ # have a `Status` message for error reporting.
59
+ #
60
+ # * Batch operations. If a client uses batch request and batch response, the
61
+ # `Status` message should be used directly inside batch response, one for
62
+ # each error sub-response.
63
+ #
64
+ # * Asynchronous operations. If an API call embeds asynchronous operation
65
+ # results in its response, the status of those operations should be
66
+ # represented directly using the `Status` message.
67
+ #
68
+ # * Logging. If some API errors are stored in logs, the message `Status` could
69
+ # be used directly after any stripping needed for security/privacy reasons.
70
+ # @!attribute [rw] code
71
+ # @return [Integer]
72
+ # The status code, which should be an enum value of {Google::Rpc::Code}.
73
+ # @!attribute [rw] message
74
+ # @return [String]
75
+ # A developer-facing error message, which should be in English. Any
76
+ # user-facing error message should be localized and sent in the
77
+ # {Google::Rpc::Status#details} field, or localized by the client.
78
+ # @!attribute [rw] details
79
+ # @return [Array<Google::Protobuf::Any>]
80
+ # A list of messages that carry the error details. There is a common set of
81
+ # message types for APIs to use.
82
+ class Status; end
83
+ end
84
+ end
@@ -0,0 +1,156 @@
1
+ # Copyright 2018 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 Type
18
+ # Represents a color in the RGBA color space. This representation is designed
19
+ # for simplicity of conversion to/from color representations in various
20
+ # languages over compactness; for example, the fields of this representation
21
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
22
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
23
+ # method in iOS; and, with just a little work, it can be easily formatted into
24
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
25
+ #
26
+ # Example (Java):
27
+ #
28
+ # import com.google.type.Color;
29
+ #
30
+ # // ...
31
+ # public static java.awt.Color fromProto(Color protocolor) {
32
+ # float alpha = protocolor.hasAlpha()
33
+ # ? protocolor.getAlpha().getValue()
34
+ # : 1.0;
35
+ #
36
+ # return new java.awt.Color(
37
+ # protocolor.getRed(),
38
+ # protocolor.getGreen(),
39
+ # protocolor.getBlue(),
40
+ # alpha);
41
+ # }
42
+ #
43
+ # public static Color toProto(java.awt.Color color) {
44
+ # float red = (float) color.getRed();
45
+ # float green = (float) color.getGreen();
46
+ # float blue = (float) color.getBlue();
47
+ # float denominator = 255.0;
48
+ # Color.Builder resultBuilder =
49
+ # Color
50
+ # .newBuilder()
51
+ # .setRed(red / denominator)
52
+ # .setGreen(green / denominator)
53
+ # .setBlue(blue / denominator);
54
+ # int alpha = color.getAlpha();
55
+ # if (alpha != 255) {
56
+ # result.setAlpha(
57
+ # FloatValue
58
+ # .newBuilder()
59
+ # .setValue(((float) alpha) / denominator)
60
+ # .build());
61
+ # }
62
+ # return resultBuilder.build();
63
+ # }
64
+ # // ...
65
+ #
66
+ # Example (iOS / Obj-C):
67
+ #
68
+ # // ...
69
+ # static UIColor* fromProto(Color* protocolor) {
70
+ # float red = [protocolor red];
71
+ # float green = [protocolor green];
72
+ # float blue = [protocolor blue];
73
+ # FloatValue* alpha_wrapper = [protocolor alpha];
74
+ # float alpha = 1.0;
75
+ # if (alpha_wrapper != nil) {
76
+ # alpha = [alpha_wrapper value];
77
+ # }
78
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
79
+ # }
80
+ #
81
+ # static Color* toProto(UIColor* color) {
82
+ # CGFloat red, green, blue, alpha;
83
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
84
+ # return nil;
85
+ # }
86
+ # Color* result = [Color alloc] init];
87
+ # [result setRed:red];
88
+ # [result setGreen:green];
89
+ # [result setBlue:blue];
90
+ # if (alpha <= 0.9999) {
91
+ # [result setAlpha:floatWrapperWithValue(alpha)];
92
+ # }
93
+ # [result autorelease];
94
+ # return result;
95
+ # }
96
+ # // ...
97
+ #
98
+ # Example (JavaScript):
99
+ #
100
+ # // ...
101
+ #
102
+ # var protoToCssColor = function(rgb_color) {
103
+ # var redFrac = rgb_color.red || 0.0;
104
+ # var greenFrac = rgb_color.green || 0.0;
105
+ # var blueFrac = rgb_color.blue || 0.0;
106
+ # var red = Math.floor(redFrac * 255);
107
+ # var green = Math.floor(greenFrac * 255);
108
+ # var blue = Math.floor(blueFrac * 255);
109
+ #
110
+ # if (!('alpha' in rgb_color)) {
111
+ # return rgbToCssColor_(red, green, blue);
112
+ # }
113
+ #
114
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
115
+ # var rgbParams = [red, green, blue].join(',');
116
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
117
+ # };
118
+ #
119
+ # var rgbToCssColor_ = function(red, green, blue) {
120
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
121
+ # var hexString = rgbNumber.toString(16);
122
+ # var missingZeros = 6 - hexString.length;
123
+ # var resultBuilder = ['#'];
124
+ # for (var i = 0; i < missingZeros; i++) {
125
+ # resultBuilder.push('0');
126
+ # }
127
+ # resultBuilder.push(hexString);
128
+ # return resultBuilder.join('');
129
+ # };
130
+ #
131
+ # // ...
132
+ # @!attribute [rw] red
133
+ # @return [Float]
134
+ # The amount of red in the color as a value in the interval [0, 1].
135
+ # @!attribute [rw] green
136
+ # @return [Float]
137
+ # The amount of green in the color as a value in the interval [0, 1].
138
+ # @!attribute [rw] blue
139
+ # @return [Float]
140
+ # The amount of blue in the color as a value in the interval [0, 1].
141
+ # @!attribute [rw] alpha
142
+ # @return [Google::Protobuf::FloatValue]
143
+ # The fraction of this color that should be applied to the pixel. That is,
144
+ # the final pixel color is defined by the equation:
145
+ #
146
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
147
+ #
148
+ # This means that a value of 1.0 corresponds to a solid color, whereas
149
+ # a value of 0.0 corresponds to a completely transparent color. This
150
+ # uses a wrapper message rather than a simple float scalar so that it is
151
+ # possible to distinguish between a default value and the value being unset.
152
+ # If omitted, this color object is to be rendered as a solid color
153
+ # (as if the alpha value had been explicitly given with a value of 1.0).
154
+ class Color; end
155
+ end
156
+ end
@@ -0,0 +1,65 @@
1
+ # Copyright 2018 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 Type
18
+ # An object representing a latitude/longitude pair. This is expressed as a pair
19
+ # of doubles representing degrees latitude and degrees longitude. Unless
20
+ # specified otherwise, this must conform to the
21
+ # <a href="http://www.unoosa.org/pdf/icg/2012/template/WGS_84.pdf">WGS84
22
+ # standard</a>. Values must be within normalized ranges.
23
+ #
24
+ # Example of normalization code in Python:
25
+ #
26
+ # def NormalizeLongitude(longitude):
27
+ # """Wraps decimal degrees longitude to [-180.0, 180.0]."""
28
+ # q, r = divmod(longitude, 360.0)
29
+ # if r > 180.0 or (r == 180.0 and q <= -1.0):
30
+ # return r - 360.0
31
+ # return r
32
+ #
33
+ # def NormalizeLatLng(latitude, longitude):
34
+ # """Wraps decimal degrees latitude and longitude to
35
+ # [-90.0, 90.0] and [-180.0, 180.0], respectively."""
36
+ # r = latitude % 360.0
37
+ # if r <= 90.0:
38
+ # return r, NormalizeLongitude(longitude)
39
+ # elif r >= 270.0:
40
+ # return r - 360, NormalizeLongitude(longitude)
41
+ # else:
42
+ # return 180 - r, NormalizeLongitude(longitude + 180.0)
43
+ #
44
+ # assert 180.0 == NormalizeLongitude(180.0)
45
+ # assert -180.0 == NormalizeLongitude(-180.0)
46
+ # assert -179.0 == NormalizeLongitude(181.0)
47
+ # assert (0.0, 0.0) == NormalizeLatLng(360.0, 0.0)
48
+ # assert (0.0, 0.0) == NormalizeLatLng(-360.0, 0.0)
49
+ # assert (85.0, 180.0) == NormalizeLatLng(95.0, 0.0)
50
+ # assert (-85.0, -170.0) == NormalizeLatLng(-95.0, 10.0)
51
+ # assert (90.0, 10.0) == NormalizeLatLng(90.0, 10.0)
52
+ # assert (-90.0, -10.0) == NormalizeLatLng(-90.0, -10.0)
53
+ # assert (0.0, -170.0) == NormalizeLatLng(-180.0, 10.0)
54
+ # assert (0.0, -170.0) == NormalizeLatLng(180.0, 10.0)
55
+ # assert (-90.0, 10.0) == NormalizeLatLng(270.0, 10.0)
56
+ # assert (90.0, 10.0) == NormalizeLatLng(-270.0, 10.0)
57
+ # @!attribute [rw] latitude
58
+ # @return [Float]
59
+ # The latitude in degrees. It must be in the range [-90.0, +90.0].
60
+ # @!attribute [rw] longitude
61
+ # @return [Float]
62
+ # The longitude in degrees. It must be in the range [-180.0, +180.0].
63
+ class LatLng; end
64
+ end
65
+ end
@@ -0,0 +1,43 @@
1
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
2
+ # source: google/cloud/vision/v1p3beta1/geometry.proto
3
+
4
+
5
+ require 'google/protobuf'
6
+
7
+ require 'google/api/annotations_pb'
8
+ Google::Protobuf::DescriptorPool.generated_pool.build do
9
+ add_message "google.cloud.vision.v1p3beta1.Vertex" do
10
+ optional :x, :int32, 1
11
+ optional :y, :int32, 2
12
+ end
13
+ add_message "google.cloud.vision.v1p3beta1.NormalizedVertex" do
14
+ optional :x, :float, 1
15
+ optional :y, :float, 2
16
+ end
17
+ add_message "google.cloud.vision.v1p3beta1.BoundingPoly" do
18
+ repeated :vertices, :message, 1, "google.cloud.vision.v1p3beta1.Vertex"
19
+ repeated :normalized_vertices, :message, 2, "google.cloud.vision.v1p3beta1.NormalizedVertex"
20
+ end
21
+ add_message "google.cloud.vision.v1p3beta1.NormalizedBoundingPoly" do
22
+ repeated :vertices, :message, 1, "google.cloud.vision.v1p3beta1.NormalizedVertex"
23
+ end
24
+ add_message "google.cloud.vision.v1p3beta1.Position" do
25
+ optional :x, :float, 1
26
+ optional :y, :float, 2
27
+ optional :z, :float, 3
28
+ end
29
+ end
30
+
31
+ module Google
32
+ module Cloud
33
+ module Vision
34
+ module V1p3beta1
35
+ Vertex = Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.vision.v1p3beta1.Vertex").msgclass
36
+ NormalizedVertex = Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.vision.v1p3beta1.NormalizedVertex").msgclass
37
+ BoundingPoly = Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.vision.v1p3beta1.BoundingPoly").msgclass
38
+ NormalizedBoundingPoly = Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.vision.v1p3beta1.NormalizedBoundingPoly").msgclass
39
+ Position = Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.vision.v1p3beta1.Position").msgclass
40
+ end
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,972 @@
1
+ # Copyright 2018 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 "uri"
17
+
18
+ module Google
19
+ module Cloud
20
+ module Vision
21
+ module V1p3beta1
22
+ class ImageAnnotatorClient
23
+
24
+ # @param images [Array<String>, Array<File>]
25
+ # An array containing files, file paths, io objects, image urls, or Google Cloud Storage urls. Can be used with or instead of image.
26
+ # @param image [File, String]
27
+ # A file, file path, io object, url pointing to an image, or Google Cloud Storage url. Can be used with or instead of images.
28
+ # @param max_results [Integer]
29
+ # Optional. Defaults to 10.
30
+ # @param options [Google::Gax::CallOptions]
31
+ # Optional. Overrides the default settings for this call, e.g, timeout,
32
+ # retries, etc.
33
+ # @param async [Boolean]
34
+ # Optional. Defaults to false. Specifies whether to preform the request synchronously and return a
35
+ # BatchAnnotateImagesResponse instance or to return a Google::Gax::Operation.
36
+ # @param mime_type [String]
37
+ # Required only if async is true.
38
+ # @param batch_size [Integer]
39
+ # Optional. Defaults to 10. When async is true, this specifies the number of input files per output json.
40
+ # @param destination [String]
41
+ # Required only if async is true. A Google Cloud Storage location for storing the output.
42
+ # @yield [result, operation] Access the result along with the RPC operation
43
+ # @yieldparam result [Google::Cloud::Vision::V1p3beta1::BatchAnnotateImagesResponse]
44
+ # @yieldparam operation [GRPC::ActiveCall::Operation]
45
+ # @return [Google::Cloud::Vision::V1p3beta1::BatchAnnotateImagesResponse, Google::Gax::Operation]
46
+ # @example
47
+ # require "google/cloud/vision"
48
+ #
49
+ # image_annotator_client = Google::Cloud::Vision::ImageAnnotator.new(version: :v1p3beta1)
50
+ #
51
+ # response = image_annotator_client.face_detection image: "path\to\image.png"
52
+ # response.responses.each do |res|
53
+ # puts res
54
+ # end
55
+
56
+ def face_detection \
57
+ images: [],
58
+ image: nil,
59
+ max_results: 10,
60
+ options: nil,
61
+ async: false,
62
+ mime_type: nil,
63
+ batch_size: 10,
64
+ destination: nil,
65
+ &blk
66
+
67
+ feature = { type: :FACE_DETECTION }
68
+ feature[:max_results] = max_results
69
+ images << image if image
70
+
71
+ formatted_images = images.map do |img|
72
+ formatted_image = normalize_image img
73
+ formatted_image[:mime_type] = mime_type if mime_type
74
+ formatted_image
75
+ end
76
+
77
+ requests = formatted_images.map do |img|
78
+ {
79
+ image: img,
80
+ features: [feature]
81
+ }
82
+ end
83
+
84
+ if async
85
+ requests.map! do |request|
86
+ {
87
+ input_config: request[:image],
88
+ features: request[:features],
89
+ output_config: {
90
+ gcs_destination: destination,
91
+ batch_size: batch_size
92
+ }
93
+ }
94
+ end
95
+ async_batch_annotate_files requests, options
96
+ else
97
+ batch_annotate_images requests, options, &blk
98
+ end
99
+ end
100
+
101
+ # @param images [Array<String>, Array<File>]
102
+ # An array containing files, file paths, io objects, image urls, or Google Cloud Storage urls. Can be used with or instead of image.
103
+ # @param image [File, String]
104
+ # A file, file path, io object, url pointing to an image, or Google Cloud Storage url. Can be used with or instead of images.
105
+ # @param max_results [Integer]
106
+ # Optional. Defaults to 10.
107
+ # @param options [Google::Gax::CallOptions]
108
+ # Optional. Overrides the default settings for this call, e.g, timeout,
109
+ # retries, etc.
110
+ # @param async [Boolean]
111
+ # Optional. Defaults to false. Specifies whether to preform the request synchronously and return a
112
+ # BatchAnnotateImagesResponse instance or to return a Google::Gax::Operation.
113
+ # @param mime_type [String]
114
+ # Required only if async is true.
115
+ # @param batch_size [Integer]
116
+ # Optional. Defaults to 10. When async is true, this specifies the number of input files per output json.
117
+ # @param destination [String]
118
+ # Required only if async is true. A Google Cloud Storage location for storing the output.
119
+ # @yield [result, operation] Access the result along with the RPC operation
120
+ # @yieldparam result [Google::Cloud::Vision::V1p3beta1::BatchAnnotateImagesResponse]
121
+ # @yieldparam operation [GRPC::ActiveCall::Operation]
122
+ # @return [Google::Cloud::Vision::V1p3beta1::BatchAnnotateImagesResponse, Google::Gax::Operation]
123
+ # @example
124
+ # require "google/cloud/vision"
125
+ #
126
+ # image_annotator_client = Google::Cloud::Vision::ImageAnnotator.new(version: :v1p3beta1)
127
+ #
128
+ # response = image_annotator_client.landmark_detection image: "path\to\image.png"
129
+ # response.responses.each do |res|
130
+ # puts res
131
+ # end
132
+
133
+ def landmark_detection \
134
+ images: [],
135
+ image: nil,
136
+ max_results: 10,
137
+ options: nil,
138
+ async: false,
139
+ mime_type: nil,
140
+ batch_size: 10,
141
+ destination: nil,
142
+ &blk
143
+
144
+ feature = { type: :LANDMARK_DETECTION }
145
+ feature[:max_results] = max_results
146
+ images << image if image
147
+
148
+ formatted_images = images.map do |img|
149
+ formatted_image = normalize_image img
150
+ formatted_image[:mime_type] = mime_type if mime_type
151
+ formatted_image
152
+ end
153
+
154
+ requests = formatted_images.map do |img|
155
+ {
156
+ image: img,
157
+ features: [feature]
158
+ }
159
+ end
160
+
161
+ if async
162
+ requests.map! do |request|
163
+ {
164
+ input_config: request[:image],
165
+ features: request[:features],
166
+ output_config: {
167
+ gcs_destination: destination,
168
+ batch_size: batch_size
169
+ }
170
+ }
171
+ end
172
+ async_batch_annotate_files requests, options
173
+ else
174
+ batch_annotate_images requests, options, &blk
175
+ end
176
+ end
177
+
178
+ # @param images [Array<String>, Array<File>]
179
+ # An array containing files, file paths, io objects, image urls, or Google Cloud Storage urls. Can be used with or instead of image.
180
+ # @param image [File, String]
181
+ # A file, file path, io object, url pointing to an image, or Google Cloud Storage url. Can be used with or instead of images.
182
+ # @param max_results [Integer]
183
+ # Optional. Defaults to 10.
184
+ # @param options [Google::Gax::CallOptions]
185
+ # Optional. Overrides the default settings for this call, e.g, timeout,
186
+ # retries, etc.
187
+ # @param async [Boolean]
188
+ # Optional. Defaults to false. Specifies whether to preform the request synchronously and return a
189
+ # BatchAnnotateImagesResponse instance or to return a Google::Gax::Operation.
190
+ # @param mime_type [String]
191
+ # Required only if async is true.
192
+ # @param batch_size [Integer]
193
+ # Optional. Defaults to 10. When async is true, this specifies the number of input files per output json.
194
+ # @param destination [String]
195
+ # Required only if async is true. A Google Cloud Storage location for storing the output.
196
+ # @yield [result, operation] Access the result along with the RPC operation
197
+ # @yieldparam result [Google::Cloud::Vision::V1p3beta1::BatchAnnotateImagesResponse]
198
+ # @yieldparam operation [GRPC::ActiveCall::Operation]
199
+ # @return [Google::Cloud::Vision::V1p3beta1::BatchAnnotateImagesResponse, Google::Gax::Operation]
200
+ # @example
201
+ # require "google/cloud/vision"
202
+ #
203
+ # image_annotator_client = Google::Cloud::Vision::ImageAnnotator.new(version: :v1p3beta1)
204
+ #
205
+ # response = image_annotator_client.logo_detection image: "path\to\image.png"
206
+ # response.responses.each do |res|
207
+ # puts res
208
+ # end
209
+
210
+ def logo_detection \
211
+ images: [],
212
+ image: nil,
213
+ max_results: 10,
214
+ options: nil,
215
+ async: false,
216
+ mime_type: nil,
217
+ batch_size: 10,
218
+ destination: nil,
219
+ &blk
220
+
221
+ feature = { type: :LOGO_DETECTION }
222
+ feature[:max_results] = max_results
223
+ images << image if image
224
+
225
+ formatted_images = images.map do |img|
226
+ formatted_image = normalize_image img
227
+ formatted_image[:mime_type] = mime_type if mime_type
228
+ formatted_image
229
+ end
230
+
231
+ requests = formatted_images.map do |img|
232
+ {
233
+ image: img,
234
+ features: [feature]
235
+ }
236
+ end
237
+
238
+ if async
239
+ requests.map! do |request|
240
+ {
241
+ input_config: request[:image],
242
+ features: request[:features],
243
+ output_config: {
244
+ gcs_destination: destination,
245
+ batch_size: batch_size
246
+ }
247
+ }
248
+ end
249
+ async_batch_annotate_files requests, options
250
+ else
251
+ batch_annotate_images requests, options, &blk
252
+ end
253
+ end
254
+
255
+ # @param images [Array<String>, Array<File>]
256
+ # An array containing files, file paths, io objects, image urls, or Google Cloud Storage urls. Can be used with or instead of image.
257
+ # @param image [File, String]
258
+ # A file, file path, io object, url pointing to an image, or Google Cloud Storage url. Can be used with or instead of images.
259
+ # @param max_results [Integer]
260
+ # Optional. Defaults to 10.
261
+ # @param options [Google::Gax::CallOptions]
262
+ # Optional. Overrides the default settings for this call, e.g, timeout,
263
+ # retries, etc.
264
+ # @param async [Boolean]
265
+ # Optional. Defaults to false. Specifies whether to preform the request synchronously and return a
266
+ # BatchAnnotateImagesResponse instance or to return a Google::Gax::Operation.
267
+ # @param mime_type [String]
268
+ # Required only if async is true.
269
+ # @param batch_size [Integer]
270
+ # Optional. Defaults to 10. When async is true, this specifies the number of input files per output json.
271
+ # @param destination [String]
272
+ # Required only if async is true. A Google Cloud Storage location for storing the output.
273
+ # @yield [result, operation] Access the result along with the RPC operation
274
+ # @yieldparam result [Google::Cloud::Vision::V1p3beta1::BatchAnnotateImagesResponse]
275
+ # @yieldparam operation [GRPC::ActiveCall::Operation]
276
+ # @return [Google::Cloud::Vision::V1p3beta1::BatchAnnotateImagesResponse, Google::Gax::Operation]
277
+ # @example
278
+ # require "google/cloud/vision"
279
+ #
280
+ # image_annotator_client = Google::Cloud::Vision::ImageAnnotator.new(version: :v1p3beta1)
281
+ #
282
+ # response = image_annotator_client.label_detection image: "path\to\image.png"
283
+ # response.responses.each do |res|
284
+ # puts res
285
+ # end
286
+
287
+ def label_detection \
288
+ images: [],
289
+ image: nil,
290
+ max_results: 10,
291
+ options: nil,
292
+ async: false,
293
+ mime_type: nil,
294
+ batch_size: 10,
295
+ destination: nil,
296
+ &blk
297
+
298
+ feature = { type: :LABEL_DETECTION }
299
+ feature[:max_results] = max_results
300
+ images << image if image
301
+
302
+ formatted_images = images.map do |img|
303
+ formatted_image = normalize_image img
304
+ formatted_image[:mime_type] = mime_type if mime_type
305
+ formatted_image
306
+ end
307
+
308
+ requests = formatted_images.map do |img|
309
+ {
310
+ image: img,
311
+ features: [feature]
312
+ }
313
+ end
314
+
315
+ if async
316
+ requests.map! do |request|
317
+ {
318
+ input_config: request[:image],
319
+ features: request[:features],
320
+ output_config: {
321
+ gcs_destination: destination,
322
+ batch_size: batch_size
323
+ }
324
+ }
325
+ end
326
+ async_batch_annotate_files requests, options
327
+ else
328
+ batch_annotate_images requests, options, &blk
329
+ end
330
+ end
331
+
332
+ # @param images [Array<String>, Array<File>]
333
+ # An array containing files, file paths, io objects, image urls, or Google Cloud Storage urls. Can be used with or instead of image.
334
+ # @param image [File, String]
335
+ # A file, file path, io object, url pointing to an image, or Google Cloud Storage url. Can be used with or instead of images.
336
+ # @param max_results [Integer]
337
+ # Optional. Defaults to 10.
338
+ # @param options [Google::Gax::CallOptions]
339
+ # Optional. Overrides the default settings for this call, e.g, timeout,
340
+ # retries, etc.
341
+ # @param async [Boolean]
342
+ # Optional. Defaults to false. Specifies whether to preform the request synchronously and return a
343
+ # BatchAnnotateImagesResponse instance or to return a Google::Gax::Operation.
344
+ # @param mime_type [String]
345
+ # Required only if async is true.
346
+ # @param batch_size [Integer]
347
+ # Optional. Defaults to 10. When async is true, this specifies the number of input files per output json.
348
+ # @param destination [String]
349
+ # Required only if async is true. A Google Cloud Storage location for storing the output.
350
+ # @yield [result, operation] Access the result along with the RPC operation
351
+ # @yieldparam result [Google::Cloud::Vision::V1p3beta1::BatchAnnotateImagesResponse]
352
+ # @yieldparam operation [GRPC::ActiveCall::Operation]
353
+ # @return [Google::Cloud::Vision::V1p3beta1::BatchAnnotateImagesResponse, Google::Gax::Operation]
354
+ # @example
355
+ # require "google/cloud/vision"
356
+ #
357
+ # image_annotator_client = Google::Cloud::Vision::ImageAnnotator.new(version: :v1p3beta1)
358
+ #
359
+ # response = image_annotator_client.text_detection image: "path\to\image.png"
360
+ # response.responses.each do |res|
361
+ # puts res
362
+ # end
363
+
364
+ def text_detection \
365
+ images: [],
366
+ image: nil,
367
+ max_results: 10,
368
+ options: nil,
369
+ async: false,
370
+ mime_type: nil,
371
+ batch_size: 10,
372
+ destination: nil,
373
+ &blk
374
+
375
+ feature = { type: :TEXT_DETECTION }
376
+ feature[:max_results] = max_results
377
+ images << image if image
378
+
379
+ formatted_images = images.map do |img|
380
+ formatted_image = normalize_image img
381
+ formatted_image[:mime_type] = mime_type if mime_type
382
+ formatted_image
383
+ end
384
+
385
+ requests = formatted_images.map do |img|
386
+ {
387
+ image: img,
388
+ features: [feature]
389
+ }
390
+ end
391
+
392
+ if async
393
+ requests.map! do |request|
394
+ {
395
+ input_config: request[:image],
396
+ features: request[:features],
397
+ output_config: {
398
+ gcs_destination: destination,
399
+ batch_size: batch_size
400
+ }
401
+ }
402
+ end
403
+ async_batch_annotate_files requests, options
404
+ else
405
+ batch_annotate_images requests, options, &blk
406
+ end
407
+ end
408
+
409
+ # @param images [Array<String>, Array<File>]
410
+ # An array containing files, file paths, io objects, image urls, or Google Cloud Storage urls. Can be used with or instead of image.
411
+ # @param image [File, String]
412
+ # A file, file path, io object, url pointing to an image, or Google Cloud Storage url. Can be used with or instead of images.
413
+ # @param max_results [Integer]
414
+ # Optional. Defaults to 10.
415
+ # @param options [Google::Gax::CallOptions]
416
+ # Optional. Overrides the default settings for this call, e.g, timeout,
417
+ # retries, etc.
418
+ # @param async [Boolean]
419
+ # Optional. Defaults to false. Specifies whether to preform the request synchronously and return a
420
+ # BatchAnnotateImagesResponse instance or to return a Google::Gax::Operation.
421
+ # @param mime_type [String]
422
+ # Required only if async is true.
423
+ # @param batch_size [Integer]
424
+ # Optional. Defaults to 10. When async is true, this specifies the number of input files per output json.
425
+ # @param destination [String]
426
+ # Required only if async is true. A Google Cloud Storage location for storing the output.
427
+ # @yield [result, operation] Access the result along with the RPC operation
428
+ # @yieldparam result [Google::Cloud::Vision::V1p3beta1::BatchAnnotateImagesResponse]
429
+ # @yieldparam operation [GRPC::ActiveCall::Operation]
430
+ # @return [Google::Cloud::Vision::V1p3beta1::BatchAnnotateImagesResponse, Google::Gax::Operation]
431
+ # @example
432
+ # require "google/cloud/vision"
433
+ #
434
+ # image_annotator_client = Google::Cloud::Vision::ImageAnnotator.new(version: :v1p3beta1)
435
+ #
436
+ # response = image_annotator_client.document_text_detection image: "path\to\image.png"
437
+ # response.responses.each do |res|
438
+ # puts res
439
+ # end
440
+
441
+ def document_text_detection \
442
+ images: [],
443
+ image: nil,
444
+ max_results: 10,
445
+ options: nil,
446
+ async: false,
447
+ mime_type: nil,
448
+ batch_size: 10,
449
+ destination: nil,
450
+ &blk
451
+
452
+ feature = { type: :DOCUMENT_TEXT_DETECTION }
453
+ feature[:max_results] = max_results
454
+ images << image if image
455
+
456
+ formatted_images = images.map do |img|
457
+ formatted_image = normalize_image img
458
+ formatted_image[:mime_type] = mime_type if mime_type
459
+ formatted_image
460
+ end
461
+
462
+ requests = formatted_images.map do |img|
463
+ {
464
+ image: img,
465
+ features: [feature]
466
+ }
467
+ end
468
+
469
+ if async
470
+ requests.map! do |request|
471
+ {
472
+ input_config: request[:image],
473
+ features: request[:features],
474
+ output_config: {
475
+ gcs_destination: destination,
476
+ batch_size: batch_size
477
+ }
478
+ }
479
+ end
480
+ async_batch_annotate_files requests, options
481
+ else
482
+ batch_annotate_images requests, options, &blk
483
+ end
484
+ end
485
+
486
+ # @param images [Array<String>, Array<File>]
487
+ # An array containing files, file paths, io objects, image urls, or Google Cloud Storage urls. Can be used with or instead of image.
488
+ # @param image [File, String]
489
+ # A file, file path, io object, url pointing to an image, or Google Cloud Storage url. Can be used with or instead of images.
490
+ # @param max_results [Integer]
491
+ # Optional. Defaults to 10.
492
+ # @param options [Google::Gax::CallOptions]
493
+ # Optional. Overrides the default settings for this call, e.g, timeout,
494
+ # retries, etc.
495
+ # @param async [Boolean]
496
+ # Optional. Defaults to false. Specifies whether to preform the request synchronously and return a
497
+ # BatchAnnotateImagesResponse instance or to return a Google::Gax::Operation.
498
+ # @param mime_type [String]
499
+ # Required only if async is true.
500
+ # @param batch_size [Integer]
501
+ # Optional. Defaults to 10. When async is true, this specifies the number of input files per output json.
502
+ # @param destination [String]
503
+ # Required only if async is true. A Google Cloud Storage location for storing the output.
504
+ # @yield [result, operation] Access the result along with the RPC operation
505
+ # @yieldparam result [Google::Cloud::Vision::V1p3beta1::BatchAnnotateImagesResponse]
506
+ # @yieldparam operation [GRPC::ActiveCall::Operation]
507
+ # @return [Google::Cloud::Vision::V1p3beta1::BatchAnnotateImagesResponse, Google::Gax::Operation]
508
+ # @example
509
+ # require "google/cloud/vision"
510
+ #
511
+ # image_annotator_client = Google::Cloud::Vision::ImageAnnotator.new(version: :v1p3beta1)
512
+ #
513
+ # response = image_annotator_client.safe_search_detection image: "path\to\image.png"
514
+ # response.responses.each do |res|
515
+ # puts res
516
+ # end
517
+
518
+ def safe_search_detection \
519
+ images: [],
520
+ image: nil,
521
+ max_results: 10,
522
+ options: nil,
523
+ async: false,
524
+ mime_type: nil,
525
+ batch_size: 10,
526
+ destination: nil,
527
+ &blk
528
+
529
+ feature = { type: :SAFE_SEARCH_DETECTION }
530
+ feature[:max_results] = max_results
531
+ images << image if image
532
+
533
+ formatted_images = images.map do |img|
534
+ formatted_image = normalize_image img
535
+ formatted_image[:mime_type] = mime_type if mime_type
536
+ formatted_image
537
+ end
538
+
539
+ requests = formatted_images.map do |img|
540
+ {
541
+ image: img,
542
+ features: [feature]
543
+ }
544
+ end
545
+
546
+ if async
547
+ requests.map! do |request|
548
+ {
549
+ input_config: request[:image],
550
+ features: request[:features],
551
+ output_config: {
552
+ gcs_destination: destination,
553
+ batch_size: batch_size
554
+ }
555
+ }
556
+ end
557
+ async_batch_annotate_files requests, options
558
+ else
559
+ batch_annotate_images requests, options, &blk
560
+ end
561
+ end
562
+
563
+ # @param images [Array<String>, Array<File>]
564
+ # An array containing files, file paths, io objects, image urls, or Google Cloud Storage urls. Can be used with or instead of image.
565
+ # @param image [File, String]
566
+ # A file, file path, io object, url pointing to an image, or Google Cloud Storage url. Can be used with or instead of images.
567
+ # @param max_results [Integer]
568
+ # Optional. Defaults to 10.
569
+ # @param options [Google::Gax::CallOptions]
570
+ # Optional. Overrides the default settings for this call, e.g, timeout,
571
+ # retries, etc.
572
+ # @param async [Boolean]
573
+ # Optional. Defaults to false. Specifies whether to preform the request synchronously and return a
574
+ # BatchAnnotateImagesResponse instance or to return a Google::Gax::Operation.
575
+ # @param mime_type [String]
576
+ # Required only if async is true.
577
+ # @param batch_size [Integer]
578
+ # Optional. Defaults to 10. When async is true, this specifies the number of input files per output json.
579
+ # @param destination [String]
580
+ # Required only if async is true. A Google Cloud Storage location for storing the output.
581
+ # @yield [result, operation] Access the result along with the RPC operation
582
+ # @yieldparam result [Google::Cloud::Vision::V1p3beta1::BatchAnnotateImagesResponse]
583
+ # @yieldparam operation [GRPC::ActiveCall::Operation]
584
+ # @return [Google::Cloud::Vision::V1p3beta1::BatchAnnotateImagesResponse, Google::Gax::Operation]
585
+ # @example
586
+ # require "google/cloud/vision"
587
+ #
588
+ # image_annotator_client = Google::Cloud::Vision::ImageAnnotator.new(version: :v1p3beta1)
589
+ #
590
+ # response = image_annotator_client.image_properties_detection image: "path\to\image.png"
591
+ # response.responses.each do |res|
592
+ # puts res
593
+ # end
594
+
595
+ def image_properties_detection \
596
+ images: [],
597
+ image: nil,
598
+ max_results: 10,
599
+ options: nil,
600
+ async: false,
601
+ mime_type: nil,
602
+ batch_size: 10,
603
+ destination: nil,
604
+ &blk
605
+
606
+ feature = { type: :IMAGE_PROPERTIES }
607
+ feature[:max_results] = max_results
608
+ images << image if image
609
+
610
+ formatted_images = images.map do |img|
611
+ formatted_image = normalize_image img
612
+ formatted_image[:mime_type] = mime_type if mime_type
613
+ formatted_image
614
+ end
615
+
616
+ requests = formatted_images.map do |img|
617
+ {
618
+ image: img,
619
+ features: [feature]
620
+ }
621
+ end
622
+
623
+ if async
624
+ requests.map! do |request|
625
+ {
626
+ input_config: request[:image],
627
+ features: request[:features],
628
+ output_config: {
629
+ gcs_destination: destination,
630
+ batch_size: batch_size
631
+ }
632
+ }
633
+ end
634
+ async_batch_annotate_files requests, options
635
+ else
636
+ batch_annotate_images requests, options, &blk
637
+ end
638
+ end
639
+
640
+ # @param images [Array<String>, Array<File>]
641
+ # An array containing files, file paths, io objects, image urls, or Google Cloud Storage urls. Can be used with or instead of image.
642
+ # @param image [File, String]
643
+ # A file, file path, io object, url pointing to an image, or Google Cloud Storage url. Can be used with or instead of images.
644
+ # @param max_results [Integer]
645
+ # Optional. Defaults to 10.
646
+ # @param options [Google::Gax::CallOptions]
647
+ # Optional. Overrides the default settings for this call, e.g, timeout,
648
+ # retries, etc.
649
+ # @param async [Boolean]
650
+ # Optional. Defaults to false. Specifies whether to preform the request synchronously and return a
651
+ # BatchAnnotateImagesResponse instance or to return a Google::Gax::Operation.
652
+ # @param mime_type [String]
653
+ # Required only if async is true.
654
+ # @param batch_size [Integer]
655
+ # Optional. Defaults to 10. When async is true, this specifies the number of input files per output json.
656
+ # @param destination [String]
657
+ # Required only if async is true. A Google Cloud Storage location for storing the output.
658
+ # @yield [result, operation] Access the result along with the RPC operation
659
+ # @yieldparam result [Google::Cloud::Vision::V1p3beta1::BatchAnnotateImagesResponse]
660
+ # @yieldparam operation [GRPC::ActiveCall::Operation]
661
+ # @return [Google::Cloud::Vision::V1p3beta1::BatchAnnotateImagesResponse, Google::Gax::Operation]
662
+ # @example
663
+ # require "google/cloud/vision"
664
+ #
665
+ # image_annotator_client = Google::Cloud::Vision::ImageAnnotator.new(version: :v1p3beta1)
666
+ #
667
+ # response = image_annotator_client.crop_hints_detection image: "path\to\image.png"
668
+ # response.responses.each do |res|
669
+ # puts res
670
+ # end
671
+
672
+ def crop_hints_detection \
673
+ images: [],
674
+ image: nil,
675
+ max_results: 10,
676
+ options: nil,
677
+ async: false,
678
+ mime_type: nil,
679
+ batch_size: 10,
680
+ destination: nil,
681
+ &blk
682
+
683
+ feature = { type: :CROP_HINTS }
684
+ feature[:max_results] = max_results
685
+ images << image if image
686
+
687
+ formatted_images = images.map do |img|
688
+ formatted_image = normalize_image img
689
+ formatted_image[:mime_type] = mime_type if mime_type
690
+ formatted_image
691
+ end
692
+
693
+ requests = formatted_images.map do |img|
694
+ {
695
+ image: img,
696
+ features: [feature]
697
+ }
698
+ end
699
+
700
+ if async
701
+ requests.map! do |request|
702
+ {
703
+ input_config: request[:image],
704
+ features: request[:features],
705
+ output_config: {
706
+ gcs_destination: destination,
707
+ batch_size: batch_size
708
+ }
709
+ }
710
+ end
711
+ async_batch_annotate_files requests, options
712
+ else
713
+ batch_annotate_images requests, options, &blk
714
+ end
715
+ end
716
+
717
+ # @param images [Array<String>, Array<File>]
718
+ # An array containing files, file paths, io objects, image urls, or Google Cloud Storage urls. Can be used with or instead of image.
719
+ # @param image [File, String]
720
+ # A file, file path, io object, url pointing to an image, or Google Cloud Storage url. Can be used with or instead of images.
721
+ # @param max_results [Integer]
722
+ # Optional. Defaults to 10.
723
+ # @param options [Google::Gax::CallOptions]
724
+ # Optional. Overrides the default settings for this call, e.g, timeout,
725
+ # retries, etc.
726
+ # @param async [Boolean]
727
+ # Optional. Defaults to false. Specifies whether to preform the request synchronously and return a
728
+ # BatchAnnotateImagesResponse instance or to return a Google::Gax::Operation.
729
+ # @param mime_type [String]
730
+ # Required only if async is true.
731
+ # @param batch_size [Integer]
732
+ # Optional. Defaults to 10. When async is true, this specifies the number of input files per output json.
733
+ # @param destination [String]
734
+ # Required only if async is true. A Google Cloud Storage location for storing the output.
735
+ # @yield [result, operation] Access the result along with the RPC operation
736
+ # @yieldparam result [Google::Cloud::Vision::V1p3beta1::BatchAnnotateImagesResponse]
737
+ # @yieldparam operation [GRPC::ActiveCall::Operation]
738
+ # @return [Google::Cloud::Vision::V1p3beta1::BatchAnnotateImagesResponse, Google::Gax::Operation]
739
+ # @example
740
+ # require "google/cloud/vision"
741
+ #
742
+ # image_annotator_client = Google::Cloud::Vision::ImageAnnotator.new(version: :v1p3beta1)
743
+ #
744
+ # response = image_annotator_client.product_search_detection image: "path\to\image.png"
745
+ # response.responses.each do |res|
746
+ # puts res
747
+ # end
748
+
749
+ def product_search_detection \
750
+ images: [],
751
+ image: nil,
752
+ max_results: 10,
753
+ options: nil,
754
+ async: false,
755
+ mime_type: nil,
756
+ batch_size: 10,
757
+ destination: nil,
758
+ &blk
759
+
760
+ feature = { type: :PRODUCT_SEARCH }
761
+ feature[:max_results] = max_results
762
+ images << image if image
763
+
764
+ formatted_images = images.map do |img|
765
+ formatted_image = normalize_image img
766
+ formatted_image[:mime_type] = mime_type if mime_type
767
+ formatted_image
768
+ end
769
+
770
+ requests = formatted_images.map do |img|
771
+ {
772
+ image: img,
773
+ features: [feature]
774
+ }
775
+ end
776
+
777
+ if async
778
+ requests.map! do |request|
779
+ {
780
+ input_config: request[:image],
781
+ features: request[:features],
782
+ output_config: {
783
+ gcs_destination: destination,
784
+ batch_size: batch_size
785
+ }
786
+ }
787
+ end
788
+ async_batch_annotate_files requests, options
789
+ else
790
+ batch_annotate_images requests, options, &blk
791
+ end
792
+ end
793
+
794
+ # @param images [Array<String>, Array<File>]
795
+ # An array containing files, file paths, io objects, image urls, or Google Cloud Storage urls. Can be used with or instead of image.
796
+ # @param image [File, String]
797
+ # A file, file path, io object, url pointing to an image, or Google Cloud Storage url. Can be used with or instead of images.
798
+ # @param max_results [Integer]
799
+ # Optional. Defaults to 10.
800
+ # @param options [Google::Gax::CallOptions]
801
+ # Optional. Overrides the default settings for this call, e.g, timeout,
802
+ # retries, etc.
803
+ # @param async [Boolean]
804
+ # Optional. Defaults to false. Specifies whether to preform the request synchronously and return a
805
+ # BatchAnnotateImagesResponse instance or to return a Google::Gax::Operation.
806
+ # @param mime_type [String]
807
+ # Required only if async is true.
808
+ # @param batch_size [Integer]
809
+ # Optional. Defaults to 10. When async is true, this specifies the number of input files per output json.
810
+ # @param destination [String]
811
+ # Required only if async is true. A Google Cloud Storage location for storing the output.
812
+ # @yield [result, operation] Access the result along with the RPC operation
813
+ # @yieldparam result [Google::Cloud::Vision::V1p3beta1::BatchAnnotateImagesResponse]
814
+ # @yieldparam operation [GRPC::ActiveCall::Operation]
815
+ # @return [Google::Cloud::Vision::V1p3beta1::BatchAnnotateImagesResponse, Google::Gax::Operation]
816
+ # @example
817
+ # require "google/cloud/vision"
818
+ #
819
+ # image_annotator_client = Google::Cloud::Vision::ImageAnnotator.new(version: :v1p3beta1)
820
+ #
821
+ # response = image_annotator_client.object_localization_detection image: "path\to\image.png"
822
+ # response.responses.each do |res|
823
+ # puts res
824
+ # end
825
+
826
+ def object_localization_detection \
827
+ images: [],
828
+ image: nil,
829
+ max_results: 10,
830
+ options: nil,
831
+ async: false,
832
+ mime_type: nil,
833
+ batch_size: 10,
834
+ destination: nil,
835
+ &blk
836
+
837
+ feature = { type: :OBJECT_LOCALIZATION }
838
+ feature[:max_results] = max_results
839
+ images << image if image
840
+
841
+ formatted_images = images.map do |img|
842
+ formatted_image = normalize_image img
843
+ formatted_image[:mime_type] = mime_type if mime_type
844
+ formatted_image
845
+ end
846
+
847
+ requests = formatted_images.map do |img|
848
+ {
849
+ image: img,
850
+ features: [feature]
851
+ }
852
+ end
853
+
854
+ if async
855
+ requests.map! do |request|
856
+ {
857
+ input_config: request[:image],
858
+ features: request[:features],
859
+ output_config: {
860
+ gcs_destination: destination,
861
+ batch_size: batch_size
862
+ }
863
+ }
864
+ end
865
+ async_batch_annotate_files requests, options
866
+ else
867
+ batch_annotate_images requests, options, &blk
868
+ end
869
+ end
870
+
871
+ # @param images [Array<String>, Array<File>]
872
+ # An array containing files, file paths, io objects, image urls, or Google Cloud Storage urls. Can be used with or instead of image.
873
+ # @param image [File, String]
874
+ # A file, file path, io object, url pointing to an image, or Google Cloud Storage url. Can be used with or instead of images.
875
+ # @param max_results [Integer]
876
+ # Optional. Defaults to 10.
877
+ # @param options [Google::Gax::CallOptions]
878
+ # Optional. Overrides the default settings for this call, e.g, timeout,
879
+ # retries, etc.
880
+ # @param async [Boolean]
881
+ # Optional. Defaults to false. Specifies whether to preform the request synchronously and return a
882
+ # BatchAnnotateImagesResponse instance or to return a Google::Gax::Operation.
883
+ # @param mime_type [String]
884
+ # Required only if async is true.
885
+ # @param batch_size [Integer]
886
+ # Optional. Defaults to 10. When async is true, this specifies the number of input files per output json.
887
+ # @param destination [String]
888
+ # Required only if async is true. A Google Cloud Storage location for storing the output.
889
+ # @yield [result, operation] Access the result along with the RPC operation
890
+ # @yieldparam result [Google::Cloud::Vision::V1p3beta1::BatchAnnotateImagesResponse]
891
+ # @yieldparam operation [GRPC::ActiveCall::Operation]
892
+ # @return [Google::Cloud::Vision::V1p3beta1::BatchAnnotateImagesResponse, Google::Gax::Operation]
893
+ # @example
894
+ # require "google/cloud/vision"
895
+ #
896
+ # image_annotator_client = Google::Cloud::Vision::ImageAnnotator.new(version: :v1p3beta1)
897
+ #
898
+ # response = image_annotator_client.web_detection image: "path\to\image.png"
899
+ # response.responses.each do |res|
900
+ # puts res
901
+ # end
902
+
903
+ def web_detection \
904
+ images: [],
905
+ image: nil,
906
+ max_results: 10,
907
+ options: nil,
908
+ async: false,
909
+ mime_type: nil,
910
+ batch_size: 10,
911
+ destination: nil,
912
+ &blk
913
+
914
+ feature = { type: :WEB_DETECTION }
915
+ feature[:max_results] = max_results
916
+ images << image if image
917
+
918
+ formatted_images = images.map do |img|
919
+ formatted_image = normalize_image img
920
+ formatted_image[:mime_type] = mime_type if mime_type
921
+ formatted_image
922
+ end
923
+
924
+ requests = formatted_images.map do |img|
925
+ {
926
+ image: img,
927
+ features: [feature]
928
+ }
929
+ end
930
+
931
+ if async
932
+ requests.map! do |request|
933
+ {
934
+ input_config: request[:image],
935
+ features: request[:features],
936
+ output_config: {
937
+ gcs_destination: destination,
938
+ batch_size: batch_size
939
+ }
940
+ }
941
+ end
942
+ async_batch_annotate_files requests, options
943
+ else
944
+ batch_annotate_images requests, options, &blk
945
+ end
946
+ end
947
+
948
+ private
949
+
950
+ def normalize_image image
951
+ formatted_image =
952
+ if image.respond_to? :binmode
953
+ { content: image.binmode.read }
954
+ elsif image.is_a? String
955
+ if File.file? image
956
+ { content: File.binread(image) }
957
+ elsif image =~ URI::DEFAULT_PARSER.make_regexp
958
+ if URI(image).scheme == "gs"
959
+ { source: { gcs_image_uri: image } }
960
+ else
961
+ { source: { image_uri: image } }
962
+ end
963
+ end
964
+ end
965
+ raise TypeError.new("Image must be a filepath, url, or IO object") unless formatted_image
966
+ formatted_image
967
+ end
968
+ end
969
+ end
970
+ end
971
+ end
972
+ end