mindee 3.4.0 → 3.5.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 (65) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +20 -0
  3. data/README.md +4 -0
  4. data/bin/mindee.rb +39 -15
  5. data/docs/bank_statement_fr_v1.md +175 -0
  6. data/docs/carte_grise_v1.md +4 -4
  7. data/docs/code_samples/bank_statement_fr_v1_async.txt +19 -0
  8. data/docs/code_samples/default.txt +19 -19
  9. data/docs/code_samples/default_async.txt +25 -0
  10. data/docs/code_samples/eu_driver_license_v1.txt +19 -0
  11. data/docs/code_samples/international_id_v1_async.txt +19 -0
  12. data/docs/code_samples/international_id_v2_async.txt +19 -0
  13. data/docs/eu_driver_license_v1.md +223 -0
  14. data/docs/financial_document_v1.md +48 -40
  15. data/docs/generated_v1.md +90 -0
  16. data/docs/invoices_v4.md +4 -1
  17. data/docs/proof_of_address_v1.md +4 -4
  18. data/docs/us_driver_license_v1.md +2 -2
  19. data/lib/mindee/client.rb +5 -3
  20. data/lib/mindee/http/endpoint.rb +13 -12
  21. data/lib/mindee/input/sources.rb +28 -5
  22. data/lib/mindee/parsing/common/inference.rb +3 -1
  23. data/lib/mindee/parsing/generated/generated_list_field.rb +58 -0
  24. data/lib/mindee/parsing/generated/generated_object_field.rb +109 -0
  25. data/lib/mindee/parsing/generated.rb +4 -0
  26. data/lib/mindee/parsing.rb +1 -0
  27. data/lib/mindee/product/barcode_reader/barcode_reader_v1.rb +3 -1
  28. data/lib/mindee/product/cropper/cropper_v1.rb +3 -1
  29. data/lib/mindee/product/eu/driver_license/driver_license_v1.rb +41 -0
  30. data/lib/mindee/product/eu/driver_license/driver_license_v1_document.rb +88 -0
  31. data/lib/mindee/product/eu/driver_license/driver_license_v1_page.rb +53 -0
  32. data/lib/mindee/product/eu/license_plate/license_plate_v1.rb +3 -1
  33. data/lib/mindee/product/financial_document/financial_document_v1.rb +3 -1
  34. data/lib/mindee/product/fr/bank_account_details/bank_account_details_v1.rb +3 -1
  35. data/lib/mindee/product/fr/bank_account_details/bank_account_details_v2.rb +3 -1
  36. data/lib/mindee/product/fr/bank_statement/bank_statement_v1.rb +41 -0
  37. data/lib/mindee/product/fr/bank_statement/bank_statement_v1_document.rb +130 -0
  38. data/lib/mindee/product/fr/bank_statement/bank_statement_v1_page.rb +34 -0
  39. data/lib/mindee/product/fr/bank_statement/bank_statement_v1_transaction.rb +64 -0
  40. data/lib/mindee/product/fr/carte_grise/carte_grise_v1.rb +3 -1
  41. data/lib/mindee/product/fr/carte_vitale/carte_vitale_v1.rb +3 -1
  42. data/lib/mindee/product/fr/id_card/id_card_v1.rb +3 -1
  43. data/lib/mindee/product/fr/id_card/id_card_v2.rb +3 -1
  44. data/lib/mindee/product/generated/generated_v1.rb +38 -0
  45. data/lib/mindee/product/generated/generated_v1_document.rb +35 -0
  46. data/lib/mindee/product/generated/generated_v1_page.rb +51 -0
  47. data/lib/mindee/product/generated/generated_v1_prediction.rb +114 -0
  48. data/lib/mindee/product/international_id/international_id_v1.rb +39 -0
  49. data/lib/mindee/product/international_id/international_id_v1_document.rb +109 -0
  50. data/lib/mindee/product/international_id/international_id_v1_page.rb +32 -0
  51. data/lib/mindee/product/international_id/international_id_v2.rb +39 -0
  52. data/lib/mindee/product/international_id/international_id_v2_document.rb +119 -0
  53. data/lib/mindee/product/international_id/international_id_v2_page.rb +32 -0
  54. data/lib/mindee/product/invoice/invoice_v4.rb +3 -1
  55. data/lib/mindee/product/multi_receipts_detector/multi_receipts_detector_v1.rb +3 -1
  56. data/lib/mindee/product/passport/passport_v1.rb +3 -1
  57. data/lib/mindee/product/proof_of_address/proof_of_address_v1.rb +3 -1
  58. data/lib/mindee/product/receipt/receipt_v5.rb +3 -1
  59. data/lib/mindee/product/us/bank_check/bank_check_v1.rb +3 -1
  60. data/lib/mindee/product/us/driver_license/driver_license_v1.rb +3 -1
  61. data/lib/mindee/product/us/w9/w9_v1.rb +3 -1
  62. data/lib/mindee/product.rb +5 -0
  63. data/lib/mindee/version.rb +1 -1
  64. data/lib/mindee.rb +4 -0
  65. metadata +30 -2
