Finance and AP workflow fit

Invoice OCR API that shows the document, the markdown, and the ERP-ready record side by side

LeapOCR turns supplier invoices into readable markdown and schema-fit JSON without hiding the source page. The examples below use fresh invoices rendered for this page across clean exports, embedded-image PDFs, low-contrast scans, and camera-quality captures.

Sample bench
4 fresh invoices

New source pages added for this campaign page instead of placeholder queue text.

Output surface
Markdown + JSON

Reviewers get readable OCR while finance systems get a stable contract for posting.

Starter path
3-day trial, 100 credits

Available after you add a credit card, so you can test a real invoice and inspect the handoff.

Why this page is different

Show the live document next to the markdown and JSON so finance teams can see the handoff, not just hear the promise.

Use the same extraction contract across modern PDF exports, supplier scans, and low-quality camera captures.

Keep markdown visible for audit and exception review instead of forcing operators to debug a raw OCR blob.

Escalate only the ambiguous page instead of sending the entire invoice queue through a higher-cost manual fallback.

Production fit

Built for invoice queues that have to survive the handoff after OCR

Schema-fit output first

The useful handoff is a stable AP record with totals, dates, vendor fields, and line items already normalized for ERP writeback.

One lane for mixed capture quality

Handle clean exports, embedded-image invoices, old scans, and phone-captured pages without changing the downstream contract.

Markdown for people, JSON for systems

Keep a readable OCR layer for finance review while structured data moves directly into reconciliation, approval, and posting workflows.

Fresh invoice proofs

Four new invoices, each shown as source page, readable markdown, and system-ready JSON.

These are new examples rendered for this page to show how LeapOCR handles different invoice quality levels while keeping the same output contract.

Fresh sample 01

Clean billing export with real line-item structure and tax math.

digital PDF export mixed units + discount + tax math
Modern wholesale invoice from Azure Interior

Even a polished PDF still has to become an AP record with stable totals, payment reference, units, and normalized line items.

OCR markdown
  # Invoice INV/2023/03/0008- Supplier: Azure Interior- Invoice date: 2023-03-20- Due date: 2023-04-04- Reference: CUSTREF123- Payment reference: 202309097001## Line items| SKU | Description | Qty | Unit price | Disc | Tax | Amount || --- | --- | --- | ---: | ---: | ---: | ---: || [17589684] | Beeswax XL | 1.00 kg | 42.00 | 0.00 | 15% | 42.00 || [FURN_7777] | Office Chair | 1.00 unit | 70.00 | 0.00 | 15% | 70.00 || *987123* | Olive Oil | 1.00 L | 1.00 | 10.00 | 15% | 0.90 || [LUX_TRF] | Luxury Truffles | 15.00 g | 10.00 | 0.00 | 0% | 150.00 |- Subtotal: 262.90 USD- Tax: 16.94 USD- Total: 279.84 USD- Terms: 15 days
Structured record
  {  "vendor_name": "Azure Interior",  "invoice_number": "INV/2023/03/0008",  "invoice_date": "2023-03-20",  "due_date": "2023-04-04",  "reference": "CUSTREF123",  "currency": "USD",  "subtotal": 262.9,  "tax_total": 16.94,  "invoice_total": 279.84,  "payment_reference": "202309097001",  "line_items": [    {      "sku": "[17589684]",      "description": "Beeswax XL",      "quantity": 1.0,      "uom": "kg",      "unit_price": 42.0,      "discount": 0.0,      "tax_rate": 15.0,      "line_total": 42.0    },    {      "sku": "[FURN_7777]",      "description": "Office Chair",      "quantity": 1.0,      "uom": "unit",      "unit_price": 70.0,      "discount": 0.0,      "tax_rate": 15.0,      "line_total": 70.0    },    {      "sku": "*987123*",      "description": "Olive Oil",      "quantity": 1.0,      "uom": "L",      "unit_price": 1.0,      "discount": 10.0,      "tax_rate": 15.0,      "line_total": 0.9    },    {      "sku": "[LUX_TRF]",      "description": "Luxury Truffles",      "quantity": 15.0,      "uom": "g",      "unit_price": 10.0,      "discount": 0.0,      "tax_rate": 0.0,      "line_total": 150.0    }  ]}

Fresh sample 02

Hybrid invoice where the issuer block is embedded as an image.

text PDF + embedded image region mixed render layers + VAT normalization
Saeco invoice with embedded image-based issuer details

This is the kind of page that breaks brittle parsers: most of the invoice is text, but key company data lives inside an embedded image block.

OCR markdown
  # Kopie factuur VF1005193039- Supplier: e-Luscious Nederland B.V. (Saeco)- Invoice date: 2022-09-08- Due date: 2022-09-22- Customer: Strategic Corp- Order: SCONL000000444- Payment method: Credit Card## Lines| SKU | Description | Qty | VAT | Amount || --- | --- | --- | ---: | ---: || E103184 | Onderhoudsset CA6707/10 | 1 PCS | 21% | 49.99 || E103560 | SX Flyer SAECO Korting KVDNL | 1 PCS | 21% | 0.00 |- Net total: 41.31 EUR- VAT total: 8.68 EUR- Invoice total: 49.99 EUR- OCR note: issuer metadata is embedded in the image block at the bottom
Structured record
  {  "vendor_name": "e-Luscious Nederland B.V.",  "brand": "Saeco",  "invoice_number": "VF1005193039",  "invoice_date": "2022-09-08",  "due_date": "2022-09-22",  "order_number": "SCONL000000444",  "currency": "EUR",  "payment_method": "Credit Card",  "amount_untaxed": 41.31,  "tax_total": 8.68,  "invoice_total": 49.99,  "vat_id": "NL815254295B01",  "line_items": [    {      "sku": "E103184",      "description": "Onderhoudsset CA6707/10",      "quantity": 1,      "uom": "PCS",      "tax_rate": 21.0,      "line_total": 49.99    },    {      "sku": "E103560",      "description": "SX Flyer SAECO Korting KVDNL",      "quantity": 1,      "uom": "PCS",      "tax_rate": 21.0,      "line_total": 0.0    }  ]}

