Table of contents
1.
Introduction
2.
Document AI features and solutions
2.1.
Document AI processors
2.2.
Using Document AI processors
3.
Human in the Loop documentation 
3.1.
Features
3.2.
Benefits
3.3.
Processors supported
4.
Language support
4.1.
General processors
4.2.
Contract processors
4.3.
Identity processors
4.4.
Lending processors
4.5.
Procurement processors
5.
Supported Files
5.1.
Document scan resolution
6.
Document AI client libraries 
6.1.
Installing the client library
6.1.1.
Java
6.1.2.
Node.Js
6.1.3.
Python
6.2.
Setting up authentication
6.2.1.
Console
6.2.2.
Gcloud
6.3.
Using the client library
6.3.1.
Java
6.3.2.
Node.Js
6.3.3.
Python
7.
Cloud Document AI API Connector Overview 
7.1.
Cloud Document AI API
7.2.
Cloud Document AI connector sample
7.3.
Module: googleapis.documentai.v1.operations
7.4.
Module: googleapis.documentai.v1.projects.locations
7.5.
Module: googleapis.documentai.v1.projects.locations.operations
7.6.
Module: googleapis.documentai.v1.projects.locations.processors
7.7.
Module: googleapis.documentai.v1.projects.locations.processors.humanReviewConfig
7.8.
Module: googleapis.documentai.v1.projects.locations.processors.processorVersions
7.9.
Module: googleapis.documentai.v1.projects.operations
7.10.
Module: googleapis.documentai.v1beta2.projects.documents
7.11.
Module: googleapis.documentai.v1beta2.projects.locations.documents
7.12.
Module: googleapis.documentai.v1beta2.projects.locations.operations
7.13.
Module: googleapis.documentai.v1beta2.projects.operations
7.14.
Module: googleapis.documentai.v1beta3.projects.locations
7.15.
Module: googleapis.documentai.v1beta3.projects.locations.operations
7.16.
Module: googleapis.documentai.v1beta3.projects.locations.processors
7.17.
Module: googleapis.documentai.v1beta3.projects.locations.processors.humanReviewConfig
7.18.
Module: googleapis.documentai.v1beta3.projects.locations.processors.processorVersions
8.
Frequently Asked Questions
8.1.
What does AI for documents do?
8.2.
How does Google's AI for documents operate?
8.3.
How does intelligent document processing work?
8.4.
How does AI understand the text?
9.
Conclusion
Last Updated: Mar 27, 2024

Document AI

Author Aditi
0 upvote
Career growth poll
Do you think IIT Guwahati certified course can help you in your career?

Introduction

Document AI is a document understanding solution that takes unstructured data (documents, forms, etc.) and gives the data structure through content classification, entity extraction, sophisticated searching, and other methods. This makes the data easier to comprehend, analyze, and consume. To assist you in developing a scalable, cloud-based document interpretation solution, Document AI uses machine learning and Google Cloud. The Data Processing and Security Terms impose obligations on Google concerning Document AI.

You can use Document AI to:

  • Image-to-text conversion
  • Document classification
  • extracting and analyzing entities

For more information about Document AI, let's dive into the article.

Document AI features and solutions

  • General Processors: An excellent place to start when needing to process documents.
    • OCR (Optical Character Recognition) recognizes and extracts text from various documents.
    • Form Parser Key-value pairs are an example of form elements to extract.
    • Intelligent Documents Quality (Preview) Analyze a document's readability to determine its quality.
  • Specialized Processors: Specific models for the most prevalent document kinds in use today.
    • Procurement DocAI - Automate procurement data capture at scale by converting unstructured documents like invoices and receipts into structured data to boost operational effectiveness, enhance customer experience, and assist decision-making.
    • Lending DocAI - Automating mortgage documents' processing will transform the home loan experience for both borrowers and lenders. Streamline data acquisition and cut processing times while maintaining regulatory and compliance standards.
    • Contract DocAI - Simplify and extract highly accurate data from contracts to digitize and speed up contract life cycle management.
    • Identity DocAI - Specialized models to accurately and automatically extract information from identity documents.
  • Enterprise Knowledge Graph: Add linkages and real-world elements to data.
  • Human-in-the-Loop (HITL) - Human verification and corrections to assure the accuracy of data retrieved by Document AI processors for usage in crucial business applications.