@@ -0,0 +1,119 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../../parsing'
4
+
5
+ module Mindee
6
+ module Product
7
+ module InternationalId
8
+ # International ID V2 document prediction.
9
+ class InternationalIdV2Document < Mindee::Parsing::Common::Prediction
10
+ include Mindee::Parsing::Standard
11
+ # The physical address of the document holder.
12
+ # @return [Mindee::Parsing::Standard::StringField]
13
+ attr_reader :address
14
+ # The date of birth of the document holder.
15
+ # @return [Mindee::Parsing::Standard::DateField]
16
+ attr_reader :birth_date
17
+ # The place of birth of the document holder.
18
+ # @return [Mindee::Parsing::Standard::StringField]
19
+ attr_reader :birth_place
20
+ # The country where the document was issued.
21
+ # @return [Mindee::Parsing::Standard::StringField]
22
+ attr_reader :country_of_issue
23
+ # The unique identifier assigned to the document.
24
+ # @return [Mindee::Parsing::Standard::StringField]
25
+ attr_reader :document_number
26
+ # The type of personal identification document.
27
+ # @return [Mindee::Parsing::Standard::ClassificationField]
28
+ attr_reader :document_type
29
+ # The date when the document becomes invalid.
30
+ # @return [Mindee::Parsing::Standard::DateField]
31
+ attr_reader :expiry_date
32
+ # The list of the document holder's given names.
33
+ # @return [Array<Mindee::Parsing::Standard::StringField>]
34
+ attr_reader :given_names
35
+ # The date when the document was issued.
36
+ # @return [Mindee::Parsing::Standard::DateField]
37
+ attr_reader :issue_date
38
+ # The Machine Readable Zone, first line.
39
+ # @return [Mindee::Parsing::Standard::StringField]
40
+ attr_reader :mrz_line1
41
+ # The Machine Readable Zone, second line.
42
+ # @return [Mindee::Parsing::Standard::StringField]
43
+ attr_reader :mrz_line2
44
+ # The Machine Readable Zone, third line.
45
+ # @return [Mindee::Parsing::Standard::StringField]
46
+ attr_reader :mrz_line3
47
+ # The country of citizenship of the document holder.
48
+ # @return [Mindee::Parsing::Standard::StringField]
49
+ attr_reader :nationality
50
+ # The unique identifier assigned to the document holder.
51
+ # @return [Mindee::Parsing::Standard::StringField]
52
+ attr_reader :personal_number
53
+ # The biological sex of the document holder.
54
+ # @return [Mindee::Parsing::Standard::StringField]
55
+ attr_reader :sex
56
+ # The state or territory where the document was issued.
57
+ # @return [Mindee::Parsing::Standard::StringField]
58
+ attr_reader :state_of_issue
59
+ # The list of the document holder's family names.
60
+ # @return [Array<Mindee::Parsing::Standard::StringField>]
61
+ attr_reader :surnames
62
+
63
+ # @param prediction [Hash]
64
+ # @param page_id [Integer, nil]
65
+ def initialize(prediction, page_id)
66
+ super()
67
+ @address = StringField.new(prediction['address'], page_id)
68
+ @birth_date = DateField.new(prediction['birth_date'], page_id)
69
+ @birth_place = StringField.new(prediction['birth_place'], page_id)
70
+ @country_of_issue = StringField.new(prediction['country_of_issue'], page_id)
71
+ @document_number = StringField.new(prediction['document_number'], page_id)
72
+ @document_type = ClassificationField.new(prediction['document_type'], page_id)
73
+ @expiry_date = DateField.new(prediction['expiry_date'], page_id)
74
+ @given_names = []
75
+ prediction['given_names'].each do |item|
76
+ @given_names.push(StringField.new(item, page_id))
77
+ end
78
+ @issue_date = DateField.new(prediction['issue_date'], page_id)
79
+ @mrz_line1 = StringField.new(prediction['mrz_line1'], page_id)
80
+ @mrz_line2 = StringField.new(prediction['mrz_line2'], page_id)
81
+ @mrz_line3 = StringField.new(prediction['mrz_line3'], page_id)
82
+ @nationality = StringField.new(prediction['nationality'], page_id)
83
+ @personal_number = StringField.new(prediction['personal_number'], page_id)
84
+ @sex = StringField.new(prediction['sex'], page_id)
85
+ @state_of_issue = StringField.new(prediction['state_of_issue'], page_id)
86
+ @surnames = []
87
+ prediction['surnames'].each do |item|
88
+ @surnames.push(StringField.new(item, page_id))
89
+ end
90
+ end
91
+
92
+ # @return [String]
93
+ def to_s
94
+ surnames = @surnames.join("\n #{' ' * 10}")
95
+ given_names = @given_names.join("\n #{' ' * 13}")
96
+ out_str = String.new
97
+ out_str << "\n:Document Type: #{@document_type}".rstrip
98
+ out_str << "\n:Document Number: #{@document_number}".rstrip
99
+ out_str << "\n:Surnames: #{surnames}".rstrip
100
+ out_str << "\n:Given Names: #{given_names}".rstrip
101
+ out_str << "\n:Sex: #{@sex}".rstrip
102
+ out_str << "\n:Birth Date: #{@birth_date}".rstrip
103
+ out_str << "\n:Birth Place: #{@birth_place}".rstrip
104
+ out_str << "\n:Nationality: #{@nationality}".rstrip
105
+ out_str << "\n:Personal Number: #{@personal_number}".rstrip
106
+ out_str << "\n:Country of Issue: #{@country_of_issue}".rstrip
107
+ out_str << "\n:State of Issue: #{@state_of_issue}".rstrip
108
+ out_str << "\n:Issue Date: #{@issue_date}".rstrip
109
+ out_str << "\n:Expiration Date: #{@expiry_date}".rstrip
110
+ out_str << "\n:Address: #{@address}".rstrip
111
+ out_str << "\n:MRZ Line 1: #{@mrz_line1}".rstrip
112
+ out_str << "\n:MRZ Line 2: #{@mrz_line2}".rstrip
113
+ out_str << "\n:MRZ Line 3: #{@mrz_line3}".rstrip
114
+ out_str[1..].to_s
115
+ end
116
+ end
117
+ end
118
+ end
119
+ end
@@ -0,0 +1,32 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../../parsing'
4
+ require_relative 'international_id_v2_document'
5
+
6
+ module Mindee
7
+ module Product
8
+ module InternationalId
9
+ # International ID V2 page.
10
+ class InternationalIdV2Page < Mindee::Parsing::Common::Page
11
+ # @param prediction [Hash]
12
+ def initialize(prediction)
13
+ super(prediction)
14
+ @prediction = InternationalIdV2PagePrediction.new(
15
+ prediction['prediction'],
16
+ prediction['id']
17
+ )
18
+ end
19
+ end
20
+
21
+ # International ID V2 page prediction.
22
+ class InternationalIdV2PagePrediction < InternationalIdV2Document
23
+ # @return [String]
24
+ def to_s
25
+ out_str = String.new
26
+ out_str << "\n#{super}"
27
+ out_str
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
@@ -19,7 +19,9 @@ module Mindee
19
19
  @prediction = InvoiceV4Document.new(prediction['prediction'], nil)
