mindee 3.18.0 → 3.19.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6d2f2fd3fa8b6ca9d7756f08d3f7b526b510866d0c75a33ccfab1ff20b3ba2c6
4
- data.tar.gz: 7f09aa2efbe008271aa229515ce7f804680ea46d7318c6fe62d57889785762bb
3
+ metadata.gz: bca81cfda2aa389c5892c16d68e78cb3204a029fe21265180e3de2478a6f8054
4
+ data.tar.gz: 3004a181239a458018f90258efe35940d1c466a890f92d7f221248970a13a3eb
5
5
  SHA512:
6
- metadata.gz: 8bfa14969fc8938ca888b4c44a4861c969f816e5611bdf0150cec25677c3a6bb4cbd34d8e8b5a8ff48d2483fe8ed1ae462358a67bcd40176b3184122c65b5e76
7
- data.tar.gz: 5afeb6406e28ea57c2a56d7f5e52f90739cb7be1b77648773d3365d52adf72f8ea6b97be16838aa428a32ce5cbc414acabe9b0d61196fc05a2027231062598f9
6
+ metadata.gz: a2482ecc51f3259b7ffd0b45c4239ef42ba961a83c8c93bc50fe60503857e033d5397dc41ee3fb1defbcb5320ebb134a6aeba7c8b4ba31fa6255f5c7f95b632c
7
+ data.tar.gz: 6f3d4b075a60c4e9ca8d01b5474568c4799df6584dc777b74489d2228d2c14d0009eca9def8f3ddda7e07527ab6fb79e80b6e9bee996025516a54256b0846b49
data/CHANGELOG.md CHANGED
@@ -1,5 +1,16 @@
1
1
  # Mindee Ruby API Library Changelog
2
2
 
3
+ ## v3.19.1 - 2025-01-21
4
+ ### Changes
5
+ * :bug: fix extras failing at document level if missing from prediction
6
+
7
+
8
+ ## v3.19.0 - 2025-01-14
9
+ ### Changes
10
+ * :sparkles: add support for US Mail V3
11
+ * :recycle: increase async retry timers
12
+
13
+
3
14
  ## v3.18.0 - 2024-12-13
4
15
  ### Changes
5
16
  * :sparkles: allow local downloading of remote sources
data/README.md CHANGED
@@ -162,6 +162,54 @@ Using the ruby bundler:
162
162
  bundle exec ruby ./bin/mindee.rb invoice path/to/your/file.ext
163
163
  ```
164
164
 
165
+
166
+ ### Enqueue and Parse a Webhook Response
167
+ This is an optional way of handling asynchronous APIs.
168
+
169
+ ```rb
170
+ require 'mindee'
171
+
172
+ # Init a new client
173
+ mindee_client = Mindee::Client.new(api_key: 'my-api-key')
174
+
175
+ # Load a file from disk
176
+ input_source = mindee_client.source_from_path('/path/to/the/file.ext')
177
+
178
+
179
+ # Parse the file
180
+ enqueue_response = mindee_client.enqueue(
181
+ input_source,
182
+ Mindee::Product::InternationalId::InternationalIdV2
183
+ )
184
+
185
+ job_id = enqueue_response.job.id
186
+
187
+ # Load the JSON string sent by the Mindee webhook POST callback.
188
+ # Reading the callback data will vary greatly depending on your HTTP server.
189
+ # This is therefore beyond the scope of this example.
190
+
191
+ local_response = Mindee::Input::LocalResponse.new(request.body.string)
192
+
193
+ # You can also use a File object as the input.
194
+ # FILE_PATH = File.join('path', 'to', 'file.json').freeze
195
+ # local_response = Mindee::Input::LocalResponse.new(FILE_PATH);
196
+
197
+ # Optional: verify the HMAC signature.
198
+ unless local_response.valid_hmac_signature?(my_secret_key, 'invalid signature')
199
+ raise "Invalid HMAC signature!"
200
+ end
201
+
202
+
203
+ # Deserialize the response:
204
+ result = mindee_client.load_prediction(
205
+ Mindee::Product::InternationalId::InternationalIdV2,
206
+ local_response
207
+ )
208
+
209
+ # Print a full summary of the parsed data in RST format
210
+ puts result.document
211
+ ```
212
+
165
213
  ## Further Reading
166
214
 
167
215
  There's more to it than that for those that need more features, or want to
@@ -0,0 +1,19 @@
1
+ require 'mindee'
2
+
3
+ # Init a new client
4
+ mindee_client = Mindee::Client.new(api_key: 'my-api-key')
5
+
6
+ # Load a file from disk
7
+ input_source = mindee_client.source_from_path('/path/to/the/file.ext')
8
+
9
+ # Parse the file
10
+ result = mindee_client.enqueue_and_parse(
11
+ input_source,
12
+ Mindee::Product::US::UsMail::UsMailV3
13
+ )
14
+
15
+ # Print a full summary of the parsed data in RST format
16
+ puts result.document
17
+
18
+ # Print the document-level parsed data
19
+ # puts result.document.inference.prediction
@@ -22,7 +22,7 @@ input_source = mindee_client.source_from_path('/path/to/the/file.ext')
22
22
  # Parse the file
23
23
  result = mindee_client.enqueue_and_parse(
24
24
  input_source,
25
- Mindee::Product::US::UsMail::UsMailV2
25
+ Mindee::Product::US::UsMail::UsMailV3
26
26
  )
27
27
 
28
28
  # Print a full summary of the parsed data in RST format
@@ -35,7 +35,20 @@ puts result.document
35
35
 
36
36
  **Output (RST):**
37
37
  ```rst
