mindee 1.0.6 → 1.1.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 (55) hide show
  1. package/.nyc_output/f57ba3bc-1777-4ecc-81e1-230327c2a401.json +1 -0
  2. package/.nyc_output/processinfo/f57ba3bc-1777-4ecc-81e1-230327c2a401.json +1 -0
  3. package/.nyc_output/processinfo/index.json +1 -0
  4. package/CHANGELOG.md +37 -2
  5. package/LICENSE +202 -0
  6. package/README.md +1 -1
  7. package/coverage/coverage.json +1 -0
  8. package/coverage/lcov-report/base.css +224 -0
  9. package/coverage/lcov-report/block-navigation.js +79 -0
  10. package/coverage/lcov-report/favicon.png +0 -0
  11. package/coverage/lcov-report/index.html +171 -0
  12. package/coverage/lcov-report/prettify.css +1 -0
  13. package/coverage/lcov-report/prettify.js +2 -0
  14. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  15. package/coverage/lcov-report/sorter.js +170 -0
  16. package/coverage/lcov.info +1595 -0
  17. package/coverage.lcov +1595 -0
  18. package/lib/api/financialDocument.js +5 -5
  19. package/lib/api/invoice.js +3 -3
  20. package/lib/api/object.js +2 -2
  21. package/lib/api/receipt.js +3 -3
  22. package/lib/api/request.js +12 -6
  23. package/lib/api/response.js +8 -3
  24. package/lib/documents/document.js +5 -1
  25. package/lib/documents/fields/field.js +1 -1
  26. package/lib/documents/financialDocument.js +36 -28
  27. package/lib/documents/invoice.js +49 -31
  28. package/lib/documents/receipt.js +40 -25
  29. package/lib/inputs.js +78 -24
  30. package/mindee/api/financialDocument.js +47 -0
  31. package/mindee/api/index.js +5 -0
  32. package/mindee/api/invoice.js +53 -0
  33. package/mindee/api/object.js +82 -0
  34. package/mindee/api/receipt.js +39 -0
  35. package/mindee/api/request.js +70 -0
  36. package/mindee/api/response.js +65 -0
  37. package/mindee/documents/document.js +69 -0
  38. package/mindee/documents/fields/amount.js +25 -0
  39. package/mindee/documents/fields/date.js +29 -0
  40. package/mindee/documents/fields/field.js +89 -0
  41. package/mindee/documents/fields/index.js +7 -0
  42. package/mindee/documents/fields/locale.js +30 -0
  43. package/mindee/documents/fields/orientation.js +24 -0
  44. package/mindee/documents/fields/paymentDetails.js +52 -0
  45. package/mindee/documents/fields/tax.js +47 -0
  46. package/mindee/documents/financialDocument.js +228 -0
  47. package/mindee/documents/index.js +5 -0
  48. package/mindee/documents/invoice.js +411 -0
  49. package/mindee/documents/receipt.js +287 -0
  50. package/mindee/errors/handler.js +16 -0
  51. package/mindee/index.js +36 -0
  52. package/mindee/inputs.js +156 -0
  53. package/mindee/logger.js +33 -0
  54. package/package.json +7 -3
  55. package/LICENSE.md +0 -674
@@ -40,13 +40,13 @@ class APIFinancialDocument extends APIObject {
40
40
  } = _ref;
41
41
  var inputFile = new Input({
42
42
  file: input,
43
- inputType,
44
- filename,
45
- cutPdf
43
+ inputType: inputType,
44
+ filename: filename,
45
+ allowCutPdf: cutPdf
46
46
  });
47
- _this.apiToken = inputFile.fileExtension === "pdf" ? _this.invoiceToken : _this.receiptToken;
48
47
  yield inputFile.init();
49
- var url = inputFile.fileExtension === "pdf" ? "/invoices/v1/predict" : "/expense_receipts/v3/predict";
48
+ _this.apiToken = inputFile.fileExtension === "application/pdf" ? _this.invoiceToken : _this.receiptToken;
49
+ var url = inputFile.fileExtension === "application/pdf" ? "/invoices/v2/predict" : "/expense_receipts/v3/predict";
50
50
 