20
20
  @pages = []
21
21
  prediction['pages'].each do |page|
22
- @pages.push(InvoiceV4Page.new(page))
22
+ if page.key?('prediction') && !page['prediction'].nil? && !page['prediction'].empty?
23
+ @pages.push(InvoiceV4Page.new(page))
24
+ end
23
25
  end
24
26
  end
25
27
 
@@ -19,7 +19,9 @@ module Mindee
19
19
  @prediction = MultiReceiptsDetectorV1Document.new(prediction['prediction'], nil)
20
20
  @pages = []
21
21
  prediction['pages'].each do |page|
22
- @pages.push(MultiReceiptsDetectorV1Page.new(page))
22
+ if page.key?('prediction') && !page['prediction'].nil? && !page['prediction'].empty?
23
+ @pages.push(MultiReceiptsDetectorV1Page.new(page))
24
+ end
23
25
  end
24
26
  end
25
27
 
@@ -19,7 +19,9 @@ module Mindee
19
19
  @prediction = PassportV1Document.new(prediction['prediction'], nil)
20
20
  @pages = []
21
21
  prediction['pages'].each do |page|
22
- @pages.push(PassportV1Page.new(page))
22
+ if page.key?('prediction') && !page['prediction'].nil? && !page['prediction'].empty?
23
+ @pages.push(PassportV1Page.new(page))
24
+ end
23
25
  end
