mindee 3.2.0 → 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 (35) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/.rubocop.yml +1 -0
  4. data/CHANGELOG.md +10 -0
  5. data/bin/mindee.rb +1 -1
  6. data/docs/barcode_reader_v1.md +2 -2
  7. data/docs/carte_grise_v1.md +454 -0
  8. data/docs/code_samples/carte_grise_v1.txt +19 -0
  9. data/docs/cropper_v1.md +1 -1
  10. data/docs/custom_v1.md +9 -1
  11. data/docs/expense_receipts_v5.md +1 -1
  12. data/docs/financial_document_v1.md +6 -6
  13. data/docs/invoices_v4.md +68 -99
  14. data/docs/multi_receipts_detector_v1.md +1 -1
  15. data/docs/us_w9_v1.md +3 -3
  16. data/lib/mindee/http/endpoint.rb +5 -1
  17. data/lib/mindee/http/error.rb +1 -1
  18. data/lib/mindee/parsing/common/api_response.rb +3 -2
  19. data/lib/mindee/parsing/common/document.rb +4 -1
  20. data/lib/mindee/parsing/custom/list_field.rb +7 -5
  21. data/lib/mindee/parsing/standard/base_field.rb +1 -1
  22. data/lib/mindee/product/financial_document/financial_document_v1_document.rb +2 -2
  23. data/lib/mindee/product/fr/carte_grise/carte_grise_v1.rb +39 -0
  24. data/lib/mindee/product/fr/carte_grise/carte_grise_v1_document.rb +235 -0
  25. data/lib/mindee/product/fr/carte_grise/carte_grise_v1_page.rb +34 -0
  26. data/lib/mindee/product/invoice/invoice_v4.rb +1 -2
  27. data/lib/mindee/product/invoice/invoice_v4_document.rb +105 -145
  28. data/lib/mindee/product/invoice/invoice_v4_line_item.rb +54 -30
  29. data/lib/mindee/product/us/w9/w9_v1.rb +2 -2
  30. data/lib/mindee/product/us/w9/w9_v1_document.rb +1 -1
  31. data/lib/mindee/product/us/w9/w9_v1_page.rb +2 -2
  32. data/lib/mindee/product.rb +1 -0
  33. data/lib/mindee/version.rb +1 -1
  34. data/lib/mindee.rb +0 -3
  35. metadata +7 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3ab7abbf2686b67f4330ceb018dc5de8b799d567d586072199f22dfcb12b647d
4
- data.tar.gz: 15d885b0fa5e42cf84a1ca6f4238f0c1681bb4c3587fbdf8cd9b48f69850a1f4
3
+ metadata.gz: ba0a25a68b96ba432920774b10de815c3dbf89386d9e74ea22b13fc36535e50a
4
+ data.tar.gz: a4f6f9d5da64be2c83ecdd32fdc6f8322998c470c1f94a099dff417ac9419671
5
5
  SHA512:
6
- metadata.gz: 0036d0f5b668d81a1fb602689fc33d98e6ff02a03175b219f7c541689d27a4fb76123982610d979b89f97f074d3fc202effa5f3d00ac9da905d99afe20ef0beb
7
- data.tar.gz: dc4d2bd7147c6c0d4d589642d0d6b6a343fdfc5fc305e5d03fe1628dd013b70679b5185fd531015957a998ae9c930d570f537e352d7899ff783945179c480470
6
+ metadata.gz: f7af6e145ded009966a409c35bc7058158532cee1cc927486b1b05a003a3c8238968305ee4e546cc354abb3b78a5bc45caf4379b1e586bdcf61d800a766368b6
7
+ data.tar.gz: 591c6e87b9fcdc25b88bf3da8f6fd38c950fb9b03c6aeb096a14bc1f0da9dbf458c7445f137cbc27cef823126472b03653960ba741ea30083642da443f9f523a
data/.gitignore CHANGED
@@ -19,6 +19,7 @@ _test.rb
19
19
  /vendor
20
20
  /mindee-*/
21
21
  local-test
22
+ local_test/
22
23
 
