mindee 3.1.0 → 3.2.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 (98) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +21 -0
  3. data/README.md +57 -7
  4. data/bin/mindee.rb +160 -83
  5. data/docs/bank_account_details_v2.md +137 -0
  6. data/docs/bank_check_v1.md +179 -0
  7. data/docs/barcode_reader_v1.md +104 -0
  8. data/docs/carte_vitale_v1.md +123 -0
  9. data/docs/code_samples/barcode_reader_v1.txt +19 -0
  10. data/docs/code_samples/cropper_v1.txt +16 -0
  11. data/docs/code_samples/idcard_fr_v2.txt +19 -0
  12. data/docs/code_samples/invoice_splitter_v1_async.txt +6 -54
  13. data/docs/code_samples/multi_receipts_detector_v1.txt +19 -0
  14. data/docs/code_samples/us_w9_v1.txt +16 -0
  15. data/docs/cropper_v1.md +97 -0
  16. data/docs/custom_v1.md +101 -0
  17. data/docs/expense_receipts_v5.md +306 -0
  18. data/docs/financial_document_v1.md +384 -0
  19. data/docs/{ruby-getting-started.md → getting_started.md} +22 -6
  20. data/docs/idcard_fr_v2.md +253 -0
  21. data/docs/invoice_splitter_v1.md +85 -0
  22. data/docs/invoices_v4.md +369 -0
  23. data/docs/license_plates_v1.md +91 -0
  24. data/docs/multi_receipts_detector_v1.md +105 -0
  25. data/docs/passport_v1.md +186 -0
  26. data/docs/proof_of_address_v1.md +207 -0
  27. data/docs/us_driver_license_v1.md +268 -0
  28. data/docs/us_w9_v1.md +207 -0
  29. data/lib/mindee/client.rb +95 -16
  30. data/lib/mindee/geometry/quadrilateral.rb +5 -0
  31. data/lib/mindee/http/.rubocop.yml +8 -0
  32. data/lib/mindee/http/endpoint.rb +14 -6
  33. data/lib/mindee/http/error.rb +104 -0
  34. data/lib/mindee/http.rb +1 -0
  35. data/lib/mindee/input/sources.rb +84 -15
  36. data/lib/mindee/parsing/common/api_response.rb +11 -1
  37. data/lib/mindee/parsing/common/inference.rb +2 -2
  38. data/lib/mindee/parsing/common/ocr/ocr.rb +1 -0
  39. data/lib/mindee/parsing/common.rb +0 -1
  40. data/lib/mindee/parsing/standard/company_registration_field.rb +1 -1
  41. data/lib/mindee/parsing/standard/locale_field.rb +1 -1
  42. data/lib/mindee/parsing/standard/payment_details_field.rb +1 -1
  43. data/lib/mindee/parsing/standard/position_field.rb +10 -3
  44. data/lib/mindee/parsing/standard/{text_field.rb → string_field.rb} +1 -1
  45. data/lib/mindee/parsing/standard.rb +1 -1
  46. data/lib/mindee/pdf/pdf_processing.rb +2 -1
  47. data/lib/mindee/product/barcode_reader/barcode_reader_v1.rb +37 -0
  48. data/lib/mindee/product/barcode_reader/barcode_reader_v1_document.rb +44 -0
  49. data/lib/mindee/product/barcode_reader/barcode_reader_v1_page.rb +32 -0
  50. data/lib/mindee/product/cropper/cropper_v1.rb +37 -0
  51. data/lib/mindee/product/cropper/cropper_v1_document.rb +13 -0
  52. data/lib/mindee/product/cropper/cropper_v1_page.rb +49 -0
  53. data/lib/mindee/product/custom/custom_v1.rb +1 -0
  54. data/lib/mindee/product/eu/license_plate/license_plate_v1.rb +1 -0
  55. data/lib/mindee/product/eu/license_plate/license_plate_v1_document.rb +2 -2
  56. data/lib/mindee/product/financial_document/financial_document_v1.rb +1 -0
  57. data/lib/mindee/product/financial_document/financial_document_v1_document.rb +24 -24
  58. data/lib/mindee/product/fr/bank_account_details/bank_account_details_v1.rb +1 -0
  59. data/lib/mindee/product/fr/bank_account_details/bank_account_details_v1_document.rb +6 -6
  60. data/lib/mindee/product/fr/bank_account_details/bank_account_details_v2.rb +1 -0
  61. data/lib/mindee/product/fr/bank_account_details/bank_account_details_v2_document.rb +6 -6
  62. data/lib/mindee/product/fr/carte_vitale/carte_vitale_v1.rb +1 -0
  63. data/lib/mindee/product/fr/carte_vitale/carte_vitale_v1_document.rb +6 -6
  64. data/lib/mindee/product/fr/id_card/id_card_v1.rb +1 -0
  65. data/lib/mindee/product/fr/id_card/id_card_v1_document.rb +16 -16
  66. data/lib/mindee/product/fr/id_card/id_card_v2.rb +39 -0
  67. data/lib/mindee/product/fr/id_card/id_card_v2_document.rb +107 -0
  68. data/lib/mindee/product/fr/id_card/id_card_v2_page.rb +53 -0
  69. data/lib/mindee/product/invoice/invoice_v4.rb +1 -0
  70. data/lib/mindee/product/invoice/invoice_v4_document.rb +24 -24
  71. data/lib/mindee/product/invoice_splitter/invoice_splitter_v1.rb +1 -0
  72. data/lib/mindee/product/invoice_splitter/invoice_splitter_v1_document.rb +5 -3
  73. data/lib/mindee/product/multi_receipts_detector/multi_receipts_detector_v1.rb +37 -0
  74. data/lib/mindee/product/multi_receipts_detector/multi_receipts_detector_v1_document.rb +35 -0
  75. data/lib/mindee/product/multi_receipts_detector/multi_receipts_detector_v1_page.rb +32 -0
  76. data/lib/mindee/product/passport/passport_v1.rb +1 -0
  77. data/lib/mindee/product/passport/passport_v1_document.rb +16 -16
  78. data/lib/mindee/product/proof_of_address/proof_of_address_v1.rb +1 -0
  79. data/lib/mindee/product/proof_of_address/proof_of_address_v1_document.rb +14 -14
  80. data/lib/mindee/product/receipt/receipt_v4_document.rb +6 -6
  81. data/lib/mindee/product/receipt/receipt_v5.rb +1 -0
  82. data/lib/mindee/product/receipt/receipt_v5_document.rb +12 -12
  83. data/lib/mindee/product/us/bank_check/bank_check_v1.rb +1 -0
  84. data/lib/mindee/product/us/bank_check/bank_check_v1_document.rb +8 -8
  85. data/lib/mindee/product/us/driver_license/driver_license_v1.rb +1 -0
  86. data/lib/mindee/product/us/driver_license/driver_license_v1_document.rb +28 -28
  87. data/lib/mindee/product/us/w9/w9_v1.rb +39 -0
  88. data/lib/mindee/product/us/w9/w9_v1_document.rb +15 -0
  89. data/lib/mindee/product/us/w9/w9_v1_page.rb +102 -0
  90. data/lib/mindee/product.rb +5 -0
  91. data/lib/mindee/version.rb +5 -1
  92. data/lib/mindee.rb +47 -0
  93. metadata +43 -9
  94. data/docs/ruby-api-builder.md +0 -123
  95. data/docs/ruby-invoice-ocr.md +0 -271
  96. data/docs/ruby-passport-ocr.md +0 -165
  97. data/docs/ruby-receipt-ocr.md +0 -196
  98. data/lib/mindee/parsing/common/error.rb +0 -24
