mindee 3.1.1 → 3.3.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 (109) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/.rubocop.yml +1 -0
  4. data/CHANGELOG.md +26 -0
  5. data/README.md +57 -7
  6. data/bin/mindee.rb +160 -83
  7. data/docs/bank_account_details_v2.md +137 -0
  8. data/docs/bank_check_v1.md +179 -0
  9. data/docs/barcode_reader_v1.md +104 -0
  10. data/docs/carte_grise_v1.md +454 -0
  11. data/docs/carte_vitale_v1.md +123 -0
  12. data/docs/code_samples/barcode_reader_v1.txt +19 -0
  13. data/docs/code_samples/carte_grise_v1.txt +19 -0
  14. data/docs/code_samples/cropper_v1.txt +16 -0
  15. data/docs/code_samples/idcard_fr_v2.txt +19 -0
  16. data/docs/code_samples/invoice_splitter_v1_async.txt +6 -54
  17. data/docs/code_samples/multi_receipts_detector_v1.txt +19 -0
  18. data/docs/code_samples/us_w9_v1.txt +16 -0
  19. data/docs/cropper_v1.md +97 -0
  20. data/docs/custom_v1.md +109 -0
  21. data/docs/expense_receipts_v5.md +306 -0
  22. data/docs/financial_document_v1.md +384 -0
  23. data/docs/{ruby-getting-started.md → getting_started.md} +22 -6
  24. data/docs/idcard_fr_v2.md +253 -0
  25. data/docs/invoice_splitter_v1.md +85 -0
  26. data/docs/invoices_v4.md +338 -0
  27. data/docs/license_plates_v1.md +91 -0
  28. data/docs/multi_receipts_detector_v1.md +105 -0
  29. data/docs/passport_v1.md +186 -0
  30. data/docs/proof_of_address_v1.md +207 -0
  31. data/docs/us_driver_license_v1.md +268 -0
  32. data/docs/us_w9_v1.md +207 -0
  33. data/lib/mindee/client.rb +95 -16
  34. data/lib/mindee/geometry/quadrilateral.rb +5 -0
  35. data/lib/mindee/http/.rubocop.yml +8 -0
  36. data/lib/mindee/http/endpoint.rb +19 -7
  37. data/lib/mindee/http/error.rb +104 -0
  38. data/lib/mindee/http.rb +1 -0
  39. data/lib/mindee/input/sources.rb +83 -14
  40. data/lib/mindee/parsing/common/api_response.rb +12 -1
  41. data/lib/mindee/parsing/common/document.rb +4 -1
  42. data/lib/mindee/parsing/common/inference.rb +2 -2
  43. data/lib/mindee/parsing/common/ocr/ocr.rb +1 -0
  44. data/lib/mindee/parsing/common.rb +0 -1
  45. data/lib/mindee/parsing/custom/list_field.rb +7 -5
  46. data/lib/mindee/parsing/standard/base_field.rb +1 -1
  47. data/lib/mindee/parsing/standard/company_registration_field.rb +1 -1
  48. data/lib/mindee/parsing/standard/locale_field.rb +1 -1
  49. data/lib/mindee/parsing/standard/payment_details_field.rb +1 -1
  50. data/lib/mindee/parsing/standard/position_field.rb +10 -3
  51. data/lib/mindee/parsing/standard/{text_field.rb → string_field.rb} +1 -1
  52. data/lib/mindee/parsing/standard.rb +1 -1
  53. data/lib/mindee/pdf/pdf_processing.rb +2 -1
  54. data/lib/mindee/product/barcode_reader/barcode_reader_v1.rb +37 -0
  55. data/lib/mindee/product/barcode_reader/barcode_reader_v1_document.rb +44 -0
  56. data/lib/mindee/product/barcode_reader/barcode_reader_v1_page.rb +32 -0
  57. data/lib/mindee/product/cropper/cropper_v1.rb +37 -0
  58. data/lib/mindee/product/cropper/cropper_v1_document.rb +13 -0
  59. data/lib/mindee/product/cropper/cropper_v1_page.rb +49 -0
  60. data/lib/mindee/product/custom/custom_v1.rb +1 -0
  61. data/lib/mindee/product/eu/license_plate/license_plate_v1.rb +1 -0
  62. data/lib/mindee/product/eu/license_plate/license_plate_v1_document.rb +2 -2
  63. data/lib/mindee/product/financial_document/financial_document_v1.rb +1 -0
  64. data/lib/mindee/product/financial_document/financial_document_v1_document.rb +26 -26
  65. data/lib/mindee/product/fr/bank_account_details/bank_account_details_v1.rb +1 -0
  66. data/lib/mindee/product/fr/bank_account_details/bank_account_details_v1_document.rb +6 -6
  67. data/lib/mindee/product/fr/bank_account_details/bank_account_details_v2.rb +1 -0
  68. data/lib/mindee/product/fr/bank_account_details/bank_account_details_v2_document.rb +6 -6
  69. data/lib/mindee/product/fr/carte_grise/carte_grise_v1.rb +39 -0
  70. data/lib/mindee/product/fr/carte_grise/carte_grise_v1_document.rb +235 -0
  71. data/lib/mindee/product/fr/carte_grise/carte_grise_v1_page.rb +34 -0
  72. data/lib/mindee/product/fr/carte_vitale/carte_vitale_v1.rb +1 -0
  73. data/lib/mindee/product/fr/carte_vitale/carte_vitale_v1_document.rb +6 -6
  74. data/lib/mindee/product/fr/id_card/id_card_v1.rb +1 -0
  75. data/lib/mindee/product/fr/id_card/id_card_v1_document.rb +16 -16
  76. data/lib/mindee/product/fr/id_card/id_card_v2.rb +39 -0
  77. data/lib/mindee/product/fr/id_card/id_card_v2_document.rb +107 -0
  78. data/lib/mindee/product/fr/id_card/id_card_v2_page.rb +53 -0
  79. data/lib/mindee/product/invoice/invoice_v4.rb +2 -2
  80. data/lib/mindee/product/invoice/invoice_v4_document.rb +115 -155
  81. data/lib/mindee/product/invoice/invoice_v4_line_item.rb +54 -30
  82. data/lib/mindee/product/invoice_splitter/invoice_splitter_v1.rb +1 -0
  83. data/lib/mindee/product/invoice_splitter/invoice_splitter_v1_document.rb +5 -3
  84. data/lib/mindee/product/multi_receipts_detector/multi_receipts_detector_v1.rb +37 -0
  85. data/lib/mindee/product/multi_receipts_detector/multi_receipts_detector_v1_document.rb +35 -0
  86. data/lib/mindee/product/multi_receipts_detector/multi_receipts_detector_v1_page.rb +32 -0
  87. data/lib/mindee/product/passport/passport_v1.rb +1 -0
  88. data/lib/mindee/product/passport/passport_v1_document.rb +16 -16
  89. data/lib/mindee/product/proof_of_address/proof_of_address_v1.rb +1 -0
  90. data/lib/mindee/product/proof_of_address/proof_of_address_v1_document.rb +14 -14
  91. data/lib/mindee/product/receipt/receipt_v4_document.rb +6 -6
  92. data/lib/mindee/product/receipt/receipt_v5.rb +1 -0
  93. data/lib/mindee/product/receipt/receipt_v5_document.rb +12 -12
  94. data/lib/mindee/product/us/bank_check/bank_check_v1.rb +1 -0
  95. data/lib/mindee/product/us/bank_check/bank_check_v1_document.rb +8 -8
  96. data/lib/mindee/product/us/driver_license/driver_license_v1.rb +1 -0
  97. data/lib/mindee/product/us/driver_license/driver_license_v1_document.rb +28 -28
  98. data/lib/mindee/product/us/w9/w9_v1.rb +39 -0
  99. data/lib/mindee/product/us/w9/w9_v1_document.rb +15 -0
  100. data/lib/mindee/product/us/w9/w9_v1_page.rb +102 -0
  101. data/lib/mindee/product.rb +6 -0
  102. data/lib/mindee/version.rb +5 -1
  103. data/lib/mindee.rb +45 -1
  104. metadata +48 -9
  105. data/docs/ruby-api-builder.md +0 -123
  106. data/docs/ruby-invoice-ocr.md +0 -271
  107. data/docs/ruby-passport-ocr.md +0 -165
  108. data/docs/ruby-receipt-ocr.md +0 -196
  109. data/lib/mindee/parsing/common/error.rb +0 -24
