What this test pack is
An openly reusable set of synthetic supplier invoices for anyone testing document extraction, line-item matching or Shopify cost/quantity writes. Each fixture is fictional and safe to redistribute.
Why synthetic invoices
- real supplier invoices contain confidential commercial data;
- fixtures can be version-controlled and cited;
- expected.json gives a shared ground truth;
- teams can compare OCR, Document AI and LLM/VLM extractors on the same files.
What scenarios are included
| Fixture | What it tests |
|---|---|
| Simple English invoice | Single-page AED table with a clean subtotal, tax and total. |
| Multi-page English invoice | Line items across pages with repeated headers. |
| Arabic invoice | Arabic supplier and product text with right-to-left layout. |
| Arabic / English bilingual invoice | Mixed directionality and bilingual product fields. |
| UAE AED + VAT invoice | AED, TRN-style fields and a 5% VAT example. |
| Saudi SAR invoice | SAR, bilingual text and regional tax fields. |
| Kuwait KWD invoice | Three-decimal values with no assumed VAT line. |
| USD supplier invoice for an AED merchant | Explicit foreign currency for FX-policy tests. |
| Line-level discount | An individual SKU discount with net line totals. |
| Invoice-level discount | An overall discount for allocation logic. |
| Freight + duty | Separate freight and customs lines for landed-cost tests. |
| Case-pack invoice | 5 cases × 12 units = 60 Shopify eaches. |
| Free-of-charge / bonus quantity | Charged for 10, delivered 12. |
| Poor-quality scan / photo | Rotation and uneven contrast as an OCR challenge. |
| Difficult multi-column layout | SKU, barcode, qty, discount, tax and total in one dense table. |
How to use it
Point your extractor at invoice.pdf or invoice.png, then compare the result with expected.json. That works for Azure Document Intelligence, Google Document AI, AWS Textract, OCR libraries, LLM/VLM extraction, or an internal Shopify invoice processor. This is not an official integration with those providers.
Ground truth
expected.json is the canonical header, totals and line items for that fixture. Schema lives in the repository so field names stay stable across contributions.
Benchmarking
Compare systems on:
- header field extraction;
- line accuracy;
- financial reconciliation;
- product identifiers (SKU, barcode, supplier code);
- totals, tax, discount and freight.
Contributing
Add edge cases, improve fixture quality, report extraction failures, or propose schema changes. Keep invoices fictional.
The dataset is for software testing. It is not accounting, tax or customs advice, and the suppliers, TRNs and product codes are invented.