38
- :Sender Name: zed
38
+ ########
39
+ Document
40
+ ########
41
+ :Mindee ID: f9c36f59-977d-4ddc-9f2d-31c294c456ac
42
+ :Filename: default_sample.jpg
43
+
44
+ Inference
45
+ #########
46
+ :Product: mindee/us_mail v3.0
47
+ :Rotation applied: Yes
48
+
49
+ Prediction
50
+ ==========
51
+ :Sender Name: company zed
39
52
  :Sender Address:
40
53
  :City: Dallas
41
54
  :Complete Address: 54321 Elm Street, Dallas, Texas 54321
@@ -44,11 +57,12 @@ puts result.document
44
57
  :Street: 54321 Elm Street
45
58
  :Recipient Names: Jane Doe
46
59
  :Recipient Addresses:
47
- +-----------------+-------------------------------------+-------------------+-------------+------------------------+-------+---------------------------+
48
- | City | Complete Address | Is Address Change | Postal Code | Private Mailbox Number | State | Street |
49
- +=================+=====================================+===================+=============+========================+=======+===========================+
50
- | Detroit | 1234 Market Street PMB 4321, Det... | | 12345 | 4321 | MI | 1234 Market Street |
51
- +-----------------+-------------------------------------+-------------------+-------------+------------------------+-------+---------------------------+
60
+ +-----------------+-------------------------------------+-------------------+-------------+------------------------+-------+---------------------------+-----------------+
61
+ | City | Complete Address | Is Address Change | Postal Code | Private Mailbox Number | State | Street | Unit |
62
+ +=================+=====================================+===================+=============+========================+=======+===========================+=================+
63
+ | Detroit | 1234 Market Street PMB 4321, Det... | False | 12345 | 4321 | MI | 1234 Market Street | |
64
+ +-----------------+-------------------------------------+-------------------+-------------+------------------------+-------+---------------------------+-----------------+
65
+ :Return to Sender: False
52
66
  ```
53
67
 
54
68
  # Field Types
@@ -78,7 +92,7 @@ Fields which are specific to this product; they are not used in any other produc
78
92
  ### Recipient Addresses Field
79
93
  The addresses of the recipients.
80
94
 
81
- A `UsMailV2RecipientAddress` implements the following attributes:
95
+ A `UsMailV3RecipientAddress` implements the following attributes:
82
96
 
83
97
  * `city` (String): The city of the recipient's address.
84
98
  * `complete` (String): The complete address of the recipient.
@@ -87,12 +101,13 @@ A `UsMailV2RecipientAddress` implements the following attributes:
87
101
  * `private_mailbox_number` (String): The private mailbox number of the recipient's address.
88
102
  * `state` (String): Second part of the ISO 3166-2 code, consisting of two letters indicating the US State.
89
103
  * `street` (String): The street of the recipient's address.
104
+ * `unit` (String): The unit number of the recipient's address.
90
105
  Fields which are specific to this product; they are not used in any other product.
91
106
 
92
107
  ### Sender Address Field
93
108
  The address of the sender.
94
109
 
95
- A `UsMailV2SenderAddress` implements the following attributes:
110
+ A `UsMailV3SenderAddress` implements the following attributes:
96
111
 
97
112
  * `city` (String): The city of the sender's address.
98
113
  * `complete` (String): The complete address of the sender.
@@ -101,10 +116,17 @@ A `UsMailV2SenderAddress` implements the following attributes:
101
116
  * `street` (String): The street of the sender's address.
102
117
 
103
118
  # Attributes
104
- The following fields are extracted for US Mail V2:
119
+ The following fields are extracted for US Mail V3:
120
+
121
+ ## Return to Sender
122
+ **is_return_to_sender** ([BooleanField](#boolean-field)): Whether the mailing is marked as return to sender.
123
+
124
+ ```rb
125
+ puts result.document.inference.prediction.is_return_to_sender.value
126
+ ```
105
127
 
106
128
  ## Recipient Addresses
107
- **recipient_addresses** (Array<[UsMailV2RecipientAddress](#recipient-addresses-field)>): The addresses of the recipients.
129
+ **recipient_addresses** (Array<[UsMailV3RecipientAddress](#recipient-addresses-field)>): The addresses of the recipients.
108
130
 
109
131
  ```rb