24
26
  end
25
27
 
@@ -19,7 +19,9 @@ module Mindee
19
19
  @prediction = ProofOfAddressV1Document.new(prediction['prediction'], nil)
20
20
  @pages = []
21
21
  prediction['pages'].each do |page|
22
- @pages.push(ProofOfAddressV1Page.new(page))
22
+ if page.key?('prediction') && !page['prediction'].nil? && !page['prediction'].empty?
23
+ @pages.push(ProofOfAddressV1Page.new(page))
24
+ end
23
25
  end
24
26
  end
25
27
 
@@ -19,7 +19,9 @@ module Mindee
19
19
  @prediction = ReceiptV5Document.new(prediction['prediction'], nil)
20
20
  @pages = []
21
21
  prediction['pages'].each do |page|
22
- @pages.push(ReceiptV5Page.new(page))
22
+ if page.key?('prediction') && !page['prediction'].nil? && !page['prediction'].empty?
23
+ @pages.push(ReceiptV5Page.new(page))
24
+ end
23
25
  end
24
26
  end
25
27
 
@@ -20,7 +20,9 @@ module Mindee
20
20
  @prediction = BankCheckV1Document.new(prediction['prediction'], nil)
21
21
  @pages = []
22
22
  prediction['pages'].each do |page|
23
- @pages.push(BankCheckV1Page.new(page))
23
+ if page.key?('prediction') && !page['prediction'].nil? && !page['prediction'].empty?
24
+ @pages.push(BankCheckV1Page.new(page))
25
+ end
24
26
  end
25
27
  end
26
28
 
@@ -20,7 +20,9 @@ module Mindee
20
20
  @prediction = DriverLicenseV1Document.new(prediction['prediction'], nil)
21
21
  @pages = []
22
22
  prediction['pages'].each do |page|
23
- @pages.push(DriverLicenseV1Page.new(page))
23
+ if page.key?('prediction') && !page['prediction'].nil? && !page['prediction'].empty?
24
+ @pages.push(DriverLicenseV1Page.new(page))
25
+ end
24
26
  end
25
27
  end
26
28
 
@@ -20,7 +20,9 @@ module Mindee
20
20
  @prediction = W9V1Document.new
21
21
  @pages = []
22
22
  prediction['pages'].each do |page|
23
- @pages.push(W9V1Page.new(page))
23
+ if page.key?('prediction') && !page['prediction'].nil? && !page['prediction'].empty?
24
+ @pages.push(W9V1Page.new(page))
25
+ end
24
26
  end