Document AI processors

Depending on their capability, a growing number of processors (also known as parsers or splitters) are available from Document AI to extract data from particular document types. The following document processors are available right now from Document AI:-

  • General processors
  • Contract processors
  • Identity processors
  • Lending processors
  • Procurement processors

Using Document AI processors

The main steps for using Document AI are as follows:

  • For your use case, pick an appropriate processor.
  • Use the Cloud console to create a processor.
  • You can send your documents to the prediction endpoint that Document AI creates.
  • Refer to Building a processor for comprehensive instructions.
  • Send us your Document (s), so we can process them.
  • Once the Document (s) have been processed by Document AI, one or more document objects containing the extracted, structured information are returned.

Human in the Loop documentation 

Before being employed in crucial business applications, HITL AI enables human verification and adjustments to guarantee the accuracy of data gathered by humans in the Loop processors. It provides a workflow and user interface (UI) for people to examine, confirm, and correct the data humans in the Loop processors have collected from documents. It is utilized in various sectors, including government, manufacturing, health, and financial services.

We give customers two choices for human labelers:

  • Bring your labelers so your staff or a partner organization can review the documents.
  • Documents can be privately previewed using Google HITL Workforce. Only documents without personally identifiable information are subject to this evaluation (PII).

Features

We assist with the following attributes:

  • Filters with confidence thresholds to control the volume of documents flowing through HITL.
  • Management of the labeler pool, including task assignments and labeler and task-specific efficiency data.
  • UI cues and features decrease the time a labeler handles a document.
  • Analytics and metrics for tasks and labelers, allowing you to automate HITL processes

Benefits

HITL AI provides these advantages:

  • Risk mitigation- reduce the likelihood that crucial data, such as invoice amounts, billing addresses, loan amounts, etc., would be inaccurate and cause financial loss.
  • Simplify Exception Handling- Easily implement a system for handling exceptions and human review.
  • Workforce Efficiencies- Manage, oversee, and enhance workforce productivity through managing the human review.
  • Cost control- Manage human review expenses using programmable filters.
  • Data completeness- Ensure that your extracted data is complete for your future business applications.

Processors supported

The HITL review workflow now supports the following processors:

General Processors

  • Form Parser

 

Procurement Processors

  • Expense Parser
  • Invoice Parser
  • Utility Parser
     

Lending Processors

  • 1003 Parser
  • 1040 Parser
  • 1040 Schedule C Parser
  • 1040 Schedule E Parser
  • 1099-DIV Parser
  • 1099-G Parser
  • 1099-INT Parser
  • 1099-MISC Parser
  • 1120S Parser
  • Bank Statement Parser
  • HOA Statement Parser
  • Mortgage Statement Parser
  • Pay Slip Parser
  • Retirement/Investment Statement Parser
  • SSA-89 Parser
  • W2 Parser
  • W9 Parser

 

Contract Processors

  • Contract parser

 

Identity Processors

  • France Driver License Parser
  • France National ID Parser
  • France Passport Parser
  • US Driver License Parser
  • US Passport Parser

Language support

The text recognition feature (OCR) of the Document AI API can recognize a range of languages, including several languages inside a single document. The Document object's detectedLanguages field contains a BCP-47 identifier for each language identified by the Document AI API. See the Cloud Vision OCR Language Support documentation for a list of the languages and scripts that Document OCR (Optical Character Recognition) supports. Other processors might support a smaller number of languages.

General processors

General processors table

Contract processors

Contract processors table

Identity processors

Identity processors table

Lending processors

Lending processors table

Procurement processors

Procurement processors table

Supported Files

Following are the image formats that Document AI supports.

Supported Files table

Note: A few of these image formats are "lossy" (for example, JPEG). The image quality and accuracy of Document AI results may suffer as file sizes for lossy formats are reduced.

