Skip to main content

OCR Extraction Node

The OCR Extraction node reads uploaded receipts or documents, sends them to the OCR service, and writes structured results into the conversation value bag.

It is typically used between a File Upload node and a List From Carousel node to turn uploaded receipts into prefilled expense items.

Use Case​

Use the OCR Extraction node when:

  • You want Atlas to extract line items or scalar values from uploaded receipts or documents.
  • You want to reduce manual typing by prefilling later steps from OCR results.
  • You are building a Document Intelligence flow where uploaded receipts should become candidate rows in an item list.

Example scenarios:

  • Health or travel claims where users upload receipts and then confirm the extracted expense lines.
  • Flows that need merchant name, transaction date, or receipt totals from the first uploaded document that contains them.
  • Item list experiences where [ocr.Items] is used as the prefill data source for a List From Carousel node.

When not to use:
Do not use it for free-text capture or manual form entry. Use input nodes when the data must be typed directly by the user.

UI Examples​

Backend-only logic item. It does not render its own TellUs UI.

Behavior​

When the OCR Extraction node is executed, it performs the following actions:

  1. Reads FullUploadedFilePaths to get the uploaded files from an earlier step.
  2. Inspects conversation property keys with the ocr- prefix to decide which fields to request from OCR.
  3. Sends each uploaded file to the OCR service.
  4. Merges Items from all processed files into one JSON array.
  5. Stores scalar values such as Total, MerchantName, and TransactionDate from the first file that returns them.
  6. Writes the extracted values to the value bag without the ocr- prefix.
  7. Sets Result to Ok, NoDataFound, SearchDataNotProvided, or Exception.

Behavior flow​

Additional behavior notes:

  • Items, MerchantName, and TransactionDate are always requested because they are used to enrich each extracted receipt line.
  • Files that fail to download or return no OCR payload are skipped while the remaining files continue to process.
  • If an extracted item already contains MerchantName or TransactionDate, the existing values are preserved.
  • OCR results below 80% confidence are discarded automatically.
  • The node is backend-only and does not render a customer-facing UI of its own.

Multiple files​

When more than one file is uploaded, each file is scanned independently:

  • Items are collected from every file and merged into one flat list.
  • Scalar fields are taken from the first file that returns a value. Later files do not overwrite those keys.
  • Each item is enriched with MerchantName and TransactionDate from its own receipt so the source context stays correct.

Node Metadata​

PropertyDescription
Node classOcrExtractionNode
Runtime roleBackend logic item
RequireUserResponseNo

Input Properties​

PropertyDescription
FullUploadedFilePaths

OcrExtractionNodeInput.FullUploadedFilePaths stored as a string containing serialized List<FileUploadData> from a previous file upload step.

Set this to the upload node's structured file output, for example [receiptUpload.UploadedFileData]. The OCR node reads these files and processes each one independently.

This is the only direct node input. The rest of the extraction behavior is controlled by conversation property keys with the ocr- prefix.

Conversation Properties​

The node also reads conversation property keys prefixed with ocr- to decide which fields to extract. The value of the conversation property is not used. Only the key matters.

Property keyOCR field requestedNotes
ocr-ItemsItemsTriggers item list extraction. Always merged across files.
ocr-TotalTotalReceipt total amount.
ocr-SubtotalSubtotalReceipt subtotal.
ocr-TotalTaxTotalTaxTotal tax amount.
ocr-MerchantNameMerchantNameStore or merchant name.
ocr-TransactionDateTransactionDateDate of the transaction.
ocr-TransactionTimeTransactionTimeTime of the transaction.
ocr-CountryRegionCountryRegionCountry or region on the receipt.
ocr-ReceiptTypeReceiptTypeReceipt type classification.

Items, MerchantName, and TransactionDate are always requested even if no matching ocr- conversation properties are declared, because they are needed to enrich extracted receipt lines.

For the downstream table pattern, see Item List Prefill.

Output Properties​

PropertyDescription
Items

JSON array of extracted receipt line items merged from all processed files.

Each item typically includes Description, TotalPrice, MerchantName, and TransactionDate. This output is commonly used as [ocr.Items] in PrefillData on the List From Carousel node.

Example:

[
{
"Description": "Wireless Mouse",
"TotalPrice": "29.90",
"MerchantName": "Demo Store",
"TransactionDate": "2026-05-07"
},
{
"Description": "USB Cable",
"TotalPrice": "9.99",
"MerchantName": "Second Store",
"TransactionDate": "2026-05-08"
}
]

Items from all processed files are merged into one list. Each item is enriched with merchant and date values from its own receipt.

Total

Receipt total amount from the first processed file that returns a value.

Available when the ocr-Total conversation property key is configured.

Subtotal

Receipt subtotal from the first processed file that returns a value.

Available when the ocr-Subtotal conversation property key is configured.

TotalTax

Receipt total tax amount from the first processed file that returns a value.

Available when the ocr-TotalTax conversation property key is configured.

MerchantName

Merchant or store name stored as a plain string.

This value is also used to enrich each extracted item record with the merchant name from its source receipt.

TransactionDate

Transaction date stored as a plain string.

This value is also used to enrich each extracted item record with the date from its source receipt.

TransactionTime

Transaction time from the first processed file that returns a value.

Available when the ocr-TransactionTime conversation property key is configured.

CountryRegion

Country or region detected on the receipt.

Available when the ocr-CountryRegion conversation property key is configured.

ReceiptType

Receipt type classification returned by the OCR service.

Available when the ocr-ReceiptType conversation property key is configured.

Result

Execution status for the OCR extraction step.

Supported values:

  • Ok when at least one field was extracted successfully.
  • NoDataFound when files were processed but OCR returned no usable values.
  • SearchDataNotProvided when no uploaded files or extraction keys were available.
  • Exception when an unhandled error occurred during processing.

All extracted values are written to the conversation value bag without the ocr- prefix. Scalar outputs are stored from the first file that returns them. Items is merged across all processed files.

Scalar Output Examples​

Value bag keyExample value
MerchantName"Demo Store"
TransactionDate"2026-05-07"
Total"129.90"

Editor Example​

Try it in the Atlas Editor

This reference flow shows the OCR extraction step between file upload and item list prefill.

Example setup:

FileUpload node variable: receiptUpload
OCR Extraction node variable: ocr

FullUploadedFilePaths = [receiptUpload.UploadedFileData]

Conversation properties:
ocr-Items = ""
ocr-MerchantName = ""
ocr-TransactionDate = ""
ocr-Total = ""

After processing, the value bag can contain:

Items = "[{\"Description\":\"Wireless Mouse\",\"TotalPrice\":\"29.90\",\"MerchantName\":\"Demo Store\",\"TransactionDate\":\"2026-05-07\"}]"
Total = "129.90"
MerchantName = "Demo Store"
TransactionDate = "2026-05-07"
Result = "Ok"

Typical downstream item list prefill:

{
"prefillData": "[ocr.Items]",
"prefillTableDefinition": "[{\"title\":\"Description\",\"value\":\"Description\",\"isSummable\":false},{\"title\":\"Amount\",\"value\":\"TotalPrice\",\"isSummable\":true},{\"title\":\"Date\",\"value\":\"TransactionDate\",\"isSummable\":false},{\"title\":\"Merchant\",\"value\":\"MerchantName\",\"isSummable\":false}]"
}

In the item sub-flow, input nodes can use Start.Description, Start.TotalPrice, Start.TransactionDate, and Start.MerchantName as default values after a user picks a suggested OCR row.