25
27
  end
26
28
 
@@ -11,13 +11,18 @@ require_relative 'product/passport/passport_v1'
11
11
  require_relative 'product/receipt/receipt_v4'
12
12
  require_relative 'product/receipt/receipt_v5'
13
13
  require_relative 'product/eu/license_plate/license_plate_v1'
14
+ require_relative 'product/eu/driver_license/driver_license_v1'
14
15
  require_relative 'product/fr/bank_account_details/bank_account_details_v1'
15
16
  require_relative 'product/fr/bank_account_details/bank_account_details_v2'
17
+ require_relative 'product/fr/bank_statement/bank_statement_v1'
16
18
  require_relative 'product/fr/carte_vitale/carte_vitale_v1'
17
19
  require_relative 'product/fr/id_card/id_card_v1'
18
20
  require_relative 'product/fr/id_card/id_card_v2'
19
21
  require_relative 'product/fr/carte_grise/carte_grise_v1'
22
+ require_relative 'product/generated/generated_v1'
20
23
  require_relative 'product/invoice_splitter/invoice_splitter_v1'
24
+ require_relative 'product/international_id/international_id_v1'
25
+ require_relative 'product/international_id/international_id_v2'
21
26
  require_relative 'product/us/bank_check/bank_check_v1'
22
27
  require_relative 'product/us/driver_license/driver_license_v1'
23
28
  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.4.0'
6
+ VERSION = '3.5.0'
7
7
 
8
8
  # Finds and return the current platform.
9
9
  # @return [String]
data/lib/mindee.rb CHANGED
@@ -31,6 +31,10 @@ module Mindee
31
31
  # Standard fields and functions.
32
32
  module Standard
33
33
  end
34
+
35
+ # Generated fields and functions.
36
+ module Generated
37
+ end
34
38
  end
35
39
 
36
40
  # Document input-related internals.
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.4.0
4
+ version: 3.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mindee, SA
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-01-30 00:00:00.000000000 Z
11
+ date: 2024-02-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: marcel
@@ -119,23 +119,29 @@ files:
119
119
  - bin/mindee.rb
120
120
  - docs/bank_account_details_v2.md
121
121
  - docs/bank_check_v1.md
122
+ - docs/bank_statement_fr_v1.md
122
123
  - docs/barcode_reader_v1.md
123
124
  - docs/carte_grise_v1.md
124
125
  - docs/carte_vitale_v1.md
125
126
  - docs/code_samples/bank_account_details_v1.txt
126
127
  - docs/code_samples/bank_account_details_v2.txt
127
128
  - docs/code_samples/bank_check_v1.txt
129
+ - docs/code_samples/bank_statement_fr_v1_async.txt
128
130
  - docs/code_samples/barcode_reader_v1.txt
129
131
  - docs/code_samples/carte_grise_v1.txt
130
132
  - docs/code_samples/carte_vitale_v1.txt
131
133
  - docs/code_samples/cropper_v1.txt
132
134
  - docs/code_samples/custom_v1.txt
133
135
  - docs/code_samples/default.txt
136
+ - docs/code_samples/default_async.txt
137
+ - docs/code_samples/eu_driver_license_v1.txt
134
138
  - docs/code_samples/expense_receipts_v4.txt
135
139
  - docs/code_samples/expense_receipts_v5.txt
136
140
  - docs/code_samples/financial_document_v1.txt
137
141
  - docs/code_samples/idcard_fr_v1.txt
138
142
  - docs/code_samples/idcard_fr_v2.txt
143
+ - docs/code_samples/international_id_v1_async.txt
144
+ - docs/code_samples/international_id_v2_async.txt
139
145
  - docs/code_samples/invoice_splitter_v1_async.txt
140
146
  - docs/code_samples/invoices_v4.txt
141
147
  - docs/code_samples/license_plates_v1.txt
@@ -146,8 +152,10 @@ files:
146
152
  - docs/code_samples/us_w9_v1.txt
147
153
  - docs/cropper_v1.md
148
154
  - docs/custom_v1.md