110
132
  for recipient_addresses_elem in result.document.inference.prediction.recipient_addresses do
@@ -122,7 +144,7 @@ end
122
144
  ```
123
145
 
124
146
  ## Sender Address
125
- **sender_address** ([UsMailV2SenderAddress](#sender-address-field)): The address of the sender.
147
+ **sender_address** ([UsMailV3SenderAddress](#sender-address-field)): The address of the sender.
126
148
 
127
149
  ```rb
128
150
  puts result.document.inference.prediction.sender_address.value
data/lib/mindee/client.rb CHANGED
@@ -151,7 +151,7 @@ module Mindee
151
151
  # This performs a cropping operation on the server and will increase response time.
152
152
  # @param initial_delay_sec [Integer, Float] initial delay before polling. Defaults to 2.
153
153
  # @param delay_sec [Integer, Float] delay between polling attempts. Defaults to 1.5.
154
- # @param max_retries [Integer] maximum amount of retries. Defaults to 60.
154
+ # @param max_retries [Integer] maximum amount of retries. Defaults to 80.
155
155
  # @return [Mindee::Parsing::Common::ApiResponse]
156
156
  def enqueue_and_parse(
157
157
  input_source,
@@ -164,7 +164,7 @@ module Mindee
164
164
  cropper: false,
165
165
  initial_delay_sec: 2,
166
166
  delay_sec: 1.5,
167
- max_retries: 60
167
+ max_retries: 80
168
168
  )
