mindee 3.1.1 → 3.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (98) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +16 -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 +83 -14
  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.1'
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.1
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-10 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)