Document scan resolution

Document scans must be at least 200 dpi for Document AI to produce the most accurate OCR results (dots per inch). The most significant results will often be obtained at 300 dpi or higher.

Document AI client libraries 

This section demonstrates how to use the Cloud Client Libraries for the Document AI API. In Client Libraries Explained, you may learn more about client libraries for Cloud APIs, including the older Google API client libraries.

Installing the client library

This section explains how to start with the Document AI Cloud Client Libraries.

Java

Add the following to your pom.xml file if you're using Maven. The Google Cloud Platform Libraries BOM has more information about BOMs.

<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>com.google.cloud</groupId>
      <artifactId>libraries-bom</artifactId>
      <version>26.0.0</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>
  </dependencies>
</dependencyManagement>

<dependencies>
  <dependency>
    <groupId>com.google.cloud</groupId>
    <artifactId>google-cloud-document-ai</artifactId>
    <version>2.6.0</version>
</dependency>

The following should be included in your dependencies if you are using Gradle:

implementation platform('com.google.cloud:libraries-bom:26.0.0')

implementation 'com.google.cloud:google-cloud-document-ai'

Add the following to your dependencies if you're using sbt:

libraryDependencies += "com.google.cloud" % "google-cloud-document-ai" % "2.6.0"

 

The following IDE plugins can be used to add client libraries to your project if you're working with Visual Studio Code, IntelliJ, or Eclipse:

  • Cloud Code for VS Code
  • Cloud Code for IntelliJ 
  • Cloud Tools for Eclipse

The plugins offer extra features like key management for service accounts. Details can be found in the documentation for each plugin.

Node.Js

npm install @google-cloud/documentai

Python

pip install --upgrade google-cloud-documentai

Setting up authentication

You must first configure authentication before you can start the client library. As demonstrated in the subsequent steps, making a service account and setting an environment variable are two ways to accomplish it. See Authenticating as a service account for other methods of authentication.

Console

Setting up a service account:-

  • Navigate to the Create service account page in the console.
    Go to Create service account
  • Choose a project.
  • Enter a name in the Service account name field. Based on this name, the console populates the Service account ID column.
  • Enter a description in the Service account description area. Service account, as an illustration, for a quick start.
  • Click Create and continue.
  • To complete creating the service account, click Done.
  • Keep your browser window open. It is put to use in the following action.

 

Make a service account key:

  • Click the email associated with the service account you created in the console.
  • Press Keys.
  • Click Create new key after selecting Add key.
  • Press Create. On your computer, a JSON key file is downloaded.
  • To close, click.

Gcloud

Configure authentication:-

  1. Setting up the service account
  2. gcloud iam service-accounts create NAME
  3. NAME should be changed to the name of the service account.
  4. Making the key file:
    gcloud iam service-accounts keys create FILE_NAME.json --iam-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
  5. Substitute the following:
  • FILE_NAME: The name of the key file
  • SERVICE_ACCOUNT_NAME: The service account's name
  • PROJECT_ID: The project ID where the service account was created

Set the environment variable GOOGLE_APPLICATION_CREDENTIALS to provide authentication credentials to your application code. This variable only functions during the current shell session. Set the variable in your shell starting file, such as the ~/.bashrc or ~/.profile file, if you want it to apply to subsequent shell sessions.

Using the client library

The use of the client library is demonstrated in the example that follows.

Java

import com.google.cloud.documentai.v1.Document;
import com.google.cloud.documentai.v1.DocumentProcessorServiceClient;
import com.google.cloud.documentai.v1.ProcessRequest;
import com.google.cloud.documentai.v1.ProcessResponse;
import com.google.cloud.documentai.v1.RawDocument;
import com.google.protobuf.ByteString;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.List;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeoutException;

public class QuickStart {
  public static void main(String[] args)
      throws IOException, InterruptedException, ExecutionException, TimeoutException {
    
    String projectId = "your-project-id";
    String location = "your-project-location"; 
    String processorId = "your-processor-id";
    String filePath = "path/to/input/file.pdf";
    quickStart(projectId, location, processorId, filePath);
  }

