What is Document Processing in AppSheet?

Document processing is a feature that allows you to automatically extract useful content from document files that are stored as PDF, GIF or TIFF files. This is built upon Google’s Document AI solution and supported file formats and document types will grow with them.

What documents are supported?

Currently, AppSheet can support content extraction from invoices, receipts and W9 forms. This means that files in a directory that are images or pdfs of invoices, receipts, or W9s can be automatically processed and the meaningful content extracted. Other documents or files in the folder will not have content extracted.

What are document processing states and how should I use them?

Since this solution relies on AI to identify and extract content from documents, it is possible the AI will fail to work properly or the information extracted is of low quality. To help understand the status of the content extraction a StatusCode column is included in the document data. This column can take one of a few values:

  • EXTRACTION_ERROR - the document was either of an invalid type or the document did not appear to have the correct content.
  • POOR_QUALITY - some of the values extracted had low confidence in the AI model. This implies that there is a lot of uncertainty in the accuracy of the data.
  • INCONSISTENT_CURRENCY - The document appears to have multiple currencies in the extraction.
  • EMPTY_CURRENCY - The document did not seem to specify a currency, though one was expected.

In addition to the code, a textual description of the potential issue is included in a column named AttentionDetails. This is intended to help you understand what may be the issue so you can correct it.

The intended flow of document extraction is to allow you to automatically utilize the extracted data in downstream processes and actions. In order to support this, two additional indicator columns are included in the document data:

  • IsEdited
  • NeedsAttention

These columns can be used to understand if the document data is ready for downstream use.

When the NeedsAttention column is TRUE (Yes), this indicates some sort of StatusCode is present that requires a human to review. For example, the content of a field may have low quality, or the currency code is unknown. The intent is to allow this data to be reviewed by a human, the content at issue to be corrected and the results can continue to the downstream uses. When an edit is made to the data after processing, the NeedsAttention column is set to FALSE and the IsEdited column is set to TRUE. This indicates that the data is now ready for downstream use.

Below is the set of useful slices of the data and the intended status of the document data.

  • AND([NeedsAttention], [StatusCode] = “EXTRACTION_ERROR”) - This slice of data represents the files that could not be extracted. This usually indicates files of the wrong file format or files with content that is not aligned with the intended use.
  • OR(NOT([NeedsAttention], [StatusCode] != “EXTRACTION_ERROR”) - This slice of data represents all of the files that had content extracted. These will contain potentially incomplete or invalid data. This slice is useful to see all the updated invoice data in one place, for example a view in an app.
  • AND([NeedsAttention], [StatusCode] != “EXTRACTION_ERROR”) - This slice of data represents all of the files that have been flagged as needing human review. This slice is helpful to build a human in the loop process to verify and correct any potential data issues.
  • NOT[NeedsAttention] - This slice represents all of the document data that is considered high quality and/or human verified. This slice is one that will be best to integrate into downstream use cases for automation or other purposes.

Why is there a separate currency code column?

For documents that have some type of monetary column, the value of the money columns and the currency code are separated out. The main reason for this is to provide more flexibility for the extracted data. For example, supporting a centralized repository of documents that may span multiple currencies, to allow for customizing downstream processes. There is only ever considered a single currency for a single document and if there appears to be inconsistencies in the extraction, they are flagged.

Where can I store my files for Document processing?

Currently, AppSheet only supports processing documents found on Google Drive. We will be working hard to expand the supported file storage providers available for document processing and will announce these as they become available.

What does ‘collection of files’ mean?

In addition to document content extraction, AppSheet now supports exposing your folder contents as a table in your application itself. This feature will allow app creators to expose files directly in their app, and use file metadata in their application logic (e.g. filter by names, dates modified, etc).

Did this answer your question?