Document Intelligence invoice model

Important

  • Document Intelligence public preview releases provide early access to features that are in active development. Features, approaches, and processes may change, prior to General Availability (GA), based on user feedback.
  • The public preview version of Document Intelligence client libraries default to REST API version 2024-07-31-preview.
  • Public preview version 2024-07-31-preview is currently only available in the following Azure regions. Note that the custom generative (document field extraction) model in AI Studio is only available in North Central US region:
    • East US
    • West US2
    • West Europe
    • North Central US

This content applies to: checkmark v4.0 (preview) | Previous versions: blue-checkmark v3.1 (GA) blue-checkmark v3.0 (GA) blue-checkmark v2.1 (GA)

This content applies to: checkmark v3.1 (GA) | Latest version: purple-checkmark v4.0 (preview) | Previous versions: blue-checkmark v3.0 blue-checkmark v2.1

This content applies to: checkmark v3.0 (GA) | Latest versions: purple-checkmark v4.0 (preview) purple-checkmark v3.1 | Previous version: blue-checkmark v2.1

This content applies to: checkmark v2.1 | Latest version: blue-checkmark v4.0 (preview)

The Document Intelligence invoice model uses powerful Optical Character Recognition (OCR) capabilities to analyze and extract key fields and line items from sales invoices, utility bills, and purchase orders. Invoices can be of various formats and quality including phone-captured images, scanned documents, and digital PDFs. The API analyzes invoice text; extracts key information such as customer name, billing address, due date, and amount due; and returns a structured JSON data representation. The model currently supports invoices in 27 languages.

Supported document types:

  • Invoices
  • Utility bills
  • Sales orders
  • Purchase orders

Automated invoice processing

Automated invoice processing is the process of extracting key accounts payable fields from billing account documents. Extracted data includes line items from invoices integrated with your accounts payable (AP) workflows for reviews and payments. Historically, the accounts payable process is performed manually and, hence, very time consuming. Accurate extraction of key data from invoices is typically the first and one of the most critical steps in the invoice automation process.

Sample invoice processed with Document Intelligence Studio:

Screenshot of a sample invoice analyzed in the Document Intelligence Studio.

Sample invoice processed with Document Intelligence Sample Labeling tool:

Screenshot of a sample invoice.

Development options

Document Intelligence v4.0 (2024-07-31-preview) supports the following tools, applications, and libraries:

Feature Resources Model ID
Invoice model Document Intelligence Studio
REST API
C# SDK
Python SDK
Java SDK
JavaScript SDK
prebuilt-invoice

Document Intelligence v3.1 supports the following tools, applications, and libraries:

Feature Resources Model ID
Invoice model Document Intelligence Studio
REST API
C# SDK
Python SDK
Java SDK
JavaScript SDK
prebuilt-invoice

Document Intelligence v3.0 supports the following tools, applications, and libraries:

Feature Resources Model ID
Invoice model Document Intelligence Studio
REST API
C# SDK
Python SDK
Java SDK
JavaScript SDK
prebuilt-invoice

Document Intelligence v2.1 supports the following tools, applications, and libraries:

Feature Resources
Invoice model Document Intelligence labeling tool
REST API
Client-library SDK
Document Intelligence Docker container