@@ -13,13 +13,13 @@ module Mindee
13
13
  # @return [Mindee::Parsing::Standard::ClassificationField]
14
14
  attr_reader :category
15
15
  # The address of the customer.
16
- # @return [Mindee::Parsing::Standard::TextField]
16
+ # @return [Mindee::Parsing::Standard::StringField]
17
17
  attr_reader :customer_address
18
18
  # List of company registrations associated to the customer.
19
- # @return [Array<Mindee::Parsing::Standard::CompanyRegistration>]
19
+ # @return [Array<Mindee::Parsing::Standard::CompanyRegistrationField>]
20
20
  attr_reader :customer_company_registrations
21
21
  # The name of the customer.
22
- # @return [Mindee::Parsing::Standard::TextField]
22
+ # @return [Mindee::Parsing::Standard::StringField]
23
23
  attr_reader :customer_name
24
24
  # The date the purchase was made.
25
25
  # @return [Mindee::Parsing::Standard::DateField]
@@ -31,40 +31,40 @@ module Mindee
31
31
  # @return [Mindee::Parsing::Standard::DateField]
32
32
  attr_reader :due_date
33
33
  # The invoice number or identifier.
34
- # @return [Mindee::Parsing::Standard::TextField]
34
+ # @return [Mindee::Parsing::Standard::StringField]
35
35
  attr_reader :invoice_number
36
36
  # List of line item details.
37
37
  # @return [Array<Mindee::Product::FinancialDocument::FinancialDocumentV1LineItem>]
38
38
  attr_reader :line_items
39
39
  # The locale detected on the document.
40
- # @return [Mindee::Parsing::Standard::Locale]
40
+ # @return [Mindee::Parsing::Standard::LocaleField]
41
41
  attr_reader :locale
42
42
  # List of Reference numbers, including PO number.
43
- # @return [Array<Mindee::Parsing::Standard::TextField>]
43
+ # @return [Array<Mindee::Parsing::Standard::StringField>]
44
44
  attr_reader :reference_numbers
45
45
  # The purchase subcategory among predefined classes for transport and food.