@@ -10,78 +10,78 @@ module Mindee
10
10
  class DriverLicenseV1Document < Mindee::Parsing::Common::Prediction
11
11
  include Mindee::Parsing::Standard
12
12
  # US driver license holders address
13
- # @return [Mindee::Parsing::Standard::TextField]
13
+ # @return [Mindee::Parsing::Standard::StringField]
14
14
  attr_reader :address
15
15
  # US driver license holders date of birth
16
16
  # @return [Mindee::Parsing::Standard::DateField]
17
17
  attr_reader :date_of_birth
18
18
  # Document Discriminator Number of the US Driver License
19
- # @return [Mindee::Parsing::Standard::TextField]
19
+ # @return [Mindee::Parsing::Standard::StringField]
20
20
  attr_reader :dd_number
21
21
  # US driver license holders class
22
- # @return [Mindee::Parsing::Standard::TextField]
22
+ # @return [Mindee::Parsing::Standard::StringField]
23
23
  attr_reader :dl_class
24
24
  # ID number of the US Driver License.
25
- # @return [Mindee::Parsing::Standard::TextField]
25
+ # @return [Mindee::Parsing::Standard::StringField]
26
26
  attr_reader :driver_license_id
27
27
  # US driver license holders endorsements
28
- # @return [Mindee::Parsing::Standard::TextField]
28
+ # @return [Mindee::Parsing::Standard::StringField]
29
29
  attr_reader :endorsements