155
+ - docs/eu_driver_license_v1.md
149
156
  - docs/expense_receipts_v5.md
150
157
  - docs/financial_document_v1.md
158
+ - docs/generated_v1.md
151
159
  - docs/getting_started.md
152
160
  - docs/idcard_fr_v2.md
153
161
  - docs/invoice_splitter_v1.md
@@ -187,6 +195,9 @@ files:
187
195
  - lib/mindee/parsing/custom.rb
188
196
  - lib/mindee/parsing/custom/classification_field.rb
189
197
  - lib/mindee/parsing/custom/list_field.rb
198
+ - lib/mindee/parsing/generated.rb
199
+ - lib/mindee/parsing/generated/generated_list_field.rb
200
+ - lib/mindee/parsing/generated/generated_object_field.rb
190
201
  - lib/mindee/parsing/standard.rb
191
202
  - lib/mindee/parsing/standard/amount_field.rb
192
203
  - lib/mindee/parsing/standard/base_field.rb
@@ -212,6 +223,9 @@ files:
212
223
  - lib/mindee/product/custom/custom_v1.rb
213
224
  - lib/mindee/product/custom/custom_v1_document.rb
214
225
  - lib/mindee/product/custom/custom_v1_page.rb
226
+ - lib/mindee/product/eu/driver_license/driver_license_v1.rb
227
+ - lib/mindee/product/eu/driver_license/driver_license_v1_document.rb
228
+ - lib/mindee/product/eu/driver_license/driver_license_v1_page.rb
215
229
  - lib/mindee/product/eu/license_plate/license_plate_v1.rb
216
230
  - lib/mindee/product/eu/license_plate/license_plate_v1_document.rb
217
231
  - lib/mindee/product/eu/license_plate/license_plate_v1_page.rb
@@ -226,6 +240,10 @@ files:
226
240
  - lib/mindee/product/fr/bank_account_details/bank_account_details_v2_bban.rb
227
241
  - lib/mindee/product/fr/bank_account_details/bank_account_details_v2_document.rb
228
242
  - lib/mindee/product/fr/bank_account_details/bank_account_details_v2_page.rb
243
+ - lib/mindee/product/fr/bank_statement/bank_statement_v1.rb
244
+ - lib/mindee/product/fr/bank_statement/bank_statement_v1_document.rb
245
+ - lib/mindee/product/fr/bank_statement/bank_statement_v1_page.rb
246
+ - lib/mindee/product/fr/bank_statement/bank_statement_v1_transaction.rb
229
247
  - lib/mindee/product/fr/carte_grise/carte_grise_v1.rb
230
248
  - lib/mindee/product/fr/carte_grise/carte_grise_v1_document.rb
231
249
  - lib/mindee/product/fr/carte_grise/carte_grise_v1_page.rb
@@ -238,6 +256,16 @@ files:
238
256
  - lib/mindee/product/fr/id_card/id_card_v2.rb
239
257
  - lib/mindee/product/fr/id_card/id_card_v2_document.rb
240
258
  - lib/mindee/product/fr/id_card/id_card_v2_page.rb
259
+ - lib/mindee/product/generated/generated_v1.rb
260
+ - lib/mindee/product/generated/generated_v1_document.rb
261
+ - lib/mindee/product/generated/generated_v1_page.rb
262
+ - lib/mindee/product/generated/generated_v1_prediction.rb
263
+ - lib/mindee/product/international_id/international_id_v1.rb
264
+ - lib/mindee/product/international_id/international_id_v1_document.rb
265
+ - lib/mindee/product/international_id/international_id_v1_page.rb
266
+ - lib/mindee/product/international_id/international_id_v2.rb
267
+ - lib/mindee/product/international_id/international_id_v2_document.rb
268
+ - lib/mindee/product/international_id/international_id_v2_page.rb
241
269
  - lib/mindee/product/invoice/invoice_v4.rb
242
270
  - lib/mindee/product/invoice/invoice_v4_document.rb
243
271
  - lib/mindee/product/invoice/invoice_v4_line_item.rb