46
46
  # @return [Mindee::Parsing::Standard::ClassificationField]
47
47
  attr_reader :subcategory
48
48
  # The address of the supplier or merchant.
49
- # @return [Mindee::Parsing::Standard::TextField]
49
+ # @return [Mindee::Parsing::Standard::StringField]
50
50
  attr_reader :supplier_address
51
51
  # List of company registrations associated to the supplier.
52
- # @return [Array<Mindee::Parsing::Standard::CompanyRegistration>]
52
+ # @return [Array<Mindee::Parsing::Standard::CompanyRegistrationField>]
53
53
  attr_reader :supplier_company_registrations
54
54
  # The name of the supplier or merchant.
55
- # @return [Mindee::Parsing::Standard::TextField]
55
+ # @return [Mindee::Parsing::Standard::StringField]
56
56
  attr_reader :supplier_name
57
57
  # List of payment details associated to the supplier.
58
- # @return [Array<Mindee::Parsing::Standard::PaymentDetails>]
58
+ # @return [Array<Mindee::Parsing::Standard::PaymentDetailsField>]
59
59
  attr_reader :supplier_payment_details
60
60
  # The phone number of the supplier or merchant.
61
- # @return [Mindee::Parsing::Standard::TextField]
61
+ # @return [Mindee::Parsing::Standard::StringField]
62
62
  attr_reader :supplier_phone_number
63
63
  # List of tax lines information.
64
64
  # @return [Mindee::Parsing::Standard::Taxes]
65
65
  attr_reader :taxes
66
66
  # The time the purchase was made.
67
- # @return [Mindee::Parsing::Standard::TextField]
67
+ # @return [Mindee::Parsing::Standard::StringField]
68
68
  attr_reader :time
69
69
  # The total amount of tip and gratuity
70
70
  # @return [Mindee::Parsing::Standard::AmountField]
@@ -84,39 +84,39 @@ module Mindee
84
84
  def initialize(prediction, page_id)
85
85
  super()
86
86
  @category = ClassificationField.new(prediction['category'], page_id)
87
- @customer_address = TextField.new(prediction['customer_address'], page_id)
87
+ @customer_address = StringField.new(prediction['customer_address'], page_id)
88
88
  @customer_company_registrations = []
89
89
  prediction['customer_company_registrations'].each do |item|
90
- @customer_company_registrations.push(CompanyRegistration.new(item, page_id))
90
+ @customer_company_registrations.push(CompanyRegistrationField.new(item, page_id))
91
91
  end
92
- @customer_name = TextField.new(prediction['customer_name'], page_id)
92
+ @customer_name = StringField.new(prediction['customer_name'], page_id)
93
93
  @date = DateField.new(prediction['date'], page_id)
94
94
  @document_type = ClassificationField.new(prediction['document_type'], page_id)
95
95
  @due_date = DateField.new(prediction['due_date'], page_id)
96
- @invoice_number = TextField.new(prediction['invoice_number'], page_id)
96
+ @invoice_number = StringField.new(prediction['invoice_number'], page_id)
97
97
  @line_items = []
98
98
  prediction['line_items'].each do |item|
99
99
  @line_items.push(FinancialDocumentV1LineItem.new(item, page_id))
100
100
  end
101
- @locale = Locale.new(prediction['locale'], page_id)
101
+ @locale = LocaleField.new(prediction['locale'], page_id)
102
102
  @reference_numbers = []
103
103
  prediction['reference_numbers'].each do |item|
104
- @reference_numbers.push(TextField.new(item, page_id))
104
+ @reference_numbers.push(StringField.new(item, page_id))
105
105
  end
106
106
  @subcategory = ClassificationField.new(prediction['subcategory'], page_id)
107
- @supplier_address = TextField.new(prediction['supplier_address'], page_id)
107
+ @supplier_address = StringField.new(prediction['supplier_address'], page_id)
108
108
  @supplier_company_registrations = []
109
109
  prediction['supplier_company_registrations'].each do |item|
110
- @supplier_company_registrations.push(CompanyRegistration.new(item, page_id))
110
+ @supplier_company_registrations.push(CompanyRegistrationField.new(item, page_id))
111
111
  end
112
- @supplier_name = TextField.new(prediction['supplier_name'], page_id)
112
+ @supplier_name = StringField.new(prediction['supplier_name'], page_id)
113
113
  @supplier_payment_details = []
114
114
  prediction['supplier_payment_details'].each do |item|
115
- @supplier_payment_details.push(PaymentDetails.new(item, page_id))
115
+ @supplier_payment_details.push(PaymentDetailsField.new(item, page_id))
116
116
  end
117
- @supplier_phone_number = TextField.new(prediction['supplier_phone_number'], page_id)
117
+ @supplier_phone_number = StringField.new(prediction['supplier_phone_number'], page_id)
118
118
  @taxes = Taxes.new(prediction['taxes'], page_id)
119
- @time = TextField.new(prediction['time'], page_id)
119
+ @time = StringField.new(prediction['time'], page_id)
120
120
  @tip = AmountField.new(prediction['tip'], page_id)
121
121
  @total_amount = AmountField.new(prediction['total_amount'], page_id)
122
122
  @total_net = AmountField.new(prediction['total_net'], page_id)
