Hi Everyone. I created a sample app that will capture a handwritten list and then import each item as a record into a table. This is great for those or those who like to create handwritten lists while brainstorming a list of tasks, but want to easily convert them into itemized lists to track digitally.
Try it out with your own list or use this image as an example:
Because this sample app uses the API functionality, you will need to make a copy of the app to test out the functionality.
After you copy this sample you will need to update the API ID called in the workflow to your new application name. Change the App ID by selecting your app name from the dropdown menu.
How it works
This app was made with 3 tables. Input, Scan and Qty List.
List: Contains the list of tasks
Scan Data: Records the images of the handwritten lists
Qty List: Used to create a workflow that loops through each list of handwritten items. The max number in this list is the most items your app can handle. ie. If you table stops at 10, then your app will only generate 10 items then stop.
Next, Scan Data table columns were updated/added:
OCR text column’s initial value was set to extract text from the Camera scan image.
OCR Text List virtual column added: The formula converts the handwritten image into text, then cleans the text by removing characters such as ; , and then converts the text to a list if there is a line break in the text. The result is a list of items from the image.
Qty List virtual column added: This column creates a list of numbers 1 to n based on how many items are in the OCR Text List.
List Count column’s initial value is set to count the number items in the OCR Text List.
Creating the Looping Workflow
Now that the app can convert an handwritten list and store it as a list of text in a column, we need to create a way for the app to create a record from each item in the list.
An Adds_Only workflow that targets the Scan Data table is created and setup to with a webhook action. The webhook sends an Add row post to the List table. The body of the POST uses the Start function to loop through each number in the Qty List column creating a new record for each action. As a result we are able to keep track of each iteration of the loop and the workflow will stop once the loop reaches the max number in the Qty list column.
Lastly, since the workflows will happen on the server side I set an action to force a sync on save. This preserves the UX. If you do not do this the user will not see their list of items under the background sync completes.
There are several other small UX tweaks that were placed to prevent the user from doing things that would cause the OCR to break. For example, the OCR text function runs asynchronously in the app. This means unlike virtual columns which update as soon as data changes, OCR text can take up to 5 seconds to process. As a result, I placed some restrictions on form save to prevent users from saving a form with an empty OCR list.
Let me know if you have any questions. Please try it out and would love to see any improvements to this idea!