-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathInvoiceSplitterAutoExtractionExample.php
More file actions
52 lines (44 loc) · 1.61 KB
/
Copy pathInvoiceSplitterAutoExtractionExample.php
File metadata and controls
52 lines (44 loc) · 1.61 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<?php
use Mindee\Client;
use Mindee\Extraction\PdfExtractor;
use Mindee\Input\PathInput;
use Mindee\Product\Invoice\InvoiceV4;
use Mindee\Product\InvoiceSplitter\InvoiceSplitterV1;
function parseInvoice(string $filePath, Client $mindeeClient)
{
$inputSource = new PathInput($filePath);
if ($inputSource->isPdf() && $inputSource->getPageCount() > 1) {
parseMultiPage($inputSource, $mindeeClient);
} else {
parseSinglePage($inputSource, $mindeeClient);
}
}
function parseSinglePage(PathInput $inputSource, Client $mindeeClient)
{
$invoiceResult = $mindeeClient->parse(InvoiceV4::class, $inputSource);
echo $invoiceResult->document;
}
function parseMultiPage(PathInput $inputSource, Client $mindeeClient)
{
global $mindeeClient;
$pdfExtractor = new PdfExtractor($inputSource);
$invoiceSplitterResponse = $mindeeClient->enqueueAndParse(
InvoiceSplitterV1::class,
$inputSource
);
$pageGroups = $invoiceSplitterResponse->document->inference->prediction->invoicePageGroups;
$extractedPdfs = $pdfExtractor->extractInvoices($pageGroups);
foreach ($extractedPdfs as $extractedPdf) {
// Optional: Save the files locally
// $extractedPdf->writeToFile("output/path");
$invoiceResult = $mindeeClient->parse(
InvoiceV4::class,
$extractedPdf->asInputSource()
);
echo $invoiceResult->document;
}
}
$mindeeClient = new Client("my-api-key-here");
// $mindeeClient = new Client(); // Optionally, use an environment variable.
$inputPath = "path/to/your/file.ext";
parseInvoice($inputPath, $mindeeClient);