@@ -140,11 +140,11 @@ module Mindee
140
140
  out_str << "\n:Total Amount: #{@total_amount}".rstrip
141
141
  out_str << "\n:Taxes:#{@taxes}".rstrip
142
142
  out_str << "\n:Supplier Payment Details: #{supplier_payment_details}".rstrip
143
- out_str << "\n:Supplier name: #{@supplier_name}".rstrip
143
+ out_str << "\n:Supplier Name: #{@supplier_name}".rstrip
144
144
  out_str << "\n:Supplier Company Registrations: #{supplier_company_registrations}".rstrip
145
145
  out_str << "\n:Supplier Address: #{@supplier_address}".rstrip
146
146
  out_str << "\n:Supplier Phone Number: #{@supplier_phone_number}".rstrip
147
- out_str << "\n:Customer name: #{@customer_name}".rstrip
147
+ out_str << "\n:Customer Name: #{@customer_name}".rstrip
148
148
  out_str << "\n:Customer Company Registrations: #{customer_company_registrations}".rstrip
149
149
  out_str << "\n:Customer Address: #{@customer_address}".rstrip
150
150
  out_str << "\n:Document Type: #{@document_type}".rstrip
@@ -7,6 +7,7 @@ require_relative 'bank_account_details_v1_page'
7
7
  module Mindee
8
8
  module Product
9
9
  module FR
10
+ # Bank Account Details module.
10
11
  module BankAccountDetails
11
12
  # Bank Account Details V1 prediction inference.
12
13
  class BankAccountDetailsV1 < Mindee::Parsing::Common::Inference
@@ -10,22 +10,22 @@ module Mindee
10
10
  class BankAccountDetailsV1Document < Mindee::Parsing::Common::Prediction
11
11
  include Mindee::Parsing::Standard
12
12
  # The name of the account holder as seen on the document.
13
- # @return [Mindee::Parsing::Standard::TextField]
13
+ # @return [Mindee::Parsing::Standard::StringField]
14
14
  attr_reader :account_holder_name
15
15
  # The International Bank Account Number (IBAN).
16
- # @return [Mindee::Parsing::Standard::TextField]
16
+ # @return [Mindee::Parsing::Standard::StringField]
17
17
  attr_reader :iban
18
18
  # The bank's SWIFT Business Identifier Code (BIC).
19
- # @return [Mindee::Parsing::Standard::TextField]
19
+ # @return [Mindee::Parsing::Standard::StringField]
20
20
  attr_reader :swift
21
21
 
22
22
  # @param prediction [Hash]
23
23
  # @param page_id [Integer, nil]
24
24
  def initialize(prediction, page_id)
25
25
  super()
26
- @account_holder_name = TextField.new(prediction['account_holder_name'], page_id)
27
- @iban = TextField.new(prediction['iban'], page_id)
28
- @swift = TextField.new(prediction['swift'], page_id)
26
+ @account_holder_name = StringField.new(prediction['account_holder_name'], page_id)
27
+ @iban = StringField.new(prediction['iban'], page_id)
28
+ @swift = StringField.new(prediction['swift'], page_id)
29
29
  end
30
30
 
31
31
  # @return [String]
@@ -7,6 +7,7 @@ require_relative 'bank_account_details_v2_page'
7
7
  module Mindee
8
8
  module Product
9
9
  module FR
10
+ # Bank Account Details module.
10
11
  module BankAccountDetails
11
12
  # Bank Account Details V2 prediction inference.
12
13
  class BankAccountDetailsV2 < Mindee::Parsing::Common::Inference
@@ -11,26 +11,26 @@ module Mindee
11
11
  class BankAccountDetailsV2Document < Mindee::Parsing::Common::Prediction
12
12
  include Mindee::Parsing::Standard
13
13
  # Full extraction of the account holders names.
14
- # @return [Mindee::Parsing::Standard::TextField]
14
+ # @return [Mindee::Parsing::Standard::StringField]
15
15
  attr_reader :account_holders_names
16
16
  # Full extraction of BBAN, including: branch code, bank code, account and key.
17
17
  # @return [Mindee::Product::FR::BankAccountDetails::BankAccountDetailsV2Bban]
18
18
  attr_reader :bban
19
19
  # Full extraction of the IBAN number.
20
- # @return [Mindee::Parsing::Standard::TextField]
20
+ # @return [Mindee::Parsing::Standard::StringField]
21
21
  attr_reader :iban
22
22
  # Full extraction of the SWIFT code.
23
- # @return [Mindee::Parsing::Standard::TextField]
23
+ # @return [Mindee::Parsing::Standard::StringField]
24
24
  attr_reader :swift_code
25
25
 
26
26
  # @param prediction [Hash]
27
27
  # @param page_id [Integer, nil]
28
28
  def initialize(prediction, page_id)
29
29
  super()
30
- @account_holders_names = TextField.new(prediction['account_holders_names'], page_id)
30
+ @account_holders_names = StringField.new(prediction['account_holders_names'], page_id)
31
31
  @bban = BankAccountDetailsV2Bban.new(prediction['bban'], page_id)
32
- @iban = TextField.new(prediction['iban'], page_id)
33
- @swift_code = TextField.new(prediction['swift_code'], page_id)
32
+ @iban = StringField.new(prediction['iban'], page_id)
33
+ @swift_code = StringField.new(prediction['swift_code'], page_id)
34
34
  end
