Flexible, very flexible forms ... at ABBYY FlexiLayout Studio
When I was just getting a job at ABBYY as a technical writer, I had little idea of the scale of the system that would have to be described. No joke - under the general name ABBYY FlexiCapture, four different products were hiding (ABBYY FlexiCapture, Scan Station, ABBYY FlexiLayout Studio, ABBYY FormDesigner), one of which at that time had five different installation and use options. And it must happen so that in the first step I came across an application that even stands out apart from the whole system. More precisely, not so - all components are special, each in its own way, each of them has its own beauty. ABBYY FlexiLayout Studio, which will be discussed in this article, stands out because it is the most difficult product for the user. In principle, even the word "user" is not entirely appropriate here - in fact, a person,
ABBYY FlexiLayout Studio is designed to develop flexible descriptions. What is a flexible description and how does it differ from a hard description? A hard description is a standard form. All copies of such documents prior to filling are the same, as they say, “in the light” - if you put them on top of each other, then the same fields will be in the same place. It is enough to determine the coordinates of these places - and during processing the field values will be recognized. Everything is easy and clear.
But the situation is far from always so simple. Many of the documents from which you want to extract data are not hard forms. For example, ATM checks of different banks contain, in general, the same information. But they differ not only in its location, but even often in size. Of course, you cannot create a hard template for such documents. What is allowed?
And with ABBYY FlexiLayout Studio 10 you can create a flexible description. A flexible description allows you to operate not with the coordinates of the fields from which you want to extract information, but with their location relative to the supporting elements and each other, as well as the type of data being recognized and their possible structure. For example, take two scanned receipts from an ATM:
Obviously, the clearance is not the same. On the other hand, they have some common elements: on top is the name of the bank, below it the date and time of the transaction, below the withdrawn amount and balance (however, they are called differently), as well as technical information. Suppose we want to automate the input of information from checks into a certain program. We are interested in the date and time of withdrawal of money, the amount and balance of funds. For simplicity, we assume that two types of checks will be processed, Raiffeisen Bank and Sberbank).
First we need to find a support element. In our case, this is the name of the bank: Raiffeisen BANK or OJSC Sberbank of Russia. To do this, create a Header element - a header, and in it a BankName subelement of the Static Text type - and indicate that this element must contain either one or another name of the bank. This element must be required - it identifies the check, and if it is not found, then processing further is pointless.
Next, in the header (optionally), create a Date element of type Date to search and determine the date of the transaction, indicating that it is located below the name of the bank. Our case is very simple: the date format is almost the same, DD-MM-YY (YY), it differs only by the separator and the format of the year. Therefore, we indicate that the order is always day-month-year, year can consist of two or four digits, and a slash or period can serve as a separator. At the same time, we limit the possible value of the date - from January 1, 2010 (suppose that processing of old checks is not required) to December 31, 2100 (it is unlikely that processing of ATM checks will then be relevant): this is necessary for a more confident search for the date.
Then we create a Time element of type Character String to find the operation time - for now, ABBYY FlexiCapture 10 does not support a special format for this case. In both cases, the time is located to the right of the date and has a format of the form NN: NN: NN - this is the field we describe.
To search for the withdrawn amount and the balance, you can use the same method - create a Static Text element with a row heading and look for the Currency element with the sum to the left of it. But it’s easier to use the ready-made Labeled Field element, which is just a combination of a signature and an information field. We create two such fields Amount and Balance, specify for the first heading “Amount”, for the second - “Balance” or “Available balance”. We indicate that the data fields are of type Currency.
After this, it remains only to add blocks - actually the sections from which information will be extracted. In our simple case, they coincide with the Date, Time elements and the Field sub-elements of the Amount and Balance elements. We check that everything is correctly recognized, export the description to ABBYY FlexiCapture 10 - and voila, you no longer need to enter the date of debiting by hand.
This is what the main program window looks like when manually creating a flexible description:
To the right of the image of documents, below them are hypothesis trees (you can follow how the fields are searched for), list of pages with information about them from left to top, then the FlexiLayout structure, and the properties of the selected element at the bottom .
This, of course, is the simplest case. In reality, everything is usually much more complicated, and the possibilities of the program are very wide. You can create classifiers for quick sorting of documents. You can create multi-page descriptions. You can create and train flexible descriptions automatically. You can use a special language for programming flexible descriptions. Much can be done, ABBYY FlexiLayout Studio 10 help contains hundreds of pages - but if you are interested, we’ll tell you about them in the next issues, this one turned out to be too long.
Note: yes, by the way, the personal information in the pictures is hidden manually after taking screenshots or scanning. But ABBYY FlexiCapture 10 (not ABBYY FlexiLayout Studio 10) can automatically fill in such fields if necessary.
Happy birthday, Dimych!
Pavel Sokolov
Data Entry Product Department
ABBYY FlexiLayout Studio is designed to develop flexible descriptions. What is a flexible description and how does it differ from a hard description? A hard description is a standard form. All copies of such documents prior to filling are the same, as they say, “in the light” - if you put them on top of each other, then the same fields will be in the same place. It is enough to determine the coordinates of these places - and during processing the field values will be recognized. Everything is easy and clear.
But the situation is far from always so simple. Many of the documents from which you want to extract data are not hard forms. For example, ATM checks of different banks contain, in general, the same information. But they differ not only in its location, but even often in size. Of course, you cannot create a hard template for such documents. What is allowed?
And with ABBYY FlexiLayout Studio 10 you can create a flexible description. A flexible description allows you to operate not with the coordinates of the fields from which you want to extract information, but with their location relative to the supporting elements and each other, as well as the type of data being recognized and their possible structure. For example, take two scanned receipts from an ATM:
Obviously, the clearance is not the same. On the other hand, they have some common elements: on top is the name of the bank, below it the date and time of the transaction, below the withdrawn amount and balance (however, they are called differently), as well as technical information. Suppose we want to automate the input of information from checks into a certain program. We are interested in the date and time of withdrawal of money, the amount and balance of funds. For simplicity, we assume that two types of checks will be processed, Raiffeisen Bank and Sberbank).
First we need to find a support element. In our case, this is the name of the bank: Raiffeisen BANK or OJSC Sberbank of Russia. To do this, create a Header element - a header, and in it a BankName subelement of the Static Text type - and indicate that this element must contain either one or another name of the bank. This element must be required - it identifies the check, and if it is not found, then processing further is pointless.
Next, in the header (optionally), create a Date element of type Date to search and determine the date of the transaction, indicating that it is located below the name of the bank. Our case is very simple: the date format is almost the same, DD-MM-YY (YY), it differs only by the separator and the format of the year. Therefore, we indicate that the order is always day-month-year, year can consist of two or four digits, and a slash or period can serve as a separator. At the same time, we limit the possible value of the date - from January 1, 2010 (suppose that processing of old checks is not required) to December 31, 2100 (it is unlikely that processing of ATM checks will then be relevant): this is necessary for a more confident search for the date.
Then we create a Time element of type Character String to find the operation time - for now, ABBYY FlexiCapture 10 does not support a special format for this case. In both cases, the time is located to the right of the date and has a format of the form NN: NN: NN - this is the field we describe.
To search for the withdrawn amount and the balance, you can use the same method - create a Static Text element with a row heading and look for the Currency element with the sum to the left of it. But it’s easier to use the ready-made Labeled Field element, which is just a combination of a signature and an information field. We create two such fields Amount and Balance, specify for the first heading “Amount”, for the second - “Balance” or “Available balance”. We indicate that the data fields are of type Currency.
After this, it remains only to add blocks - actually the sections from which information will be extracted. In our simple case, they coincide with the Date, Time elements and the Field sub-elements of the Amount and Balance elements. We check that everything is correctly recognized, export the description to ABBYY FlexiCapture 10 - and voila, you no longer need to enter the date of debiting by hand.
This is what the main program window looks like when manually creating a flexible description:
To the right of the image of documents, below them are hypothesis trees (you can follow how the fields are searched for), list of pages with information about them from left to top, then the FlexiLayout structure, and the properties of the selected element at the bottom .
This, of course, is the simplest case. In reality, everything is usually much more complicated, and the possibilities of the program are very wide. You can create classifiers for quick sorting of documents. You can create multi-page descriptions. You can create and train flexible descriptions automatically. You can use a special language for programming flexible descriptions. Much can be done, ABBYY FlexiLayout Studio 10 help contains hundreds of pages - but if you are interested, we’ll tell you about them in the next issues, this one turned out to be too long.
Note: yes, by the way, the personal information in the pictures is hidden manually after taking screenshots or scanning. But ABBYY FlexiCapture 10 (not ABBYY FlexiLayout Studio 10) can automatically fill in such fields if necessary.
Happy birthday, Dimych!
Pavel Sokolov
Data Entry Product Department