51
51
  _superprop_getParse().call(_this);
52
52
 
@@ -43,9 +43,9 @@ class APIInvoice extends APIObject {
43
43
 
44
44
  var inputFile = new Input({
45
45
  file: input,
46
- inputType,
47
- filename,
48
- cutPdf
46
+ inputType: inputType,
47
+ filename: filename,
48
+ allowCutPdf: cutPdf
49
49
  });
50
50
  yield inputFile.init();
51
51
  var url = "v".concat(version, "/predict");
package/lib/api/object.js CHANGED
@@ -21,7 +21,7 @@ class APIObject {
21
21
  var apiToken = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : undefined;
22
22
  var apiName = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "";
23
23
  this.apiToken = apiToken;
24
- this.baseUrl = "https://api.mindee.net/products";
24
+ this.baseUrl = "https://api.mindee.net/v1/products/mindee/";
25
25
  this.apiName = apiName;
26
26
  }
27
27
  /**
@@ -65,7 +65,7 @@ class APIObject {
65
65
 
66
66
 
67
67
  wrapResponse(inputFile, response, documentType) {
68
- if (response.statusCode != 200) {
68
+ if (response.statusCode > 201) {
69
69
  var errorMessage = JSON.stringify(response.data, null, 4);
70
70
  errorHandler.throw(new Error("".concat(this.apiName, " API ").concat(response.statusCode, " HTTP error: ").concat(errorMessage)), false);
71
71
  return new Response({
@@ -43,9 +43,9 @@ class APIReceipt extends APIObject {
43
43
 
44
44
  var inputFile = new Input({
45
45
  file: input,
46
- inputType,
47
- filename,
48
- cutPdf
46
+ inputType: inputType,
47
+ filename: filename,
48
+ allowCutPdf: cutPdf
49
49
  });
50
50
  yield inputFile.init();
51
51
  var url = "v".concat(version, "/predict");
@@ -18,23 +18,25 @@ var {
18
18
 
19
19
  var FormData = require("form-data");
20
20
 
21
+ var os = require("os");
22
+
21
23
  var request = function request(url, method, headers, input) {
22
24
  var includeWords = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;
23
25
  return new Promise(function (resolve, reject) {
24
26
  var form = new FormData();
25
27
  var body;
26
- headers["User-Agent"] = "mindee-node/".concat(sdkVersion, " node/").concat(process.version);
28
+ headers["User-Agent"] = "mindee-api-nodejs@v".concat(sdkVersion, " nodejs-").concat(process.version, " ").concat(os.type().toLowerCase());
27
29
 
28
30
  if (["path", "stream"].includes(input.inputType)) {
29
31
  var fileParams = {
30
32
  filename: input.filename
31
33
  };
32
- form.append("file", input.fileObject, fileParams);
34
+ form.append("document", input.fileObject, fileParams);
33
35
  if (includeWords) form.append("include_mvision", "true");
34
36
  headers = _objectSpread(_objectSpread({}, headers), form.getHeaders());
35
37
  } else if (input.inputType === "base64") {
36
38
  var body_obj = {
37
- file: input.fileObject
39
+ document: input.fileObject
38
40
  };
39
41
  if (includeWords) body_obj["include_mvision"] = "true";
40
42
  body = JSON.stringify(body_obj);
@@ -55,9 +57,13 @@ var request = function request(url, method, headers, input) {
55
57
  responseBody += chunk;
56
58
  });
57
59
  res.on("end", function () {
58
- resolve(_objectSpread(_objectSpread({}, res), {}, {
59
- data: JSON.parse(responseBody)
60
- }));
60
+ try {
61
+ resolve(_objectSpread(_objectSpread({}, res), {}, {
62
+ data: JSON.parse(responseBody)
63
+ }));
64
+ } catch (error) {
65
+ console.log("error");
66
+ }
61
67
  });
62
68
  });
63
69
  req.on("error", err => {
@@ -69,19 +69,24 @@ class Response {
69
69
  invoice: params => new Invoice(params),
70
70
  financialDocument: params => new FinancialDocument(params)
71
71
  };
72
- var predictions = this.httpResponse.data.predictions.entries();
72
+ var predictions = this.httpResponse.data.document.inference.pages.entries();
73
73
  this["".concat(this.documentType, "s")] = []; // Create a list of Document (Receipt, Invoice...) for each page of the input document
74
74
 
75
75
  for (var [pageNumber, prediction] of predictions) {
76
76
  this["".concat(this.documentType, "s")].push(constructors[this.documentType]({
77
- apiPrediction: prediction,
77
+ apiPrediction: prediction.prediction,
78
78
  inputFile: this.input,
79
79
  pageNumber: pageNumber
80
80
  }));
81
81
  } // Merge the list of Document into a unique Document
82
82
 
83
83
 
84
- this[this.documentType] = Document.mergePages(this["".concat(this.documentType, "s")]);
84
+ this[this.documentType] = constructors[this.documentType]({
85
+ apiPrediction: this.httpResponse.data.document.inference.prediction,
86
+ inputFile: this.input,
87
+ pageNumber: -1,
88
+ level: "document"
89
+ });
85
90
  }
86
91
 
87
92
  }
@@ -79,7 +79,11 @@ class Document {
79
79
  for (var attribute of attributes) {
80
80
  var _document$attribute;
81
81
 
82
- if ((document === null || document === void 0 ? void 0 : (_document$attribute = document[attribute]) === null || _document$attribute === void 0 ? void 0 : _document$attribute.probability) > finalDocument[attribute].probability) {
82
+ if (Array.isArray(document === null || document === void 0 ? void 0 : document[attribute])) {
83
+ var _finalDocument$attrib;
84
+
85
+ finalDocument[attribute] = (_finalDocument$attrib = finalDocument[attribute]) !== null && _finalDocument$attrib !== void 0 && _finalDocument$attrib.length ? finalDocument[attribute] : document === null || document === void 0 ? void 0 : document[attribute];
86
+ } else if ((document === null || document === void 0 ? void 0 : (_document$attribute = document[attribute]) === null || _document$attribute === void 0 ? void 0 : _document$attribute.probability) > finalDocument[attribute].probability) {
83
87
  finalDocument[attribute] = document === null || document === void 0 ? void 0 : document[attribute];
84
88
  }
85
89
  }
@@ -22,7 +22,7 @@ class Field {
22
22
  this.probability = 0.0;
23
23
  this.bbox = [];
24
24
 
25
- if (valueKey in prediction && prediction[valueKey] !== "N/A") {
25
+ if (valueKey in prediction && prediction[valueKey] !== null) {
26
26
  this.value = prediction[valueKey];
27
27
  if (prediction.probability) this.probability = prediction.probability;
28
28
  if (prediction.segmentation) this.bbox = prediction.segmentation.bounding_box || [];
@@ -53,6 +53,7 @@ class FinancialDocument extends Document {
53
53
  * @param {Object} totalTax - total tax value for creating FinancialDocument object from scratch
54
54
  * @param {Object} time - time value for creating FinancialDocument object from scratch
55
55
  * @param {Object} pageNumber - pageNumber for multi pages pdf input
56
+ * @param {String} level - specify whether object is built from "page" level or "document" level prediction
56
57
  */
57
58
  constructor(_ref) {
58
59
  var {
@@ -65,14 +66,15 @@ class FinancialDocument extends Document {
65
66
  invoiceNumber: _invoiceNumber = undefined,
66
67
  dueDate: _dueDate = undefined,
67
68
  taxes: _taxes = undefined,
68
- merchantName: _merchantName = undefined,
69
+ merchantName = undefined,
69
70
  paymentDetails: _paymentDetails = undefined,
70
71
  companyNumber: _companyNumber = undefined,
71
72
  vatNumber: _vatNumber = undefined,
72
73
  orientation: _orientation = undefined,
73
74
  totalTax: _totalTax = undefined,
74
75
  time: _time = undefined,
75
- pageNumber: _pageNumber = 0
76
+ pageNumber: _pageNumber = 0,
77
+ level = "page"
76
78
  } = _ref;
77
79
  super(_inputFile);
78
80
 
@@ -84,6 +86,8 @@ class FinancialDocument extends Document {
84
86
 
85
87
  _initFromScratch.add(this);
86
88
 
89
+ this.level = level;
90
+
87
91
  if (_apiPrediction === undefined) {
88
92
  _classPrivateMethodGet(this, _initFromScratch, _initFromScratch2).call(this, {
89
93
  locale: _locale,
@@ -93,7 +97,7 @@ class FinancialDocument extends Document {
93
97
  invoiceNumber: _invoiceNumber,
94
98
  dueDate: _dueDate,
95
99
  taxes: _taxes,
96
- merchantName: _merchantName,
100
+ supplier,
97
101
  paymentDetails: _paymentDetails,
98
102
  companyNumber: _companyNumber,
99
103
  vatNumber: _vatNumber,
@@ -110,7 +114,7 @@ class FinancialDocument extends Document {
110
114
  }
111
115
 
112
116
  toString() {
113
- return "\n -----Financial document-----\n Filename: ".concat(this.filename, "\n Total amount: ").concat(this.totalIncl.value, "\n Date: ").concat(this.date.value, "\n Merchant name: ").concat(this.merchantName.value, "\n Total taxes: ").concat(this.totalTax.value, "\n ");
117
+ return "\n -----Financial document-----\n Filename: ".concat(this.filename, "\n Total amount: ").concat(this.totalIncl.value, "\n Date: ").concat(this.date.value, "\n Supplier: ").concat(this.supplier.value, "\n Total taxes: ").concat(this.totalTax.value, "\n ");
114
118
  }
115
119
 
116
120
  }
@@ -130,7 +134,7 @@ var _initFromScratch2 = function _initFromScratch2(_ref2) {
130
134
  vatNumber,
131
135
  orientation,
132
136
  pageNumber,
133
- merchantName,
137
+ supplier,
134
138
  time
135
139
  } = _ref2;
136
140
 
@@ -150,7 +154,7 @@ var _initFromScratch2 = function _initFromScratch2(_ref2) {
150
154
  this.totalTax = new Amount(constructPrediction(totalTax));
151
155
  this.date = new Date(constructPrediction(date));
152
156
  this.dueDate = new Date(constructPrediction(dueDate));
153
- this.merchantName = new Field(constructPrediction(merchantName));
157
+ this.supplier = new Field(constructPrediction(supplier));
154
158
  this.time = new Field(constructPrediction(time));
155
159
  this.orientation = new Orientation(constructPrediction(orientation));
156
160
  this.invoiceNumber = new Field(constructPrediction(invoiceNumber));
@@ -180,46 +184,50 @@ var _initFromApiPrediction2 = function _initFromApiPrediction2(apiPrediction, in
180
184
  var invoice = new Invoice({
181
185
  apiPrediction,
182
186
  inputFile,
183
- pageNumber
187
+ pageNumber,
188
+ level: this.level
184
189
  });
185
- Object.assign(this, invoice);
190
+ this.locale = invoice.locale;
191
+ this.totalIncl = invoice.totalIncl;
192
+ this.totalExcl = invoice.totalExcl;
193
+ this.date = invoice.invoiceDate;
194
+ this.invoiceNumber = invoice.invoiceNumber;
195
+ this.dueDate = invoice.dueDate;
196
+ this.taxes = invoice.taxes;
197
+ this.supplier = invoice.supplier;
198
+ this.paymentDetails = invoice.paymentDetails;
199
+ this.companyNumber = invoice.companyNumber;
200
+ this.orientation = invoice.orientation;
201
+ this.totalTax = invoice.totalTax;
186
202
  this.time = new Field({
187
203
  prediction: {
188
204
  value: undefined,
189
205
  probability: 0.0
190
206
  }
191
207
  });
192
- this.merchantName = new Field({
193
- prediction: {
194
- value: undefined,
195
- probability: 0.0
196
- }
197
- });
198
208
  } else {
199
209
  var receipt = new Receipt({
200
210
  apiPrediction,
201
211
  inputFile,
202
- pageNumber
203
- });
204
- Object.assign(this, receipt);
205
- this.invoiceDate = new Field({
206
- prediction: {
207
- value: undefined,
208
- probability: 0.0
209
- }
212
+ pageNumber,
213
+ level: this.level
210
214
  });
215
+ this.orientation = receipt.orientation;
216
+ this.date = receipt.date;
217
+ this.dueDate = receipt.date;
218
+ this.taxes = receipt.taxes;
219
+ this.locale = receipt.locale;
220
+ this.totalIncl = receipt.totalIncl;
221
+ this.totalExcl = receipt.totalExcl;
222
+ this.supplier = receipt.merchantName;
223
+ this.time = receipt.time;
224
+ this.totalTax = receipt.totalTax;
211
225
  this.invoiceNumber = new Field({
212
226
  prediction: {
213
227
  value: undefined,
214
228
  probability: 0.0
215
229
  }
216
230
  });
217
- this.dueDate = new Field({
218
- prediction: {
219
- value: undefined,
220
- probability: 0.0
221
- }
222
- });
223
231
  this.paymentDetails = new Field({
224
232
  prediction: {
225
233
  value: undefined,
@@ -50,7 +50,6 @@ class Invoice extends Document {
50
50
  /**
51
51
  * @param {Object} apiPrediction - Json parsed prediction from HTTP response
52
52
  * @param {Input} input - Input object
53
- * @param {Integer} pageNumber - Page number for multi pages pdf input
54
53
  * @param {Object} locale - locale value for creating Invoice object from scratch
55
54
  * @param {Object} totalIncl - total tax included value for creating Invoice object from scratch
56
55
  * @param {Object} totalExcl - total tax excluded value for creating Invoice object from scratch
@@ -63,7 +62,8 @@ class Invoice extends Document {
63
62
  * @param {Object} vatNumber - vat number value for creating Invoice object from scratch
64
63
  * @param {Object} orientation - orientation value for creating Invoice object from scratch
65
64
  * @param {Object} totalTax - total tax value for creating Invoice object from scratch
66
- * @param {Object} pageNumber - pageNumber for multi pages pdf input
65
+ * @param {Number} pageNumber - pageNumber for multi pages pdf input
66
+ * @param {String} level - specify whether object is built from "page" level or "document" level prediction
67
67
  */
68
68
  constructor(_ref) {
69
69
  var {
@@ -82,7 +82,8 @@ class Invoice extends Document {
82
82
  vatNumber: _vatNumber = undefined,
83
83
  orientation: _orientation = undefined,
84
84
  totalTax: _totalTax = undefined,
85
- pageNumber: _pageNumber = 0
85
+ pageNumber: _pageNumber = 0,
86
+ level = "page"
86
87
  } = _ref;
87
88
  super(inputFile);
88
89
 
@@ -108,6 +109,18 @@ class Invoice extends Document {
108
109
 
109
110
  _initFromScratch.add(this);
110
111
 
112
+ this.level = level;
113
+
114
+ this.constructPrediction = function (item) {
115
+ return {
116
+ prediction: {
117
+ value: item
118
+ },
119
+ valueKey: "value",
120
+ pageNumber: _pageNumber
121
+ };
122
+ };
123
+
111
124
  if (_apiPrediction === undefined) {
112
125
  _classPrivateMethodGet(this, _initFromScratch, _initFromScratch2).call(this, {
113
126
  locale: _locale,
@@ -157,30 +170,18 @@ var _initFromScratch2 = function _initFromScratch2(_ref2) {
157
170
  orientation,
158
171
  pageNumber
159
172
  } = _ref2;
160
-
161
- var constructPrediction = function constructPrediction(item) {
162
- return {
163
- prediction: {
164
- value: item
165
- },
166
- valueKey: "value",
167
- pageNumber
168
- };
169
- };
170
-
171
- this.locale = new Locale(constructPrediction(locale));
172
- this.totalIncl = new Amount(constructPrediction(totalIncl));
173
- this.totalExcl = new Amount(constructPrediction(totalExcl));
174
- this.totalTax = new Amount(constructPrediction(totalTax));
175
- this.date = new Date(constructPrediction(invoiceDate));
176
- this.invoiceDate = new Date(constructPrediction(invoiceDate));
177
- this.dueDate = new Date(constructPrediction(dueDate));
178
- this.supplier = new Field(constructPrediction(supplier));
179
- this.orientation = new Orientation(constructPrediction(orientation));
180
- this.invoiceNumber = new Field(constructPrediction(invoiceNumber));
181
- this.paymentDetails = new Field(constructPrediction(paymentDetails));
182
- this.companyNumber = new Field(constructPrediction(companyNumber));
183
- this.vatNumber = new Field(constructPrediction(vatNumber));
173
+ this.locale = new Locale(this.constructPrediction(locale));
174
+ this.totalIncl = new Amount(this.constructPrediction(totalIncl));
175
+ this.totalExcl = new Amount(this.constructPrediction(totalExcl));
176
+ this.totalTax = new Amount(this.constructPrediction(totalTax));
177
+ this.date = new Date(this.constructPrediction(invoiceDate));
178
+ this.invoiceDate = new Date(this.constructPrediction(invoiceDate));
179
+ this.dueDate = new Date(this.constructPrediction(dueDate));
180
+ this.supplier = new Field(this.constructPrediction(supplier));
181
+ this.invoiceNumber = new Field(this.constructPrediction(invoiceNumber));
182
+ this.paymentDetails = new Field(this.constructPrediction(paymentDetails));
183
+ this.companyNumber = new Field(this.constructPrediction(companyNumber));
184
+ this.vatNumber = new Field(this.constructPrediction(vatNumber));
184
185
 
185
186
  if (taxes !== undefined) {
186
187
  this.taxes = [];
@@ -197,6 +198,10 @@ var _initFromScratch2 = function _initFromScratch2(_ref2) {
197
198
  }));
198
199
  }
199
200
  }
201
+
202
+ if (this.level === "page") {
203
+ this.orientation = new Orientation(this.constructPrediction(orientation));
204
+ }
200
205
  };
201
206
 
202
207
  var _initFromApiPrediction2 = function _initFromApiPrediction2(apiPrediction, pageNumber) {
@@ -242,10 +247,6 @@ var _initFromApiPrediction2 = function _initFromApiPrediction2(apiPrediction, pa
242
247
  codeKey: "code"
243
248
  });
244
249
  });
245
- this.orientation = new Orientation({
246
- prediction: apiPrediction.orientation,
247
- pageNumber
248
- });
249
250
  this.companyNumber = apiPrediction.company_registration.map(function (companyNumber) {
250
251
  return new Field({
251
252
  prediction: companyNumber,
@@ -272,6 +273,23 @@ var _initFromApiPrediction2 = function _initFromApiPrediction2(apiPrediction, pa
272
273
  pageNumber
273
274
  });
274
275
  });
276
+
277
+ if (this.level === "page") {
278
+ this.orientation = new Orientation({
279
+ prediction: apiPrediction.orientation,
280
+ pageNumber
281
+ });
282
+ } else {
283
+ this.orientation = new Orientation(this.constructPrediction({
284
+ prediction: {
285
+ value: undefined,
286
+ probability: 0.0,
287
+ degrees: undefined
288
+ }
289
+ }));
290
+ } // document.inference.ocr
291
+
292
+
275
293
  if ("mvision" in apiPrediction) this.words = apiPrediction.mvision;
276
294
  };
277
295
 
@@ -57,6 +57,7 @@ class Receipt extends Document {
57
57
  * @param {Object} orientation - orientation value for creating Receipt object from scratch
58
58
  * @param {Object} totalTax - total taxes value for creating Receipt object from scratch
59
59
  * @param {Object} totalExcl - total taxes excluded value for creating Receipt object from scratch
60
+ * @param {String} level - specify whether object is built from "page" level or "document" level prediction
60
61
  */
61
62
  constructor(_ref) {
62
63
  var {
@@ -72,7 +73,8 @@ class Receipt extends Document {
72
73
  orientation: _orientation = undefined,
73
74
  totalTax: _totalTax = undefined,
74
75
  totalExcl: _totalExcl = undefined,
75
- pageNumber: _pageNumber = 0
76
+ pageNumber: _pageNumber = 0,
77
+ level = "page"
76
78
  } = _ref;
77
79
  super(inputFile);
78
80
 
@@ -90,6 +92,18 @@ class Receipt extends Document {
90
92
 
91
93
  _initFromScratch.add(this);
92
94
 
95
+ this.level = level;
96
+
97
+ this.constructPrediction = function (item) {
98
+ return {
99
+ prediction: {
100
+ value: item
101
+ },
102
+ valueKey: "value",
103
+ pageNumber: _pageNumber
104
+ };
105
+ };
106
+
93
107
  if (_apiPrediction === undefined) {
94
108
  _classPrivateMethodGet(this, _initFromScratch, _initFromScratch2).call(this, {
95
109
  locale: _locale,
@@ -147,23 +161,12 @@ var _initFromScratch2 = function _initFromScratch2(_ref2) {
147
161
  totalTax,
148
162
  pageNumber
149
163
  } = _ref2;
150
-
151
- var constructPrediction = function constructPrediction(item) {
152
- return {
153
- prediction: {
154
- value: item
155
- },
156
- valueKey: "value",
157
- pageNumber
158
- };
159
- };
160
-
161
- this.locale = new Locale(constructPrediction(locale));
162
- this.totalIncl = new Amount(constructPrediction(totalIncl));
163
- this.date = new Date(constructPrediction(date));
164
- this.category = new Field(constructPrediction(category));
165
- this.merchantName = new Field(constructPrediction(merchantName));
166
- this.time = new Field(constructPrediction(time));
164
+ this.locale = new Locale(this.constructPrediction(locale));
165
+ this.totalIncl = new Amount(this.constructPrediction(totalIncl));
166
+ this.date = new Date(this.constructPrediction(date));
167
+ this.category = new Field(this.constructPrediction(category));
168
+ this.merchantName = new Field(this.constructPrediction(merchantName));
169
+ this.time = new Field(this.constructPrediction(time));
167
170
 
168
171
  if (taxes !== undefined) {
169
172
  this.taxes = [];
@@ -181,9 +184,9 @@ var _initFromScratch2 = function _initFromScratch2(_ref2) {
181
184
  }
182
185
  }
183
186
 
184
- this.orientation = new Orientation(constructPrediction(orientation));
185
- this.totalTax = new Amount(constructPrediction(totalTax));
186
- this.totalExcl = new Amount(constructPrediction(totalExcl));
187
+ this.orientation = new Orientation(this.constructPrediction(orientation));
188
+ this.totalTax = new Amount(this.constructPrediction(totalTax));
189
+ this.totalExcl = new Amount(this.constructPrediction(totalExcl));
187
190
  };
188
191
 
189
192
  var _initFromApiPrediction2 = function _initFromApiPrediction2(apiPrediction, pageNumber) {
@@ -223,10 +226,6 @@ var _initFromApiPrediction2 = function _initFromApiPrediction2(apiPrediction, pa
223
226
  rateKey: "rate",
224
227
  codeKey: "code"
225
228
  }));
226
- this.orientation = new Orientation({
227
- prediction: apiPrediction.orientation,
228
- pageNumber
229
- });
230
229
  this.totalTax = new Amount({
231
230
  prediction: {
232
231
  value: undefined,
@@ -243,6 +242,22 @@ var _initFromApiPrediction2 = function _initFromApiPrediction2(apiPrediction, pa
243
242
  valueKey: "value",
244
243
  pageNumber
245
244
  });
245
+
246
+ if (this.level === "page") {
247
+ this.orientation = new Orientation({
248
+ prediction: apiPrediction.orientation,
249
+ pageNumber
250
+ });
251
+ } else {
252
+ this.orientation = new Orientation(this.constructPrediction({
253
+ prediction: {
254
+ value: undefined,
255
+ probability: 0.0,
256
+ degrees: undefined
257
+ }
258
+ }));
259
+ }
260
+
246
261
  if ("mvision" in apiPrediction) this.words = apiPrediction.mvision;
247
262
  };
248
263