30
30
  # Date on which the documents expires.
31
31
  # @return [Mindee::Parsing::Standard::DateField]
32
32
  attr_reader :expiry_date
33
33
  # US driver license holders eye colour
34
- # @return [Mindee::Parsing::Standard::TextField]
34
+ # @return [Mindee::Parsing::Standard::StringField]
35
35
  attr_reader :eye_color
36
36
  # US driver license holders first name(s)
37
- # @return [Mindee::Parsing::Standard::TextField]
37
+ # @return [Mindee::Parsing::Standard::StringField]
38
38
  attr_reader :first_name
39
39
  # US driver license holders hair colour
40
- # @return [Mindee::Parsing::Standard::TextField]
40
+ # @return [Mindee::Parsing::Standard::StringField]
41
41
  attr_reader :hair_color
42
42
  # US driver license holders hight
43
- # @return [Mindee::Parsing::Standard::TextField]
43
+ # @return [Mindee::Parsing::Standard::StringField]
44
44
  attr_reader :height
45
45
  # Date on which the documents was issued.
46
46
  # @return [Mindee::Parsing::Standard::DateField]
47
47
  attr_reader :issued_date
48
48
  # US driver license holders last name
49
- # @return [Mindee::Parsing::Standard::TextField]
49
+ # @return [Mindee::Parsing::Standard::StringField]
50
50
  attr_reader :last_name
51
51
  # US driver license holders restrictions
52
- # @return [Mindee::Parsing::Standard::TextField]
52
+ # @return [Mindee::Parsing::Standard::StringField]
53
53
  attr_reader :restrictions
54
54
  # US driver license holders gender
55
- # @return [Mindee::Parsing::Standard::TextField]
55
+ # @return [Mindee::Parsing::Standard::StringField]
56
56
  attr_reader :sex
57
57
  # US State
58
- # @return [Mindee::Parsing::Standard::TextField]
58
+ # @return [Mindee::Parsing::Standard::StringField]
59
59
  attr_reader :state
60
60
  # US driver license holders weight
61
- # @return [Mindee::Parsing::Standard::TextField]
61
+ # @return [Mindee::Parsing::Standard::StringField]
62
62
  attr_reader :weight
63
63
 
64
64
  # @param prediction [Hash]
65
65
  # @param page_id [Integer, nil]
66
66
  def initialize(prediction, page_id)
67
67
  super()
68
- @address = TextField.new(prediction['address'], page_id)
68
+ @address = StringField.new(prediction['address'], page_id)
69
69
  @date_of_birth = DateField.new(prediction['date_of_birth'], page_id)
70
- @dd_number = TextField.new(prediction['dd_number'], page_id)
71
- @dl_class = TextField.new(prediction['dl_class'], page_id)
72
- @driver_license_id = TextField.new(prediction['driver_license_id'], page_id)
73
- @endorsements = TextField.new(prediction['endorsements'], page_id)
70
+ @dd_number = StringField.new(prediction['dd_number'], page_id)
71
+ @dl_class = StringField.new(prediction['dl_class'], page_id)
72
+ @driver_license_id = StringField.new(prediction['driver_license_id'], page_id)
73
+ @endorsements = StringField.new(prediction['endorsements'], page_id)
74
74
  @expiry_date = DateField.new(prediction['expiry_date'], page_id)
75
- @eye_color = TextField.new(prediction['eye_color'], page_id)
76
- @first_name = TextField.new(prediction['first_name'], page_id)
77
- @hair_color = TextField.new(prediction['hair_color'], page_id)
78
- @height = TextField.new(prediction['height'], page_id)
75
+ @eye_color = StringField.new(prediction['eye_color'], page_id)
76
+ @first_name = StringField.new(prediction['first_name'], page_id)
77
+ @hair_color = StringField.new(prediction['hair_color'], page_id)
78
+ @height = StringField.new(prediction['height'], page_id)
79
79
  @issued_date = DateField.new(prediction['issued_date'], page_id)
