Azure, Bicep, Professional, Terraform

Intro to Azure Form Recognizer


I recently had a customer inquire on Azure Form Recognizer. This was a service that was new to me as it’s one that isn’t commonly asked about. This post will serve as an intro to Azure Form Recognizer and doesn’t serve as an expert level guide to the product.

Product Background

Azure Form Recognizer does just what it’s name implies. It provides the ability to scan documents and extract fields from either recognized tables and/or key value pairs. This is what I refer to as an ancillary product.

One wouldn’t have just Form Recognizer running with Azure. A complete architecture would most likely involve some sort of code interacting with Form Recognizer and additionally have the ability to save off the data that has been abstracted for future use.

Training Model

To leverage Form Recognizer one must have a data model being applied to the forms. This part is can be the most labor and cost intensive measure. Those familiar with the term modeling data knows that this activity isn’t simplistic.

It also is important to help facilitate this Form Recognizer has it’s own Azure Form Recognizer Studio for this process.

Screenshot of Azure Form Recognizer Studio
Screenshot of Azure Form Recognizer Studio

Locally, I am going to use a pre built model provided by Azure. This is done to speed up development and again the point is to provide an overview on the technology not an expert level.

Creating Azure Form Recognizer Resource

Those who follow me know I am big on Infrastructure as Code (IaC), as such I have an example of how to build this in Bicep and Terraform over on my Azure IaC Flavors repository

Alternatively creating an instance of Form Recognizer is fairly straight forward in the portal. Rather then recreate all those steps Microsoft does a great job documenting this here.

One of the things about this product I am not overly high on is that it currently relies on an access key. This is in opposition of leveraging Role Based Access Controls (RBAC).

Console App

This was perhaps one of the most straight forward examples I’ve ever used from Microsoft. Essentially I decided to use the prebuilt invoice model, which included a pdf invoice to pass to the service. The full walkthrough is found here.

It really was as easy as updating the endpoint to reference my instance of Form Recognizer as well as updating the key to match the one provided by Form Recognizer. Disclaimer here is in the real world this key would live in an Azure Key Vault and leveraged.

Screen capture of Form Recognizer Output


The Microsoft provided tutorial on Form Recognizer provided an easy overview of how the Azure Resource can be interacted within an Azure environment. As illustrated earlier this product will need to be incorporated into a larger architecture and hopefully this post gets the gears turning on the possibilities.

If wanting to see more Infrastructure as Code samples check out my post on Many Flavors of Azure IaC