Fresh sample 03

Low-contrast monochrome scan with dense recurring-service rows.

aged grayscale scan small tables + degraded contrast
Low-contrast scan of a German hosting invoice

The page is still readable, but the tiny table text, grayscale loss, and older layout make it a bad candidate for template-only extraction.

OCR markdown
  # Rechnung 30064443- Supplier: QualityHosting AG- Customer: iViveLabs Ltd.- Invoice date: 2014-05-07- Payment terms: 14 Tage netto- Due date: 2014-05-21- Currency: EUR## Service rows| Pos | Service | Qty | Price || --- | --- | --- | ---: || 1 | StandardExchange 2010 / Dienst OUDJQ_strukan | 1 | 3.89 || 2 | QualityExchange 2010 / Dienst OUDJQ_schneider | 1 | 5.39 || 3 | QualityExchange 2010 / Dienst OUDJQ_minar | 1 | 5.39 || 4 | QualityExchange 2010 / Dienst OUDJQ_mayr | 1 | 5.39 || 5 | QualityExchange 2010 / Dienst OUDJQ_jenewein | 1 | 5.39 || 6 | QualityExchange 2010 / Dienst OUDJQ_jauernik | 1 | 5.39 || 7 | StandardExchange 2010 / Dienst OUDJQ_office | 1 | 3.89 |- Total: 34.73 EUR
Structured record
  {  "vendor_name": "QualityHosting AG",  "invoice_number": "30064443",  "invoice_date": "2014-05-07",  "due_date": "2014-05-21",  "currency": "EUR",  "invoice_total": 34.73,  "vat_id": "DE 232 446 240",  "line_item_count": 7,  "service_window": {    "start": "2014-05-01",    "end": "2014-05-31"  },  "line_items_preview": [    {      "position": "1",      "description": "Small Business StandardExchange 2010",      "service_id": "OUDJQ_strukan",      "line_total": 3.89    },    {      "position": "2",      "description": "Small Business QualityExchange 2010",      "service_id": "OUDJQ_schneider",      "line_total": 5.39    },    {      "position": "3",      "description": "Small Business QualityExchange 2010",      "service_id": "OUDJQ_minar",      "line_total": 5.39    }  ]}

Fresh sample 04

Camera-style capture with warp, blur, grayscale loss, and pricing detail.

camera-style warped render perspective distortion + blur + noise
Warped and noisy camera-style capture of an AWS invoice

This is the rougher path AP teams actually get from forwarded attachments or mobile captures. The image quality drops, but the record contract still has to hold.

OCR markdown
  # Invoice 42183017- Supplier: Amazon Web Services, Inc.- Account number: 296664039561- Invoice date: 2014-08-03- Billing period: 2014-07-01 to 2014-07-31- Total due: 4.11 USD- Bill to: iViveLabs Limited## Service summary| Service | Charges | VAT || --- | ---: | ---: || AWS Data Transfer | 0.01 | 0.00 || Amazon Elastic Compute Cloud | 1.87 | 0.00 || Amazon Glacier | 2.22 | 0.00 || Amazon Simple Storage Service | 0.01 | 0.00 |- Total for this invoice: 4.11 USD- OCR note: warped grayscale page with low edge sharpness
Structured record
  {  "vendor_name": "Amazon Web Services, Inc.",  "invoice_number": "42183017",  "invoice_date": "2014-08-03",  "billing_period": {    "start": "2014-07-01",    "end": "2014-07-31"  },  "currency": "USD",  "invoice_total": 4.11,  "bill_to": "iViveLabs Limited",  "line_items": [    {      "description": "AWS Data Transfer",      "line_total": 0.01,      "vat": 0.0    },    {      "description": "Amazon Elastic Compute Cloud",      "line_total": 1.87,      "vat": 0.0    },    {      "description": "Amazon Glacier",      "line_total": 2.22,      "vat": 0.0    },    {      "description": "Amazon Simple Storage Service",      "line_total": 0.01,      "vat": 0.0    }  ]}

Output contract

Keep the schema stable even when the invoice quality changes.

The source page can be clean, noisy, warped, or half-image. The handoff still needs one predictable AP contract.

Schema excerpt
  {  "vendor_name": "string",  "invoice_number": "string",  "invoice_date": "date",  "due_date": "date",  "currency": "string",  "invoice_total": "number",  "payment_reference": "string",  "line_items": [    {      "description": "string",      "quantity": "number",      "uom": "string",      "unit_price": "number",      "tax_rate": "number",      "line_total": "number"    }  ]}
Why both outputs matter

Markdown keeps the page legible for AP review. JSON keeps the writeback contract stable for ERP, approval, and reconciliation systems.

What to bring to a test

Bring one clean export, one difficult scan or phone capture, and the target fields your finance system expects on the other side.

What to do next

Bring one broken invoice and one clean export. We will compare the handoff side by side.

Use the workflow review when you already know the target system. Use the trial credits when you want to inspect markdown and JSON output on a real invoice before the call.

Scheduler

Book the invoice workflow review

Bring the invoice layout that matters, the fields your ERP expects, and one edge case that already breaks your current OCR path.

Bring to the call
  • One clean export and one difficult scan or camera capture.
  • The fields your ERP, approval system, or reconciliation flow expects.
  • The part of the current process that still needs manual cleanup.
Book a 20-minute review

The scheduler stays on-page so campaign tracking and conversion handoff remain intact.