Input requirements

  • Supported file formats:

    Model PDF Image:
    JPEG/JPG, PNG, BMP, TIFF, HEIF
    Microsoft Office:
    Word (DOCX), Excel (XLSX), PowerPoint (PPTX), HTML
    Read
    Layout ✔ (2024-07-31-preview, 2024-02-29-preview, 2023-10-31-preview)
    General Document
    Prebuilt
    Custom extraction
    Custom classification ✔ (2024-07-31-preview, 2024-02-29-preview)
  • For best results, provide one clear photo or high-quality scan per document.

  • For PDF and TIFF, up to 2,000 pages can be processed (with a free tier subscription, only the first two pages are processed).

  • The file size for analyzing documents is 500 MB for paid (S0) tier and 4 MB for free (F0) tier.

  • Image dimensions must be between 50 pixels x 50 pixels and 10,000 pixels x 10,000 pixels.

  • If your PDFs are password-locked, you must remove the lock before submission.

  • The minimum height of the text to be extracted is 12 pixels for a 1024 x 768 pixel image. This dimension corresponds to about 8 point text at 150 dots per inch (DPI).

  • For custom model training, the maximum number of pages for training data is 500 for the custom template model and 50,000 for the custom neural model.

    • For custom extraction model training, the total size of training data is 50 MB for template model and 1 GB for the neural model.

    • For custom classification model training, the total size of training data is 1 GB with a maximum of 10,000 pages. For 2024-07-31-preview and later, the total size of training data is 2 GB with a maximum of 10,000 pages.

  • Supported file formats: JPEG, PNG, PDF, and TIFF.
  • Supported PDF and TIFF, up to 2,000 pages are processed. For free tier subscribers, only the first two pages are processed.
  • Supported file size must be less than 50 MB and dimensions at least 50 x 50 pixels and at most 10,000 x 10,000 pixels.

Invoice model data extraction

See how data, including customer information, vendor details, and line items, is extracted from invoices. You need the following resources:

  • An Azure subscription—you can create one for free.

  • A Document Intelligence instance in the Azure portal. You can use the free pricing tier (F0) to try the service. After your resource deploys, select Go to resource to get your key and endpoint.

Screenshot of keys and endpoint location in the Azure portal.

  1. On the Document Intelligence Studio home page, select Invoices.

  2. You can analyze the sample invoice or upload your own files.

  3. Select the Run analysis button and, if necessary, configure the Analyze options :

    Screenshot of Run analysis and Analyze options buttons in the Document Intelligence Studio.

Document Intelligence Sample Labeling tool

  1. Navigate to the Document Intelligence Sample Tool.

  2. On the sample tool home page, select the Use prebuilt model to get data tile.

    Screenshot of layout model analyze results process.

  3. Select the Form Type to analyze from the dropdown menu.

  4. Choose a URL for the file you would like to analyze from the below options:

  5. In the Source field, select URL from the dropdown menu, paste the selected URL, and select the Fetch button.

    Screenshot of source location dropdown menu.

  6. In the Document Intelligence service endpoint field, paste the endpoint that you obtained with your Document Intelligence subscription.

  7. In the key field, paste the key you obtained from your Document Intelligence resource.

    Screenshot showing the select-form-type dropdown menu.

  8. Select Run analysis. The Document Intelligence Sample Labeling tool calls the Analyze Prebuilt API and analyze the document.

  9. View the results - see the key-value pairs extracted, line items, highlighted text extracted, and tables detected.

    Screenshot of layout model analyze results operation.

Note

The Sample Labeling tool does not support the BMP file format. This is a limitation of the tool not the Document Intelligence Service.

Supported languages and locales

See our Language Support—prebuilt models page for a complete list of supported languages.

Field extraction

The Document Intelligence invoice model prebuilt-invoice extracts the following fields.