23
24
  # Used by dotenv library to load environment variables.
24
25
  .env
data/.rubocop.yml CHANGED
@@ -7,6 +7,7 @@ AllCops:
7
7
  - '.git/**/*'
8
8
  - 'bin/*'
9
9
  - _test.rb
10
+ - local_test/*
10
11
 
11
12
  TargetRubyVersion: 2.6
12
13
  SuggestExtensions: false
data/CHANGELOG.md CHANGED
@@ -1,5 +1,15 @@
1
1
  # Mindee Ruby API Library Changelog
2
2
 
3
+ ## v3.3.0 - 2023-11-17
4
+ ### Changes
5
+ * :sparkles: add support for Carte Grise V1
6
+ * :sparkles: add page number attributes to doc
7
+ * :arrow_up: update tests, docs & display format for some products
8
+
9
+ ### Fixes
10
+ * :bug: fix page id not working on newer custom models
11
+
12
+
3
13
  ## v3.2.0 - 2023-09-15
4
14
  ### Changes
5
15
  * :sparkles: add support for Multi Receipts Detector V1
data/bin/mindee.rb CHANGED
@@ -157,7 +157,7 @@ global_parser = OptionParser.new do | opts |
157
157
  end
158
158
 
159
159
  command = ARGV.shift
160
- if !DOCUMENTS.has_key?(command)
160
+ if !DOCUMENTS.include?(command)
161
161
  abort(global_parser.help)
162
162
  end
163
163
  doc_class = DOCUMENTS[command][:doc_class]
@@ -1,5 +1,5 @@
1
1
  ---
2
- title: Barcode Reader API Ruby
2
+ title: Barcode Reader OCR Ruby
3
3
  ---
4
4
  The Ruby OCR SDK supports the [Barcode Reader API](https://platform.mindee.com/mindee/barcode_reader).
5
5
 
@@ -34,7 +34,7 @@ puts result.document
34
34
  ########
35
35
  Document
36
36
  ########
37
- :Mindee ID: 0f54c154-5030-41ac-939e-046b7f6aca71
37
+ :Mindee ID: f9c48da1-a306-4805-8da8-f7231fda2d88
38
38
  :Filename: default_sample.jpg
39
39
 
40
40
  Inference
@@ -0,0 +1,454 @@
1
+ ---
2
+ title: FR Carte Grise OCR Ruby
3
+ ---
4
+ The Ruby OCR SDK supports the [Carte Grise API](https://platform.mindee.com/mindee/carte_grise).
5
+
6
+ Using the [sample below](https://github.com/mindee/client-lib-test-data/blob/main/products/carte_grise/default_sample.jpg), we are going to illustrate how to extract the data that we want using the OCR SDK.
7
+ ![Carte Grise sample](https://github.com/mindee/client-lib-test-data/blob/main/products/carte_grise/default_sample.jpg?raw=true)
8
+
9
+ # Quick-Start
10
+ ```rb
11
+ require 'mindee'
12
+
13
+ # Init a new client
14
+ mindee_client = Mindee::Client.new(api_key: 'my-api-key')
15
+
16
+ # Load a file from disk
17
+ input_source = mindee_client.source_from_path('/path/to/the/file.ext')
18
+
19
+ # Parse the file
20
+ result = mindee_client.parse(
21
+ input_source,
22
+ Mindee::Product::FR::CarteGrise::CarteGriseV1
23
+ )
24
+
25
+ # Print a full summary of the parsed data in RST format
26
+ puts result.document
27
+
28
+ # Print the document-level parsed data
29
+ # puts result.document.inference.prediction
30
+ ```
31
+
32
+ **Output (RST):**
33
+ ```rst
34
+ ########
35
+ Document
36
+ ########
37
+ :Mindee ID: f0e0f7a9-0f44-4a3d-92c7-5be262133d33
38
+ :Filename: default_sample.jpg
39
+
40
+ Inference
41
+ #########
42
+ :Product: mindee/carte_grise v1.0
43
+ :Rotation applied: Yes
44
+
45
+ Prediction
46
+ ==========
47
+ :a: AB-123-CD
48
+ :b: 1998-01-05
49
+ :c1: DUPONT YVES
50
+ :c3: 27 RUE DES ROITELETS 59169 FERIN LES BAINS FRANCE
51
+ :c41: 2 DELAROCHE
52
+ :c4a: EST LE PROPRIETAIRE DU VEHICULE
53
+ :d1:
54
+ :d3: MODELE
55
+ :e: VFS1V2009AS1V2009
56
+ :f1: 1915
57
+ :f2: 1915
58
+ :f3: 1915
59
+ :g: 3030
60
+ :g1: 1307
61
+ :i: 2009-12-04
62
+ :j: N1
63
+ :j1: VP
64
+ :j2: AA
65
+ :j3: CI
66
+ :p1: 1900
67
+ :p2: 90
68
+ :p3: GO
69
+ :p6: 6
70
+ :q:
71
+ :s1: 5
72
+ :s2:
73
+ :u1: 77
74
+ :u2: 3000
75
+ :v7: 155
76
+ :x1: 2011-07-06
77
+ :y1:
78
+ :y2:
79
+ :y3: 0
80
+ :y4: 4
81
+ :y5: 2.5
82
+ :y6: 178.35
83
+ :Formula Number: 2009AS05284
84
+ :Owner's First Name: YVES
85
+ :Owner's Surname: DUPONT
86
+ :MRZ Line 1:
87
+ :MRZ Line 2: CI<<MARQUES<<<<<<<MODELE<<<<<<<2009AS0528402
88
+
89
+ Page Predictions
90
+ ================
91
+
92
+ Page 0
93
+ ------
94
+ :a: AB-123-CD
95
+ :b: 1998-01-05
96
+ :c1: DUPONT YVES
97
+ :c3: 27 RUE DES ROITELETS 59169 FERIN LES BAINS FRANCE
98
+ :c41: 2 DELAROCHE
99
+ :c4a: EST LE PROPRIETAIRE DU VEHICULE
100
+ :d1:
101
+ :d3: MODELE
102
+ :e: VFS1V2009AS1V2009
103
+ :f1: 1915
104
+ :f2: 1915
105
+ :f3: 1915
106
+ :g: 3030
107
+ :g1: 1307
108
+ :i: 2009-12-04
109
+ :j: N1
110
+ :j1: VP
111
+ :j2: AA
112
+ :j3: CI
113
+ :p1: 1900
114
+ :p2: 90
115
+ :p3: GO
116
+ :p6: 6
117
+ :q: 006
118
+ :s1: 5
119
+ :s2:
120
+ :u1: 77
121
+ :u2: 3000
122
+ :v7: 155
123
+ :x1: 2011-07-06
124
+ :y1: 17835
125
+ :y2:
126
+ :y3: 0
127
+ :y4: 4
128
+ :y5: 2.5
129
+ :y6: 178.35
130
+ :Formula Number: 2009AS05284
131
+ :Owner's First Name: YVES
132
+ :Owner's Surname: DUPONT
133
+ :MRZ Line 1:
134
+ :MRZ Line 2: CI<<MARQUES<<<<<<<MODELE<<<<<<<2009AS0528402
135
+ ```
136
+
137
+ # Field Types
138
+ ## Standard Fields
139
+ These fields are generic and used in several products.
140
+
141
+ ### Basic Field
142
+ Each prediction object contains a set of fields that inherit from the generic `Field` class.
143
+ A typical `Field` object will have the following attributes:
144
+
145
+ * **value** (`String`, `Float`, `Integer`, `Boolean`): corresponds to the field value. Can be `nil` if no value was extracted.
146
+ * **confidence** (Float, nil): the confidence score of the field prediction.
147
+ * **bounding_box** (`Mindee::Geometry::Quadrilateral`, `nil`): contains exactly 4 relative vertices (points) coordinates of a right rectangle containing the field in the document.
148
+ * **polygon** (`Mindee::Geometry::Polygon`, `nil`): contains the relative vertices coordinates (`Point`) of a polygon containing the field in the image.
149
+ * **page_id** (`Integer`, `nil`): the ID of the page, is `nil` when at document-level.
150
+ * **reconstructed** (`Boolean`): indicates whether or not an object was reconstructed (not extracted as the API gave it).
151
+
152
+
153
+ Aside from the previous attributes, all basic fields have access to a `to_s` method that can be used to print their value as a string.
154
+
155
+ ### Date Field
156
+ Aside from the basic `Field` attributes, the date field `DateField` also implements the following:
157
+
158
+ * **date_object** (`Date`): an accessible representation of the value as a JavaScript object.
159
+
160
+ ### String Field
161
+ The text field `StringField` only has one constraint: it's **value** is a `String` (or `nil`).
162
+
163
+ # Attributes
164
+ The following fields are extracted for Carte Grise V1:
165
+
166
+ ## a
167
+ **a** ([StringField](#string-field)): The vehicle's license plate number.
168
+
169
+ ```rb
170
+ puts result.document.inference.prediction.a.value
171
+ ```
172
+
173
+ ## b
174
+ **b** ([DateField](#date-field)): The vehicle's first release date.
175
+
176
+ ```rb
177
+ puts result.document.inference.prediction.b.value
178
+ ```
179
+
180
+ ## c1
181
+ **c1** ([StringField](#string-field)): The vehicle owner's full name including maiden name.
182
+
183
+ ```rb
184
+ puts result.document.inference.prediction.c1.value
185
+ ```
186
+
187
+ ## c3
188
+ **c3** ([StringField](#string-field)): The vehicle owner's address.
189
+
190
+ ```rb
191
+ puts result.document.inference.prediction.c3.value
192
+ ```
193
+
194
+ ## c41
195
+ **c41** ([StringField](#string-field)): Number of owners of the license certificate.
196
+
197
+ ```rb
198
+ puts result.document.inference.prediction.c41.value
199
+ ```
200
+
201
+ ## c4a
202
+ **c4a** ([StringField](#string-field)): Mentions about the ownership of the vehicle.
203
+
204
+ ```rb
205
+ puts result.document.inference.prediction.c4a.value
206
+ ```
207
+
208
+ ## d1
209
+ **d1** ([StringField](#string-field)): The vehicle's brand.
210
+
211
+ ```rb
212
+ puts result.document.inference.prediction.d1.value
213
+ ```
214
+
215
+ ## d3
216
+ **d3** ([StringField](#string-field)): The vehicle's commercial name.
217
+
218
+ ```rb
219
+ puts result.document.inference.prediction.d3.value
220
+ ```
221
+
222
+ ## e
223
+ **e** ([StringField](#string-field)): The Vehicle Identification Number (VIN).
224
+
225
+ ```rb
226
+ puts result.document.inference.prediction.e.value
227
+ ```
228
+
229
+ ## f1
230
+ **f1** ([StringField](#string-field)): The vehicle's maximum admissible weight.
231
+
232
+ ```rb
233
+ puts result.document.inference.prediction.f1.value
234
+ ```
235
+
236
+ ## f2
237
+ **f2** ([StringField](#string-field)): The vehicle's maximum admissible weight within the license's state.
238
+
239
+ ```rb
240
+ puts result.document.inference.prediction.f2.value
241
+ ```
242
+
243
+ ## f3
244
+ **f3** ([StringField](#string-field)): The vehicle's maximum authorized weight with coupling.
245
+
246
+ ```rb
247
+ puts result.document.inference.prediction.f3.value
248
+ ```
249
+
250
+ ## Formula Number
251
+ **formula_number** ([StringField](#string-field)): The document's formula number.
252
+
253
+ ```rb
254
+ puts result.document.inference.prediction.formula_number.value
255
+ ```
256
+
257
+ ## g
258
+ **g** ([StringField](#string-field)): The vehicle's weight with coupling if tractor different than category M1.
259
+
260
+ ```rb
261
+ puts result.document.inference.prediction.g.value
262
+ ```
263
+
264
+ ## g1
265
+ **g1** ([StringField](#string-field)): The vehicle's national empty weight.
266
+
267
+ ```rb
268
+ puts result.document.inference.prediction.g1.value
269
+ ```
270
+
271
+ ## i
272
+ **i** ([DateField](#date-field)): The car registration date of the given certificate.
273
+
274
+ ```rb
275
+ puts result.document.inference.prediction.i.value
276
+ ```
277
+
278
+ ## j
279
+ **j** ([StringField](#string-field)): The vehicle's category.
280
+
281
+ ```rb
282
+ puts result.document.inference.prediction.j.value
283
+ ```
284
+
285
+ ## j1
286
+ **j1** ([StringField](#string-field)): The vehicle's national type.
287
+
288
+ ```rb
289
+ puts result.document.inference.prediction.j1.value
290
+ ```
291
+
292
+ ## j2
293
+ **j2** ([StringField](#string-field)): The vehicle's body type (CE).
294
+
295
+ ```rb
296
+ puts result.document.inference.prediction.j2.value
297
+ ```
298
+
299
+ ## j3
300
+ **j3** ([StringField](#string-field)): The vehicle's body type (National designation).
301
+
302
+ ```rb
303
+ puts result.document.inference.prediction.j3.value
304
+ ```
305
+
306
+ ## MRZ Line 1
307
+ **mrz1** ([StringField](#string-field)): Machine Readable Zone, first line.
308
+
309
+ ```rb
310
+ puts result.document.inference.prediction.mrz1.value
311
+ ```
312
+
313
+ ## MRZ Line 2
314
+ **mrz2** ([StringField](#string-field)): Machine Readable Zone, second line.
315
+
316
+ ```rb
317
+ puts result.document.inference.prediction.mrz2.value
318
+ ```
319
+
320
+ ## Owner's First Name
321
+ **owner_first_name** ([StringField](#string-field)): The vehicle's owner first name.
322
+
323
+ ```rb
324
+ puts result.document.inference.prediction.owner_first_name.value
325
+ ```
326
+
327
+ ## Owner's Surname
328
+ **owner_surname** ([StringField](#string-field)): The vehicle's owner surname.
329
+
330
+ ```rb
331
+ puts result.document.inference.prediction.owner_surname.value
332
+ ```
333
+
334
+ ## p1
335
+ **p1** ([StringField](#string-field)): The vehicle engine's displacement (cm3).
336
+
337
+ ```rb
338
+ puts result.document.inference.prediction.p1.value
339
+ ```
340
+
341
+ ## p2
342
+ **p2** ([StringField](#string-field)): The vehicle's maximum net power (kW).
343
+
344
+ ```rb
345
+ puts result.document.inference.prediction.p2.value
346
+ ```
347
+
348
+ ## p3
349
+ **p3** ([StringField](#string-field)): The vehicle's fuel type or energy source.
350
+
351
+ ```rb
352
+ puts result.document.inference.prediction.p3.value
353
+ ```
354
+
355
+ ## p6
356
+ **p6** ([StringField](#string-field)): The vehicle's administrative power (fiscal horsepower).
357
+
358
+ ```rb
359
+ puts result.document.inference.prediction.p6.value
360
+ ```
361
+
362
+ ## q
363
+ **q** ([StringField](#string-field)): The vehicle's power to weight ratio.
364
+
365
+ ```rb
366
+ puts result.document.inference.prediction.q.value
367
+ ```
368
+
369
+ ## s1
370
+ **s1** ([StringField](#string-field)): The vehicle's number of seats.
371
+
372
+ ```rb
373
+ puts result.document.inference.prediction.s1.value
374
+ ```
375
+
376
+ ## s2
377
+ **s2** ([StringField](#string-field)): The vehicle's number of standing rooms (person).
378
+
379
+ ```rb
380
+ puts result.document.inference.prediction.s2.value
381
+ ```
382
+
383
+ ## u1
384
+ **u1** ([StringField](#string-field)): The vehicle's sound level (dB).
385
+
386
+ ```rb
387
+ puts result.document.inference.prediction.u1.value
388
+ ```
389
+
390
+ ## u2
391
+ **u2** ([StringField](#string-field)): The vehicle engine's rotation speed (RPM).
392
+
393
+ ```rb
394
+ puts result.document.inference.prediction.u2.value
395
+ ```
396
+
397
+ ## v7
398
+ **v7** ([StringField](#string-field)): The vehicle's CO2 emission (g/km).
399
+
400
+ ```rb
401
+ puts result.document.inference.prediction.v7.value
402
+ ```
403
+
404
+ ## x1
405
+ **x1** ([StringField](#string-field)): Next technical control date.
406
+
407
+ ```rb
408
+ puts result.document.inference.prediction.x1.value
409
+ ```
410
+
411
+ ## y1
412
+ **y1** ([StringField](#string-field)): Amount of the regional proportional tax of the registration (in euros).
413
+
414
+ ```rb
415
+ puts result.document.inference.prediction.y1.value
416
+ ```
417
+
418
+ ## y2
419
+ **y2** ([StringField](#string-field)): Amount of the additional parafiscal tax of the registration (in euros).
420
+
421
+ ```rb
422
+ puts result.document.inference.prediction.y2.value
423
+ ```
424
+
425
+ ## y3
426
+ **y3** ([StringField](#string-field)): Amount of the additional CO2 tax of the registration (in euros).
427
+
428
+ ```rb
429
+ puts result.document.inference.prediction.y3.value
430
+ ```
431
+
432
+ ## y4
433
+ **y4** ([StringField](#string-field)): Amount of the fee for managing the registration (in euros).
434
+
435
+ ```rb
436
+ puts result.document.inference.prediction.y4.value
437
+ ```
438
+
439
+ ## y5
440
+ **y5** ([StringField](#string-field)): Amount of the fee for delivery of the registration certificate in euros.
441
+
442
+ ```rb
443
+ puts result.document.inference.prediction.y5.value
444
+ ```
445
+
446
+ ## y6
447
+ **y6** ([StringField](#string-field)): Total amount of registration fee to be paid in euros.
448
+
449
+ ```rb
450
+ puts result.document.inference.prediction.y6.value
451
+ ```
452
+
453
+ # Questions?
454
+ [Join our Slack](https://join.slack.com/t/mindee-community/shared_invite/zt-1jv6nawjq-FDgFcF2T5CmMmRpl9LLptw)
@@ -0,0 +1,19 @@
1
+ require 'mindee'
2
+
3
+ # Init a new client
4
+ mindee_client = Mindee::Client.new(api_key: 'my-api-key')
5
+
6
+ # Load a file from disk
7
+ input_source = mindee_client.source_from_path('/path/to/the/file.ext')
8
+
9
+ # Parse the file
10
+ result = mindee_client.parse(
11
+ input_source,
12
+ Mindee::Product::FR::CarteGrise::CarteGriseV1
13
+ )
14
+
15
+ # Print a full summary of the parsed data in RST format
16
+ puts result.document
17
+
18
+ # Print the document-level parsed data
19
+ # puts result.document.inference.prediction
data/docs/cropper_v1.md CHANGED
@@ -1,5 +1,5 @@
1
1
  ---
2
- title: Cropper API Ruby
2
+ title: Cropper OCR Ruby
3
3
  ---
4
4
  The Ruby OCR SDK supports the [Cropper API](https://platform.mindee.com/mindee/cropper).
5
5
 
data/docs/custom_v1.md CHANGED
@@ -59,14 +59,22 @@ If it is not set, it will default to "1".
59
59
  A `ListField` is a special type of custom list that implements the following:
60
60
 
61
61
  * **confidence** (`Float`): the confidence score of the field prediction.
62
- * **pageId** (`Integer`): the ID of the page, is `nil` when at document-level.
63
62
  * **reconstructed** (`Boolean`): indicates whether or not an object was reconstructed (not extracted as the API gave it).
63
+ * **values** (`Array<`[ListFieldItem](#list-field-item)`>`): list of value fields
64
64
 
65
65
  Since the inner contents can vary, the value isn't accessed through a property, but rather through the following functions:
66
66
  * **contents_list()** (`[Array, Hash, String, nil]`): returns a list of values for each element.
67
67
  * **contents_str(separator:' ')** (`String`): returns a list of concatenated values, with an optional **separator** `String` between them.
68
68
  * **to_s()**: returns a string representation of all values, with an empty space between each of them.
69
69
 
70
+ #### List Field Item
71
+
72
+ Values of `ListField`s are stored in a `ListFieldItem` structure, which is implemented as follows:
73
+ * **content** (`String`): extracted content of the prediction
74
+ * **confidence** (`Float`): the confidence score of the prediction
75
+ * **bounding_box** (`Quadrilateral`): 4 relative vertices corrdinates of a rectangle containing the word in the document.
76
+ * **polygon** (`Polygon`): vertices of a polygon containing the word.
77
+ * **page_id** (`Integer`): the ID of the page, is `nil` when at document-level.
70
78
 
71
79
  ### Classification Field
72
80
 
@@ -159,7 +159,7 @@ The text field `StringField` only has one constraint: it's **value** is a `Strin
159
159
  #### Tax
160
160
  Aside from the basic `Field` attributes, the tax field `TaxField` also implements the following:
161
161
 
162
- * **rate** (`Float`): the tax rate applied to an item can be undefined. Expressed as a percentage. Can be `nil`.
162
+ * **rate** (`Float`): the tax rate applied to an item can be expressed as a percentage. Can be `nil`.
163
163
  * **code** (`String`): tax code (or equivalent, depending on the origin of the document). Can be `nil`.
164
164
  * **base** (`Float`): base amount used for the tax. Can be `nil`.
165
165
 
@@ -58,11 +58,11 @@ Prediction
58
58
  | | TAX | | 3.34 |
59
59
  +---------------+--------+----------+---------------+
60
60
  :Supplier Payment Details:
61
- :Supplier name: LOGANS
61
+ :Supplier Name: LOGANS
62
62
  :Supplier Company Registrations:
63
63
  :Supplier Address: 2513 s stemmons freeway lewisville tx 75067
64
64
  :Supplier Phone Number: 9724596042
65
- :Customer name:
65
+ :Customer Name:
66
66
  :Customer Company Registrations:
67
67
  :Customer Address:
68
68
  :Document Type: EXPENSE RECEIPT
@@ -97,11 +97,11 @@ Page 0
97
97
  | | TAX | | 3.34 |
98
98
  +---------------+--------+----------+---------------+
99
99
  :Supplier Payment Details:
100
- :Supplier name: LOGANS
100
+ :Supplier Name: LOGANS
101
101
  :Supplier Company Registrations:
102
102
  :Supplier Address: 2513 s stemmons freeway lewisville tx 75067
103
103
  :Supplier Phone Number: 9724596042
104
- :Customer name:
104
+ :Customer Name:
105
105
  :Customer Company Registrations:
106
106
  :Customer Address:
107
107
  :Document Type: EXPENSE RECEIPT
@@ -179,7 +179,7 @@ The text field `StringField` only has one constraint: it's **value** is a `Strin
179
179
  #### Tax
180
180
  Aside from the basic `Field` attributes, the tax field `TaxField` also implements the following:
181
181
 
182
- * **rate** (`Float`): the tax rate applied to an item can be undefined. Expressed as a percentage. Can be `nil`.
182
+ * **rate** (`Float`): the tax rate applied to an item can be expressed as a percentage. Can be `nil`.
183
183
  * **code** (`String`): tax code (or equivalent, depending on the origin of the document). Can be `nil`.
184
184
  * **base** (`Float`): base amount used for the tax. Can be `nil`.
185
185
 
@@ -313,7 +313,7 @@ for supplier_company_registrations_elem in result.document.inference.prediction.
313
313
  end
314
314
  ```
315
315
 
316
- ## Supplier name
316
+ ## Supplier Name
317
317
  **supplier_name** ([StringField](#string-field)): The name of the supplier or merchant.
318
318
 
319
319
  ```rb