80
- @last_name = TextField.new(prediction['last_name'], page_id)
81
- @restrictions = TextField.new(prediction['restrictions'], page_id)
82
- @sex = TextField.new(prediction['sex'], page_id)
83
- @state = TextField.new(prediction['state'], page_id)
84
- @weight = TextField.new(prediction['weight'], page_id)
80
+ @last_name = StringField.new(prediction['last_name'], page_id)
81
+ @restrictions = StringField.new(prediction['restrictions'], page_id)
82
+ @sex = StringField.new(prediction['sex'], page_id)
83
+ @state = StringField.new(prediction['state'], page_id)
84
+ @weight = StringField.new(prediction['weight'], page_id)
85
85
  end
86
86
 
87
87
  # @return [String]
@@ -0,0 +1,39 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../../../parsing'
4
+ require_relative 'w9_v1_document'
5
+ require_relative 'w9_v1_page'
6
+
7
+ module Mindee
8
+ module Product
9
+ module US
10
+ # US W9 module.
11
+ module W9
12
+ # US W9 V1 prediction inference.
13
+ class W9V1 < Mindee::Parsing::Common::Inference
14
+ @endpoint_name = 'us_w9'
15
+ @endpoint_version = '1'
16
+
17
+ # @param prediction [Hash]
18
+ def initialize(prediction)
19
+ super
20
+ @prediction = W9V1Document.new
21
+ @pages = []
22
+ prediction['pages'].each do |page|
23
+ @pages.push(W9V1Page.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,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../../../parsing'
4
+
5
+ module Mindee
6
+ module Product
7
+ module US
8
+ module W9
9
+ # US W9 V1 document prediction.
10
+ class W9V1Document < Mindee::Parsing::Common::Prediction
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,102 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../../../parsing'
4
+ require_relative 'w9_v1_document'
5
+
6
+ module Mindee
7
+ module Product
8
+ module US
9
+ module W9
10
+ # US W9 V1 page.
11
+ class W9V1Page < Mindee::Parsing::Common::Page
12
+ # @param prediction [Hash]
13
+ def initialize(prediction)
14
+ super(prediction)
15
+ @prediction = W9V1PagePrediction.new(
16
+ prediction['prediction'],
17
+ prediction['id']
18
+ )
19
+ end
20
+ end
21
+
22
+ # US W9 V1 page prediction.
23
+ class W9V1PagePrediction < W9V1Document
24
+ include Mindee::Parsing::Standard
25
+
26
+ # The street address (number, street, and apt. or suite no.) of the applicant.
27
+ # @return [Mindee::Parsing::Standard::StringField]
28
+ attr_reader :address
29
+ # The business name or disregarded entity name, if different from Name.
30
+ # @return [Mindee::Parsing::Standard::StringField]
31
+ attr_reader :business_name
32
+ # The city, state, and ZIP code of the applicant.
33
+ # @return [Mindee::Parsing::Standard::StringField]
34
+ attr_reader :city_state_zip
35
+ # The employer identification number.
36
+ # @return [Mindee::Parsing::Standard::StringField]
37
+ attr_reader :ein
38
+ # Name as shown on the applicant's income tax return.
39
+ # @return [Mindee::Parsing::Standard::StringField]
40
+ attr_reader :name
41
+ # Position of the signature date on the document.
42
+ # @return [Mindee::Parsing::Standard::PositionField]
43
+ attr_reader :signature_date_position
44
+ # Position of the signature on the document.
45
+ # @return [Mindee::Parsing::Standard::PositionField]
46
+ attr_reader :signature_position
47
+ # The applicant's social security number.
48
+ # @return [Mindee::Parsing::Standard::StringField]
49
+ attr_reader :ssn
50
+ # The federal tax classification, which can vary depending on the revision date.
51
+ # @return [Mindee::Parsing::Standard::StringField]
52
+ attr_reader :tax_classification
53
+ # Depending on revision year, among S, C, P or D for Limited Liability Company Classification.
54
+ # @return [Mindee::Parsing::Standard::StringField]
55
+ attr_reader :tax_classification_llc
56
+ # Tax Classification Other Details.
57
+ # @return [Mindee::Parsing::Standard::StringField]
58
+ attr_reader :tax_classification_other_details
59
+ # The Revision month and year of the W9 form.
60
+ # @return [Mindee::Parsing::Standard::StringField]
61
+ attr_reader :w9_revision_date
62
+
63
+ # @param prediction [Hash]
64
+ # @param page_id [Integer, nil]
65
+ def initialize(prediction, page_id)
66
+ @address = StringField.new(prediction['address'], page_id)
67
+ @business_name = StringField.new(prediction['business_name'], page_id)
68
+ @city_state_zip = StringField.new(prediction['city_state_zip'], page_id)
69
+ @ein = StringField.new(prediction['ein'], page_id)
70
+ @name = StringField.new(prediction['name'], page_id)
71
+ @signature_date_position = PositionField.new(prediction['signature_date_position'], page_id)
72
+ @signature_position = PositionField.new(prediction['signature_position'], page_id)
73
+ @ssn = StringField.new(prediction['ssn'], page_id)
74
+ @tax_classification = StringField.new(prediction['tax_classification'], page_id)
75
+ @tax_classification_llc = StringField.new(prediction['tax_classification_llc'], page_id)
76
+ @tax_classification_other_details = StringField.new(prediction['tax_classification_other_details'], page_id)
77
+ @w9_revision_date = StringField.new(prediction['w9_revision_date'], page_id)
78
+ super()
79
+ end
80
+
81
+ # @return [String]
82
+ def to_s
83
+ out_str = String.new
84
+ out_str << "\n:Name: #{@name}".rstrip
85
+ out_str << "\n:SSN: #{@ssn}".rstrip
86
+ out_str << "\n:Address: #{@address}".rstrip
87
+ out_str << "\n:City State Zip: #{@city_state_zip}".rstrip
88
+ out_str << "\n:Business Name: #{@business_name}".rstrip
89
+ out_str << "\n:EIN: #{@ein}".rstrip
90
+ out_str << "\n:Tax Classification: #{@tax_classification}".rstrip
91
+ out_str << "\n:Tax Classification Other Details: #{@tax_classification_other_details}".rstrip
92
+ out_str << "\n:W9 Revision Date: #{@w9_revision_date}".rstrip
93
+ out_str << "\n:Signature Position: #{@signature_position}".rstrip
94
+ out_str << "\n:Signature Date Position: #{@signature_date_position}".rstrip
95
+ out_str << "\n:Tax Classification LLC: #{@tax_classification_llc}".rstrip
96
+ out_str
97
+ end
98
+ end
99
+ end
100
+ end
101
+ end
102
+ end
@@ -1,9 +1,12 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require_relative 'product/barcode_reader/barcode_reader_v1'
3
4
  require_relative 'product/custom/custom_v1'
4
5
  require_relative 'product/proof_of_address/proof_of_address_v1'
5
6
  require_relative 'product/financial_document/financial_document_v1'
6
7
  require_relative 'product/invoice/invoice_v4'
8
+ require_relative 'product/cropper/cropper_v1'
9
+ require_relative 'product/multi_receipts_detector/multi_receipts_detector_v1'
7
10
  require_relative 'product/passport/passport_v1'
8
11
  require_relative 'product/receipt/receipt_v4'
9
12
  require_relative 'product/receipt/receipt_v5'
@@ -12,6 +15,8 @@ require_relative 'product/fr/bank_account_details/bank_account_details_v1'
12
15
  require_relative 'product/fr/bank_account_details/bank_account_details_v2'
13
16
  require_relative 'product/fr/carte_vitale/carte_vitale_v1'
14
17
  require_relative 'product/fr/id_card/id_card_v1'
18
+ require_relative 'product/fr/id_card/id_card_v2'
15
19
  require_relative 'product/invoice_splitter/invoice_splitter_v1'
16
20
  require_relative 'product/us/bank_check/bank_check_v1'
17
21
  require_relative 'product/us/driver_license/driver_license_v1'
22
+ require_relative 'product/us/w9/w9_v1'
@@ -2,8 +2,10 @@
2
2
 
3
3
  # Mindee
4
4
  module Mindee
5
- VERSION = '3.1.0'
5
+ # Current version.
6
+ VERSION = '3.2.0'
6
7
 
8
+ # Finds and return the current platform.
7
9
  # @return [String]
8
10
  def self.find_platform
9
11
  host = RbConfig::CONFIG['host_os']
@@ -18,5 +20,7 @@ module Mindee
18
20
  return os unless (regexp =~ host).nil?
19
21
  end
20
22
  end
23
+
24
+ # Current platform.
21
25
  PLATFORM = find_platform.freeze
22
26
  end
data/lib/mindee.rb CHANGED
@@ -3,8 +3,55 @@
3
3
  require 'mindee/client'
4
4
 
5
5
  module Mindee
6
+ # Mindee internal http module.
6
7
  module HTTP
8
+ # Global Mindee HTTP error handler.
7
9
  class HttpError < StandardError
8
10
  end
9
11
  end
12
+
13
+ # PDF-specific operations.
14
+ module PDF
15
+ end
16
+
17
+ # Document handling.
18
+ module Input
19
+ # Document source handling.
20
+ module Source
21
+ end
22
+ end
23
+
24
+ # Parsing internals and fields.
25
+ module Parsing
26
+ # Common fields and functions.
27
+ module Common
28
+ end
29
+
30
+ # Custom fields and functions.
31
+ module Custom
32
+ end
33
+
34
+ # Standard fields and functions.
35
+ module Standard
36
+ end
37
+ end
38
+
39
+ # Document input-related internals.
40
+ module Input
41
+ end
42
+
43
+ # Collection of all internal products.
44
+ module Product
45
+ # Europe-specific products.
46
+ module EU
47
+ end
48
+
49
+ # France-specific products.
50
+ module FR
51
+ end
52
+
53
+ # US-specific products.
54
+ module US
55
+ end
56
+ end
10
57
  end
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.1.0
4
+ version: 3.2.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: 2023-08-08 00:00:00.000000000 Z
11
+ date: 2023-09-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: marcel
@@ -117,27 +117,45 @@ files:
117
117
  - Rakefile
118
118
  - bin/console
119
119
  - bin/mindee.rb
120
+ - docs/bank_account_details_v2.md
121
+ - docs/bank_check_v1.md
122
+ - docs/barcode_reader_v1.md
123
+ - docs/carte_vitale_v1.md
120
124
  - docs/code_samples/bank_account_details_v1.txt
121
125
  - docs/code_samples/bank_account_details_v2.txt
122
126
  - docs/code_samples/bank_check_v1.txt
127
+ - docs/code_samples/barcode_reader_v1.txt
123
128
  - docs/code_samples/carte_vitale_v1.txt
129
+ - docs/code_samples/cropper_v1.txt
124
130
  - docs/code_samples/custom_v1.txt
125
131
  - docs/code_samples/default.txt
126
132
  - docs/code_samples/expense_receipts_v4.txt
127
133
  - docs/code_samples/expense_receipts_v5.txt
128
134
  - docs/code_samples/financial_document_v1.txt
129
135
  - docs/code_samples/idcard_fr_v1.txt
136
+ - docs/code_samples/idcard_fr_v2.txt
130
137
  - docs/code_samples/invoice_splitter_v1_async.txt
131
138
  - docs/code_samples/invoices_v4.txt
132
139
  - docs/code_samples/license_plates_v1.txt
140
+ - docs/code_samples/multi_receipts_detector_v1.txt
133
141
  - docs/code_samples/passport_v1.txt
134
142
  - docs/code_samples/proof_of_address_v1.txt
135
143
  - docs/code_samples/us_driver_license_v1.txt
136
- - docs/ruby-api-builder.md
137
- - docs/ruby-getting-started.md
138
- - docs/ruby-invoice-ocr.md
139
- - docs/ruby-passport-ocr.md
140
- - docs/ruby-receipt-ocr.md
144
+ - docs/code_samples/us_w9_v1.txt
145
+ - docs/cropper_v1.md
146
+ - docs/custom_v1.md
147
+ - docs/expense_receipts_v5.md
148
+ - docs/financial_document_v1.md
149
+ - docs/getting_started.md
150
+ - docs/idcard_fr_v2.md
151
+ - docs/invoice_splitter_v1.md
152
+ - docs/invoices_v4.md
153
+ - docs/license_plates_v1.md
154
+ - docs/multi_receipts_detector_v1.md
155
+ - docs/passport_v1.md
156
+ - docs/proof_of_address_v1.md
157
+ - docs/us_driver_license_v1.md
158
+ - docs/us_w9_v1.md
141
159
  - lib/mindee.rb
142
160
  - lib/mindee/client.rb
143
161
  - lib/mindee/geometry.rb
@@ -147,14 +165,15 @@ files:
147
165
  - lib/mindee/geometry/quadrilateral.rb
148
166
  - lib/mindee/geometry/utils.rb
149
167
  - lib/mindee/http.rb
168
+ - lib/mindee/http/.rubocop.yml
150
169
  - lib/mindee/http/endpoint.rb
170
+ - lib/mindee/http/error.rb
151
171
  - lib/mindee/input.rb
152
172
  - lib/mindee/input/sources.rb
153
173
  - lib/mindee/parsing.rb
154
174
  - lib/mindee/parsing/common.rb
155
175
  - lib/mindee/parsing/common/api_response.rb
156
176
  - lib/mindee/parsing/common/document.rb
157
- - lib/mindee/parsing/common/error.rb
158
177
  - lib/mindee/parsing/common/inference.rb
159
178
  - lib/mindee/parsing/common/ocr.rb
160
179
  - lib/mindee/parsing/common/ocr/mvision_v1.rb
@@ -175,13 +194,19 @@ files:
175
194
  - lib/mindee/parsing/standard/locale_field.rb
176
195
  - lib/mindee/parsing/standard/payment_details_field.rb
177
196
  - lib/mindee/parsing/standard/position_field.rb
197
+ - lib/mindee/parsing/standard/string_field.rb
178
198
  - lib/mindee/parsing/standard/tax_field.rb
179
- - lib/mindee/parsing/standard/text_field.rb
180
199
  - lib/mindee/pdf.rb
181
200
  - lib/mindee/pdf/pdf_processing.rb
182
201
  - lib/mindee/pdf/pdf_tools.rb
183
202
  - lib/mindee/product.rb
184
203
  - lib/mindee/product/.rubocop.yml
204
+ - lib/mindee/product/barcode_reader/barcode_reader_v1.rb
205
+ - lib/mindee/product/barcode_reader/barcode_reader_v1_document.rb
206
+ - lib/mindee/product/barcode_reader/barcode_reader_v1_page.rb
207
+ - lib/mindee/product/cropper/cropper_v1.rb
208
+ - lib/mindee/product/cropper/cropper_v1_document.rb
209
+ - lib/mindee/product/cropper/cropper_v1_page.rb
185
210
  - lib/mindee/product/custom/custom_v1.rb
186
211
  - lib/mindee/product/custom/custom_v1_document.rb
187
212
  - lib/mindee/product/custom/custom_v1_page.rb
@@ -205,6 +230,9 @@ files:
205
230
  - lib/mindee/product/fr/id_card/id_card_v1.rb
206
231
  - lib/mindee/product/fr/id_card/id_card_v1_document.rb
207
232
  - lib/mindee/product/fr/id_card/id_card_v1_page.rb
233
+ - lib/mindee/product/fr/id_card/id_card_v2.rb
234
+ - lib/mindee/product/fr/id_card/id_card_v2_document.rb
235
+ - lib/mindee/product/fr/id_card/id_card_v2_page.rb
208
236
  - lib/mindee/product/invoice/invoice_v4.rb
209
237
  - lib/mindee/product/invoice/invoice_v4_document.rb
210
238
  - lib/mindee/product/invoice/invoice_v4_line_item.rb
@@ -212,6 +240,9 @@ files:
212
240
  - lib/mindee/product/invoice_splitter/invoice_splitter_v1.rb
213
241
  - lib/mindee/product/invoice_splitter/invoice_splitter_v1_document.rb
214
242
  - lib/mindee/product/invoice_splitter/invoice_splitter_v1_page.rb
243
+ - lib/mindee/product/multi_receipts_detector/multi_receipts_detector_v1.rb
244
+ - lib/mindee/product/multi_receipts_detector/multi_receipts_detector_v1_document.rb
245
+ - lib/mindee/product/multi_receipts_detector/multi_receipts_detector_v1_page.rb
215
246
  - lib/mindee/product/passport/passport_v1.rb
216
247
  - lib/mindee/product/passport/passport_v1_document.rb
217
248
  - lib/mindee/product/passport/passport_v1_page.rb
@@ -231,6 +262,9 @@ files:
231
262
  - lib/mindee/product/us/driver_license/driver_license_v1.rb
232
263
  - lib/mindee/product/us/driver_license/driver_license_v1_document.rb
233
264
  - lib/mindee/product/us/driver_license/driver_license_v1_page.rb
265
+ - lib/mindee/product/us/w9/w9_v1.rb
266
+ - lib/mindee/product/us/w9/w9_v1_document.rb
267
+ - lib/mindee/product/us/w9/w9_v1_page.rb
234
268
  - lib/mindee/version.rb
235
269
  - mindee.gemspec
236
270
  homepage: https://github.com/mindee/mindee-api-ruby
@@ -1,123 +0,0 @@
1
- The Ruby OCR SDK supports [custom-built API](https://developers.mindee.com/docs/build-your-first-document-parsing-api) from the API Builder.
2
-
3
- If your document isn't covered by one of Mindee's Off-the-Shelf APIs, you can create your own API using the
4
- [API Builder](https://developers.mindee.com/docs/overview).
5
-
6
- For the following examples, we are using our own [W9s custom API](https://developers.mindee.com/docs/w9-forms-ocr),
7
- created with the [API Builder](https://developers.mindee.com/docs/overview).
8
-
9
- > 📘 **Info**
10
- >
11
- > We used a data model that will be different from yours.
12
- > To modify this to your own custom API, change the `mindee_client.create_endpoint` call with your own parameters.
13
-
14
- ```ruby
15
- require 'mindee'
16
-
17
- # Init a new client and configure your custom document
18
- mindee_client = Mindee::Client.new(api_key: 'my-api-key')
19
-
20
- # Create an endpoint for your custom product
21
- custom_endpoint = mindee_client.create_endpoint(
22
- account_name: 'john',
23
- endpoint_name: 'wnine',
24
- version: '1.1' # optional, if not set, uses the latest version of the model
25
- )
26
- ```
27
-
28
- > **Note:** If the `version` argument is set, you'll be required to update it every time a new model is trained.
29
- > This is probably not needed for development but essential for production use.
30
-
31
- ## Parsing Documents
32
- The client calls the `parse` method when parsing your custom document, which will return an object that you can send to the API.
33
- If your document is not an OTS API, the document's endpoint must be specified when calling the `parse` method.
34
-
35
- ```ruby
36
- mindee_client.parse(
37
- input_source,
38
- Mindee::Product::Custom::CustomV1,
39
- endpoint: custom_endpoint
40
- )
41
-
42
-
43
- # Print a summary of the document prediction in RST format
44
- puts result.document
45
- ```
46
-
47
- > 📘 **Info**
48
- >
49
- > If your custom document has the same name as one of the [off-the-shelf APIs](https://developers.mindee.com/docs/what-is-off-the-shelf-api) document,
50
- > you **must** specify your account name when creating the `create_endpoint` method:
51
-
52
- ```ruby
53
- custom_endpoint = mindee_client.create_endpoint(
54
- endpoint_name: 'receipt',
55
- account_name: 'john'
56
- )
57
- ```
58
-
59
- ## Document Fields
60
- All the fields defined in the API builder when creating your custom document are available.
61
-
62
- In custom documents, each field will hold an array of all the words in the document which are related to that field.
63
- Each word is an object that has the text content, geometry information, and confidence score.
64
-
65
- Value fields can be accessed via the `fields` attribute.
66
-
67
- Classification fields can be accessed via the `classifications` attribute.
68
-
69
- > 📘 **Info**
70
- >
71
- > Both document level and page level objects work in the same way.
72
-
73
- ### Fields Attribute
74
- The `fields` attribute is a hashmap with the following structure:
75
-
76
- * key: the API name of the field, as a `symbol`
77
- * value: a `ListField` object which has a `values` attribute, containing a list of all values found for the field.
78
-
79
- Individual field values can be accessed by using the field's API name, in the examples below we'll use the `address` field.
80
-
81
- ```ruby
82
- # raw data, list of each word object
83
- pp result.document.inference.prediction.fields[:address].values
84
-
85
- # list of all values
86
- puts result.document.inference.prediction.fields[:address].contents_list
87
-
88
- # default string representation
89
- puts result.document.inference.prediction.fields[:address].to_s
90
-
91
- # custom string representation
92
- puts result.document.inference.prediction.fields[:address].contents_str(separator: '_')
93
- ```
94
-
95
- To iterate over all the fields:
96
- ```ruby
97
- result.document.inference.prediction.fields.each do |name, info|
98
- puts name
99
- puts info.values
100
- end
101
- ```
102
-
103
- ### Classifications Attribute
104
- The `classifications` attribute is a hashmap with the following structure:
105
-
106
- * key: the API name of the field, as a `symbol`
107
- * value: a `ClassificationField` object which has a `value` attribute, containing a string representation of the detected classification.
108
-
109
- ```ruby
110
- # raw data, list of each word object
111
- puts result.document.classifications[:doc_type].value
112
- ```
113
-
114
- To iterate over all the classifications:
115
- ```ruby
116
- result.document.classifications.each do |name, info|
117
- puts name
118
- puts info.value
119
- end
120
- ```
121
-
122
- ## Questions?
123
- [Join our Slack](https://join.slack.com/t/mindee-community/shared_invite/zt-1jv6nawjq-FDgFcF2T5CmMmRpl9LLptw)