aws-sdk-textract 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/lib/aws-sdk-textract.rb +47 -0
- data/lib/aws-sdk-textract/client.rb +777 -0
- data/lib/aws-sdk-textract/client_api.rb +332 -0
- data/lib/aws-sdk-textract/customizations.rb +0 -0
- data/lib/aws-sdk-textract/errors.rb +14 -0
- data/lib/aws-sdk-textract/resource.rb +23 -0
- data/lib/aws-sdk-textract/types.rb +845 -0
- metadata +88 -0
@@ -0,0 +1,332 @@
|
|
1
|
+
# WARNING ABOUT GENERATED CODE
|
2
|
+
#
|
3
|
+
# This file is generated. See the contributing guide for more information:
|
4
|
+
# https://github.com/aws/aws-sdk-ruby/blob/master/CONTRIBUTING.md
|
5
|
+
#
|
6
|
+
# WARNING ABOUT GENERATED CODE
|
7
|
+
|
8
|
+
module Aws::Textract
|
9
|
+
# @api private
|
10
|
+
module ClientApi
|
11
|
+
|
12
|
+
include Seahorse::Model
|
13
|
+
|
14
|
+
AccessDeniedException = Shapes::StructureShape.new(name: 'AccessDeniedException')
|
15
|
+
AnalyzeDocumentRequest = Shapes::StructureShape.new(name: 'AnalyzeDocumentRequest')
|
16
|
+
AnalyzeDocumentResponse = Shapes::StructureShape.new(name: 'AnalyzeDocumentResponse')
|
17
|
+
BadDocumentException = Shapes::StructureShape.new(name: 'BadDocumentException')
|
18
|
+
Block = Shapes::StructureShape.new(name: 'Block')
|
19
|
+
BlockList = Shapes::ListShape.new(name: 'BlockList')
|
20
|
+
BlockType = Shapes::StringShape.new(name: 'BlockType')
|
21
|
+
BoundingBox = Shapes::StructureShape.new(name: 'BoundingBox')
|
22
|
+
ClientRequestToken = Shapes::StringShape.new(name: 'ClientRequestToken')
|
23
|
+
DetectDocumentTextRequest = Shapes::StructureShape.new(name: 'DetectDocumentTextRequest')
|
24
|
+
DetectDocumentTextResponse = Shapes::StructureShape.new(name: 'DetectDocumentTextResponse')
|
25
|
+
Document = Shapes::StructureShape.new(name: 'Document')
|
26
|
+
DocumentLocation = Shapes::StructureShape.new(name: 'DocumentLocation')
|
27
|
+
DocumentMetadata = Shapes::StructureShape.new(name: 'DocumentMetadata')
|
28
|
+
DocumentTooLargeException = Shapes::StructureShape.new(name: 'DocumentTooLargeException')
|
29
|
+
EntityType = Shapes::StringShape.new(name: 'EntityType')
|
30
|
+
EntityTypes = Shapes::ListShape.new(name: 'EntityTypes')
|
31
|
+
ErrorCode = Shapes::StringShape.new(name: 'ErrorCode')
|
32
|
+
FeatureType = Shapes::StringShape.new(name: 'FeatureType')
|
33
|
+
FeatureTypes = Shapes::ListShape.new(name: 'FeatureTypes')
|
34
|
+
Float = Shapes::FloatShape.new(name: 'Float')
|
35
|
+
Geometry = Shapes::StructureShape.new(name: 'Geometry')
|
36
|
+
GetDocumentAnalysisRequest = Shapes::StructureShape.new(name: 'GetDocumentAnalysisRequest')
|
37
|
+
GetDocumentAnalysisResponse = Shapes::StructureShape.new(name: 'GetDocumentAnalysisResponse')
|
38
|
+
GetDocumentTextDetectionRequest = Shapes::StructureShape.new(name: 'GetDocumentTextDetectionRequest')
|
39
|
+
GetDocumentTextDetectionResponse = Shapes::StructureShape.new(name: 'GetDocumentTextDetectionResponse')
|
40
|
+
IdList = Shapes::ListShape.new(name: 'IdList')
|
41
|
+
IdempotentParameterMismatchException = Shapes::StructureShape.new(name: 'IdempotentParameterMismatchException')
|
42
|
+
ImageBlob = Shapes::BlobShape.new(name: 'ImageBlob')
|
43
|
+
InternalServerError = Shapes::StructureShape.new(name: 'InternalServerError')
|
44
|
+
InvalidJobIdException = Shapes::StructureShape.new(name: 'InvalidJobIdException')
|
45
|
+
InvalidParameterException = Shapes::StructureShape.new(name: 'InvalidParameterException')
|
46
|
+
InvalidS3ObjectException = Shapes::StructureShape.new(name: 'InvalidS3ObjectException')
|
47
|
+
JobId = Shapes::StringShape.new(name: 'JobId')
|
48
|
+
JobStatus = Shapes::StringShape.new(name: 'JobStatus')
|
49
|
+
JobTag = Shapes::StringShape.new(name: 'JobTag')
|
50
|
+
LimitExceededException = Shapes::StructureShape.new(name: 'LimitExceededException')
|
51
|
+
MaxResults = Shapes::IntegerShape.new(name: 'MaxResults')
|
52
|
+
NonEmptyString = Shapes::StringShape.new(name: 'NonEmptyString')
|
53
|
+
NotificationChannel = Shapes::StructureShape.new(name: 'NotificationChannel')
|
54
|
+
Pages = Shapes::ListShape.new(name: 'Pages')
|
55
|
+
PaginationToken = Shapes::StringShape.new(name: 'PaginationToken')
|
56
|
+
Percent = Shapes::FloatShape.new(name: 'Percent')
|
57
|
+
Point = Shapes::StructureShape.new(name: 'Point')
|
58
|
+
Polygon = Shapes::ListShape.new(name: 'Polygon')
|
59
|
+
ProvisionedThroughputExceededException = Shapes::StructureShape.new(name: 'ProvisionedThroughputExceededException')
|
60
|
+
Relationship = Shapes::StructureShape.new(name: 'Relationship')
|
61
|
+
RelationshipList = Shapes::ListShape.new(name: 'RelationshipList')
|
62
|
+
RelationshipType = Shapes::StringShape.new(name: 'RelationshipType')
|
63
|
+
RoleArn = Shapes::StringShape.new(name: 'RoleArn')
|
64
|
+
S3Bucket = Shapes::StringShape.new(name: 'S3Bucket')
|
65
|
+
S3Object = Shapes::StructureShape.new(name: 'S3Object')
|
66
|
+
S3ObjectName = Shapes::StringShape.new(name: 'S3ObjectName')
|
67
|
+
S3ObjectVersion = Shapes::StringShape.new(name: 'S3ObjectVersion')
|
68
|
+
SNSTopicArn = Shapes::StringShape.new(name: 'SNSTopicArn')
|
69
|
+
StartDocumentAnalysisRequest = Shapes::StructureShape.new(name: 'StartDocumentAnalysisRequest')
|
70
|
+
StartDocumentAnalysisResponse = Shapes::StructureShape.new(name: 'StartDocumentAnalysisResponse')
|
71
|
+
StartDocumentTextDetectionRequest = Shapes::StructureShape.new(name: 'StartDocumentTextDetectionRequest')
|
72
|
+
StartDocumentTextDetectionResponse = Shapes::StructureShape.new(name: 'StartDocumentTextDetectionResponse')
|
73
|
+
StatusMessage = Shapes::StringShape.new(name: 'StatusMessage')
|
74
|
+
String = Shapes::StringShape.new(name: 'String')
|
75
|
+
ThrottlingException = Shapes::StructureShape.new(name: 'ThrottlingException')
|
76
|
+
UInteger = Shapes::IntegerShape.new(name: 'UInteger')
|
77
|
+
UnsupportedDocumentException = Shapes::StructureShape.new(name: 'UnsupportedDocumentException')
|
78
|
+
Warning = Shapes::StructureShape.new(name: 'Warning')
|
79
|
+
Warnings = Shapes::ListShape.new(name: 'Warnings')
|
80
|
+
|
81
|
+
AnalyzeDocumentRequest.add_member(:document, Shapes::ShapeRef.new(shape: Document, required: true, location_name: "Document"))
|
82
|
+
AnalyzeDocumentRequest.add_member(:feature_types, Shapes::ShapeRef.new(shape: FeatureTypes, required: true, location_name: "FeatureTypes"))
|
83
|
+
AnalyzeDocumentRequest.struct_class = Types::AnalyzeDocumentRequest
|
84
|
+
|
85
|
+
AnalyzeDocumentResponse.add_member(:document_metadata, Shapes::ShapeRef.new(shape: DocumentMetadata, location_name: "DocumentMetadata"))
|
86
|
+
AnalyzeDocumentResponse.add_member(:blocks, Shapes::ShapeRef.new(shape: BlockList, location_name: "Blocks"))
|
87
|
+
AnalyzeDocumentResponse.struct_class = Types::AnalyzeDocumentResponse
|
88
|
+
|
89
|
+
Block.add_member(:block_type, Shapes::ShapeRef.new(shape: BlockType, location_name: "BlockType"))
|
90
|
+
Block.add_member(:confidence, Shapes::ShapeRef.new(shape: Percent, location_name: "Confidence"))
|
91
|
+
Block.add_member(:text, Shapes::ShapeRef.new(shape: String, location_name: "Text"))
|
92
|
+
Block.add_member(:row_index, Shapes::ShapeRef.new(shape: UInteger, location_name: "RowIndex"))
|
93
|
+
Block.add_member(:column_index, Shapes::ShapeRef.new(shape: UInteger, location_name: "ColumnIndex"))
|
94
|
+
Block.add_member(:row_span, Shapes::ShapeRef.new(shape: UInteger, location_name: "RowSpan"))
|
95
|
+
Block.add_member(:column_span, Shapes::ShapeRef.new(shape: UInteger, location_name: "ColumnSpan"))
|
96
|
+
Block.add_member(:geometry, Shapes::ShapeRef.new(shape: Geometry, location_name: "Geometry"))
|
97
|
+
Block.add_member(:id, Shapes::ShapeRef.new(shape: NonEmptyString, location_name: "Id"))
|
98
|
+
Block.add_member(:relationships, Shapes::ShapeRef.new(shape: RelationshipList, location_name: "Relationships"))
|
99
|
+
Block.add_member(:entity_types, Shapes::ShapeRef.new(shape: EntityTypes, location_name: "EntityTypes"))
|
100
|
+
Block.add_member(:page, Shapes::ShapeRef.new(shape: UInteger, location_name: "Page"))
|
101
|
+
Block.struct_class = Types::Block
|
102
|
+
|
103
|
+
BlockList.member = Shapes::ShapeRef.new(shape: Block)
|
104
|
+
|
105
|
+
BoundingBox.add_member(:width, Shapes::ShapeRef.new(shape: Float, location_name: "Width"))
|
106
|
+
BoundingBox.add_member(:height, Shapes::ShapeRef.new(shape: Float, location_name: "Height"))
|
107
|
+
BoundingBox.add_member(:left, Shapes::ShapeRef.new(shape: Float, location_name: "Left"))
|
108
|
+
BoundingBox.add_member(:top, Shapes::ShapeRef.new(shape: Float, location_name: "Top"))
|
109
|
+
BoundingBox.struct_class = Types::BoundingBox
|
110
|
+
|
111
|
+
DetectDocumentTextRequest.add_member(:document, Shapes::ShapeRef.new(shape: Document, required: true, location_name: "Document"))
|
112
|
+
DetectDocumentTextRequest.struct_class = Types::DetectDocumentTextRequest
|
113
|
+
|
114
|
+
DetectDocumentTextResponse.add_member(:document_metadata, Shapes::ShapeRef.new(shape: DocumentMetadata, location_name: "DocumentMetadata"))
|
115
|
+
DetectDocumentTextResponse.add_member(:blocks, Shapes::ShapeRef.new(shape: BlockList, location_name: "Blocks"))
|
116
|
+
DetectDocumentTextResponse.struct_class = Types::DetectDocumentTextResponse
|
117
|
+
|
118
|
+
Document.add_member(:bytes, Shapes::ShapeRef.new(shape: ImageBlob, location_name: "Bytes"))
|
119
|
+
Document.add_member(:s3_object, Shapes::ShapeRef.new(shape: S3Object, location_name: "S3Object"))
|
120
|
+
Document.struct_class = Types::Document
|
121
|
+
|
122
|
+
DocumentLocation.add_member(:s3_object, Shapes::ShapeRef.new(shape: S3Object, location_name: "S3Object"))
|
123
|
+
DocumentLocation.struct_class = Types::DocumentLocation
|
124
|
+
|
125
|
+
DocumentMetadata.add_member(:pages, Shapes::ShapeRef.new(shape: UInteger, location_name: "Pages"))
|
126
|
+
DocumentMetadata.struct_class = Types::DocumentMetadata
|
127
|
+
|
128
|
+
EntityTypes.member = Shapes::ShapeRef.new(shape: EntityType)
|
129
|
+
|
130
|
+
FeatureTypes.member = Shapes::ShapeRef.new(shape: FeatureType)
|
131
|
+
|
132
|
+
Geometry.add_member(:bounding_box, Shapes::ShapeRef.new(shape: BoundingBox, location_name: "BoundingBox"))
|
133
|
+
Geometry.add_member(:polygon, Shapes::ShapeRef.new(shape: Polygon, location_name: "Polygon"))
|
134
|
+
Geometry.struct_class = Types::Geometry
|
135
|
+
|
136
|
+
GetDocumentAnalysisRequest.add_member(:job_id, Shapes::ShapeRef.new(shape: JobId, required: true, location_name: "JobId"))
|
137
|
+
GetDocumentAnalysisRequest.add_member(:max_results, Shapes::ShapeRef.new(shape: MaxResults, location_name: "MaxResults"))
|
138
|
+
GetDocumentAnalysisRequest.add_member(:next_token, Shapes::ShapeRef.new(shape: PaginationToken, location_name: "NextToken"))
|
139
|
+
GetDocumentAnalysisRequest.struct_class = Types::GetDocumentAnalysisRequest
|
140
|
+
|
141
|
+
GetDocumentAnalysisResponse.add_member(:document_metadata, Shapes::ShapeRef.new(shape: DocumentMetadata, location_name: "DocumentMetadata"))
|
142
|
+
GetDocumentAnalysisResponse.add_member(:job_status, Shapes::ShapeRef.new(shape: JobStatus, location_name: "JobStatus"))
|
143
|
+
GetDocumentAnalysisResponse.add_member(:next_token, Shapes::ShapeRef.new(shape: PaginationToken, location_name: "NextToken"))
|
144
|
+
GetDocumentAnalysisResponse.add_member(:blocks, Shapes::ShapeRef.new(shape: BlockList, location_name: "Blocks"))
|
145
|
+
GetDocumentAnalysisResponse.add_member(:warnings, Shapes::ShapeRef.new(shape: Warnings, location_name: "Warnings"))
|
146
|
+
GetDocumentAnalysisResponse.add_member(:status_message, Shapes::ShapeRef.new(shape: StatusMessage, location_name: "StatusMessage"))
|
147
|
+
GetDocumentAnalysisResponse.struct_class = Types::GetDocumentAnalysisResponse
|
148
|
+
|
149
|
+
GetDocumentTextDetectionRequest.add_member(:job_id, Shapes::ShapeRef.new(shape: JobId, required: true, location_name: "JobId"))
|
150
|
+
GetDocumentTextDetectionRequest.add_member(:max_results, Shapes::ShapeRef.new(shape: MaxResults, location_name: "MaxResults"))
|
151
|
+
GetDocumentTextDetectionRequest.add_member(:next_token, Shapes::ShapeRef.new(shape: PaginationToken, location_name: "NextToken"))
|
152
|
+
GetDocumentTextDetectionRequest.struct_class = Types::GetDocumentTextDetectionRequest
|
153
|
+
|
154
|
+
GetDocumentTextDetectionResponse.add_member(:document_metadata, Shapes::ShapeRef.new(shape: DocumentMetadata, location_name: "DocumentMetadata"))
|
155
|
+
GetDocumentTextDetectionResponse.add_member(:job_status, Shapes::ShapeRef.new(shape: JobStatus, location_name: "JobStatus"))
|
156
|
+
GetDocumentTextDetectionResponse.add_member(:next_token, Shapes::ShapeRef.new(shape: PaginationToken, location_name: "NextToken"))
|
157
|
+
GetDocumentTextDetectionResponse.add_member(:blocks, Shapes::ShapeRef.new(shape: BlockList, location_name: "Blocks"))
|
158
|
+
GetDocumentTextDetectionResponse.add_member(:warnings, Shapes::ShapeRef.new(shape: Warnings, location_name: "Warnings"))
|
159
|
+
GetDocumentTextDetectionResponse.add_member(:status_message, Shapes::ShapeRef.new(shape: StatusMessage, location_name: "StatusMessage"))
|
160
|
+
GetDocumentTextDetectionResponse.struct_class = Types::GetDocumentTextDetectionResponse
|
161
|
+
|
162
|
+
IdList.member = Shapes::ShapeRef.new(shape: NonEmptyString)
|
163
|
+
|
164
|
+
NotificationChannel.add_member(:sns_topic_arn, Shapes::ShapeRef.new(shape: SNSTopicArn, required: true, location_name: "SNSTopicArn"))
|
165
|
+
NotificationChannel.add_member(:role_arn, Shapes::ShapeRef.new(shape: RoleArn, required: true, location_name: "RoleArn"))
|
166
|
+
NotificationChannel.struct_class = Types::NotificationChannel
|
167
|
+
|
168
|
+
Pages.member = Shapes::ShapeRef.new(shape: UInteger)
|
169
|
+
|
170
|
+
Point.add_member(:x, Shapes::ShapeRef.new(shape: Float, location_name: "X"))
|
171
|
+
Point.add_member(:y, Shapes::ShapeRef.new(shape: Float, location_name: "Y"))
|
172
|
+
Point.struct_class = Types::Point
|
173
|
+
|
174
|
+
Polygon.member = Shapes::ShapeRef.new(shape: Point)
|
175
|
+
|
176
|
+
Relationship.add_member(:type, Shapes::ShapeRef.new(shape: RelationshipType, location_name: "Type"))
|
177
|
+
Relationship.add_member(:ids, Shapes::ShapeRef.new(shape: IdList, location_name: "Ids"))
|
178
|
+
Relationship.struct_class = Types::Relationship
|
179
|
+
|
180
|
+
RelationshipList.member = Shapes::ShapeRef.new(shape: Relationship)
|
181
|
+
|
182
|
+
S3Object.add_member(:bucket, Shapes::ShapeRef.new(shape: S3Bucket, location_name: "Bucket"))
|
183
|
+
S3Object.add_member(:name, Shapes::ShapeRef.new(shape: S3ObjectName, location_name: "Name"))
|
184
|
+
S3Object.add_member(:version, Shapes::ShapeRef.new(shape: S3ObjectVersion, location_name: "Version"))
|
185
|
+
S3Object.struct_class = Types::S3Object
|
186
|
+
|
187
|
+
StartDocumentAnalysisRequest.add_member(:document_location, Shapes::ShapeRef.new(shape: DocumentLocation, required: true, location_name: "DocumentLocation"))
|
188
|
+
StartDocumentAnalysisRequest.add_member(:feature_types, Shapes::ShapeRef.new(shape: FeatureTypes, required: true, location_name: "FeatureTypes"))
|
189
|
+
StartDocumentAnalysisRequest.add_member(:client_request_token, Shapes::ShapeRef.new(shape: ClientRequestToken, location_name: "ClientRequestToken"))
|
190
|
+
StartDocumentAnalysisRequest.add_member(:job_tag, Shapes::ShapeRef.new(shape: JobTag, location_name: "JobTag"))
|
191
|
+
StartDocumentAnalysisRequest.add_member(:notification_channel, Shapes::ShapeRef.new(shape: NotificationChannel, location_name: "NotificationChannel"))
|
192
|
+
StartDocumentAnalysisRequest.struct_class = Types::StartDocumentAnalysisRequest
|
193
|
+
|
194
|
+
StartDocumentAnalysisResponse.add_member(:job_id, Shapes::ShapeRef.new(shape: JobId, location_name: "JobId"))
|
195
|
+
StartDocumentAnalysisResponse.struct_class = Types::StartDocumentAnalysisResponse
|
196
|
+
|
197
|
+
StartDocumentTextDetectionRequest.add_member(:document_location, Shapes::ShapeRef.new(shape: DocumentLocation, required: true, location_name: "DocumentLocation"))
|
198
|
+
StartDocumentTextDetectionRequest.add_member(:client_request_token, Shapes::ShapeRef.new(shape: ClientRequestToken, location_name: "ClientRequestToken"))
|
199
|
+
StartDocumentTextDetectionRequest.add_member(:job_tag, Shapes::ShapeRef.new(shape: JobTag, location_name: "JobTag"))
|
200
|
+
StartDocumentTextDetectionRequest.add_member(:notification_channel, Shapes::ShapeRef.new(shape: NotificationChannel, location_name: "NotificationChannel"))
|
201
|
+
StartDocumentTextDetectionRequest.struct_class = Types::StartDocumentTextDetectionRequest
|
202
|
+
|
203
|
+
StartDocumentTextDetectionResponse.add_member(:job_id, Shapes::ShapeRef.new(shape: JobId, location_name: "JobId"))
|
204
|
+
StartDocumentTextDetectionResponse.struct_class = Types::StartDocumentTextDetectionResponse
|
205
|
+
|
206
|
+
Warning.add_member(:error_code, Shapes::ShapeRef.new(shape: ErrorCode, location_name: "ErrorCode"))
|
207
|
+
Warning.add_member(:pages, Shapes::ShapeRef.new(shape: Pages, location_name: "Pages"))
|
208
|
+
Warning.struct_class = Types::Warning
|
209
|
+
|
210
|
+
Warnings.member = Shapes::ShapeRef.new(shape: Warning)
|
211
|
+
|
212
|
+
|
213
|
+
# @api private
|
214
|
+
API = Seahorse::Model::Api.new.tap do |api|
|
215
|
+
|
216
|
+
api.version = "2018-06-27"
|
217
|
+
|
218
|
+
api.metadata = {
|
219
|
+
"apiVersion" => "2018-06-27",
|
220
|
+
"endpointPrefix" => "textract",
|
221
|
+
"jsonVersion" => "1.1",
|
222
|
+
"protocol" => "json",
|
223
|
+
"serviceFullName" => "Amazon Textract",
|
224
|
+
"serviceId" => "Textract",
|
225
|
+
"signatureVersion" => "v4",
|
226
|
+
"targetPrefix" => "Textract",
|
227
|
+
"uid" => "textract-2018-06-27",
|
228
|
+
}
|
229
|
+
|
230
|
+
api.add_operation(:analyze_document, Seahorse::Model::Operation.new.tap do |o|
|
231
|
+
o.name = "AnalyzeDocument"
|
232
|
+
o.http_method = "POST"
|
233
|
+
o.http_request_uri = "/"
|
234
|
+
o.input = Shapes::ShapeRef.new(shape: AnalyzeDocumentRequest)
|
235
|
+
o.output = Shapes::ShapeRef.new(shape: AnalyzeDocumentResponse)
|
236
|
+
o.errors << Shapes::ShapeRef.new(shape: InvalidParameterException)
|
237
|
+
o.errors << Shapes::ShapeRef.new(shape: InvalidS3ObjectException)
|
238
|
+
o.errors << Shapes::ShapeRef.new(shape: UnsupportedDocumentException)
|
239
|
+
o.errors << Shapes::ShapeRef.new(shape: DocumentTooLargeException)
|
240
|
+
o.errors << Shapes::ShapeRef.new(shape: BadDocumentException)
|
241
|
+
o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException)
|
242
|
+
o.errors << Shapes::ShapeRef.new(shape: ProvisionedThroughputExceededException)
|
243
|
+
o.errors << Shapes::ShapeRef.new(shape: InternalServerError)
|
244
|
+
o.errors << Shapes::ShapeRef.new(shape: ThrottlingException)
|
245
|
+
end)
|
246
|
+
|
247
|
+
api.add_operation(:detect_document_text, Seahorse::Model::Operation.new.tap do |o|
|
248
|
+
o.name = "DetectDocumentText"
|
249
|
+
o.http_method = "POST"
|
250
|
+
o.http_request_uri = "/"
|
251
|
+
o.input = Shapes::ShapeRef.new(shape: DetectDocumentTextRequest)
|
252
|
+
o.output = Shapes::ShapeRef.new(shape: DetectDocumentTextResponse)
|
253
|
+
o.errors << Shapes::ShapeRef.new(shape: InvalidParameterException)
|
254
|
+
o.errors << Shapes::ShapeRef.new(shape: InvalidS3ObjectException)
|
255
|
+
o.errors << Shapes::ShapeRef.new(shape: UnsupportedDocumentException)
|
256
|
+
o.errors << Shapes::ShapeRef.new(shape: DocumentTooLargeException)
|
257
|
+
o.errors << Shapes::ShapeRef.new(shape: BadDocumentException)
|
258
|
+
o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException)
|
259
|
+
o.errors << Shapes::ShapeRef.new(shape: ProvisionedThroughputExceededException)
|
260
|
+
o.errors << Shapes::ShapeRef.new(shape: InternalServerError)
|
261
|
+
o.errors << Shapes::ShapeRef.new(shape: ThrottlingException)
|
262
|
+
end)
|
263
|
+
|
264
|
+
api.add_operation(:get_document_analysis, Seahorse::Model::Operation.new.tap do |o|
|
265
|
+
o.name = "GetDocumentAnalysis"
|
266
|
+
o.http_method = "POST"
|
267
|
+
o.http_request_uri = "/"
|
268
|
+
o.input = Shapes::ShapeRef.new(shape: GetDocumentAnalysisRequest)
|
269
|
+
o.output = Shapes::ShapeRef.new(shape: GetDocumentAnalysisResponse)
|
270
|
+
o.errors << Shapes::ShapeRef.new(shape: InvalidParameterException)
|
271
|
+
o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException)
|
272
|
+
o.errors << Shapes::ShapeRef.new(shape: ProvisionedThroughputExceededException)
|
273
|
+
o.errors << Shapes::ShapeRef.new(shape: InvalidJobIdException)
|
274
|
+
o.errors << Shapes::ShapeRef.new(shape: InternalServerError)
|
275
|
+
o.errors << Shapes::ShapeRef.new(shape: ThrottlingException)
|
276
|
+
end)
|
277
|
+
|
278
|
+
api.add_operation(:get_document_text_detection, Seahorse::Model::Operation.new.tap do |o|
|
279
|
+
o.name = "GetDocumentTextDetection"
|
280
|
+
o.http_method = "POST"
|
281
|
+
o.http_request_uri = "/"
|
282
|
+
o.input = Shapes::ShapeRef.new(shape: GetDocumentTextDetectionRequest)
|
283
|
+
o.output = Shapes::ShapeRef.new(shape: GetDocumentTextDetectionResponse)
|
284
|
+
o.errors << Shapes::ShapeRef.new(shape: InvalidParameterException)
|
285
|
+
o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException)
|
286
|
+
o.errors << Shapes::ShapeRef.new(shape: ProvisionedThroughputExceededException)
|
287
|
+
o.errors << Shapes::ShapeRef.new(shape: InvalidJobIdException)
|
288
|
+
o.errors << Shapes::ShapeRef.new(shape: InternalServerError)
|
289
|
+
o.errors << Shapes::ShapeRef.new(shape: ThrottlingException)
|
290
|
+
end)
|
291
|
+
|
292
|
+
api.add_operation(:start_document_analysis, Seahorse::Model::Operation.new.tap do |o|
|
293
|
+
o.name = "StartDocumentAnalysis"
|
294
|
+
o.http_method = "POST"
|
295
|
+
o.http_request_uri = "/"
|
296
|
+
o.input = Shapes::ShapeRef.new(shape: StartDocumentAnalysisRequest)
|
297
|
+
o.output = Shapes::ShapeRef.new(shape: StartDocumentAnalysisResponse)
|
298
|
+
o.errors << Shapes::ShapeRef.new(shape: InvalidParameterException)
|
299
|
+
o.errors << Shapes::ShapeRef.new(shape: InvalidS3ObjectException)
|
300
|
+
o.errors << Shapes::ShapeRef.new(shape: UnsupportedDocumentException)
|
301
|
+
o.errors << Shapes::ShapeRef.new(shape: DocumentTooLargeException)
|
302
|
+
o.errors << Shapes::ShapeRef.new(shape: BadDocumentException)
|
303
|
+
o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException)
|
304
|
+
o.errors << Shapes::ShapeRef.new(shape: ProvisionedThroughputExceededException)
|
305
|
+
o.errors << Shapes::ShapeRef.new(shape: InternalServerError)
|
306
|
+
o.errors << Shapes::ShapeRef.new(shape: IdempotentParameterMismatchException)
|
307
|
+
o.errors << Shapes::ShapeRef.new(shape: ThrottlingException)
|
308
|
+
o.errors << Shapes::ShapeRef.new(shape: LimitExceededException)
|
309
|
+
end)
|
310
|
+
|
311
|
+
api.add_operation(:start_document_text_detection, Seahorse::Model::Operation.new.tap do |o|
|
312
|
+
o.name = "StartDocumentTextDetection"
|
313
|
+
o.http_method = "POST"
|
314
|
+
o.http_request_uri = "/"
|
315
|
+
o.input = Shapes::ShapeRef.new(shape: StartDocumentTextDetectionRequest)
|
316
|
+
o.output = Shapes::ShapeRef.new(shape: StartDocumentTextDetectionResponse)
|
317
|
+
o.errors << Shapes::ShapeRef.new(shape: InvalidParameterException)
|
318
|
+
o.errors << Shapes::ShapeRef.new(shape: InvalidS3ObjectException)
|
319
|
+
o.errors << Shapes::ShapeRef.new(shape: UnsupportedDocumentException)
|
320
|
+
o.errors << Shapes::ShapeRef.new(shape: DocumentTooLargeException)
|
321
|
+
o.errors << Shapes::ShapeRef.new(shape: BadDocumentException)
|
322
|
+
o.errors << Shapes::ShapeRef.new(shape: AccessDeniedException)
|
323
|
+
o.errors << Shapes::ShapeRef.new(shape: ProvisionedThroughputExceededException)
|
324
|
+
o.errors << Shapes::ShapeRef.new(shape: InternalServerError)
|
325
|
+
o.errors << Shapes::ShapeRef.new(shape: IdempotentParameterMismatchException)
|
326
|
+
o.errors << Shapes::ShapeRef.new(shape: ThrottlingException)
|
327
|
+
o.errors << Shapes::ShapeRef.new(shape: LimitExceededException)
|
328
|
+
end)
|
329
|
+
end
|
330
|
+
|
331
|
+
end
|
332
|
+
end
|
File without changes
|
@@ -0,0 +1,14 @@
|
|
1
|
+
# WARNING ABOUT GENERATED CODE
|
2
|
+
#
|
3
|
+
# This file is generated. See the contributing guide for more information:
|
4
|
+
# https://github.com/aws/aws-sdk-ruby/blob/master/CONTRIBUTING.md
|
5
|
+
#
|
6
|
+
# WARNING ABOUT GENERATED CODE
|
7
|
+
|
8
|
+
module Aws::Textract
|
9
|
+
module Errors
|
10
|
+
|
11
|
+
extend Aws::Errors::DynamicErrors
|
12
|
+
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# WARNING ABOUT GENERATED CODE
|
2
|
+
#
|
3
|
+
# This file is generated. See the contributing guide for more information:
|
4
|
+
# https://github.com/aws/aws-sdk-ruby/blob/master/CONTRIBUTING.md
|
5
|
+
#
|
6
|
+
# WARNING ABOUT GENERATED CODE
|
7
|
+
|
8
|
+
module Aws::Textract
|
9
|
+
class Resource
|
10
|
+
|
11
|
+
# @param options ({})
|
12
|
+
# @option options [Client] :client
|
13
|
+
def initialize(options = {})
|
14
|
+
@client = options[:client] || Client.new(options)
|
15
|
+
end
|
16
|
+
|
17
|
+
# @return [Client]
|
18
|
+
def client
|
19
|
+
@client
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,845 @@
|
|
1
|
+
# WARNING ABOUT GENERATED CODE
|
2
|
+
#
|
3
|
+
# This file is generated. See the contributing guide for more information:
|
4
|
+
# https://github.com/aws/aws-sdk-ruby/blob/master/CONTRIBUTING.md
|
5
|
+
#
|
6
|
+
# WARNING ABOUT GENERATED CODE
|
7
|
+
|
8
|
+
module Aws::Textract
|
9
|
+
module Types
|
10
|
+
|
11
|
+
# @note When making an API call, you may pass AnalyzeDocumentRequest
|
12
|
+
# data as a hash:
|
13
|
+
#
|
14
|
+
# {
|
15
|
+
# document: { # required
|
16
|
+
# bytes: "data",
|
17
|
+
# s3_object: {
|
18
|
+
# bucket: "S3Bucket",
|
19
|
+
# name: "S3ObjectName",
|
20
|
+
# version: "S3ObjectVersion",
|
21
|
+
# },
|
22
|
+
# },
|
23
|
+
# feature_types: ["TABLES"], # required, accepts TABLES, FORMS
|
24
|
+
# }
|
25
|
+
#
|
26
|
+
# @!attribute [rw] document
|
27
|
+
# The input document as base64-encoded bytes or an Amazon S3 object.
|
28
|
+
# If you use the AWS CLI to call Amazon Textract operations, you
|
29
|
+
# can't pass image bytes. The document must be an image in JPG or PNG
|
30
|
+
# format.
|
31
|
+
# @return [Types::Document]
|
32
|
+
#
|
33
|
+
# @!attribute [rw] feature_types
|
34
|
+
# A list of the types of analysis to perform. Add TABLES to the list
|
35
|
+
# to return information about the tables detected in the input
|
36
|
+
# document. Add FORMS to return detected fields and the associated
|
37
|
+
# text. To perform both types of analysis, add TABLES and FORMS to
|
38
|
+
# `FeatureTypes`.
|
39
|
+
# @return [Array<String>]
|
40
|
+
#
|
41
|
+
# @see http://docs.aws.amazon.com/goto/WebAPI/textract-2018-06-27/AnalyzeDocumentRequest AWS API Documentation
|
42
|
+
#
|
43
|
+
class AnalyzeDocumentRequest < Struct.new(
|
44
|
+
:document,
|
45
|
+
:feature_types)
|
46
|
+
include Aws::Structure
|
47
|
+
end
|
48
|
+
|
49
|
+
# @!attribute [rw] document_metadata
|
50
|
+
# Metadata about the analyzed document. An example is the number of
|
51
|
+
# pages.
|
52
|
+
# @return [Types::DocumentMetadata]
|
53
|
+
#
|
54
|
+
# @!attribute [rw] blocks
|
55
|
+
# The text that's detected and analyzed by `AnalyzeDocument`.
|
56
|
+
# @return [Array<Types::Block>]
|
57
|
+
#
|
58
|
+
# @see http://docs.aws.amazon.com/goto/WebAPI/textract-2018-06-27/AnalyzeDocumentResponse AWS API Documentation
|
59
|
+
#
|
60
|
+
class AnalyzeDocumentResponse < Struct.new(
|
61
|
+
:document_metadata,
|
62
|
+
:blocks)
|
63
|
+
include Aws::Structure
|
64
|
+
end
|
65
|
+
|
66
|
+
# A `Block` represents text that's recognized in a document within a
|
67
|
+
# group of pixels close to each other. The information returned in a
|
68
|
+
# `Block` depends on the type of operation. In document-text detection
|
69
|
+
# (for example DetectDocumentText), you get information about the
|
70
|
+
# detected words and lines of text. In text analysis (for example
|
71
|
+
# AnalyzeDocument), you can get information about the fields and tables
|
72
|
+
# that are detected in the document.
|
73
|
+
#
|
74
|
+
# An array of `Block` objects is returned by both synchronous and
|
75
|
+
# asynchronous operations. In synchronous operations, such as
|
76
|
+
# DetectDocumentText, the array of `Block` objects is the entire set of
|
77
|
+
# results. In asynchronous operations, such as GetDocumentAnalysis, the
|
78
|
+
# array is returned over one or more responses.
|
79
|
+
#
|
80
|
+
# @!attribute [rw] block_type
|
81
|
+
# The type of text that's recognized in a block. In text-detection
|
82
|
+
# operations, the following types are returned:
|
83
|
+
#
|
84
|
+
# * *PAGE* - Contains a list of the LINE Block objects that are
|
85
|
+
# detected on a specific page.
|
86
|
+
#
|
87
|
+
# * *WORD* - One or more ISO basic Latin script characters that
|
88
|
+
# aren't separated by spaces.
|
89
|
+
#
|
90
|
+
# * *LINE* - A string of equally spaced words.
|
91
|
+
#
|
92
|
+
# In text analysis operations, the following types are returned:
|
93
|
+
#
|
94
|
+
# * *PAGE* - Contains a list of child Block objects that are detected
|
95
|
+
# on a specific page.
|
96
|
+
#
|
97
|
+
# * *KEY\_VALUE\_SET* - Stores the KEY and VALUE Block objects for a
|
98
|
+
# field that's detected in a document. Use the `EntityType` field
|
99
|
+
# to determine if a KEY\_VALUE\_SET object is a KEY Block object or
|
100
|
+
# a VALUE Block object.
|
101
|
+
#
|
102
|
+
# * *WORD* - One or more ISO basic Latin script characters that
|
103
|
+
# aren't separated by spaces.
|
104
|
+
#
|
105
|
+
# * *LINE* - A string of tab-delimited, contiguous words.
|
106
|
+
#
|
107
|
+
# * *TABLE* - A table that's detected in the document.
|
108
|
+
#
|
109
|
+
# * *CELL* - A cell within a detected table. The cell is the parent of
|
110
|
+
# the block that contains the text in the cell.
|
111
|
+
# @return [String]
|
112
|
+
#
|
113
|
+
# @!attribute [rw] confidence
|
114
|
+
# The confidence that Amazon Textract has in the accuracy of the
|
115
|
+
# recognized text and the accuracy of the geometry points around the
|
116
|
+
# recognized text.
|
117
|
+
# @return [Float]
|
118
|
+
#
|
119
|
+
# @!attribute [rw] text
|
120
|
+
# The word or line of text that's recognized by Amazon Textract.
|
121
|
+
# @return [String]
|
122
|
+
#
|
123
|
+
# @!attribute [rw] row_index
|
124
|
+
# The row in which a table cell is located. The first row position is
|
125
|
+
# 1. `RowIndex` isn't returned by `DetectDocumentText` and
|
126
|
+
# `GetDocumentTextDetection`.
|
127
|
+
# @return [Integer]
|
128
|
+
#
|
129
|
+
# @!attribute [rw] column_index
|
130
|
+
# The column in which a table cell appears. The first column position
|
131
|
+
# is 1. `ColumnIndex` isn't returned by `DetectDocumentText` and
|
132
|
+
# `GetDocumentTextDetection`.
|
133
|
+
# @return [Integer]
|
134
|
+
#
|
135
|
+
# @!attribute [rw] row_span
|
136
|
+
# The number of rows that a table spans. `RowSpan` isn't returned by
|
137
|
+
# `DetectDocumentText` and `GetDocumentTextDetection`.
|
138
|
+
# @return [Integer]
|
139
|
+
#
|
140
|
+
# @!attribute [rw] column_span
|
141
|
+
# The number of columns that a table cell spans. `ColumnSpan` isn't
|
142
|
+
# returned by `DetectDocumentText` and `GetDocumentTextDetection`.
|
143
|
+
# @return [Integer]
|
144
|
+
#
|
145
|
+
# @!attribute [rw] geometry
|
146
|
+
# The location of the recognized text on the image. It includes an
|
147
|
+
# axis-aligned, coarse bounding box that surrounds the text, and a
|
148
|
+
# finer-grain polygon for more accurate spatial information.
|
149
|
+
# @return [Types::Geometry]
|
150
|
+
#
|
151
|
+
# @!attribute [rw] id
|
152
|
+
# The identifier for the recognized text. The identifier is only
|
153
|
+
# unique for a single operation.
|
154
|
+
# @return [String]
|
155
|
+
#
|
156
|
+
# @!attribute [rw] relationships
|
157
|
+
# A list of child blocks of the current block. For example a LINE
|
158
|
+
# object has child blocks for each WORD block that's part of the line
|
159
|
+
# of text. There aren't Relationship objects in the list for
|
160
|
+
# relationships that don't exist, such as when the current block has
|
161
|
+
# no child blocks. The list size can be the following:
|
162
|
+
#
|
163
|
+
# * 0 - The block has no child blocks.
|
164
|
+
#
|
165
|
+
# * 1 - The block has child blocks.
|
166
|
+
# @return [Array<Types::Relationship>]
|
167
|
+
#
|
168
|
+
# @!attribute [rw] entity_types
|
169
|
+
# The type of entity. The following can be returned:
|
170
|
+
#
|
171
|
+
# * *KEY* - An identifier for a field on the document.
|
172
|
+
#
|
173
|
+
# * *VALUE* - The field text.
|
174
|
+
#
|
175
|
+
# `EntityTypes` isn't returned by `DetectDocumentText` and
|
176
|
+
# `GetDocumentTextDetection`.
|
177
|
+
# @return [Array<String>]
|
178
|
+
#
|
179
|
+
# @!attribute [rw] page
|
180
|
+
# The page in which a block was detected.
|
181
|
+
# @return [Integer]
|
182
|
+
#
|
183
|
+
# @see http://docs.aws.amazon.com/goto/WebAPI/textract-2018-06-27/Block AWS API Documentation
|
184
|
+
#
|
185
|
+
class Block < Struct.new(
|
186
|
+
:block_type,
|
187
|
+
:confidence,
|
188
|
+
:text,
|
189
|
+
:row_index,
|
190
|
+
:column_index,
|
191
|
+
:row_span,
|
192
|
+
:column_span,
|
193
|
+
:geometry,
|
194
|
+
:id,
|
195
|
+
:relationships,
|
196
|
+
:entity_types,
|
197
|
+
:page)
|
198
|
+
include Aws::Structure
|
199
|
+
end
|
200
|
+
|
201
|
+
# The bounding box around the recognized text, key, value, table or
|
202
|
+
# table cell on a document page. The `left` (x-coordinate) and `top`
|
203
|
+
# (y-coordinate) are coordinates that represent the top and left sides
|
204
|
+
# of the bounding box. Note that the upper-left corner of the image is
|
205
|
+
# the origin (0,0).
|
206
|
+
#
|
207
|
+
# The `top` and `left` values returned are ratios of the overall
|
208
|
+
# document page size. For example, if the input image is 700 x 200
|
209
|
+
# pixels, and the top-left coordinate of the bounding box is 350 x 50
|
210
|
+
# pixels, the API returns a `left` value of 0.5 (350/700) and a `top`
|
211
|
+
# value of 0.25 (50/200).
|
212
|
+
#
|
213
|
+
# The `width` and `height` values represent the dimensions of the
|
214
|
+
# bounding box as a ratio of the overall document page dimension. For
|
215
|
+
# example, if the document page size is 700 x 200 pixels, and the
|
216
|
+
# bounding box width is 70 pixels, the width returned is 0.1.
|
217
|
+
#
|
218
|
+
# @!attribute [rw] width
|
219
|
+
# The width of the bounding box as a ratio of the overall document
|
220
|
+
# page width.
|
221
|
+
# @return [Float]
|
222
|
+
#
|
223
|
+
# @!attribute [rw] height
|
224
|
+
# The height of the bounding box as a ratio of the overall document
|
225
|
+
# page height.
|
226
|
+
# @return [Float]
|
227
|
+
#
|
228
|
+
# @!attribute [rw] left
|
229
|
+
# The left coordinate of the bounding box as a ratio of overall
|
230
|
+
# document page width.
|
231
|
+
# @return [Float]
|
232
|
+
#
|
233
|
+
# @!attribute [rw] top
|
234
|
+
# The top coordinate of the bounding box as a ratio of overall
|
235
|
+
# document page height.
|
236
|
+
# @return [Float]
|
237
|
+
#
|
238
|
+
# @see http://docs.aws.amazon.com/goto/WebAPI/textract-2018-06-27/BoundingBox AWS API Documentation
|
239
|
+
#
|
240
|
+
class BoundingBox < Struct.new(
|
241
|
+
:width,
|
242
|
+
:height,
|
243
|
+
:left,
|
244
|
+
:top)
|
245
|
+
include Aws::Structure
|
246
|
+
end
|
247
|
+
|
248
|
+
# @note When making an API call, you may pass DetectDocumentTextRequest
|
249
|
+
# data as a hash:
|
250
|
+
#
|
251
|
+
# {
|
252
|
+
# document: { # required
|
253
|
+
# bytes: "data",
|
254
|
+
# s3_object: {
|
255
|
+
# bucket: "S3Bucket",
|
256
|
+
# name: "S3ObjectName",
|
257
|
+
# version: "S3ObjectVersion",
|
258
|
+
# },
|
259
|
+
# },
|
260
|
+
# }
|
261
|
+
#
|
262
|
+
# @!attribute [rw] document
|
263
|
+
# The input document as base64-encoded bytes or an Amazon S3 object.
|
264
|
+
# If you use the AWS CLI to call Amazon Textract operations, you
|
265
|
+
# can't pass image bytes. The document must be an image in JPG or PNG
|
266
|
+
# format.
|
267
|
+
# @return [Types::Document]
|
268
|
+
#
|
269
|
+
# @see http://docs.aws.amazon.com/goto/WebAPI/textract-2018-06-27/DetectDocumentTextRequest AWS API Documentation
|
270
|
+
#
|
271
|
+
class DetectDocumentTextRequest < Struct.new(
|
272
|
+
:document)
|
273
|
+
include Aws::Structure
|
274
|
+
end
|
275
|
+
|
276
|
+
# @!attribute [rw] document_metadata
|
277
|
+
# Metadata about the document. Contains the number of pages that are
|
278
|
+
# detected in the document.
|
279
|
+
# @return [Types::DocumentMetadata]
|
280
|
+
#
|
281
|
+
# @!attribute [rw] blocks
|
282
|
+
# An array of Block objects containing the text detected in the
|
283
|
+
# document.
|
284
|
+
# @return [Array<Types::Block>]
|
285
|
+
#
|
286
|
+
# @see http://docs.aws.amazon.com/goto/WebAPI/textract-2018-06-27/DetectDocumentTextResponse AWS API Documentation
|
287
|
+
#
|
288
|
+
class DetectDocumentTextResponse < Struct.new(
|
289
|
+
:document_metadata,
|
290
|
+
:blocks)
|
291
|
+
include Aws::Structure
|
292
|
+
end
|
293
|
+
|
294
|
+
# The input document, either as bytes or as an S3 object.
|
295
|
+
#
|
296
|
+
# You pass image bytes to an Amazon Textract API operation by using the
|
297
|
+
# `Bytes` property. For example, you would use the `Bytes` property to
|
298
|
+
# pass a document loaded from a local file system. Image bytes passed by
|
299
|
+
# using the `Bytes` property must be base64 encoded. Your code might not
|
300
|
+
# need to encode document file bytes if you're using an AWS SDK to call
|
301
|
+
# Amazon Textract API operations.
|
302
|
+
#
|
303
|
+
# You pass images stored in an S3 bucket to an Amazon Textract API
|
304
|
+
# operation by using the `S3Object` property. Documents stored in an S3
|
305
|
+
# bucket don't need to be base64 encoded.
|
306
|
+
#
|
307
|
+
# The AWS Region for the S3 bucket that contains the S3 object must
|
308
|
+
# match the Region that you use for Amazon Textract operations.
|
309
|
+
#
|
310
|
+
# If you use the AWS CLI to call Amazon Textract operations, passing
|
311
|
+
# image bytes using the Bytes property isn't supported. You must first
|
312
|
+
# upload the document to an Amazon S3 bucket, and then call the
|
313
|
+
# operation using the S3Object property.
|
314
|
+
#
|
315
|
+
# For Amazon Textract to process an S3 object, the user must have
|
316
|
+
# permission to access the S3 object.
|
317
|
+
#
|
318
|
+
# @note When making an API call, you may pass Document
|
319
|
+
# data as a hash:
|
320
|
+
#
|
321
|
+
# {
|
322
|
+
# bytes: "data",
|
323
|
+
# s3_object: {
|
324
|
+
# bucket: "S3Bucket",
|
325
|
+
# name: "S3ObjectName",
|
326
|
+
# version: "S3ObjectVersion",
|
327
|
+
# },
|
328
|
+
# }
|
329
|
+
#
|
330
|
+
# @!attribute [rw] bytes
|
331
|
+
# A blob of documents bytes. The maximum size of a document that's
|
332
|
+
# provided in a blob of bytes is 5 MB.
|
333
|
+
# @return [String]
|
334
|
+
#
|
335
|
+
# @!attribute [rw] s3_object
|
336
|
+
# Identifies an S3 object as the document source. The maximum size of
|
337
|
+
# a document stored in an S3 bucket is 5 MB.
|
338
|
+
# @return [Types::S3Object]
|
339
|
+
#
|
340
|
+
# @see http://docs.aws.amazon.com/goto/WebAPI/textract-2018-06-27/Document AWS API Documentation
|
341
|
+
#
|
342
|
+
class Document < Struct.new(
|
343
|
+
:bytes,
|
344
|
+
:s3_object)
|
345
|
+
include Aws::Structure
|
346
|
+
end
|
347
|
+
|
348
|
+
# The Amazon S3 bucket that contains the document to be processed. It's
|
349
|
+
# used by asynchronous operations such as StartDocumentTextDetection.
|
350
|
+
#
|
351
|
+
# The input document can be an image file in JPG or PNG format. It can
|
352
|
+
# also be a file in PDF format.
|
353
|
+
#
|
354
|
+
# @note When making an API call, you may pass DocumentLocation
|
355
|
+
# data as a hash:
|
356
|
+
#
|
357
|
+
# {
|
358
|
+
# s3_object: {
|
359
|
+
# bucket: "S3Bucket",
|
360
|
+
# name: "S3ObjectName",
|
361
|
+
# version: "S3ObjectVersion",
|
362
|
+
# },
|
363
|
+
# }
|
364
|
+
#
|
365
|
+
# @!attribute [rw] s3_object
|
366
|
+
# The Amazon S3 bucket that contains the input document.
|
367
|
+
# @return [Types::S3Object]
|
368
|
+
#
|
369
|
+
# @see http://docs.aws.amazon.com/goto/WebAPI/textract-2018-06-27/DocumentLocation AWS API Documentation
|
370
|
+
#
|
371
|
+
class DocumentLocation < Struct.new(
|
372
|
+
:s3_object)
|
373
|
+
include Aws::Structure
|
374
|
+
end
|
375
|
+
|
376
|
+
# Information about the input document.
|
377
|
+
#
|
378
|
+
# @!attribute [rw] pages
|
379
|
+
# The number of pages detected in the document.
|
380
|
+
# @return [Integer]
|
381
|
+
#
|
382
|
+
# @see http://docs.aws.amazon.com/goto/WebAPI/textract-2018-06-27/DocumentMetadata AWS API Documentation
|
383
|
+
#
|
384
|
+
class DocumentMetadata < Struct.new(
|
385
|
+
:pages)
|
386
|
+
include Aws::Structure
|
387
|
+
end
|
388
|
+
|
389
|
+
# Information about where a recognized text, key, value, table, or table
|
390
|
+
# cell is located on a document page.
|
391
|
+
#
|
392
|
+
# @!attribute [rw] bounding_box
|
393
|
+
# An axis-aligned coarse representation of the location of the
|
394
|
+
# recognized text on the document page.
|
395
|
+
# @return [Types::BoundingBox]
|
396
|
+
#
|
397
|
+
# @!attribute [rw] polygon
|
398
|
+
# Within the bounding box, a fine-grained polygon around the
|
399
|
+
# recognized text.
|
400
|
+
# @return [Array<Types::Point>]
|
401
|
+
#
|
402
|
+
# @see http://docs.aws.amazon.com/goto/WebAPI/textract-2018-06-27/Geometry AWS API Documentation
|
403
|
+
#
|
404
|
+
class Geometry < Struct.new(
|
405
|
+
:bounding_box,
|
406
|
+
:polygon)
|
407
|
+
include Aws::Structure
|
408
|
+
end
|
409
|
+
|
410
|
+
# @note When making an API call, you may pass GetDocumentAnalysisRequest
|
411
|
+
# data as a hash:
|
412
|
+
#
|
413
|
+
# {
|
414
|
+
# job_id: "JobId", # required
|
415
|
+
# max_results: 1,
|
416
|
+
# next_token: "PaginationToken",
|
417
|
+
# }
|
418
|
+
#
|
419
|
+
# @!attribute [rw] job_id
|
420
|
+
# A unique identifier for the text-detection job. The `JobId` is
|
421
|
+
# returned from `StartDocumentAnalysis`.
|
422
|
+
# @return [String]
|
423
|
+
#
|
424
|
+
# @!attribute [rw] max_results
|
425
|
+
# The maximum number of results to return per paginated call. The
|
426
|
+
# largest value that you can specify is 1,000. If you specify a value
|
427
|
+
# greater than 1,000, a maximum of 1,000 results is returned. The
|
428
|
+
# default value is 1,000.
|
429
|
+
# @return [Integer]
|
430
|
+
#
|
431
|
+
# @!attribute [rw] next_token
|
432
|
+
# If the previous response was incomplete (because there are more
|
433
|
+
# blocks to retrieve), Amazon Textract returns a pagination token in
|
434
|
+
# the response. You can use this pagination token to retrieve the next
|
435
|
+
# set of blocks.
|
436
|
+
# @return [String]
|
437
|
+
#
|
438
|
+
# @see http://docs.aws.amazon.com/goto/WebAPI/textract-2018-06-27/GetDocumentAnalysisRequest AWS API Documentation
|
439
|
+
#
|
440
|
+
class GetDocumentAnalysisRequest < Struct.new(
|
441
|
+
:job_id,
|
442
|
+
:max_results,
|
443
|
+
:next_token)
|
444
|
+
include Aws::Structure
|
445
|
+
end
|
446
|
+
|
447
|
+
# @!attribute [rw] document_metadata
|
448
|
+
# Information about a document that Amazon Textract processed.
|
449
|
+
# `DocumentMetadata` is returned in every page of paginated responses
|
450
|
+
# from an Amazon Textract video operation.
|
451
|
+
# @return [Types::DocumentMetadata]
|
452
|
+
#
|
453
|
+
# @!attribute [rw] job_status
|
454
|
+
# The current status of the text detection job.
|
455
|
+
# @return [String]
|
456
|
+
#
|
457
|
+
# @!attribute [rw] next_token
|
458
|
+
# If the response is truncated, Amazon Textract returns this token.
|
459
|
+
# You can use this token in the subsequent request to retrieve the
|
460
|
+
# next set of text detection results.
|
461
|
+
# @return [String]
|
462
|
+
#
|
463
|
+
# @!attribute [rw] blocks
|
464
|
+
# The results of the text analysis operation.
|
465
|
+
# @return [Array<Types::Block>]
|
466
|
+
#
|
467
|
+
# @!attribute [rw] warnings
|
468
|
+
# A list of warnings that occurred during the document analysis
|
469
|
+
# operation.
|
470
|
+
# @return [Array<Types::Warning>]
|
471
|
+
#
|
472
|
+
# @!attribute [rw] status_message
|
473
|
+
# The current status of an asynchronous document analysis operation.
|
474
|
+
# @return [String]
|
475
|
+
#
|
476
|
+
# @see http://docs.aws.amazon.com/goto/WebAPI/textract-2018-06-27/GetDocumentAnalysisResponse AWS API Documentation
|
477
|
+
#
|
478
|
+
class GetDocumentAnalysisResponse < Struct.new(
|
479
|
+
:document_metadata,
|
480
|
+
:job_status,
|
481
|
+
:next_token,
|
482
|
+
:blocks,
|
483
|
+
:warnings,
|
484
|
+
:status_message)
|
485
|
+
include Aws::Structure
|
486
|
+
end
|
487
|
+
|
488
|
+
# @note When making an API call, you may pass GetDocumentTextDetectionRequest
|
489
|
+
# data as a hash:
|
490
|
+
#
|
491
|
+
# {
|
492
|
+
# job_id: "JobId", # required
|
493
|
+
# max_results: 1,
|
494
|
+
# next_token: "PaginationToken",
|
495
|
+
# }
|
496
|
+
#
|
497
|
+
# @!attribute [rw] job_id
|
498
|
+
# A unique identifier for the text detection job. The `JobId` is
|
499
|
+
# returned from `StartDocumentTextDetection`.
|
500
|
+
# @return [String]
|
501
|
+
#
|
502
|
+
# @!attribute [rw] max_results
|
503
|
+
# The maximum number of results to return per paginated call. The
|
504
|
+
# largest value you can specify is 1,000. If you specify a value
|
505
|
+
# greater than 1,000, a maximum of 1,000 results is returned. The
|
506
|
+
# default value is 1,000.
|
507
|
+
# @return [Integer]
|
508
|
+
#
|
509
|
+
# @!attribute [rw] next_token
|
510
|
+
# If the previous response was incomplete (because there are more
|
511
|
+
# blocks to retrieve), Amazon Textract returns a pagination token in
|
512
|
+
# the response. You can use this pagination token to retrieve the next
|
513
|
+
# set of blocks.
|
514
|
+
# @return [String]
|
515
|
+
#
|
516
|
+
# @see http://docs.aws.amazon.com/goto/WebAPI/textract-2018-06-27/GetDocumentTextDetectionRequest AWS API Documentation
|
517
|
+
#
|
518
|
+
class GetDocumentTextDetectionRequest < Struct.new(
|
519
|
+
:job_id,
|
520
|
+
:max_results,
|
521
|
+
:next_token)
|
522
|
+
include Aws::Structure
|
523
|
+
end
|
524
|
+
|
525
|
+
# @!attribute [rw] document_metadata
|
526
|
+
# Information about a document that Amazon Textract processed.
|
527
|
+
# `DocumentMetadata` is returned in every page of paginated responses
|
528
|
+
# from an Amazon Textract video operation.
|
529
|
+
# @return [Types::DocumentMetadata]
|
530
|
+
#
|
531
|
+
# @!attribute [rw] job_status
|
532
|
+
# The current status of the text detection job.
|
533
|
+
# @return [String]
|
534
|
+
#
|
535
|
+
# @!attribute [rw] next_token
|
536
|
+
# If the response is truncated, Amazon Textract returns this token.
|
537
|
+
# You can use this token in the subsequent request to retrieve the
|
538
|
+
# next set of text-detection results.
|
539
|
+
# @return [String]
|
540
|
+
#
|
541
|
+
# @!attribute [rw] blocks
|
542
|
+
# The results of the text-detection operation.
|
543
|
+
# @return [Array<Types::Block>]
|
544
|
+
#
|
545
|
+
# @!attribute [rw] warnings
|
546
|
+
# A list of warnings that occurred during the document text-detection
|
547
|
+
# operation.
|
548
|
+
# @return [Array<Types::Warning>]
|
549
|
+
#
|
550
|
+
# @!attribute [rw] status_message
|
551
|
+
# The current status of an asynchronous document text-detection
|
552
|
+
# operation.
|
553
|
+
# @return [String]
|
554
|
+
#
|
555
|
+
# @see http://docs.aws.amazon.com/goto/WebAPI/textract-2018-06-27/GetDocumentTextDetectionResponse AWS API Documentation
|
556
|
+
#
|
557
|
+
class GetDocumentTextDetectionResponse < Struct.new(
|
558
|
+
:document_metadata,
|
559
|
+
:job_status,
|
560
|
+
:next_token,
|
561
|
+
:blocks,
|
562
|
+
:warnings,
|
563
|
+
:status_message)
|
564
|
+
include Aws::Structure
|
565
|
+
end
|
566
|
+
|
567
|
+
# The Amazon Simple Notification Service (Amazon SNS) topic to which
|
568
|
+
# Amazon Textract publishes the completion status of an asynchronous
|
569
|
+
# document operation, such as StartDocumentTextDetection.
|
570
|
+
#
|
571
|
+
# @note When making an API call, you may pass NotificationChannel
|
572
|
+
# data as a hash:
|
573
|
+
#
|
574
|
+
# {
|
575
|
+
# sns_topic_arn: "SNSTopicArn", # required
|
576
|
+
# role_arn: "RoleArn", # required
|
577
|
+
# }
|
578
|
+
#
|
579
|
+
# @!attribute [rw] sns_topic_arn
|
580
|
+
# The Amazon SNS topic that Amazon Textract posts the completion
|
581
|
+
# status to.
|
582
|
+
# @return [String]
|
583
|
+
#
|
584
|
+
# @!attribute [rw] role_arn
|
585
|
+
# The Amazon Resource Name (ARN) of an IAM role that gives Amazon
|
586
|
+
# Textract publishing permissions to the Amazon SNS topic.
|
587
|
+
# @return [String]
|
588
|
+
#
|
589
|
+
# @see http://docs.aws.amazon.com/goto/WebAPI/textract-2018-06-27/NotificationChannel AWS API Documentation
|
590
|
+
#
|
591
|
+
class NotificationChannel < Struct.new(
|
592
|
+
:sns_topic_arn,
|
593
|
+
:role_arn)
|
594
|
+
include Aws::Structure
|
595
|
+
end
|
596
|
+
|
597
|
+
# The X and Y coordinates of a point on a document page. The X and Y
|
598
|
+
# values returned are ratios of the overall document page size. For
|
599
|
+
# example, if the input document is 700 x 200 and the operation returns
|
600
|
+
# X=0.5 and Y=0.25, then the point is at the (350,50) pixel coordinate
|
601
|
+
# on the document page.
|
602
|
+
#
|
603
|
+
# An array of `Point` objects, `Polygon`, is returned by
|
604
|
+
# DetectDocumentText. `Polygon` represents a fine-grained polygon around
|
605
|
+
# detected text. For more information, see Geometry in the Amazon
|
606
|
+
# Textract Developer Guide.
|
607
|
+
#
|
608
|
+
# @!attribute [rw] x
|
609
|
+
# The value of the X coordinate for a point on a `Polygon`.
|
610
|
+
# @return [Float]
|
611
|
+
#
|
612
|
+
# @!attribute [rw] y
|
613
|
+
# The value of the Y coordinate for a point on a `Polygon`.
|
614
|
+
# @return [Float]
|
615
|
+
#
|
616
|
+
# @see http://docs.aws.amazon.com/goto/WebAPI/textract-2018-06-27/Point AWS API Documentation
|
617
|
+
#
|
618
|
+
class Point < Struct.new(
|
619
|
+
:x,
|
620
|
+
:y)
|
621
|
+
include Aws::Structure
|
622
|
+
end
|
623
|
+
|
624
|
+
# Information about how blocks are related to each other. A `Block`
|
625
|
+
# object contains 0 or more `Relation` objects in a list,
|
626
|
+
# `Relationships`. For more information, see Block.
|
627
|
+
#
|
628
|
+
# The `Type` element provides the type of the relationship for all
|
629
|
+
# blocks in the `IDs` array.
|
630
|
+
#
|
631
|
+
# @!attribute [rw] type
|
632
|
+
# The type of relationship that the blocks in the IDs array have with
|
633
|
+
# the current block. The relationship can be `VALUE` or `CHILD`.
|
634
|
+
# @return [String]
|
635
|
+
#
|
636
|
+
# @!attribute [rw] ids
|
637
|
+
# An array of IDs for related blocks. You can get the type of the
|
638
|
+
# relationship from the `Type` element.
|
639
|
+
# @return [Array<String>]
|
640
|
+
#
|
641
|
+
# @see http://docs.aws.amazon.com/goto/WebAPI/textract-2018-06-27/Relationship AWS API Documentation
|
642
|
+
#
|
643
|
+
class Relationship < Struct.new(
|
644
|
+
:type,
|
645
|
+
:ids)
|
646
|
+
include Aws::Structure
|
647
|
+
end
|
648
|
+
|
649
|
+
# The S3 bucket name and file name that identifies the document.
|
650
|
+
#
|
651
|
+
# The AWS Region for the S3 bucket that contains the document must match
|
652
|
+
# the Region that you use for Amazon Textract operations.
|
653
|
+
#
|
654
|
+
# For Amazon Textract to process a file in an S3 bucket, the user must
|
655
|
+
# have permission to access the S3 bucket and file.
|
656
|
+
#
|
657
|
+
# @note When making an API call, you may pass S3Object
|
658
|
+
# data as a hash:
|
659
|
+
#
|
660
|
+
# {
|
661
|
+
# bucket: "S3Bucket",
|
662
|
+
# name: "S3ObjectName",
|
663
|
+
# version: "S3ObjectVersion",
|
664
|
+
# }
|
665
|
+
#
|
666
|
+
# @!attribute [rw] bucket
|
667
|
+
# The name of the S3 bucket.
|
668
|
+
# @return [String]
|
669
|
+
#
|
670
|
+
# @!attribute [rw] name
|
671
|
+
# The file name of the input document. It must be an image file (.JPG
|
672
|
+
# or .PNG format). Asynchronous operations also support PDF files.
|
673
|
+
# @return [String]
|
674
|
+
#
|
675
|
+
# @!attribute [rw] version
|
676
|
+
# If the bucket has versioning enabled, you can specify the object
|
677
|
+
# version.
|
678
|
+
# @return [String]
|
679
|
+
#
|
680
|
+
# @see http://docs.aws.amazon.com/goto/WebAPI/textract-2018-06-27/S3Object AWS API Documentation
|
681
|
+
#
|
682
|
+
class S3Object < Struct.new(
|
683
|
+
:bucket,
|
684
|
+
:name,
|
685
|
+
:version)
|
686
|
+
include Aws::Structure
|
687
|
+
end
|
688
|
+
|
689
|
+
# @note When making an API call, you may pass StartDocumentAnalysisRequest
|
690
|
+
# data as a hash:
|
691
|
+
#
|
692
|
+
# {
|
693
|
+
# document_location: { # required
|
694
|
+
# s3_object: {
|
695
|
+
# bucket: "S3Bucket",
|
696
|
+
# name: "S3ObjectName",
|
697
|
+
# version: "S3ObjectVersion",
|
698
|
+
# },
|
699
|
+
# },
|
700
|
+
# feature_types: ["TABLES"], # required, accepts TABLES, FORMS
|
701
|
+
# client_request_token: "ClientRequestToken",
|
702
|
+
# job_tag: "JobTag",
|
703
|
+
# notification_channel: {
|
704
|
+
# sns_topic_arn: "SNSTopicArn", # required
|
705
|
+
# role_arn: "RoleArn", # required
|
706
|
+
# },
|
707
|
+
# }
|
708
|
+
#
|
709
|
+
# @!attribute [rw] document_location
|
710
|
+
# The location of the document to be processed.
|
711
|
+
# @return [Types::DocumentLocation]
|
712
|
+
#
|
713
|
+
# @!attribute [rw] feature_types
|
714
|
+
# A list of the types of analysis to perform. Add TABLES to the list
|
715
|
+
# to return information about the tables that are detected in the
|
716
|
+
# input document. Add FORMS to return detected fields and the
|
717
|
+
# associated text. To perform both types of analysis, add TABLES and
|
718
|
+
# FORMS to `FeatureTypes`.
|
719
|
+
# @return [Array<String>]
|
720
|
+
#
|
721
|
+
# @!attribute [rw] client_request_token
|
722
|
+
# The idempotent token that you use to identify the start request. If
|
723
|
+
# you use the same token with multiple `StartDocumentAnalysis`
|
724
|
+
# requests, the same `JobId` is returned. Use `ClientRequestToken` to
|
725
|
+
# prevent the same job from being accidentally started more than once.
|
726
|
+
# @return [String]
|
727
|
+
#
|
728
|
+
# @!attribute [rw] job_tag
|
729
|
+
# The unique identifier you specify to identify the job in the
|
730
|
+
# completion status that's published to the Amazon SNS topic.
|
731
|
+
# @return [String]
|
732
|
+
#
|
733
|
+
# @!attribute [rw] notification_channel
|
734
|
+
# The Amazon SNS topic ARN that you want Amazon Textract to publish
|
735
|
+
# the completion status of the operation to.
|
736
|
+
# @return [Types::NotificationChannel]
|
737
|
+
#
|
738
|
+
# @see http://docs.aws.amazon.com/goto/WebAPI/textract-2018-06-27/StartDocumentAnalysisRequest AWS API Documentation
|
739
|
+
#
|
740
|
+
class StartDocumentAnalysisRequest < Struct.new(
|
741
|
+
:document_location,
|
742
|
+
:feature_types,
|
743
|
+
:client_request_token,
|
744
|
+
:job_tag,
|
745
|
+
:notification_channel)
|
746
|
+
include Aws::Structure
|
747
|
+
end
|
748
|
+
|
749
|
+
# @!attribute [rw] job_id
|
750
|
+
# The identifier for the document text-detection job. Use `JobId` to
|
751
|
+
# identify the job in a subsequent call to `GetDocumentAnalysis`.
|
752
|
+
# @return [String]
|
753
|
+
#
|
754
|
+
# @see http://docs.aws.amazon.com/goto/WebAPI/textract-2018-06-27/StartDocumentAnalysisResponse AWS API Documentation
|
755
|
+
#
|
756
|
+
class StartDocumentAnalysisResponse < Struct.new(
|
757
|
+
:job_id)
|
758
|
+
include Aws::Structure
|
759
|
+
end
|
760
|
+
|
761
|
+
# @note When making an API call, you may pass StartDocumentTextDetectionRequest
|
762
|
+
# data as a hash:
|
763
|
+
#
|
764
|
+
# {
|
765
|
+
# document_location: { # required
|
766
|
+
# s3_object: {
|
767
|
+
# bucket: "S3Bucket",
|
768
|
+
# name: "S3ObjectName",
|
769
|
+
# version: "S3ObjectVersion",
|
770
|
+
# },
|
771
|
+
# },
|
772
|
+
# client_request_token: "ClientRequestToken",
|
773
|
+
# job_tag: "JobTag",
|
774
|
+
# notification_channel: {
|
775
|
+
# sns_topic_arn: "SNSTopicArn", # required
|
776
|
+
# role_arn: "RoleArn", # required
|
777
|
+
# },
|
778
|
+
# }
|
779
|
+
#
|
780
|
+
# @!attribute [rw] document_location
|
781
|
+
# The location of the document to be processed.
|
782
|
+
# @return [Types::DocumentLocation]
|
783
|
+
#
|
784
|
+
# @!attribute [rw] client_request_token
|
785
|
+
# The idempotent token that's used to identify the start request. If
|
786
|
+
# you use the same token with multiple `StartDocumentTextDetection`
|
787
|
+
# requests, the same `JobId` is returned. Use `ClientRequestToken` to
|
788
|
+
# prevent the same job from being accidentally started more than once.
|
789
|
+
# @return [String]
|
790
|
+
#
|
791
|
+
# @!attribute [rw] job_tag
|
792
|
+
# A unique identifier you specify to identify the job in the
|
793
|
+
# completion status that's published to the Amazon Simple
|
794
|
+
# Notification Service (Amazon SNS) topic.
|
795
|
+
# @return [String]
|
796
|
+
#
|
797
|
+
# @!attribute [rw] notification_channel
|
798
|
+
# The Amazon SNS topic ARN that you want Amazon Textract to publish
|
799
|
+
# the completion status of the operation to.
|
800
|
+
# @return [Types::NotificationChannel]
|
801
|
+
#
|
802
|
+
# @see http://docs.aws.amazon.com/goto/WebAPI/textract-2018-06-27/StartDocumentTextDetectionRequest AWS API Documentation
|
803
|
+
#
|
804
|
+
class StartDocumentTextDetectionRequest < Struct.new(
|
805
|
+
:document_location,
|
806
|
+
:client_request_token,
|
807
|
+
:job_tag,
|
808
|
+
:notification_channel)
|
809
|
+
include Aws::Structure
|
810
|
+
end
|
811
|
+
|
812
|
+
# @!attribute [rw] job_id
|
813
|
+
# The identifier for the document text-detection job. Use `JobId` to
|
814
|
+
# identify the job in a subsequent call to `GetDocumentTextDetection`.
|
815
|
+
# @return [String]
|
816
|
+
#
|
817
|
+
# @see http://docs.aws.amazon.com/goto/WebAPI/textract-2018-06-27/StartDocumentTextDetectionResponse AWS API Documentation
|
818
|
+
#
|
819
|
+
class StartDocumentTextDetectionResponse < Struct.new(
|
820
|
+
:job_id)
|
821
|
+
include Aws::Structure
|
822
|
+
end
|
823
|
+
|
824
|
+
# A warning about an issue that occurred during asynchronous text
|
825
|
+
# analysis (StartDocumentAnalysis) or asynchronous document-text
|
826
|
+
# detection (StartDocumentTextDetection).
|
827
|
+
#
|
828
|
+
# @!attribute [rw] error_code
|
829
|
+
# The error code for the warning.
|
830
|
+
# @return [String]
|
831
|
+
#
|
832
|
+
# @!attribute [rw] pages
|
833
|
+
# A list of the pages that the warning applies to.
|
834
|
+
# @return [Array<Integer>]
|
835
|
+
#
|
836
|
+
# @see http://docs.aws.amazon.com/goto/WebAPI/textract-2018-06-27/Warning AWS API Documentation
|
837
|
+
#
|
838
|
+
class Warning < Struct.new(
|
839
|
+
:error_code,
|
840
|
+
:pages)
|
841
|
+
include Aws::Structure
|
842
|
+
end
|
843
|
+
|
844
|
+
end
|
845
|
+
end
|