  public static void quickStart(
      String projectId, String location, String processorId, String filePath)
      throws IOException, InterruptedException, ExecutionException, TimeoutException {
  

    try (DocumentProcessorServiceClient client = DocumentProcessorServiceClient.create()) {

      String name =
          String.format("projects/%s/locations/%s/processors/%s", projectId, location, processorId);

      byte[] imageFileData = Files.readAllBytes(Paths.get(filePath));

      ByteString content = ByteString.copyFrom(imageFileData);

      RawDocument document =
          RawDocument.newBuilder().setContent(content).setMimeType("application/pdf").build();

      ProcessRequest request =
          ProcessRequest.newBuilder().setName(name).setRawDocument(document).build();

      ProcessResponse result = client.processDocument(request);
      Document documentResponse = result.getDocument();
      String text = documentResponse.getText();

      System.out.println("The document contains the following paragraphs:");
      Document.Page firstPage = documentResponse.getPages(0);
      List<Document.Page.Paragraph> paragraphs = firstPage.getParagraphsList();

      for (Document.Page.Paragraph paragraph : paragraphs) {
        String paragraphText = getText(paragraph.getLayout().getTextAnchor(), text);
        System.out.printf("Paragraph text:\n%s\n", paragraphText);
      }
    }
  }

  private static String getText(Document.TextAnchor textAnchor, String text) {
    if (textAnchor.getTextSegmentsList().size() > 0) {
      int startIdx = (int) textAnchor.getTextSegments(0).getStartIndex();
      int endIdx = (int) textAnchor.getTextSegments(0).getEndIndex();
      return text.substring(startIdx, endIdx);
    }
    return "[NO TEXT]";
  }
}

Node.Js

// const projectId = 'YOUR_PROJECT_ID';
// const location = 'YOUR_PROJECT_LOCATION'; // Format is 'us' or 'eu'
// const processorId = 'YOUR_PROCESSOR_ID'; // Create processor in Cloud Console
// const filePath = '/path/to/local/pdf';

const {DocumentProcessorServiceClient} =
  require('@google-cloud/documentai').v1;

const client = new DocumentProcessorServiceClient();

async function quickstart() {

  // You must create new processors in the Cloud Console first
  const name = `projects/${projectId}/locations/${location}/processors/${processorId}`;

  const fs = require('fs').promises;
  const imageFile = await fs.readFile(filePath);

  const encodedImage = Buffer.from(imageFile).toString('base64');

  const request = {
    name,
    rawDocument: {
      content: encodedImage,
      mimeType: 'application/pdf',
    },
  };

  const [result] = await client.processDocument(request);
  const {document} = result;

  
const {text} = document;

  const getText = textAnchor => {
    if (!textAnchor.textSegments || textAnchor.textSegments.length === 0) {
      return '';
    }

    const startIndex = textAnchor.textSegments[0].startIndex || 0;
    const endIndex = textAnchor.textSegments[0].endIndex;

    return text.substring(startIndex, endIndex);
  };

  console.log('The document contains the following paragraphs:');
  const [page1] = document.pages;
  const {paragraphs} = page1;

  for (const paragraph of paragraphs) {
    const paragraphText = getText(paragraph.layout.textAnchor);
    console.log(`Paragraph text:\n${paragraphText}`);
  }
}

Python

from google.api_core.client_options import ClientOptions
from google.cloud import documentai_v1 as documentai

# TODO(developer): Uncomment these variables before running the sample.
# project_id = 'YOUR_PROJECT_ID'
# location = 'YOUR_PROCESSOR_LOCATION' 
# processor_id = 'YOUR_PROCESSOR_ID' 
# file_path = '/path/to/local/pdf'
# mime_type = 'application/pdf' # Refer to https://cloud.google.com/document-ai/docs/processors-list for supported file types