Name Type Description Standardized output
CustomerName string Invoiced customer Microsoft Corp
CustomerId string Customer reference ID CID-12345
PurchaseOrder string Purchase order reference number PO-3333
InvoiceId string ID for this specific invoice (often Invoice Number) INV-100
InvoiceDate date date the invoice was issued mm-dd-yyyy
DueDate date date payment for this invoice is due mm-dd-yyyy
VendorName string Vendor who created this invoice CONTOSO
VendorAddress address Vendor mailing address 123 456th St, New York, NY 10001
VendorAddressRecipient string Name associated with the VendorAddress Contoso Headquarters
CustomerAddress address Mailing address for the Customer 123 Other St, Redmond, WA, 98052
CustomerAddressRecipient string Name associated with the CustomerAddress Microsoft Corp
BillingAddress address Explicit billing address for the customer 123 Bill St., Redmond, WA, 98052
BillingAddressRecipient string Name associated with the BillingAddress Microsoft Services
ShippingAddress address Explicit shipping address for the customer 123 Ship St., Redmond, WA, 98052
ShippingAddressRecipient string Name associated with the ShippingAddress Microsoft Delivery
Sub​Total currency Subtotal field identified on this invoice $100.00
TotalDiscount currency The total discount applied to an invoice $5.00
TotalTax currency Total tax field identified on this invoice $10.00
InvoiceTotal currency Total new charges associated with this invoice $10.00
AmountDue currency Total Amount Due to the vendor $610
PreviousUnpaidBalance currency Explicit previously unpaid balance $500.00
RemittanceAddress address Explicit remittance or payment address for the customer 123 Remit St New York, NY, 10001
RemittanceAddressRecipient string Name associated with the RemittanceAddress Contoso Billing
ServiceAddress address Explicit service address or property address for the customer 123 Service St., Redmond WA, 98052
ServiceAddressRecipient string Name associated with the ServiceAddress Microsoft Services
ServiceStartDate date First date for the service period (for example, a utility bill service period) mm-dd-yyyy
ServiceEndDate date End date for the service period (for example, a utility bill service period) mm-dd-yyyy
VendorTaxId string The taxpayer number associated with the vendor 123456-7
CustomerTaxId string The taxpayer number associated with the customer 765432-1
PaymentTerm string The terms of payment for the invoice Net 90
KVKNumber string A unique identifier for businesses registered in the Netherlands (NL-only) 12345678
CurrencyCode string The currency code associated with the extracted amount
PaymentDetails array An array that holds Payment Option details such as IBAN,SWIFT, BPayBillerCode(AU), BPayReference(AU)
TaxDetails array An array that holds tax details like amount and rate
TaxDetails array AN array that holds added tax information such as CGST, IGST, and SGST. This line item is currently only available for the Germany (de), Spain (es), Portugal (pt), and English Canada (en-CA) locales

Line items array