35
35
 
36
36
  # @return [String]
@@ -0,0 +1,39 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../../../parsing'
4
+ require_relative 'carte_grise_v1_document'
5
+ require_relative 'carte_grise_v1_page'
6
+
7
+ module Mindee
8
+ module Product
9
+ module FR
10
+ # Carte Grise module.
11
+ module CarteGrise
12
+ # Carte Grise V1 prediction inference.
13
+ class CarteGriseV1 < Mindee::Parsing::Common::Inference
14
+ @endpoint_name = 'carte_grise'
15
+ @endpoint_version = '1'
16
+
17
+ # @param prediction [Hash]
18
+ def initialize(prediction)
19
+ super
20
+ @prediction = CarteGriseV1Document.new(prediction['prediction'], nil)
21
+ @pages = []
22
+ prediction['pages'].each do |page|
23
+ @pages.push(CarteGriseV1Page.new(page))
24
+ end
25
+ end
26
+
27
+ class << self
28
+ # Name of the endpoint for this product.
29
+ # @return [String]
30
+ attr_reader :endpoint_name
31
+ # Version for this product.
32
+ # @return [String]
33
+ attr_reader :endpoint_version
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,235 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../../../parsing'
4
+
5
+ module Mindee
6
+ module Product
7
+ module FR
8
+ module CarteGrise
9
+ # Carte Grise V1 document prediction.
10
+ class CarteGriseV1Document < Mindee::Parsing::Common::Prediction
11
+ include Mindee::Parsing::Standard
12
+ # The vehicle's license plate number.
13
+ # @return [Mindee::Parsing::Standard::StringField]
14
+ attr_reader :a
15
+ # The vehicle's first release date.
16
+ # @return [Mindee::Parsing::Standard::DateField]
17
+ attr_reader :b
18
+ # The vehicle owner's full name including maiden name.
19
+ # @return [Mindee::Parsing::Standard::StringField]
20
+ attr_reader :c1
21
+ # The vehicle owner's address.
22
+ # @return [Mindee::Parsing::Standard::StringField]
23
+ attr_reader :c3
24
+ # Number of owners of the license certificate.
25
+ # @return [Mindee::Parsing::Standard::StringField]
26
+ attr_reader :c41
27
+ # Mentions about the ownership of the vehicle.
28
+ # @return [Mindee::Parsing::Standard::StringField]
29
+ attr_reader :c4a
30
+ # The vehicle's brand.
31
+ # @return [Mindee::Parsing::Standard::StringField]
32
+ attr_reader :d1
33
+ # The vehicle's commercial name.
34
+ # @return [Mindee::Parsing::Standard::StringField]
35
+ attr_reader :d3
36
+ # The Vehicle Identification Number (VIN).
37
+ # @return [Mindee::Parsing::Standard::StringField]
38
+ attr_reader :e
39
+ # The vehicle's maximum admissible weight.
40
+ # @return [Mindee::Parsing::Standard::StringField]
41
+ attr_reader :f1
42
+ # The vehicle's maximum admissible weight within the license's state.
43
+ # @return [Mindee::Parsing::Standard::StringField]
44
+ attr_reader :f2
45
+ # The vehicle's maximum authorized weight with coupling.
46
+ # @return [Mindee::Parsing::Standard::StringField]
47
+ attr_reader :f3
48
+ # The document's formula number.
49
+ # @return [Mindee::Parsing::Standard::StringField]
50
+ attr_reader :formula_number
51
+ # The vehicle's weight with coupling if tractor different than category M1.
52
+ # @return [Mindee::Parsing::Standard::StringField]
53
+ attr_reader :g
54
+ # The vehicle's national empty weight.
55
+ # @return [Mindee::Parsing::Standard::StringField]
56
+ attr_reader :g1
57
+ # The car registration date of the given certificate.
58
+ # @return [Mindee::Parsing::Standard::DateField]
59
+ attr_reader :i
60
+ # The vehicle's category.
61
+ # @return [Mindee::Parsing::Standard::StringField]
62
+ attr_reader :j
63
+ # The vehicle's national type.
64
+ # @return [Mindee::Parsing::Standard::StringField]
65
+ attr_reader :j1
66
+ # The vehicle's body type (CE).
67
+ # @return [Mindee::Parsing::Standard::StringField]
68
+ attr_reader :j2
69
+ # The vehicle's body type (National designation).
70
+ # @return [Mindee::Parsing::Standard::StringField]
71
+ attr_reader :j3
72
+ # Machine Readable Zone, first line.
73
+ # @return [Mindee::Parsing::Standard::StringField]
74
+ attr_reader :mrz1
75
+ # Machine Readable Zone, second line.
76
+ # @return [Mindee::Parsing::Standard::StringField]
77
+ attr_reader :mrz2
78
+ # The vehicle's owner first name.
79
+ # @return [Mindee::Parsing::Standard::StringField]
80
+ attr_reader :owner_first_name
81
+ # The vehicle's owner surname.
82
+ # @return [Mindee::Parsing::Standard::StringField]
83
+ attr_reader :owner_surname
84
+ # The vehicle engine's displacement (cm3).
85
+ # @return [Mindee::Parsing::Standard::StringField]
86
+ attr_reader :p1
87
+ # The vehicle's maximum net power (kW).
88
+ # @return [Mindee::Parsing::Standard::StringField]
89
+ attr_reader :p2
90
+ # The vehicle's fuel type or energy source.
91
+ # @return [Mindee::Parsing::Standard::StringField]
92
+ attr_reader :p3
93
+ # The vehicle's administrative power (fiscal horsepower).
94
+ # @return [Mindee::Parsing::Standard::StringField]
95
+ attr_reader :p6
96
+ # The vehicle's power to weight ratio.
97
+ # @return [Mindee::Parsing::Standard::StringField]
98
+ attr_reader :q
99
+ # The vehicle's number of seats.
100
+ # @return [Mindee::Parsing::Standard::StringField]
101
+ attr_reader :s1
102
+ # The vehicle's number of standing rooms (person).
103
+ # @return [Mindee::Parsing::Standard::StringField]
104
+ attr_reader :s2
105
+ # The vehicle's sound level (dB).
106
+ # @return [Mindee::Parsing::Standard::StringField]
107
+ attr_reader :u1
108
+ # The vehicle engine's rotation speed (RPM).
109
+ # @return [Mindee::Parsing::Standard::StringField]
110
+ attr_reader :u2
111
+ # The vehicle's CO2 emission (g/km).
112
+ # @return [Mindee::Parsing::Standard::StringField]
113
+ attr_reader :v7
114
+ # Next technical control date.
115
+ # @return [Mindee::Parsing::Standard::StringField]
116
+ attr_reader :x1
117
+ # Amount of the regional proportional tax of the registration (in euros).
118
+ # @return [Mindee::Parsing::Standard::StringField]
119
+ attr_reader :y1
120
+ # Amount of the additional parafiscal tax of the registration (in euros).
121
+ # @return [Mindee::Parsing::Standard::StringField]
122
+ attr_reader :y2
123
+ # Amount of the additional CO2 tax of the registration (in euros).
124
+ # @return [Mindee::Parsing::Standard::StringField]
125
+ attr_reader :y3
126
+ # Amount of the fee for managing the registration (in euros).
127
+ # @return [Mindee::Parsing::Standard::StringField]
128
+ attr_reader :y4
129
+ # Amount of the fee for delivery of the registration certificate in euros.
130
+ # @return [Mindee::Parsing::Standard::StringField]
131
+ attr_reader :y5
132
+ # Total amount of registration fee to be paid in euros.
133
+ # @return [Mindee::Parsing::Standard::StringField]
134
+ attr_reader :y6
135
+
136
+ # rubocop:disable Metrics/AbcSize
137
+ # @param prediction [Hash]
138
+ # @param page_id [Integer, nil]
139
+ def initialize(prediction, page_id)
140
+ super()
141
+ @a = StringField.new(prediction['a'], page_id)
142
+ @b = DateField.new(prediction['b'], page_id)
143
+ @c1 = StringField.new(prediction['c1'], page_id)
144
+ @c3 = StringField.new(prediction['c3'], page_id)
145
+ @c41 = StringField.new(prediction['c41'], page_id)
146
+ @c4a = StringField.new(prediction['c4a'], page_id)
147
+ @d1 = StringField.new(prediction['d1'], page_id)
148
+ @d3 = StringField.new(prediction['d3'], page_id)
149
+ @e = StringField.new(prediction['e'], page_id)
150
+ @f1 = StringField.new(prediction['f1'], page_id)
151
+ @f2 = StringField.new(prediction['f2'], page_id)
152
+ @f3 = StringField.new(prediction['f3'], page_id)
153
+ @formula_number = StringField.new(prediction['formula_number'], page_id)
154
+ @g = StringField.new(prediction['g'], page_id)
155
+ @g1 = StringField.new(prediction['g1'], page_id)
156
+ @i = DateField.new(prediction['i'], page_id)
157
+ @j = StringField.new(prediction['j'], page_id)
158
+ @j1 = StringField.new(prediction['j1'], page_id)
159
+ @j2 = StringField.new(prediction['j2'], page_id)
160
+ @j3 = StringField.new(prediction['j3'], page_id)
161
+ @mrz1 = StringField.new(prediction['mrz1'], page_id)
162
+ @mrz2 = StringField.new(prediction['mrz2'], page_id)
163
+ @owner_first_name = StringField.new(prediction['owner_first_name'], page_id)
164
+ @owner_surname = StringField.new(prediction['owner_surname'], page_id)
165
+ @p1 = StringField.new(prediction['p1'], page_id)
166
+ @p2 = StringField.new(prediction['p2'], page_id)
167
+ @p3 = StringField.new(prediction['p3'], page_id)
168
+ @p6 = StringField.new(prediction['p6'], page_id)
169
+ @q = StringField.new(prediction['q'], page_id)
170
+ @s1 = StringField.new(prediction['s1'], page_id)
171
+ @s2 = StringField.new(prediction['s2'], page_id)
172
+ @u1 = StringField.new(prediction['u1'], page_id)
173
+ @u2 = StringField.new(prediction['u2'], page_id)
174
+ @v7 = StringField.new(prediction['v7'], page_id)
175
+ @x1 = StringField.new(prediction['x1'], page_id)
176
+ @y1 = StringField.new(prediction['y1'], page_id)
177
+ @y2 = StringField.new(prediction['y2'], page_id)
178
+ @y3 = StringField.new(prediction['y3'], page_id)
179
+ @y4 = StringField.new(prediction['y4'], page_id)
180
+ @y5 = StringField.new(prediction['y5'], page_id)
181
+ @y6 = StringField.new(prediction['y6'], page_id)
182
+ end
183
+
184
+ # @return [String]
185
+ def to_s
186
+ out_str = String.new
187
+ out_str << "\n:a: #{@a}".rstrip
188
+ out_str << "\n:b: #{@b}".rstrip
189
+ out_str << "\n:c1: #{@c1}".rstrip
190
+ out_str << "\n:c3: #{@c3}".rstrip
191
+ out_str << "\n:c41: #{@c41}".rstrip
192
+ out_str << "\n:c4a: #{@c4a}".rstrip
193
+ out_str << "\n:d1: #{@d1}".rstrip
194
+ out_str << "\n:d3: #{@d3}".rstrip
195
+ out_str << "\n:e: #{@e}".rstrip
196
+ out_str << "\n:f1: #{@f1}".rstrip
197
+ out_str << "\n:f2: #{@f2}".rstrip
198
+ out_str << "\n:f3: #{@f3}".rstrip
199
+ out_str << "\n:g: #{@g}".rstrip
200
+ out_str << "\n:g1: #{@g1}".rstrip
201
+ out_str << "\n:i: #{@i}".rstrip
202
+ out_str << "\n:j: #{@j}".rstrip
203
+ out_str << "\n:j1: #{@j1}".rstrip
204
+ out_str << "\n:j2: #{@j2}".rstrip
205
+ out_str << "\n:j3: #{@j3}".rstrip
206
+ out_str << "\n:p1: #{@p1}".rstrip
207
+ out_str << "\n:p2: #{@p2}".rstrip
208
+ out_str << "\n:p3: #{@p3}".rstrip
209
+ out_str << "\n:p6: #{@p6}".rstrip
210
+ out_str << "\n:q: #{@q}".rstrip
211
+ out_str << "\n:s1: #{@s1}".rstrip
212
+ out_str << "\n:s2: #{@s2}".rstrip
213
+ out_str << "\n:u1: #{@u1}".rstrip
214
+ out_str << "\n:u2: #{@u2}".rstrip
215
+ out_str << "\n:v7: #{@v7}".rstrip
216
+ out_str << "\n:x1: #{@x1}".rstrip
217
+ out_str << "\n:y1: #{@y1}".rstrip
218
+ out_str << "\n:y2: #{@y2}".rstrip
219
+ out_str << "\n:y3: #{@y3}".rstrip
220
+ out_str << "\n:y4: #{@y4}".rstrip
221
+ out_str << "\n:y5: #{@y5}".rstrip
222
+ out_str << "\n:y6: #{@y6}".rstrip
223
+ out_str << "\n:Formula Number: #{@formula_number}".rstrip
224
+ out_str << "\n:Owner's First Name: #{@owner_first_name}".rstrip
225
+ out_str << "\n:Owner's Surname: #{@owner_surname}".rstrip
226
+ out_str << "\n:MRZ Line 1: #{@mrz1}".rstrip
227
+ out_str << "\n:MRZ Line 2: #{@mrz2}".rstrip
228
+ out_str[1..].to_s
229
+ end
230
+ # rubocop:enable Metrics/AbcSize
231
+ end
232
+ end
233
+ end
234
+ end
235
+ end
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../../../parsing'
4
+ require_relative 'carte_grise_v1_document'
5
+
6
+ module Mindee
7
+ module Product
8
+ module FR
9
+ module CarteGrise
10
+ # Carte Grise V1 page.
11
+ class CarteGriseV1Page < Mindee::Parsing::Common::Page
12
+ # @param prediction [Hash]
13
+ def initialize(prediction)
14
+ super(prediction)
15
+ @prediction = CarteGriseV1PagePrediction.new(
16
+ prediction['prediction'],
17
+ prediction['id']
18
+ )
19
+ end
20
+ end
21
+
22
+ # Carte Grise V1 page prediction.
23
+ class CarteGriseV1PagePrediction < CarteGriseV1Document
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
@@ -7,6 +7,7 @@ require_relative 'carte_vitale_v1_page'
7
7
  module Mindee
