mindee 3.4.0 → 3.5.0

Sign up to get free protection for your applications and to get access to all the features.
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