169
169
  enqueue_res = enqueue(
170
170
  input_source,
@@ -61,8 +61,7 @@ module Mindee
61
61
  private
62
62
 
63
63
  def inject_full_text_ocr(raw_prediction)
64
- return unless raw_prediction.dig('inference', 'pages') &&
65
- raw_prediction['inference']['pages'][0]['extras']['full_text_ocr']
64
+ return unless raw_prediction.dig('inference', 'pages', 0, 'extras', 'full_text_ocr')
66
65
 
67
66
  full_text_ocr = String.new
68
67
  raw_prediction.dig('inference', 'pages').each do |page|
@@ -14,6 +14,12 @@ module Mindee
14
14
  def initialize(prediction, page_id = nil, reconstructed: false)
15
15
  super
16
16
  end
17
+
18
+ def to_s
19
+ return '' if value.nil?
20
+
21
+ value ? 'True' : 'False'
22
+ end
17
23
  end
18
24
  end
19
25
  end
@@ -6,7 +6,7 @@ module Mindee
6
6
  module Product
7
7
  module IND
8
8
  module IndianPassport
9
- # Passport - India API version 1.0 document data.
9
+ # Passport - India API version 1.2 document data.
10
10
  class IndianPassportV1Document < Mindee::Parsing::Common::Prediction
11
11
  include Mindee::Parsing::Standard
12
12
  # The first line of the address of the passport holder.
@@ -7,7 +7,7 @@ module Mindee
7
7
  module Product
8
8
  module IND
9
9
  module IndianPassport
10
- # Passport - India API version 1.0 page data.
10
+ # Passport - India API version 1.2 page data.
11
11
  class IndianPassportV1Page < Mindee::Parsing::Common::Page
12
12
  # @param prediction [Hash]
13
13
  def initialize(prediction)
@@ -0,0 +1,41 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../../../parsing'
4
+ require_relative 'us_mail_v3_document'
5
+ require_relative 'us_mail_v3_page'
6
+
7
+ module Mindee
8
+ module Product
9
+ module US
10
+ # US Mail module.
11
+ module UsMail
12
+ # US Mail API version 3 inference prediction.
13
+ class UsMailV3 < Mindee::Parsing::Common::Inference
14
+ @endpoint_name = 'us_mail'
15
+ @endpoint_version = '3'
16
+
17
+ # @param prediction [Hash]
18
+ def initialize(prediction)
19
+ super
20
+ @prediction = UsMailV3Document.new(prediction['prediction'], nil)
21
+ @pages = []
22
+ prediction['pages'].each do |page|
23
+ if page.key?('prediction') && !page['prediction'].nil? && !page['prediction'].empty?
24
+ @pages.push(UsMailV3Page.new(page))
25
+ end
26
+ end
27
+ end
28
+
29
+ class << self
30
+ # Name of the endpoint for this product.
31
+ # @return [String]
32
+ attr_reader :endpoint_name
33
+ # Version for this product.
34
+ # @return [String]
35
+ attr_reader :endpoint_version
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,107 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../../../parsing'
4
+ require_relative 'us_mail_v3_sender_address'
5
+ require_relative 'us_mail_v3_recipient_address'
6
+
7
+ module Mindee
8
+ module Product
9
+ module US
10
+ module UsMail
11
+ # US Mail API version 3.0 document data.
12
+ class UsMailV3Document < Mindee::Parsing::Common::Prediction
13
+ include Mindee::Parsing::Standard
14
+ # Whether the mailing is marked as return to sender.
15
+ # @return [Mindee::Parsing::Standard::BooleanField]
16
+ attr_reader :is_return_to_sender
17
+ # The addresses of the recipients.
18
+ # @return [Array<Mindee::Product::US::UsMail::UsMailV3RecipientAddress>]
19
+ attr_reader :recipient_addresses
20
+ # The names of the recipients.
21
+ # @return [Array<Mindee::Parsing::Standard::StringField>]
22
+ attr_reader :recipient_names
23
+ # The address of the sender.
24
+ # @return [Mindee::Product::US::UsMail::UsMailV3SenderAddress]
25
+ attr_reader :sender_address
26
+ # The name of the sender.
27
+ # @return [Mindee::Parsing::Standard::StringField]
28
+ attr_reader :sender_name
29
+
30
+ # @param prediction [Hash]
31
+ # @param page_id [Integer, nil]
32
+ def initialize(prediction, page_id)
33
+ super()
34
+ @is_return_to_sender = BooleanField.new(prediction['is_return_to_sender'], page_id)
35
+ @recipient_addresses = []
36
+ prediction['recipient_addresses'].each do |item|
37
+ @recipient_addresses.push(UsMailV3RecipientAddress.new(item, page_id))
38
+ end
39
+ @recipient_names = []
40
+ prediction['recipient_names'].each do |item|
41
+ @recipient_names.push(StringField.new(item, page_id))
42
+ end
43
+ @sender_address = UsMailV3SenderAddress.new(prediction['sender_address'], page_id)
44
+ @sender_name = StringField.new(prediction['sender_name'], page_id)
45
+ end
46
+
47
+ # @return [String]
48
+ def to_s
49
+ sender_address = @sender_address.to_s
50
+ recipient_names = @recipient_names.join("\n #{' ' * 17}")
51
+ recipient_addresses = recipient_addresses_to_s
52
+ out_str = String.new
53
+ out_str << "\n:Sender Name: #{@sender_name}".rstrip
54
+ out_str << "\n:Sender Address:"
55
+ out_str << sender_address
56
+ out_str << "\n:Recipient Names: #{recipient_names}".rstrip
57
+ out_str << "\n:Recipient Addresses:"
58
+ out_str << recipient_addresses
59
+ out_str << "\n:Return to Sender: #{@is_return_to_sender}".rstrip
60
+ out_str[1..].to_s
61
+ end
62
+
63
+ private
64
+
65
+ # @param char [String]
66
+ # @return [String]
67
+ def recipient_addresses_separator(char)
68
+ out_str = String.new
69
+ out_str << ' '
70
+ out_str << "+#{char * 17}"
71
+ out_str << "+#{char * 37}"
72
+ out_str << "+#{char * 19}"
73
+ out_str << "+#{char * 13}"
74
+ out_str << "+#{char * 24}"
75
+ out_str << "+#{char * 7}"
76
+ out_str << "+#{char * 27}"
77
+ out_str << "+#{char * 17}"
78
+ out_str << '+'
79
+ out_str
80
+ end
81
+
82
+ # @return [String]
83
+ def recipient_addresses_to_s
84
+ return '' if @recipient_addresses.empty?
85
+
86
+ line_items = @recipient_addresses.map(&:to_table_line).join("\n#{recipient_addresses_separator('-')}\n ")
87
+ out_str = String.new
88
+ out_str << "\n#{recipient_addresses_separator('-')}"
89
+ out_str << "\n |"
90
+ out_str << ' City |'
91
+ out_str << ' Complete Address |'
92
+ out_str << ' Is Address Change |'
93
+ out_str << ' Postal Code |'
94
+ out_str << ' Private Mailbox Number |'
95
+ out_str << ' State |'
96
+ out_str << ' Street |'
97
+ out_str << ' Unit |'
98
+ out_str << "\n#{recipient_addresses_separator('=')}"
99
+ out_str << "\n #{line_items}"
100
+ out_str << "\n#{recipient_addresses_separator('-')}"
101
+ out_str
102
+ end
103
+ end
104
+ end
105
+ end
106
+ end
107
+ end
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../../../parsing'
4
+ require_relative 'us_mail_v3_document'
5
+
6
+ module Mindee
7
+ module Product
8
+ module US
9
+ module UsMail
10
+ # US Mail API version 3.0 page data.
11
+ class UsMailV3Page < Mindee::Parsing::Common::Page
12
+ # @param prediction [Hash]
13
+ def initialize(prediction)
14
+ super(prediction)
15
+ @prediction = UsMailV3PagePrediction.new(
16
+ prediction['prediction'],
17
+ prediction['id']
18
+ )
19
+ end
20
+ end
21
+
22
+ # US Mail V3 page prediction.
23
+ class UsMailV3PagePrediction < UsMailV3Document
24
+ # @return [String]
25
+ def to_s
26
+ out_str = String.new
27
+ out_str << "\n#{super}"
28
+ out_str
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,113 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../../../parsing'
4
+
5
+ module Mindee
6
+ module Product
7
+ module US
8
+ module UsMail
9
+ # The addresses of the recipients.
10
+ class UsMailV3RecipientAddress < Mindee::Parsing::Standard::FeatureField
11
+ include Mindee::Parsing::Standard
12
+ # The city of the recipient's address.
13
+ # @return [String]
14
+ attr_reader :city
15
+ # The complete address of the recipient.
16
+ # @return [String]
17
+ attr_reader :complete
18
+ # Indicates if the recipient's address is a change of address.
19
+ # @return [Boolean]
20
+ attr_reader :is_address_change
21
+ # The postal code of the recipient's address.
22
+ # @return [String]
23
+ attr_reader :postal_code
24
+ # The private mailbox number of the recipient's address.
25
+ # @return [String]
26
+ attr_reader :private_mailbox_number
27
+ # Second part of the ISO 3166-2 code, consisting of two letters indicating the US State.
28
+ # @return [String]
29
+ attr_reader :state
30
+ # The street of the recipient's address.
31
+ # @return [String]
32
+ attr_reader :street
33
+ # The unit number of the recipient's address.
34
+ # @return [String]
35
+ attr_reader :unit
36
+
37
+ # @param prediction [Hash]
38
+ # @param page_id [Integer, nil]
39
+ def initialize(prediction, page_id)
40
+ super(prediction, page_id)
41
+ @city = prediction['city']
42
+ @complete = prediction['complete']
43
+ @is_address_change = prediction['is_address_change']
44
+ @postal_code = prediction['postal_code']
45
+ @private_mailbox_number = prediction['private_mailbox_number']
46
+ @state = prediction['state']
47
+ @street = prediction['street']
48
+ @unit = prediction['unit']
49
+ @page_id = page_id
50
+ end
51
+
52
+ # @return [Hash]
53
+ def printable_values
54
+ printable = {}
55
+ printable[:city] = format_for_display(@city)
56
+ printable[:complete] = format_for_display(@complete)
57
+ printable[:is_address_change] = format_for_display(@is_address_change)
58
+ printable[:postal_code] = format_for_display(@postal_code)
59
+ printable[:private_mailbox_number] = format_for_display(@private_mailbox_number)
60
+ printable[:state] = format_for_display(@state)
61
+ printable[:street] = format_for_display(@street)
62
+ printable[:unit] = format_for_display(@unit)
63
+ printable
64
+ end
65
+
66
+ # @return [Hash]
67
+ def table_printable_values
68
+ printable = {}
69
+ printable[:city] = format_for_display(@city, 15)
70
+ printable[:complete] = format_for_display(@complete, 35)
71
+ printable[:is_address_change] = format_for_display(@is_address_change, nil)
72
+ printable[:postal_code] = format_for_display(@postal_code, nil)
73
+ printable[:private_mailbox_number] = format_for_display(@private_mailbox_number, nil)
74
+ printable[:state] = format_for_display(@state, nil)
75
+ printable[:street] = format_for_display(@street, 25)
76
+ printable[:unit] = format_for_display(@unit, 15)
77
+ printable
78
+ end
79
+
80
+ # @return [String]
81
+ def to_table_line
82
+ printable = table_printable_values
83
+ out_str = String.new
84
+ out_str << format('| %- 16s', printable[:city])
85
+ out_str << format('| %- 36s', printable[:complete])
86
+ out_str << format('| %- 18s', printable[:is_address_change])
87
+ out_str << format('| %- 12s', printable[:postal_code])
88
+ out_str << format('| %- 23s', printable[:private_mailbox_number])
89
+ out_str << format('| %- 6s', printable[:state])
90
+ out_str << format('| %- 26s', printable[:street])
91
+ out_str << format('| %- 16s', printable[:unit])
92
+ out_str << '|'
93
+ end
94
+
95
+ # @return [String]
96
+ def to_s
97
+ printable = printable_values
98
+ out_str = String.new
99
+ out_str << "\n :City: #{printable[:city]}"
100
+ out_str << "\n :Complete Address: #{printable[:complete]}"
101
+ out_str << "\n :Is Address Change: #{printable[:is_address_change]}"
102
+ out_str << "\n :Postal Code: #{printable[:postal_code]}"
103
+ out_str << "\n :Private Mailbox Number: #{printable[:private_mailbox_number]}"
104
+ out_str << "\n :State: #{printable[:state]}"
105
+ out_str << "\n :Street: #{printable[:street]}"
106
+ out_str << "\n :Unit: #{printable[:unit]}"
107
+ out_str
108
+ end
109
+ end
110
+ end
111
+ end
112
+ end
113
+ end
@@ -0,0 +1,66 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../../../parsing'
4
+
5
+ module Mindee
6
+ module Product
7
+ module US
8
+ module UsMail
9
+ # The address of the sender.
10
+ class UsMailV3SenderAddress < Mindee::Parsing::Standard::FeatureField
11
+ include Mindee::Parsing::Standard
12
+ # The city of the sender's address.
13
+ # @return [String]
14
+ attr_reader :city
15
+ # The complete address of the sender.
16
+ # @return [String]
17
+ attr_reader :complete
18
+ # The postal code of the sender's address.
19
+ # @return [String]
20
+ attr_reader :postal_code
21
+ # Second part of the ISO 3166-2 code, consisting of two letters indicating the US State.
22
+ # @return [String]
23
+ attr_reader :state
24
+ # The street of the sender's address.
25
+ # @return [String]
26
+ attr_reader :street
27
+
28
+ # @param prediction [Hash]
29
+ # @param page_id [Integer, nil]
30
+ def initialize(prediction, page_id)
31
+ super(prediction, page_id)
32
+ @city = prediction['city']
33
+ @complete = prediction['complete']
34
+ @postal_code = prediction['postal_code']
35
+ @state = prediction['state']
36
+ @street = prediction['street']
37
+ @page_id = page_id
38
+ end
39
+
40
+ # @return [Hash]
41
+ def printable_values
42
+ printable = {}
43
+ printable[:city] = format_for_display(@city)
44
+ printable[:complete] = format_for_display(@complete)
45
+ printable[:postal_code] = format_for_display(@postal_code)
46
+ printable[:state] = format_for_display(@state)
47
+ printable[:street] = format_for_display(@street)
48
+ printable
49
+ end
50
+
51
+ # @return [String]
52
+ def to_s
53
+ printable = printable_values
54
+ out_str = String.new
55
+ out_str << "\n :City: #{printable[:city]}"
56
+ out_str << "\n :Complete Address: #{printable[:complete]}"
57
+ out_str << "\n :Postal Code: #{printable[:postal_code]}"
58
+ out_str << "\n :State: #{printable[:state]}"
59
+ out_str << "\n :Street: #{printable[:street]}"
60
+ out_str
61
+ end
62
+ end
63
+ end
64
+ end
65
+ end
66
+ end
@@ -36,4 +36,5 @@ require_relative 'product/us/bank_check/bank_check_v1'
36
36
  require_relative 'product/us/driver_license/driver_license_v1'
37
37
  require_relative 'product/us/healthcare_card/healthcare_card_v1'
38
38
  require_relative 'product/us/us_mail/us_mail_v2'
39
+ require_relative 'product/us/us_mail/us_mail_v3'
39
40
  require_relative 'product/us/w9/w9_v1'
@@ -3,7 +3,7 @@
3
3
  # Mindee
4
4
  module Mindee
5
5
  # Current version.
6
- VERSION = '3.18.0'
6
+ VERSION = '3.19.1'
7
7
 
8
8
  # Finds and return the current platform.
9
9
  # @return [String]
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mindee
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.18.0
4
+ version: 3.19.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mindee, SA
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-12-13 00:00:00.000000000 Z
11
+ date: 2025-01-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: marcel
@@ -198,6 +198,7 @@ files:
198
198
  - docs/code_samples/us_driver_license_v1.txt
199
199
  - docs/code_samples/us_healthcare_cards_v1_async.txt
200
200
  - docs/code_samples/us_mail_v2_async.txt
201
+ - docs/code_samples/us_mail_v3_async.txt
201
202
  - docs/code_samples/us_w9_v1.txt
202
203
  - docs/code_samples/workflow_execution.txt
203
204
  - docs/cropper_v1.md
@@ -223,7 +224,7 @@ files:
223
224
  - docs/payslip_fra_v3.md
224
225
  - docs/resume_v1.md
225
226
  - docs/us_healthcare_cards_v1.md
226
- - docs/us_mail_v2.md
227
+ - docs/us_mail_v3.md
227
228
  - docs/us_w9_v1.md
228
229
  - examples/auto_invoice_splitter_extraction.rb
229
230
  - examples/auto_multi_receipts_detector_extraction.rb
@@ -470,6 +471,11 @@ files:
470
471
  - lib/mindee/product/us/us_mail/us_mail_v2_page.rb
471
472
  - lib/mindee/product/us/us_mail/us_mail_v2_recipient_address.rb
472
473
  - lib/mindee/product/us/us_mail/us_mail_v2_sender_address.rb
474
+ - lib/mindee/product/us/us_mail/us_mail_v3.rb
475
+ - lib/mindee/product/us/us_mail/us_mail_v3_document.rb
476
+ - lib/mindee/product/us/us_mail/us_mail_v3_page.rb
477
+ - lib/mindee/product/us/us_mail/us_mail_v3_recipient_address.rb
478
+ - lib/mindee/product/us/us_mail/us_mail_v3_sender_address.rb
473
479
  - lib/mindee/product/us/w9/w9_v1.rb
474
480
  - lib/mindee/product/us/w9/w9_v1_document.rb
475
481
  - lib/mindee/product/us/w9/w9_v1_page.rb
@@ -483,7 +489,7 @@ metadata:
483
489
  source_code_uri: https://github.com/mindee/mindee-api-ruby
484
490
  changelog_uri: https://github.com/mindee/mindee-api-ruby/blob/main/CHANGELOG.md
485
491
  rubygems_mfa_required: 'true'
486
- post_install_message:
492
+ post_install_message:
487
493
  rdoc_options: []
488
494
  require_paths:
489
495
  - lib
@@ -499,7 +505,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
499
505
  version: '0'
500
506
  requirements: []
501
507
  rubygems_version: 3.1.6
502
- signing_key:
508
+ signing_key:
503
509
  specification_version: 4
504
510
  summary: Mindee API Helper Library for Ruby
505
511
  test_files: []