8
8
  module Product
9
9
  module FR
10
+ # Carte Vitale module.
10
11
  module CarteVitale
11
12
  # Carte Vitale V1 prediction inference.
12
13
  class CarteVitaleV1 < Mindee::Parsing::Common::Inference
@@ -10,16 +10,16 @@ module Mindee
10
10
  class CarteVitaleV1Document < Mindee::Parsing::Common::Prediction
11
11
  include Mindee::Parsing::Standard
12
12
  # The given name(s) of the card holder.
13
- # @return [Array<Mindee::Parsing::Standard::TextField>]
13
+ # @return [Array<Mindee::Parsing::Standard::StringField>]
14
14
  attr_reader :given_names
15
15
  # The date the card was issued.
16
16
  # @return [Mindee::Parsing::Standard::DateField]
17
17
  attr_reader :issuance_date
18
18
  # The Social Security Number (Numéro de Sécurité Sociale) of the card holder
19
- # @return [Mindee::Parsing::Standard::TextField]
19
+ # @return [Mindee::Parsing::Standard::StringField]
20
20
  attr_reader :social_security
21
21
  # The surname of the card holder.
22
- # @return [Mindee::Parsing::Standard::TextField]
22
+ # @return [Mindee::Parsing::Standard::StringField]
23
23
  attr_reader :surname
