- Introducing ABBYY FlexiLayout Studio
- What's New In ABBYY FlexiLayout Studio 12
- Installing, running, and removing ABBYY FlexiLayout" Studio
- Program interface
- Projects
- Batches
- FlexiLayouts
- Multi-page FlexiLayout
- Pre-recognition
-
Elements
- Creating, copying, and deleting elements
- An overview of element properties
- Required and optional elements
- Element properties
- Search area
- Additional search constraints
- Units of measurement
- Fuzzy interval
- Specifying databases and text files in the FlexiLayout language
- Training elements
- Dependency browser
- Blocks
- Working with tables
-
Hypotheses and trees of hypotheses
- Hypotheses and optimizing the search
-
How hypotheses are generated and assessed
- Hypotheses for Static Text elements
- Hypotheses for Separator elements
- Hypotheses for White Gap elements
- Hypotheses for Barcode elements
- Hypotheses for Character String elements
- Hypotheses for Text Fragment elements
- Hypotheses for Date elements
- Hypotheses for Object Collection elements
- Hypotheses for Group elements
- Hypotheses for Phone elements
- Hypotheses for Currency elements
- Hypotheses for Table elements
- Hypotheses for Repeating Group elements
- Hypotheses for Labeled Field elements
- Hypotheses for Region elements
- Tree of hypotheses
- Debugging the FlexiLayout
- Classification
- Export
-
FlexiLayout language
- Basic concepts
-
Predefined types
- Void
- Logic
- String
- Int
- Distance
- XCoordinate
- YCoordinate
- Real
- Quality
- Area
- ImageObjectType
- DateFormats
- DayFormatVariants
- MonthFormatVariants
- YearFormatVariants
- XInterval
- YInterval
- DistInterval
- Rect
- FuzzyRect
- RectArray
- Region
- ImageObjectSet
- TextTypes
- BarcodeTypes
- BarcodeOrientations
- RecognitionMode
- Direction
- HorSearchAreaBound
- VertSearchAreaBound
- Hypothesis
- HypothesisInstances
- TableBlock
- TableBlockColumn
- TableBlockColumnArray
- TableHypothesis
- TableHypColumn
- TableColumnType
- CurrencyPositionTypes
- PageInterval
- PageArea
- PageEdge
- Page
- SearchAreaPageSetType
- IntArray
- StringArray
- IntFuzzyInterval
- DistFuzzyInterval
- AreaFuzzyInterval
- TextRotations
- Conversion of types
- Predefined constants
- Predefined variables
- Global functions
- Functions for working with named parameters
- Advanced pre-search functions
- Advanced post-search functions
- Specifying element properties
-
Hypotheses and their properties
- Object Collection hypothesis
- Character String hypothesis
- Static Text hypothesis
- Paragraph hypothesis
- Barcode hypothesis
- Date hypothesis
- Currency hypothesis
- Phone hypothesis
- Table hypothesis
- Table Column hypothesis
- Repeating Group hypothesis
- First Found hypothesis
- Labeled Field hypothesis
- Region hypothesis
- Hypotheses for all types of element
- Printing to debug
-
Tips and tricks
- Detecting dates in the case of low quality pre-recognition
- Setting multiple static text values. Search for static text with similar values
- Using Exclude to exclude elements
- Using Group elements to optimize FlexiLayout structure and search
- Searching for single-line Static Text elements
- Restricting the search area by means of RestrictSearchArea
- Searching for single-line fields of known or unknown format on documents of varying OCR quality
- Using Nearest and FuzzyQuality to search for elements
- Optimizing Group element search
- The "Optional" property of a Group element
- Searching for strings of digits
- Simplifying the FlexiLayout by using an auxiliary element and a null
- Describing text fields containing framed letters
-
Appendix
- Shortcut keys
- Properties of image objects detected during pre-recognition
- Supported input formats
- Barcodes supported in ABBYY FlexiLayout" Studio
- OCR languages supported in ABBYY FlexiLayout" Studio
- User dictionaries
- Alphabet used in regular expressions
- Extended regular expressions
-
Dialog boxes
- Options dialog box
- Fuzzy interval visual editor
-
Element Properties dialog box
- General tab
- Static Text tab
- Separator tab
- White Gap tab
- Barcode tab
- Character String tab
- Paragraph tab
- Date tab
- Object Collection tab
- Phone tab
- Currency tab
- Repeating Group tab
- Columns tab
- Order tab
- Header tab
- Footer tab
- Rows tab
- Label tab
- Field Position tab
- Field tab
- Search Constraints tab
- Relations tab
- Advanced tab
- Advanced for All Instances tab
- Errors tab
- End-User License Agreement
- Patents
- How to buy ABBYY FlexiCapture
- Third-party technologies
-
Tutorial
-
Sample 1
- Step 1: Creating a new project
- Step 2: Adding images to the batch
- Step 3: Setting the FlexiLayout properties
- Step 4: Pre-recognition
- Step 5: Viewing images and pre-recognition results
- Step 6: Analyzing pre-recognition results and selecting reference elements
- Step 7: Creating a form identifier
- Step 8: Testing the identifier element
- Step 9: Adjusting the properties of the identifier element
- Step 10: Describing the YOUR PLANET NAME field
- Step 11: Describing the YOUR PLANET NAME field with a PlanetNameHeader element
- Step 12: Describing the YOUR PLANET NAME field with a PlanetName element
- Step 13: Testing the YOUR PLANET NAME field
- Step 14: Describing the YOUR PLANET NAME field with a PlanetName block
- Step 15: Describing the NAME field
- Step 16: Describing the YOUR SPACESHIP NUMBER field
- Step 17: Describing the DATE YOU ARRIVED AT THE EARTH field
- Step 18: Describing the YOUR IDENTITY NUMBER ON THE PARTY field
- Step 19: Describing the ANY TEXT field
- Step 20: Describing the YOUR PHOTO IN FANCY DRESS field
- Step 21: Exporting the FlexiLayout
- Step 22: Opening the FlexiLayout in ABBYY FlexiCapture
-
Sample 2
- Step 1: Creating a new project
- Step 2: Adding images to the batch
- Step 3: Setting the FlexiLayout properties
- Step 4: Pre-recognition
- Step 5: Viewing images and pre-recognition results
- Step 6: Creating a document identifier
- Step 7: Testing the identifier element
- Step 8: Specifying the order in which the field Recipe # and the name for the recipe must be detected
- Step 9: Describing the Recipe # field
- Step 10: Creating a Recipe element
- Step 11: Creating a RecipeNumber element
- Step 12: Creating a RecipeNumber block
- Step 13: Describing the field which contains the name of the recipe
- Step 14: Describing the Ingredients field
- Step 15: Describing the field which contains the cooking instructions and the field which contains the cooking time
- Step 16: Creating a CookingTimeHeader element
- Step 17: Creating a CookingTime element
- Step 18: Creating a CookingTime block
- Step 19: Creating an InvertedHeader element
- Step 20: Describing the Cooking field
- Step 21: Creating a Serves element
- Step 22: Creating a Portions element
- Step 23: Describing the Cooking field
- Step 24: Creating a CookingDescription block
- Step 25: The FlexiLayout is ready
-
Sample 3
- Step 1: Preparatory settings
- Step 2: Visual analysis of the images and pre-recognition results
- Step 3: Blocks
- Step 4: Analyzing the images to decide in which order elements must be detected
- Step 5: Detecting the name of the Delivery Address field with a kwDeliveryAddress element
- Step 6: Detecting the name of the Invoice Number field with a kwInvoiceNumber element
- Step 7: Detecting the name of the Invoice Date field with a kwInvoiceDate element
- Step 8: Describing the Invoice Number field with an InvoiceNumber element
- Step 9: Describing the Invoice Date field: the grDate, InvoiceDate, and InvoiceDateAsString elements
- Step 10: Creating an grAddress element of type Group
- Step 11: Detecting the right boundary of the Delivery Address field with a wgAddressRight element
- Step 12: Describing the Delivery Address field with a DeliveryAddress element
- Step 13: Further analysis of the images
- Step 14: Detecting the auxiliary horizontal separator with an hsTableHeaderTop element
- Step 15: Analyzing the search constraints for column names with a TableHeader element of type Group
- Step 16: Detecting the name of the Quantity column with a kwQuantity element
- Step 17: Detecting the name of the Unit Price column with a kwUnitPrice element
- Step 18: Detecting the name of the Total column with a kwTotal element
- Step 19: Creating a InvertedHeader element
- Step 20: Describing the Footer group with a Footer element of type Group
- Step 21: Describing the footer of the table with a kwFooter element
- Step 22: Describing the name of the Total field with the kwTotal element
- Step 23: Detecting the name of the Country field with a kwOrigin element
- Step 24: Describing the Country field with a Country element
- Step 25: Detecting the TotalQuantity and TotalAmount fields with TotalQuantity and TotalAmount elements
- Step 26: Detecting the Table element with an InvoiceTable element
- Step 27: Exporting the FlexiLayout into ABBYY FlexiCapture
-
Sample 4
- Step 1: Preparatory settings
- Step 2: Viewing the images and pre-recognition results
- Step 3: Blocks
- Step 4: Analyzing the images to determine the order in which the elements should be detected
-
Step 5: Document header and InvoiceHeader group
- Step 5.1: Name of Invoice Number field, kwInvoiceNumber element
- Step 5.2: Name of Delivery Address field, kwDeliveryAddress element
- Step 5.3: Name of Invoice Date field, kwInvoiceDate element
- Step 5.4: Invoice Number field, InvoiceNumber element
- Step 5.5: Invoice Date field, grDate, InvoiceDate, and InvoiceDateAsString elements
- Step 5.6: Delivery Address field, grAddress, wgAddressAbove, and DeliveryAddress elements
- Step 6: Document Footer, InvoiceFooter group
-
Step 7: Table column names, TableHeader group
- Step 7.1: Name of Designation column, kwDesignation element
- Step 7.2: Name of ExtraQuantity column, ExtraQtyTag element
- Step 7.3: Name of Quantity column, kwQuantity element
- Step 7.4: Name of UnitPrice column, kwUnitPrice element
- Step 7.5: Name of Total column, kwTotal element
- Step 7.6: Name of Reference column, kwReference element
- Step 7.7: Name of Sales column, kwSales element
- Step 7.8: Name of Unit column, kwUnit element
- Step 8: Table element, InvoiceTable element
- Step 9: TotalAmount field, SumGroup group element
- Step 10: Company field, CompanyGroup group element, Company element
- Step 11: Exporting the FlexiLayout into FlexiCapture
-
Sample 1
- Technical support
- Glossary
Fuzzy interval visual editor
ABBYY FlexiLayout Studio offers a visual editor to make specifying fuzzy intervals easier. You can open the fuzzy interval editor from the Properties dialog box of a Character String element (Character String tab, button) or from the main menu by selecting Tools → Fuzzy Interval Editor….
Show Fuzzy Interval Editor dialog box
This dialog box displays a graph representation of the fuzzy interval. The vertical axis measures the quality of the hypothesis and the horizontal axis measures the linear dimensions or the number of characters. Coordinates of the intersection of the fuzzy interval borders with the horizontal axis are also displayed on the graph.
The "Zoom in" and "Zoom out" buttons change the horizontal and vertical scales synchronously. You can also zoom a selected image area using the Zoom selected area button. The
buttons allow you to move the area in the corresponding direction. To fit the interval, click
.
The fields below the graph contain the numerical values of the interval. You can specify the interval either by editing the graph with your mouse or by entering the desired numerical values in the corresponding fields.
The visual fuzzy interval editor operates in two modes:
- Fuzzy intervals for units of measurement, which may be fractional. In this case, select Distance under Interval type.
Note.
- Fuzzy intervals for positive integers, such as string length in characters. In this case, select Integer under Interval type.
Note.If you open the fuzzy interval editor from the Properties dialog box of a Character String element, one of the two modes is automatically selected depending on the field from which you called the editor.
Editing the graph
You can change the interval by moving the green markers to the right or to the left with your mouse. You can also change the angle of the slopes. Certain restrictions apply: you cannot move the left marker to the right of the right marker, etc. The corresponding numerical values will be displayed in the fields below the graph.
Changing the numerical values directly
The Left, Left non-penalized, Right, and Right non-penalized fields correspond to the representation of the fuzzy interval in the program. Left and Right are the extreme points, Left non-penalized and Right non-penalized are the non-penalized points. The Left slope and Right slope groups set the slope of the sides of the graph, which represent the penalty coefficient for deviating by a Distance from the non-penalized point. Changing a slope moves the corresponding extreme point without changing the non-penalized point. Changing an extreme and non-penalized point results in changes in the corresponding slope. When you edit fields, the depiction and the values of the dependent fields are changed accordingly.
Saving the results
If the fuzzy interval editor was called from the Properties dialog box of a Character String element, clicking OK will automatically insert the fuzzy interval into the corresponding field of the dialog box.
If the fuzzy interval editor was called from the Tools menu, you can copy the fuzzy interval from the Result field or from the Code field. The purpose of the Code field is to allow you to paste the code into the code on the Advanced tab, for example, when using a fuzzy interval as an argument of the FuzzyQuality function.
14.01.2021 14:17:19