def quickstart(
    project_id: str, location: str, processor_id: str, file_path: str, mime_type: str
):
    # You must set the api_endpoint if you use a location other than 'us', e.g.:
    opts = ClientOptions(api_endpoint=f"{location}-documentai.googleapis.com")

    client = documentai.DocumentProcessorServiceClient(client_options=opts)

    # The full resource name of the processor, e.g.:
    # projects/project_id/locations/location/processor/processor_id
    # You must create new processors in the Cloud Console first
    name = client.processor_path(project_id, location, processor_id)

    with open(file_path, "rb") as image:
        image_content = image.read()

    raw_document = documentai.RawDocument(content=image_content, mime_type=mime_type)

    request = documentai.ProcessRequest(name=name, raw_document=raw_document)

    result = client.process_document(request=request)

    # For a full list of Document object attributes, please reference this page:
    # https://cloud.google.com/python/docs/reference/documentai/latest/google.cloud.documentai_v1.types.Document
    document = result.document

    # Read the text recognition output from the processor
    print("The document contains the following text:")
    print(document.text)

Cloud Document AI API Connector Overview 

The built-in features that can be used to access other Google Cloud products within a workflow are defined by the Workflows connector.

An overview of each connector is given in this section. When used in a call step, connectors function right out of the box; therefore, there is no need to import or load connector libraries in a process.

Cloud Document AI API

Service that uses cutting-edge Google AI, including natural language processing, computer vision, translation, and AutoML, to extract structured information from unstructured or semi-structured documents.

Cloud Document AI connector sample

# This workflow demonstrates how to use the process and batchProcess
# APIs in the Cloud Document AI connector.
# Expected successful output: the batch process response.

- process_document:
    call: googleapis.documentai.v1.projects.locations.processors.process
    args:
      name: "projects/placeholder/locations/us/processors/placeholder"
      location: "us"
      body:
        rawDocument:
          # Procedure to create some test raw content:
          # 1. Create a docx with some arbitrary texts in it. For example, "hello world".
          # 2. Export a pdf file from Microsoft Word.
          # 3. Use any online pdf-to-raw converter to convert the file to raw base64 texts. (https://pdfmall.com/pdf-to-raw).
          # 4. Copy and paste the content here.
          content: "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ZXIgKG1hY09TIFZlcnNpb24gMTEuNCBcKEJ1aWxkIDIwRjcxXCkgUXVhcnR6IFBERkNvbnRleHQpCi9DcmVhdG9yIChXb3JkKSAvQ3JlYXRpb25EYXRlIChEOjIwMjEwNzMwMDUxMjE4WjAwJzAwJykgL01vZERhdGUgKEQ6MjAyMTA3MzAwNTEyMThaMDAnMDAnKQo+PgplbmRvYmoKeHJlZgowIDE5CjAwMDAwMDAwMDAgNjU1MzUgZiAKMDAwMDAwMDI4MiAwMDAwMCBuIAowMDAwMDAzMjQzIDAwMDAwIG4gCjAwMDAwMDAwMjIgMDAwMDAgbiAKMDAwMDAwMDM4NiAwMDAwMCBuIAowMDAwMDAzMjA3IDAwMDAwIG4gCjAwMDAwMDAwMDAgMDAwMDAgbiAKMDAwMDAwMzM3NiAwMDAwMCBuIAowMDAwMDAwMDAwIDAwMDAwIG4gCjAwMDAwMTI3MzkgMDAwMDAgbiAKMDAwMDAwMDQ5NCAwMDAwMCBuIAowMDAwMDAzMzI2IDAwMDAwIG4gCjAwMDAwMDM5MTQgMDAwMDAgbiAKMDAwMDAwMzU2NiAwMDAwMCBuIAowMDAwMDA0MTUwIDAwMDAwIG4gCjAwMDAwMTMyNjMgMDAwMDAgbiAKMDAwMDAxMjkzMSAwMDAwMCBuIAowMDAwMDEzNTA3IDAwMDAwIG4gCjAwMDAwMTc5MzkgMDAwMDAgbiAKdHJhaWxlcgo8PCAvU2l6ZSAxOSAvUm9vdCAxMSAwIFIgL0luZm8gMTggMCBSIC9JRCBbIDxlYmVhMGI0NDdlNDZmZTdlMjdhYTNmYjUxZjlhZTdkZT4KPGViZWEwYjQ0N2U0NmZlN2UyN2FhM2ZiNTFmOWFlN2RlPiBdID4+CnN0YXJ0eHJlZgoxODE1OQolJUVPRgo="
          mimeType: "application/pdf"
    result: process_resp