24
24
 
25
25
  # @param prediction [Hash]
@@ -28,11 +28,11 @@ module Mindee
28
28
  super()
29
29
  @given_names = []
30
30
  prediction['given_names'].each do |item|
31
- @given_names.push(TextField.new(item, page_id))
31
+ @given_names.push(StringField.new(item, page_id))
32
32
  end
33
33
  @issuance_date = DateField.new(prediction['issuance_date'], page_id)
34
- @social_security = TextField.new(prediction['social_security'], page_id)
35
- @surname = TextField.new(prediction['surname'], page_id)
34
+ @social_security = StringField.new(prediction['social_security'], page_id)
35
+ @surname = StringField.new(prediction['surname'], page_id)
36
36
  end
37
37
 
38
38
  # @return [String]
@@ -7,6 +7,7 @@ require_relative 'id_card_v1_page'
7
7
  module Mindee
8
8
  module Product
9
9
  module FR
10
+ # Carte Nationale d'Identité module.
10
11
  module IdCard
11
12
  # Carte Nationale d'Identité V1 prediction inference.
12
13
  class IdCardV1 < Mindee::Parsing::Common::Inference
@@ -10,53 +10,53 @@ module Mindee
10
10
  class IdCardV1Document < Mindee::Parsing::Common::Prediction