Following are the line items extracted from an invoice in the JSON output response (the following output uses this sample invoice:

Name Type Description Value (standardized output)
Amount currency The amount of the line item $60.00
Date date Date corresponding to each line item. Often it's a date the line item was shipped 3/4/2021
Description string The text description for the invoice line item Consulting service
Quantity number The quantity for this invoice line item 2
ProductCode string Product code, product number, or SKU associated with the specific line item A123
Tax currency Tax associated with each line item. Possible values include tax amount and tax Y/N $6.00
TaxRate string Tax Rate associated with each line item. 18%
Unit string The unit of the line item, e.g, kg, lb etc. Hours
UnitPrice number The net or gross price (depending on the gross invoice setting of the invoice) of one unit of this item $30.00

The invoice key-value pairs and line items extracted are in the documentResults section of the JSON output.

Key-value pairs

The prebuilt invoice 2022-06-30 and later releases support the optional return of key-value pairs. By default, the return of key-value pairs is disabled. Key-value pairs are specific spans within the invoice that identify a label or key and its associated response or value. In an invoice, these pairs could be the label and the value the user entered for that field or telephone number. The AI model is trained to extract identifiable keys and values based on a wide variety of document types, formats, and structures.

Keys can also exist in isolation when the model detects that a key exists, with no associated value or when processing optional fields. For example, a middle name field can be left blank on a form in some instances. Key-value pairs are always spans of text contained in the document. For documents where the same value is described in different ways, for example, customer/user, the associated key is either customer or user (based on context).

Fields extracted

The Invoice service extracts the text, tables, and 26 invoice fields. Following are the fields extracted from an invoice in the JSON output response (the following output uses this sample invoice).

Name Type Description Text Value (standardized output)
CustomerName string Customer being invoiced Microsoft Corp
CustomerId string Reference ID for the customer CID-12345
PurchaseOrder string A purchase order reference number PO-3333
InvoiceId string ID for this specific invoice (often "Invoice Number") INV-100
InvoiceDate date Date the invoice was issued 11/15/2019 2019-11-15
DueDate date Date payment for this invoice is due 12/15/2019 2019-12-15
VendorName string Vendor that created the invoice CONTOSO
VendorAddress string Mailing address for the Vendor 123 456th St New York, NY, 10001
VendorAddressRecipient string Name associated with the VendorAddress Contoso Headquarters
CustomerAddress string Mailing address for the Customer 123 Other Street, Redmond, Washington, 98052
CustomerAddressRecipient string Name associated with the CustomerAddress Microsoft Corp
BillingAddress string Explicit billing address for the customer 123 Bill Street, Redmond, Washington, 98052
BillingAddressRecipient string Name associated with the BillingAddress Microsoft Services
ShippingAddress string Explicit shipping address for the customer 123 Ship Street, Redmond, Washington, 98052
ShippingAddressRecipient string Name associated with the ShippingAddress Microsoft Delivery
Sub​Total number Subtotal field identified on this invoice $100.00 100
TotalTax number Total tax field identified on this invoice $10.00 10
InvoiceTotal number Total new charges associated with this invoice $110.00 110
AmountDue number Total Amount Due to the vendor $610.00 610
ServiceAddress string Explicit service address or property address for the customer 123 Service Street, Redmond, Washington, 98052
ServiceAddressRecipient string Name associated with the ServiceAddress Microsoft Services
RemittanceAddress string Explicit remittance or payment address for the customer 123 Remit St New York, NY, 10001
RemittanceAddressRecipient string Name associated with the RemittanceAddress Contoso Billing
ServiceStartDate date First date for the service period (for example, a utility bill service period) 10/14/2019 2019-10-14
ServiceEndDate date End date for the service period (for example, a utility bill service period) 11/14/2019 2019-11-14
PreviousUnpaidBalance number Explicit previously unpaid balance $500.00 500

The following are the line items extracted from an invoice in the JSON output response and uses this sample invoice:

Name Type Description Text (line item #1) Value (standardized output)
Items string Full string text line of the line item 3/4/2021 A123 Consulting Services 2 hours $30.00 10% $60.00
Amount number The amount of the line item $60.00 100
Description string The text description for the invoice line item Consulting service Consulting service
Quantity number The quantity for this invoice line item 2 2
UnitPrice number The net or gross price (depending on the gross invoice setting of the invoice) of one unit of this item $30.00 30
ProductCode string Product code, product number, or SKU associated with the specific line item A123
Unit string The unit of the line item, e.g, kg, lb etc. hours
Date date Date corresponding to each line item. Often it's a date the line item was shipped 3/4/2021 2021-03-04
Tax number Tax associated with each line item. Possible values include tax amount, tax %, and tax Y/N 10%

The following are complex fields extracted from an invoice in the JSON output response:

TaxDetails

Tax details define specific taxes applied to the invoice total.

Name Type Description Text (line item #1) Value (standardized output)
Items string Full string text line of the tax item V.A.T. 15% $60.00
Amount number The tax amount of the tax item 60.00 60
Rate string The tax rate of the tax item 15%

PaymentDetails

List all the detected payment options detected on the field.

Name Type Description Text (line item #1) Value (standardized output)
IBAN string Internal Bank Account Number GB33BUKB20201555555555
SWIFT string SWIFT code BUKBGB22
BankAccountNumber string Bank account number, a unique identifier for a bank account 123456
BPayBillerCode string Australian B-Pay Biller Code 12345
BPayReference string Australian B-Pay Reference Code 98765432100

JSON output

The JSON output has three parts:

  • "readResults" node contains all of the recognized text and selection marks. Text is organized via page, then by line, then by individual words.
  • "pageResults" node contains the tables and cells extracted with their bounding boxes, confidence, and a reference to the lines and words in readResults.
  • "documentResults" node contains the invoice-specific values and line items that the model discovered. It's where to find all the fields from the invoice such as invoice ID, ship to, bill to, customer, total, line items and lots more.

Migration guide

Next steps