- batch_process:
    call: googleapis.documentai.v1.projects.locations.processors.batchProcess
    args:
      name: "projects/cloudworkflows-test-dev/locations/us/processors/583f73e6003945cc"
      location: "us"
      body:
        inputDocuments:
          gcsDocuments:
            documents:
              - gcsUri: "gs://connector-demo/documents/helloworld1.pdf"
                mimeType: "application/pdf"
              - gcsUri: "gs://connector-demo/documents/helloworld2.pdf"
                mimeType: "application/pdf"
        documentOutputConfig:
          gcsOutputConfig:
            gcsUri: "gs://connector-demo/documents/"
    result: batch_process_resp
- return:
    return: ${batch_process_resp}

Module: googleapis.documentai.v1.operations

Cloud Document AI API 1

Module: googleapis.documentai.v1.projects.locations

Cloud Document AI API 2

Module: googleapis.documentai.v1.projects.locations.operations

Cloud Document AI API 3

Module: googleapis.documentai.v1.projects.locations.processors

Cloud Document AI API 4

Module: googleapis.documentai.v1.projects.locations.processors.humanReviewConfig

Cloud Document AI API 5

Module: googleapis.documentai.v1.projects.locations.processors.processorVersions

Cloud Document AI API 6

Module: googleapis.documentai.v1.projects.operations

Cloud Document AI API 7

Module: googleapis.documentai.v1beta2.projects.documents

Cloud Document AI API 8

Module: googleapis.documentai.v1beta2.projects.locations.documents

Cloud Document AI API 9

Module: googleapis.documentai.v1beta2.projects.locations.operations

Cloud Document AI API 10

Module: googleapis.documentai.v1beta2.projects.operations

Cloud Document AI API 11

Module: googleapis.documentai.v1beta3.projects.locations

Cloud Document AI API 11

Module: googleapis.documentai.v1beta3.projects.locations.operations

Cloud Document AI API 12

Module: googleapis.documentai.v1beta3.projects.locations.processors

Cloud Document AI API 12

Module: googleapis.documentai.v1beta3.projects.locations.processors.humanReviewConfig

Cloud Document AI API 14

Module: googleapis.documentai.v1beta3.projects.locations.processors.processorVersions

Cloud Document AI API 15

Frequently Asked Questions

What does AI for documents do?

The DocAI platform is a centralized document processing console that provides easy access to all parsers and tools. You can automate and validate documents from the platform to simplify operations, eliminate uncertainty, and maintain correct and compliant data.

How does Google's AI for documents operate?

By providing structure through content classification, entity extraction, advanced searching, and other methods, Document AI is a document understanding solution that takes unstructured data (documents, forms, etc.) and makes it simpler to comprehend, analyze, and consume.

How does intelligent document processing work?

Unstructured data is transformed using intelligent document processing (IDP). Unstructured and semi-structured data can be transformed into structured, usable information, offering document-centric business processes with end-to-end automation.

How does AI understand the text?

The automatic method classifies a text based on predetermined criteria using machine learning models and algorithms. Based on the frequency of a group of words, text classification analytics can identify patterns and sentiments in a text by using the BOW model.

Conclusion

In this article, we have extensively discussed Document AI. We have also explained Document ai features, language support in Document ai, supported files, client libraries, and more in detail.

We hope this blog has helped you enhance your Document AI knowledge. If you would like to learn more, check out our articles on introduction to cloud computingcloud computing technologiesall about GCP and AWS Vs. Azure Vs. Google Cloud. Practice makes a man perfect. To practice and improve yourself in the interview, you can check out Top 100 SQL problemsInterview experienceCoding interview questions, and the Ultimate guide path for interviews.

Do upvote our blog to help other ninjas grow. Happy Coding!

thank you image
Live masterclass