11
11
  include Mindee::Parsing::Standard
12
12
  # The name of the issuing authority.
13
- # @return [Mindee::Parsing::Standard::TextField]
13
+ # @return [Mindee::Parsing::Standard::StringField]
14
14
  attr_reader :authority
15
15
  # The date of birth of the card holder.
16
16
  # @return [Mindee::Parsing::Standard::DateField]
17
17
  attr_reader :birth_date
18
18
  # The place of birth of the card holder.
19
- # @return [Mindee::Parsing::Standard::TextField]
19
+ # @return [Mindee::Parsing::Standard::StringField]
20
20
  attr_reader :birth_place
21
21
  # The expiry date of the identification card.
22
22
  # @return [Mindee::Parsing::Standard::DateField]
23
23
  attr_reader :expiry_date
24
24
  # The gender of the card holder.
25
- # @return [Mindee::Parsing::Standard::TextField]
25
+ # @return [Mindee::Parsing::Standard::StringField]
26
26
  attr_reader :gender
27
27
  # The given name(s) of the card holder.
28
- # @return [Array<Mindee::Parsing::Standard::TextField>]
28
+ # @return [Array<Mindee::Parsing::Standard::StringField>]
29
29
  attr_reader :given_names
30
30
  # The identification card number.
31
- # @return [Mindee::Parsing::Standard::TextField]
31
+ # @return [Mindee::Parsing::Standard::StringField]
32
32
  attr_reader :id_number
33
33
  # Machine Readable Zone, first line
34
- # @return [Mindee::Parsing::Standard::TextField]
34
+ # @return [Mindee::Parsing::Standard::StringField]
35
35
  attr_reader :mrz1
36
36
  # Machine Readable Zone, second line
37
- # @return [Mindee::Parsing::Standard::TextField]
37
+ # @return [Mindee::Parsing::Standard::StringField]
38
38
  attr_reader :mrz2
39
39
  # The surname of the card holder.
40
- # @return [Mindee::Parsing::Standard::TextField]
40
+ # @return [Mindee::Parsing::Standard::StringField]
41
41
  attr_reader :surname
42
42
 
43
43
  # @param prediction [Hash]
44
44
  # @param page_id [Integer, nil]
45
45
  def initialize(prediction, page_id)
46
46
  super()
47
- @authority = TextField.new(prediction['authority'], page_id)
47
+ @authority = StringField.new(prediction['authority'], page_id)
48
48
  @birth_date = DateField.new(prediction['birth_date'], page_id)
49
- @birth_place = TextField.new(prediction['birth_place'], page_id)
49
+ @birth_place = StringField.new(prediction['birth_place'], page_id)
50
50
  @expiry_date = DateField.new(prediction['expiry_date'], page_id)
51
- @gender = TextField.new(prediction['gender'], page_id)
51
+ @gender = StringField.new(prediction['gender'], page_id)
52
52
  @given_names = []
53
53
  prediction['given_names'].each do |item|
54
- @given_names.push(TextField.new(item, page_id))
54
+ @given_names.push(StringField.new(item, page_id))
55
55
  end
56
- @id_number = TextField.new(prediction['id_number'], page_id)
57
- @mrz1 = TextField.new(prediction['mrz1'], page_id)
58
- @mrz2 = TextField.new(prediction['mrz2'], page_id)
59
- @surname = TextField.new(prediction['surname'], page_id)
56
+ @id_number = StringField.new(prediction['id_number'], page_id)
57
+ @mrz1 = StringField.new(prediction['mrz1'], page_id)
58
+ @mrz2 = StringField.new(prediction['mrz2'], page_id)
59
+ @surname = StringField.new(prediction['surname'], page_id)
60
60
  end
61
61
 
62
62
  # @return [String]