mindee 4.13.0 → 4.13.1
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.
- package/CHANGELOG.md +6 -0
- package/package.json +1 -1
- package/src/imageOperations/{extractedImage.d.ts → common/extractedImage.d.ts} +6 -3
- package/src/imageOperations/{extractedImage.js → common/extractedImage.js} +6 -3
- package/src/imageOperations/common/imageExtractor.d.ts +9 -0
- package/src/imageOperations/common/imageExtractor.js +34 -0
- package/src/imageOperations/common/index.d.ts +2 -0
- package/src/imageOperations/common/index.js +7 -0
- package/src/imageOperations/index.d.ts +2 -4
- package/src/imageOperations/index.js +3 -5
- package/src/imageOperations/internal.d.ts +3 -5
- package/src/imageOperations/internal.js +5 -7
- package/src/imageOperations/{extractedInvoiceSplitterDocument.d.ts → invoiceSplitterExtractor/extractedInvoiceSplitterImage.d.ts} +4 -1
- package/src/imageOperations/{extractedInvoiceSplitterDocument.js → invoiceSplitterExtractor/extractedInvoiceSplitterImage.js} +4 -1
- package/src/imageOperations/invoiceSplitterExtractor/index.d.ts +2 -0
- package/src/imageOperations/invoiceSplitterExtractor/index.js +7 -0
- package/src/imageOperations/{invoiceSplitterExtractor.d.ts → invoiceSplitterExtractor/invoiceSplitterExtractor.d.ts} +3 -3
- package/src/imageOperations/{invoiceSplitterExtractor.js → invoiceSplitterExtractor/invoiceSplitterExtractor.js} +4 -4
- package/src/imageOperations/{extractedMultiReceiptImage.d.ts → multiReceiptsExtractor/extractedMultiReceiptImage.d.ts} +4 -1
- package/src/imageOperations/{extractedMultiReceiptImage.js → multiReceiptsExtractor/extractedMultiReceiptImage.js} +5 -2
- package/src/imageOperations/multiReceiptsExtractor/index.d.ts +2 -0
- package/src/imageOperations/multiReceiptsExtractor/index.js +7 -0
- package/src/imageOperations/{multiReceiptsExtractor.d.ts → multiReceiptsExtractor/multiReceiptsExtractor.d.ts} +3 -3
- package/src/imageOperations/{multiReceiptsExtractor.js → multiReceiptsExtractor/multiReceiptsExtractor.js} +22 -25
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
# CHANGELOG
|
|
2
2
|
|
|
3
|
+
## v4.13.1 - 2024-06-10
|
|
4
|
+
### Fixes
|
|
5
|
+
* :recycle: refactored image extraction module to allow for more generic manipulations
|
|
6
|
+
* :recycle: add tests for multipage receipts extraction
|
|
7
|
+
|
|
8
|
+
|
|
3
9
|
## v4.13.0 - 2024-05-28
|
|
4
10
|
### Changes
|
|
5
11
|
* :sparkles: add support for local response loading
|
package/package.json
CHANGED
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
import { Buffer } from "node:buffer";
|
|
3
|
-
import { BufferInput } from "
|
|
4
|
-
|
|
3
|
+
import { BufferInput } from "../../input";
|
|
4
|
+
/**
|
|
5
|
+
* Generic class for image extraction
|
|
6
|
+
*/
|
|
7
|
+
export declare class ExtractedImage {
|
|
5
8
|
buffer: Buffer;
|
|
6
9
|
protected internalFileName: string;
|
|
7
|
-
constructor(buffer: Uint8Array, fileName: string);
|
|
10
|
+
protected constructor(buffer: Uint8Array, fileName: string);
|
|
8
11
|
/**
|
|
9
12
|
* Saves the document to a file.
|
|
10
13
|
*
|
|
@@ -5,11 +5,14 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.ExtractedImage = void 0;
|
|
7
7
|
const node_buffer_1 = require("node:buffer");
|
|
8
|
-
const errors_1 = require("
|
|
8
|
+
const errors_1 = require("../../errors");
|
|
9
9
|
const node_fs_1 = require("node:fs");
|
|
10
10
|
const node_path_1 = __importDefault(require("node:path"));
|
|
11
|
-
const logger_1 = require("
|
|
12
|
-
const input_1 = require("
|
|
11
|
+
const logger_1 = require("../../logger");
|
|
12
|
+
const input_1 = require("../../input");
|
|
13
|
+
/**
|
|
14
|
+
* Generic class for image extraction
|
|
15
|
+
*/
|
|
13
16
|
class ExtractedImage {
|
|
14
17
|
constructor(buffer, fileName) {
|
|
15
18
|
this.buffer = node_buffer_1.Buffer.from(buffer);
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { PDFPage } from "pdf-lib";
|
|
2
|
+
import { Polygon } from "../../geometry";
|
|
3
|
+
/**
|
|
4
|
+
* Extracts elements from a page based off of a list of bounding boxes.
|
|
5
|
+
*
|
|
6
|
+
* @param pdfPage PDF Page to extract from.
|
|
7
|
+
* @param polygons List of coordinates to pull the elements from.
|
|
8
|
+
*/
|
|
9
|
+
export declare function extractFromPage(pdfPage: PDFPage, polygons: Polygon[]): Promise<Uint8Array[]>;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.extractFromPage = void 0;
|
|
4
|
+
const pdf_lib_1 = require("pdf-lib");
|
|
5
|
+
const geometry_1 = require("../../geometry");
|
|
6
|
+
/**
|
|
7
|
+
* Extracts elements from a page based off of a list of bounding boxes.
|
|
8
|
+
*
|
|
9
|
+
* @param pdfPage PDF Page to extract from.
|
|
10
|
+
* @param polygons List of coordinates to pull the elements from.
|
|
11
|
+
*/
|
|
12
|
+
async function extractFromPage(pdfPage, polygons) {
|
|
13
|
+
const { width, height } = pdfPage.getSize();
|
|
14
|
+
const extractedElements = [];
|
|
15
|
+
for (const polygon of polygons) {
|
|
16
|
+
const tempPdf = await pdf_lib_1.PDFDocument.create();
|
|
17
|
+
const newWidth = width * ((0, geometry_1.getMinMaxX)(polygon).max - (0, geometry_1.getMinMaxX)(polygon).min);
|
|
18
|
+
const newHeight = height * ((0, geometry_1.getMinMaxY)(polygon).max - (0, geometry_1.getMinMaxY)(polygon).min);
|
|
19
|
+
const cropped = await tempPdf.embedPage(pdfPage, {
|
|
20
|
+
left: (0, geometry_1.getMinMaxX)(polygon).min * width,
|
|
21
|
+
right: (0, geometry_1.getMinMaxX)(polygon).max * width,
|
|
22
|
+
top: height - ((0, geometry_1.getMinMaxY)(polygon).min * height),
|
|
23
|
+
bottom: height - ((0, geometry_1.getMinMaxY)(polygon).max * height),
|
|
24
|
+
});
|
|
25
|
+
const samplePage = tempPdf.addPage([newWidth, newHeight]);
|
|
26
|
+
samplePage.drawPage(cropped, {
|
|
27
|
+
width: newWidth,
|
|
28
|
+
height: newHeight,
|
|
29
|
+
});
|
|
30
|
+
extractedElements.push(await tempPdf.save());
|
|
31
|
+
}
|
|
32
|
+
return extractedElements;
|
|
33
|
+
}
|
|
34
|
+
exports.extractFromPage = extractFromPage;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.extractFromPage = exports.ExtractedImage = void 0;
|
|
4
|
+
var extractedImage_1 = require("./extractedImage");
|
|
5
|
+
Object.defineProperty(exports, "ExtractedImage", { enumerable: true, get: function () { return extractedImage_1.ExtractedImage; } });
|
|
6
|
+
var imageExtractor_1 = require("./imageExtractor");
|
|
7
|
+
Object.defineProperty(exports, "extractFromPage", { enumerable: true, get: function () { return imageExtractor_1.extractFromPage; } });
|
|
@@ -1,4 +1,2 @@
|
|
|
1
|
-
export { extractReceipts } from "./multiReceiptsExtractor";
|
|
2
|
-
export { extractInvoices } from "./invoiceSplitterExtractor";
|
|
3
|
-
export { ExtractedMultiReceiptImage } from "./extractedMultiReceiptImage";
|
|
4
|
-
export { ExtractedInvoiceSplitterImage } from "./extractedInvoiceSplitterDocument";
|
|
1
|
+
export { extractReceipts, ExtractedMultiReceiptImage } from "./multiReceiptsExtractor";
|
|
2
|
+
export { extractInvoices, ExtractedInvoiceSplitterImage } from "./invoiceSplitterExtractor";
|
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ExtractedInvoiceSplitterImage = exports.
|
|
3
|
+
exports.ExtractedInvoiceSplitterImage = exports.extractInvoices = exports.ExtractedMultiReceiptImage = exports.extractReceipts = void 0;
|
|
4
4
|
var multiReceiptsExtractor_1 = require("./multiReceiptsExtractor");
|
|
5
5
|
Object.defineProperty(exports, "extractReceipts", { enumerable: true, get: function () { return multiReceiptsExtractor_1.extractReceipts; } });
|
|
6
|
+
Object.defineProperty(exports, "ExtractedMultiReceiptImage", { enumerable: true, get: function () { return multiReceiptsExtractor_1.ExtractedMultiReceiptImage; } });
|
|
6
7
|
var invoiceSplitterExtractor_1 = require("./invoiceSplitterExtractor");
|
|
7
8
|
Object.defineProperty(exports, "extractInvoices", { enumerable: true, get: function () { return invoiceSplitterExtractor_1.extractInvoices; } });
|
|
8
|
-
|
|
9
|
-
Object.defineProperty(exports, "ExtractedMultiReceiptImage", { enumerable: true, get: function () { return extractedMultiReceiptImage_1.ExtractedMultiReceiptImage; } });
|
|
10
|
-
var extractedInvoiceSplitterDocument_1 = require("./extractedInvoiceSplitterDocument");
|
|
11
|
-
Object.defineProperty(exports, "ExtractedInvoiceSplitterImage", { enumerable: true, get: function () { return extractedInvoiceSplitterDocument_1.ExtractedInvoiceSplitterImage; } });
|
|
9
|
+
Object.defineProperty(exports, "ExtractedInvoiceSplitterImage", { enumerable: true, get: function () { return invoiceSplitterExtractor_1.ExtractedInvoiceSplitterImage; } });
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
export { extractReceipts } from "./multiReceiptsExtractor";
|
|
2
|
-
export { extractInvoices } from "./invoiceSplitterExtractor";
|
|
3
|
-
export {
|
|
4
|
-
export { ExtractedInvoiceSplitterImage } from "./extractedInvoiceSplitterDocument";
|
|
5
|
-
export { ExtractedImage } from "./extractedImage";
|
|
1
|
+
export { extractReceipts, ExtractedMultiReceiptImage } from "./multiReceiptsExtractor";
|
|
2
|
+
export { extractInvoices, ExtractedInvoiceSplitterImage } from "./invoiceSplitterExtractor";
|
|
3
|
+
export { ExtractedImage } from "./common";
|
|
@@ -1,13 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ExtractedImage = exports.ExtractedInvoiceSplitterImage = exports.
|
|
3
|
+
exports.ExtractedImage = exports.ExtractedInvoiceSplitterImage = exports.extractInvoices = exports.ExtractedMultiReceiptImage = exports.extractReceipts = void 0;
|
|
4
4
|
var multiReceiptsExtractor_1 = require("./multiReceiptsExtractor");
|
|
5
5
|
Object.defineProperty(exports, "extractReceipts", { enumerable: true, get: function () { return multiReceiptsExtractor_1.extractReceipts; } });
|
|
6
|
+
Object.defineProperty(exports, "ExtractedMultiReceiptImage", { enumerable: true, get: function () { return multiReceiptsExtractor_1.ExtractedMultiReceiptImage; } });
|
|
6
7
|
var invoiceSplitterExtractor_1 = require("./invoiceSplitterExtractor");
|
|
7
8
|
Object.defineProperty(exports, "extractInvoices", { enumerable: true, get: function () { return invoiceSplitterExtractor_1.extractInvoices; } });
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
Object.defineProperty(exports, "ExtractedInvoiceSplitterImage", { enumerable: true, get: function () { return extractedInvoiceSplitterDocument_1.ExtractedInvoiceSplitterImage; } });
|
|
12
|
-
var extractedImage_1 = require("./extractedImage");
|
|
13
|
-
Object.defineProperty(exports, "ExtractedImage", { enumerable: true, get: function () { return extractedImage_1.ExtractedImage; } });
|
|
9
|
+
Object.defineProperty(exports, "ExtractedInvoiceSplitterImage", { enumerable: true, get: function () { return invoiceSplitterExtractor_1.ExtractedInvoiceSplitterImage; } });
|
|
10
|
+
var common_1 = require("./common");
|
|
11
|
+
Object.defineProperty(exports, "ExtractedImage", { enumerable: true, get: function () { return common_1.ExtractedImage; } });
|
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
import { ExtractedImage } from "
|
|
1
|
+
import { ExtractedImage } from "../common/extractedImage";
|
|
2
|
+
/**
|
|
3
|
+
* Wrapper class for extracted invoice pages.
|
|
4
|
+
*/
|
|
2
5
|
export declare class ExtractedInvoiceSplitterImage extends ExtractedImage {
|
|
3
6
|
readonly pageIdMin: number;
|
|
4
7
|
readonly pageIdMax: number;
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ExtractedInvoiceSplitterImage = void 0;
|
|
4
|
-
const extractedImage_1 = require("
|
|
4
|
+
const extractedImage_1 = require("../common/extractedImage");
|
|
5
|
+
/**
|
|
6
|
+
* Wrapper class for extracted invoice pages.
|
|
7
|
+
*/
|
|
5
8
|
class ExtractedInvoiceSplitterImage extends extractedImage_1.ExtractedImage {
|
|
6
9
|
constructor(buffer, pageIndices) {
|
|
7
10
|
super(buffer, `invoice_p_${pageIndices[0]}-${pageIndices[1]}.pdf`);
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ExtractedInvoiceSplitterImage = exports.extractInvoices = void 0;
|
|
4
|
+
var invoiceSplitterExtractor_1 = require("./invoiceSplitterExtractor");
|
|
5
|
+
Object.defineProperty(exports, "extractInvoices", { enumerable: true, get: function () { return invoiceSplitterExtractor_1.extractInvoices; } });
|
|
6
|
+
var extractedInvoiceSplitterImage_1 = require("./extractedInvoiceSplitterImage");
|
|
7
|
+
Object.defineProperty(exports, "ExtractedInvoiceSplitterImage", { enumerable: true, get: function () { return extractedInvoiceSplitterImage_1.ExtractedInvoiceSplitterImage; } });
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { InvoiceSplitterV1 } from "
|
|
2
|
-
import { LocalInputSource } from "
|
|
3
|
-
import { ExtractedInvoiceSplitterImage } from "./
|
|
1
|
+
import { InvoiceSplitterV1 } from "../../product";
|
|
2
|
+
import { LocalInputSource } from "../../input/base";
|
|
3
|
+
import { ExtractedInvoiceSplitterImage } from "./extractedInvoiceSplitterImage";
|
|
4
4
|
/**
|
|
5
5
|
* Extracts & cuts the pages of a main document invoice according to the provided indexes.
|
|
6
6
|
*
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.extractInvoices = void 0;
|
|
4
4
|
const pdf_lib_1 = require("pdf-lib");
|
|
5
|
-
const errors_1 = require("
|
|
6
|
-
const product_1 = require("
|
|
7
|
-
const
|
|
5
|
+
const errors_1 = require("../../errors");
|
|
6
|
+
const product_1 = require("../../product");
|
|
7
|
+
const extractedInvoiceSplitterImage_1 = require("./extractedInvoiceSplitterImage");
|
|
8
8
|
async function splitPdf(pdfDoc, invoicePageGroups) {
|
|
9
9
|
if (invoicePageGroups.length === 0) {
|
|
10
10
|
return [];
|
|
@@ -21,7 +21,7 @@ async function splitPdf(pdfDoc, invoicePageGroups) {
|
|
|
21
21
|
subdocument.addPage(page);
|
|
22
22
|
});
|
|
23
23
|
const subdocumentBytes = await subdocument.save();
|
|
24
|
-
generatedPdfs.push(new
|
|
24
|
+
generatedPdfs.push(new extractedInvoiceSplitterImage_1.ExtractedInvoiceSplitterImage(subdocumentBytes, [invoicePageGroups[i][0], invoicePageGroups[i][invoicePageGroups[i].length - 1]]));
|
|
25
25
|
}
|
|
26
26
|
return generatedPdfs;
|
|
27
27
|
}
|
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
import { ExtractedImage } from "
|
|
1
|
+
import { ExtractedImage } from "../common";
|
|
2
|
+
/**
|
|
3
|
+
* Wrapper class for extracted multiple-receipts images.
|
|
4
|
+
*/
|
|
2
5
|
export declare class ExtractedMultiReceiptImage extends ExtractedImage {
|
|
3
6
|
readonly receiptId: number;
|
|
4
7
|
readonly pageId: number;
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ExtractedMultiReceiptImage = void 0;
|
|
4
|
-
const
|
|
5
|
-
|
|
4
|
+
const common_1 = require("../common");
|
|
5
|
+
/**
|
|
6
|
+
* Wrapper class for extracted multiple-receipts images.
|
|
7
|
+
*/
|
|
8
|
+
class ExtractedMultiReceiptImage extends common_1.ExtractedImage {
|
|
6
9
|
constructor(buffer, pageId, receiptId) {
|
|
7
10
|
super(buffer, `receipt_p${pageId}_${receiptId}.pdf`);
|
|
8
11
|
this.pageId = pageId;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ExtractedMultiReceiptImage = exports.extractReceipts = void 0;
|
|
4
|
+
var multiReceiptsExtractor_1 = require("./multiReceiptsExtractor");
|
|
5
|
+
Object.defineProperty(exports, "extractReceipts", { enumerable: true, get: function () { return multiReceiptsExtractor_1.extractReceipts; } });
|
|
6
|
+
var extractedMultiReceiptImage_1 = require("./extractedMultiReceiptImage");
|
|
7
|
+
Object.defineProperty(exports, "ExtractedMultiReceiptImage", { enumerable: true, get: function () { return extractedMultiReceiptImage_1.ExtractedMultiReceiptImage; } });
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { MultiReceiptsDetectorV1 } from "
|
|
1
|
+
import { MultiReceiptsDetectorV1 } from "../../product";
|
|
2
2
|
import { ExtractedMultiReceiptImage } from "./extractedMultiReceiptImage";
|
|
3
|
-
import { LocalInputSource } from "
|
|
3
|
+
import { LocalInputSource } from "../../input/base";
|
|
4
4
|
/**
|
|
5
5
|
* Extracts individual receipts from multi-receipts documents.
|
|
6
6
|
*
|
|
7
7
|
* @param inputFile File to extract sub-receipts from.
|
|
8
8
|
* @param inference Results of the inference.
|
|
9
|
-
* @returns Individual extracted receipts as an array of
|
|
9
|
+
* @returns Individual extracted receipts as an array of ExtractedMultiReceiptImage.
|
|
10
10
|
*/
|
|
11
11
|
export declare function extractReceipts(inputFile: LocalInputSource, inference: MultiReceiptsDetectorV1): Promise<ExtractedMultiReceiptImage[]>;
|
|
@@ -2,27 +2,25 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.extractReceipts = void 0;
|
|
4
4
|
const pdf_lib_1 = require("pdf-lib");
|
|
5
|
-
const errors_1 = require("
|
|
6
|
-
const geometry_1 = require("../geometry");
|
|
5
|
+
const errors_1 = require("../../errors");
|
|
7
6
|
const extractedMultiReceiptImage_1 = require("./extractedMultiReceiptImage");
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
const
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
return new extractedMultiReceiptImage_1.ExtractedMultiReceiptImage(receiptBytes, pageId, receiptId);
|
|
7
|
+
const common_1 = require("../common");
|
|
8
|
+
/**
|
|
9
|
+
* Given a page and a set of coordinates, extracts & assigns individual receipts to an ExtractedMultiReceiptImage
|
|
10
|
+
* object.
|
|
11
|
+
*
|
|
12
|
+
* @param pdfPage PDF Page to extract from.
|
|
13
|
+
* @param boundingBoxes A set of coordinates delimiting the position of each receipt.
|
|
14
|
+
* @param pageId Id of the page the receipt is extracted from. Caution: this starts at 0, unlike the numbering in PDF
|
|
15
|
+
* pages.
|
|
16
|
+
*/
|
|
17
|
+
async function extractReceiptsFromPage(pdfPage, boundingBoxes, pageId) {
|
|
18
|
+
const extractedReceiptsRaw = await (0, common_1.extractFromPage)(pdfPage, boundingBoxes);
|
|
19
|
+
const extractedReceipts = [];
|
|
20
|
+
for (let i = 0; i < extractedReceiptsRaw.length; i++) {
|
|
21
|
+
extractedReceipts.push(new extractedMultiReceiptImage_1.ExtractedMultiReceiptImage(extractedReceiptsRaw[i], pageId, i));
|
|
22
|
+
}
|
|
23
|
+
return extractedReceipts;
|
|
26
24
|
}
|
|
27
25
|
async function loadPdfDoc(inputFile) {
|
|
28
26
|
let pdfDoc;
|
|
@@ -52,7 +50,7 @@ async function loadPdfDoc(inputFile) {
|
|
|
52
50
|
*
|
|
53
51
|
* @param inputFile File to extract sub-receipts from.
|
|
54
52
|
* @param inference Results of the inference.
|
|
55
|
-
* @returns Individual extracted receipts as an array of
|
|
53
|
+
* @returns Individual extracted receipts as an array of ExtractedMultiReceiptImage.
|
|
56
54
|
*/
|
|
57
55
|
async function extractReceipts(inputFile, inference) {
|
|
58
56
|
const images = [];
|
|
@@ -62,10 +60,9 @@ async function extractReceipts(inputFile, inference) {
|
|
|
62
60
|
const pdfDoc = await loadPdfDoc(inputFile);
|
|
63
61
|
for (let pageId = 0; pageId < pdfDoc.getPageCount(); pageId++) {
|
|
64
62
|
const [page] = await pdfDoc.copyPages(pdfDoc, [pageId]);
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
}
|
|
63
|
+
const receiptPositions = inference.pages[pageId].prediction.receipts.map((receipt) => receipt.boundingBox);
|
|
64
|
+
const extractedReceipts = await extractReceiptsFromPage(page, receiptPositions, pageId);
|
|
65
|
+
images.push(...extractedReceipts);
|
|
69
66
|
}
|
|
70
67
|
return images;
|
|
71
68
|
}
|