# ABBYY Documentation Source: https://docs.abbyy.com/home Guides, API references, and quickstarts for ABBYY Vantage, Vantage Self-Hosted, FineReader Engine, and FlexiCapture in one documentation hub.

Explore the documentation

# LLMs in ABBYY Vantage Source: https://docs.abbyy.com/vantage/documentation/llms/llms How ABBYY Vantage uses large language models (LLMs) for AI-powered document extraction, including LLM connections, prompt-based extraction, supported providers, data handling, and cost. ABBYY Vantage uses external **large language models (LLMs)** to extract, classify, and understand document data from natural-language instructions. Vantage connects to LLM providers such as **Anthropic**, **Google AI Studio (Gemini)**, **Microsoft Foundry**, **Mistral AI**, and **OpenAI ChatGPT**, rather than hosting models itself. LLM features are currently available in Document Skills through ABBYY Advanced Designer only. LLM connections are configured at the tenant level, under **ADMIN → Configuration → Connections**. ## How LLMs work in Vantage Vantage uses LLMs through two building blocks: * **LLM connection** - Tenant-level credentials that link Vantage to an LLM provider. A connection is shared across your tenant and can be reused by any skill. * **Prompt-based extraction** - An Advanced Designer activity that sends a document, plus your natural-language prompt, to the connected LLM and maps the response to your output fields. A typical setup runs end to end as follows. A tenant administrator adds a connection to a provider under **ADMIN → Configuration → Connections**. For the steps, see [Configure LLM connections](/vantage/documentation/skills/connections). In Advanced Designer, add a **Prompt-based** activity to a Document Skill and select the LLM connection it should use. For the steps, see [Extract data with prompt-based activities](/vantage/documentation/skills/prompt-extraction). When you publish the skill, the selected connection becomes the skill's default in the Vantage Web Portal, under **Skill Catalog → \[skill] → Parameters**. A tenant administrator can override it per environment without republishing. For more information, see [Document skill parameters](/vantage/documentation/skill-designer/skill-parameters/document-skill-params). ## When to use LLMs Prompt-based LLM extraction needs no training data and adapts quickly to new fields and layouts. Each extraction calls an external API, so it costs more and runs slower than a trained model, and results can vary slightly between runs. | Use prompt-based LLM extraction when | Prefer traditional extraction when | | :------------------------------------------------- | :------------------------------------------------------------- | | Documents have variable or semi-structured layouts | Documents are highly structured or template-based | | You have little or no training data | You process high volumes and need the lowest cost per document | | You need to prototype or add fields quickly | You need fast, deterministic, repeatable results | | Documents span multiple languages | Processing must run offline | ## Data handling and security When a skill uses an LLM connection, the document content is sent to the external provider you connect to and is processed on that provider's infrastructure, subject to the provider's terms and data policies. Choose a provider that meets your data-residency and compliance needs. **Microsoft Foundry** supports Azure-based data residency and compliance controls. Protect the credentials stored in each connection: * Never share API keys or include them in a connection's description. * Rotate credentials regularly. * Use separate connections for development and production. * Grant each key the least privilege it needs. ## Cost and token usage LLM usage is billed by the provider, based on the number of tokens processed. Cost scales with document length, prompt complexity, the document format sent to the model, and the number of fields you extract. Monitor usage in your provider's dashboard, and use smaller, faster models for simple tasks. ## Supported providers and models Vantage supports several LLM providers, each with its own connection fields and models. For the current list, see [Supported LLM providers and models](/vantage/documentation/llms/supported-providers-models). ## What's next Set up a tenant-level connection to an LLM provider. Build a prompt-based extraction activity in Advanced Designer. Compare providers, connection fields, and example models. ## Related topics * [Skill Designer overview](/vantage/documentation/skill-designer/skill-designer) * [Document skill parameters](/vantage/documentation/skill-designer/skill-parameters/document-skill-params) # Supported LLM providers and models Source: https://docs.abbyy.com/vantage/documentation/llms/supported-providers-models The LLM providers ABBYY Vantage supports for prompt-based extraction, including connection fields and example models for Anthropic, Google AI Studio (Gemini), Microsoft Foundry, Mistral AI, and OpenAI ChatGPT. ABBYY Vantage integrates external LLM providers through **LLM connections**. The following providers are supported. ## Supported providers | Provider | Description | Connection fields | Example models | | :---------------------------- | :--------------------------------------------------------------------- | :----------------------------------- | :------------------------------------------------------------------------- | | **Anthropic** | Direct connection to Anthropic's Claude models. | **Model Name**, **API Key** | `claude-fable-5`, `claude-opus-4-8`, `claude-sonnet-5`, `claude-haiku-4-5` | | **Google AI Studio (Gemini)** | Google's Gemini models through AI Studio. | **Model Name**, **API Key** | `gemini-2.0-flash`, `gemini-2.5-pro` | | **Microsoft Foundry** | OpenAI and other AI models hosted on Microsoft's Azure infrastructure. | **Model Name**, **URL**, **API Key** | `gpt-4`, `gpt-4.1-nano`, `gpt-35-turbo` | | **Mistral AI** | Direct connection to Mistral AI's models. | **Model Name**, **API Key** | `mistral-large-latest`, `mistral-medium-latest`, `mistral-small-latest` | | **OpenAI ChatGPT** | Direct connection to OpenAI's API. | **Model Name**, **API Key** | `gpt-4`, `gpt-3.5-turbo` | The models listed are examples, not a complete list. Enter the exact model or deployment name that your provider account supports. To set up a connection to any of these providers, see [Configure LLM connections](/vantage/documentation/skills/connections). ## Anthropic Direct access to Anthropic's Claude models with a simple, API-key-only setup. Best for organizations that want to use Claude models for extraction and classification. * Connection fields: **API Key** (starts with `sk-`) and **Model Name**. * Document data is processed on Anthropic's infrastructure, subject to Anthropic's terms and data policies. ## Google AI Studio (Gemini) Google's Gemini models through AI Studio, with a simple, API-key-only setup. Best for cost-effective access to multimodal models, especially for organizations already using Google Cloud. * Connection fields: **API Key** and **Model Name**. * Document data is processed on Google's infrastructure, subject to Google's terms and data policies. Model availability may vary by region. ## Microsoft Foundry OpenAI and other AI models hosted on Microsoft's Azure infrastructure. Best for enterprise deployments that need data-residency controls, Azure integration, or custom model hosting. * Connection fields: **API Key**, **URL** (the full endpoint, including the deployment path and API version), and **Model Name** (the exact name of your deployed model). * Available models may differ from OpenAI direct. Suited to organizations with an existing Azure subscription and compliance requirements. ## Mistral AI Direct access to Mistral AI's models with a simple, API-key-only setup. Best for organizations that want Mistral models, including cost-effective options for high-volume extraction. * Connection fields: **API Key** and **Model Name**. * Document data is processed on Mistral AI's infrastructure, subject to Mistral AI's terms and data policies. ## OpenAI ChatGPT Direct access to OpenAI models with a simple, API-key-only setup. Best for organizations already using the OpenAI platform. * Connection fields: **API Key** (starts with `sk-`) and **Model Name**. * Document data is processed on OpenAI's infrastructure, subject to OpenAI's terms and data policies. ## Related topics * [LLMs in ABBYY Vantage](/vantage/documentation/llms/llms) * [Configure LLM connections](/vantage/documentation/skills/connections) * [Extract data with prompt-based activities](/vantage/documentation/skills/prompt-extraction) # ACORD 125 Commercial Insurance Application - Document Skill Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/built-in-skills/acord-125 Extract data from ACORD 125 Commercial Insurance Application forms — agency, carrier, applicant, premises, and policy details — with handwriting support. The **ACORD 125 Commercial Insurance Application** skill extracts data from ACORD® 125 forms — the four-page commercial insurance application used across the US insurance industry to capture business location and contact details, business description, prior insurance, and loss history. The ACORD 125 Commercial Insurance Application is a preview skill. It has been trained on a limited set of documents and is designed to help you quickly get started with processing commercial insurance applications. For production use, you may need to uptrain the skill with your own document samples. The ACORD 125 Commercial Insurance Application skill recognizes handwritten text. This option is enabled by default. If you do not import handwritten forms, disable the **Handwritten** option in the skill settings. ## Countries and Languages | Countries | Languages | | --------- | --------- | | USA | English | ## Extracted Fields Asterisk (`*`) indicates a required field or field group. Values cannot be empty. ### Date | Field | Description | | ----- | ---------------------------------------- | | Date | The date on which the form is completed. | ### Agency | Field | Description | | :----------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Name | The full name of the insurance producer or agency. | | Address | The address of the insurance producer or agency. | | Contact Name | The name of the primary contact person at the producer's establishment. | | Phone | The phone number of the primary contact person at the producer's establishment. | | Fax | The fax number of the producer or agency. | | E-mail | The email address of the primary contact person at the producer's establishment. | | Code | The identification code assigned to the producer (for example, an agency or brokerage firm) by the insurer. | | Subcode | The identification code assigned by the insurer to the sub-producer (for example, a natural person) within a producer's office (for example, an agency or brokerage firm). | | Customer ID | The identification number of the customer assigned by the producer (for example, an agency or brokerage firm). | ### Carrier | Field | Description | | :----------------------------- | :----------------------------------------------------------------------------------------------------------------------- | | Name | The insurer's full legal company name(s) as per the file copy of the policy. | | NAIC Code | The identification code assigned to the insurer by the National Association of Insurance Commissioners (NAIC). | | Company Policy or Program Name | The description of an independently filed policy or program that may be optionally available from the insurance company. | | Program Code | The product code assigned by the insurer for the policy. | | Underwriter | The company underwriter (or other company staff person) that this form should be directed to. | | Underwriter Office | The company underwriting office that this application should be directed to. | ### Status of Transaction | Field | Description | | :------------------------ | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **Status of Transaction** | | | Quote | Indicates that the response expected from the company is a quote. | | Issue Policy | Indicates that the response expected from the company is an issued policy. | | Renew | Indicates that the response expected from the company is a renewed policy. | | Bound | Indicates that the coverage has been bound. | | Change | Indicates that the policy is being submitted for a policy change. | | Cancel | Indicates that the policy is being submitted for cancellation. | | **Date** | | | Date | The date on which the policy status becomes effective. This date indicated for policy statuses of **Bound**, **Change**, and **Cancel**. The date value must be in the following format: MM/DD/YYYY. | | **Time** | | | Time | The time at which the policy status becomes effective. The time is used for policy statuses of **Bound**, **Change**, and **Cancel**. | | AM | Indicates that the time specified is AM. | | PM | Indicates that the time specified is PM. | ### Sections Attached (repeating group) | Field | Description | | :----------- | :---------------------------------------------------------- | | Selected | Indicates whether sections are attached to the application. | | Section Name | The name of the attached section, if any. | | Premium USD | The premium amount for the section. | ### Attachments (repeating group) | Field | Description | | :-------------- | :----------------------------------------------------------- | | Selected | Indicates whether documents are attached to the application. | | Attachment Name | The attachment's full name, if any. | ### Policy Information | Field | Description | | :----------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Proposed Effective Date | The effective date of the policy. The date on which the terms and conditions of the policy commence. The date value must be in the following format: MM/DD/YYYY. | | Proposed Expiration Date | The date on which the terms and conditions of the policy will expire. The date value must be in the following format: MM/DD/YYYY. | | **Billing Plan** | | | Direct | Indicates whether the policy is to be billed directly. | | Agency | Indicates whether the policy is to be billed to the producer or agency | | Payment Plan | The payment plan for the policy. | | Method of Payment | The method for paying the invoice. | | Audit | The audit term for policies that are subject to periodic audit. | | Deposit | The amount of the premium received as a deposit. | | Minimum Premium | The minimum premium amount for the policy. | | Policy Premium | The estimated total cost of the policy | ### First Applicant | Field | Description | | :-------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------- | | Name\* | Information about the first insured (that is, the organization that has purchased the insurance coverages shown on the certificate). | | Address | Information about the first insured (that is, the organization that has purchased the insurance coverages shown on the certificate). | | E-Mail | Information about the first insured (that is, the organization that has purchased the insurance coverages shown on the certificate). | | Business Phone | Information about the first insured (that is, the organization that has purchased the insurance coverages shown on the certificate). | | Website Address | Information about the first insured (that is, the organization that has purchased the insurance coverages shown on the certificate). | | GL Code | The code identifying the general liability nature of the business of the first insured. | | SIC | The Standard Industry Classification code assigned to the business activity of the first insured. | | NAICS | The North American Industry Classification System (NAICS) 6-digit industry code assigned to the business activity of the first insured. | | FEIN or SSN | The tax identifier of the first insured. | | **Business Type** | | | Corporation | Indicates the legal entity code of the first insured. | | Individual | Indicates the legal entity code of the first insured. | | Joint Venture | Indicates the legal entity code of the first insured. | | LLC | Indicates the legal entity code of the first insured. | | Not for Profit Organization | Indicates the legal entity code of the first insured. | | Partnership | Indicates the legal entity code of the first insured. | | Subchapter S Corporation | Indicates the legal entity code of the first insured. | | Trust | Indicates the legal entity code of the first insured. | | Other | Indicates the legal entity code of the first insured. | | LLC No of Members | The number of members and managers of the limited liability corporation. | | Business Type Other | The description of the other type of legal entity. | ### Non-First Applicant (repeating group) | Field | Description | | :-------------------------- | :-------------------------------------------------------------------------------------------------------------------------------- | | Name | Information about the insured (that is, the organization that has purchased the insurance coverages shown on the certificate). | | Address | Information about the insured (that is, the organization that has purchased the insurance coverages shown on the certificate). | | E-Mail | Information about the insured (that is, the organization that has purchased the insurance coverages shown on the certificate). | | Business Phone | Information about the insured (that is, the organization that has purchased the insurance coverages shown on the certificate). | | Website Address | Information about the insured (that is, the organization that has purchased the insurance coverages shown on the certificate). | | GL Code | The code identifying the general liability nature of the business of the insured. | | SIC | The Standard Industry Classification code assigned to the business activity of the insured. | | NAICS | The North American Industry Classification System (NAICS) 6-digit industry code assigned to the business activity of the insured. | | FEIN or SSN | The tax identifier of the insured. | | **Business Type** | | | Corporation | Indicates the legal entity code of the insured. | | Individual | Indicates the legal entity code of the insured. | | Joint Venture | Indicates the legal entity code of the insured. | | LLC | Indicates the legal entity code of the insured. | | Not for Profit Organization | Indicates the legal entity code of the insured. | | Partnership | Indicates the legal entity code of the insured. | | Subchapter S Corporation | Indicates the legal entity code of the insured. | | Trust | Indicates the legal entity code of the insured. | | Other | Indicates the legal entity code of the insured. | | LLC No of Members | The number of members and managers of the limited liability corporation. | | Business Type Other | The description of the other type of legal entity. | ### Contact Information (repeating group) | Field | Description | | :----------------------- | :-------------------------------------------------------------------------------------------------------- | | Contact Type | The customer's identification number assigned by the producer (for example, an agency or brokerage firm). | | Contact Name | The full name of the contact. | | **Primary Phone** | | | Phone | The primary phone number of the contact. | | Home | Indicates that the primary phone number is for a home phone. | | Business | Indicates that the primary phone number is for a business phone. | | Cell | Indicates that the primary phone number is for a cell phone. | | **Secondary Phone** | | | Phone | The secondary phone number of the contact. | | Home | Indicates that the secondary phone number is for a home phone. | | Business | Indicates that the secondary phone number is for a business phone. | | Cell | Indicates that the secondary phone number is for a cell phone. | | Primary E-mail Address | The primary email address of the contact. | | Secondary E-mail Address | The secondary email address of the contact. | ### Premises Information (repeating group) | Field | Description | | :---------------------------- | :------------------------------------------------------------------------------------------------------------------ | | Location Number | The address of the premises. | | Building Number | The address of the premises. | | Street | The address of the premises. | | City | The address of the premises. | | County | The address of the premises. | | State | The address of the premises. | | ZIP | The address of the premises. | | **City Limits** | | | Inside | Indicates that the building is within the city limits. | | Outside | Indicates that the building is outside the city limits. | | Other | Indicates that neither of the above applies. For example, for buildings in unincorporated areas. | | City Limits Other | The description of the risk location if not inside or outside the city limits. | | **Interest** | | | Owner | Indicates that the insured's interest in the building is as its owner. | | Tenant | Indicates that the insured's interest in the building is as its tenant. | | Other | Indicates that the insured's interest in the building is other than those listed. | | Interest Other | The description of the insured's interest in the building when it is other than those listed. | | Number of Full Time Employees | Specifies the number of full time employees. | | Number of Part Time Employees | Specifies the number of part time employees. | | Annual Revenues USD | The annual revenue amount for this location. | | Occupied Area SQ FT | The area, in square feet, of the space in the building that is occupied by the insured. | | Open to Public Area SQ FT | The area, in square feet, of the building that is open to the public | | Total Building Area SQ FT | The number of square feet of the building or area occupied at this location for which insurance is being requested. | | **Any Area Leased to Others** | The field indicates whether the insured has any area that is leased to others. Possible values: Yes, No | | Yes | Indicates that the insured has area leased to others. | | No | Indicates that the insured does not have area leased to others. | | Description of Operations | The description of the business operations each applicant performs and the way they are conducted by premises. | ### Nature of Business | Field | Description | | :----------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------- | | Date Business Started | The date on which the business was started. | | **Nature of Business** | Indicates the nature of the business. | | Apartments | Indicates the nature of the business. | | Condominiums | Indicates the nature of the business. | | Contractor | Indicates the nature of the business. | | Institutional | Indicates the nature of the business. | | Manufacturing | Indicates the nature of the business. | | Office | Indicates the nature of the business. | | Restaurant | Indicates the nature of the business. | | Retail | Indicates the nature of the business. | | Service | Indicates the nature of the business. | | Wholesale | Indicates the nature of the business. | | Other | Indicates the nature of the business. | | Nature of Business Other | The description of the other nature of the business. | | Description of Primary Operations | The description of the primary operations of the business. | | **Retail Stores or Service Operations of Total Sales** | | | Installation or Service or Repair Work | The percentage of total sales of a retail store or service operation attributed to installation, service, or repair work. | | Off Premises Installation or Service or Repair Work | The percentage of total sales of a retail store or service operation attributed to installation, service, or repair work completed off premises. | | Description of Operations of Other Named Insureds | The description of the operations of the other insureds. | ### Additional Interest | Field | Description | | :----------------------- | :---------------------------------------------------------------------------------------------------------------------- | | **Interest** | Indicates the additional interest type. | | Additional Insured | Indicates the additional interest type. | | Breach of Warranty | Indicates the additional interest type. | | Co-owner | Indicates the additional interest type. | | Employee as Lessor | Indicates the additional interest type. | | Leaseback Owner | Indicates the additional interest type. | | Lien Holder | Indicates the additional interest type. | | Loss Payee | Indicates the additional interest type. | | Morgagee | Indicates the additional interest type. | | Owner | Indicates the additional interest type. | | Registrant | Indicates the additional interest type. | | Trustee | Indicates the additional interest type. | | Other | Indicates the additional interest type. | | Interest Other | The description of the other type of additional interest. | | Reason for Interest | The reason for including the additional interest. | | Name | The additional interest's full name. | | Address | The additional interest's mailing address. | | Rank | The ranking of "this" additional interest when multiple additional interests are associated with the same item. | | **Evidence Document** | | | Evidence | Indicates whether the additional interest requires evidence of insurance. | | Certificate | Indicates whether the additional interest requires a Certificate of Insurance. | | Policy | Indicates whether additional interest requires a copy of the policy. | | Reference or Loan Number | The loan number, account number or other controlling number that the additional interest may have assigned the insured. | | Lien Amount | The amount of the loan. | | Interest End Date | The date the interest holder's interest terminates. | | Phone | The primary phone number of the additional interest. | | Fax | The primary fax number of the additional interest. | | E-Mail | The primary email address for the additional interest. | ## Key Fields * Date * Agency/Name * Carrier/Name * Carrier/Underwriter * Policy Information/Proposed Effective Date * First Applicant/Name ## Validation Rules | Rule | Description | | :--------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------- | | Business Type Checkmark Check | Checks that only one field from the **Business Type** group is filled in. If more than one field is filled in, displays an error message. | | Nature of Business Checkmark Check | Checks that only one field from the **Nature of Business** group is filled in. If more than one field is filled in, displays an error message. | # ACORD 2 Automobile Loss Notice - Document Skill Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/built-in-skills/acord-2 Extract data from ACORD 2 Automobile Loss Notice forms — agency, insured, loss, vehicle, and party details — including handwritten text. The **ACORD 2 Automobile Loss Notice** skill extracts data from ACORD® 2 forms — the standard automobile loss notice used in the US to report both commercial and personal-lines auto claims to the carrier. The ACORD 2 Automobile Loss Notice skill is a preview skill. It has been trained on a limited set of documents and is designed to help you quickly get started with processing ACORD 2 forms. For production use, you may need to uptrain the skill with your own document samples.  The ACORD 2 Automobile Loss Notice skill recognizes handwritten text. This option is enabled by default. If you do not import handwritten forms, disable the **Handwritten** option in the skill settings.  ## Countries and Languages | Countries | Languages | | :-------- | :-------- | | USA | English | ## Extracted Fields ### Identification | Field | Description | | :------------------------ | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Date | The date on which the form is completed | | Agency Name | The full name of the producer or agency | | Agency Address | The address of the producer or agency | | Contact Name | The name of the primary contact person at the producer's establishment | | Phone | The phone number of the primary contact person at the producer's establishment | | Fax | The fax number of the producer or agency | | E-mail | The email address of the primary contact person at the producer's establishment | | Code | The identification code assigned to the producer (for example, agency or brokerage firm) by the insurer | | Subcode | The identification code assigned by the insurer to the sub-producer (for example, natural person) within a producer's office (for example, agency or brokerage) | | Agency Customer ID | The identification number of the customer assigned by the producer (for example, agency or brokerage) | | Insured Location Code | The code or identifier associated with the insured location for an insurance policy | | **Date of Loss and Time** | | | Date | The date on which the loss occurred | | Time | The approximate time at which the loss occurred | | AM | Indicates that the time specified is AM | | PM | Indicates that the time specified is PM | | **Carrier** | | | Carrier Name | The insurer's full legal company name(s) as per the file copy of the policy | | Carrier Address | The address of the company | | NAIC Code | The identification code assigned to the insurer by the NAIC | | Policy Number | The identifier assigned by the insurer to the policy or submission, being referenced exactly as it appears on the policy, including prefix and suffix symbols. If required for self-insurance, the self-insured person's license or contract number is specified instead | | Policy Type | The type of policy issued to the insured person (for example, personal auto, truckers, garage liability, commercial property, and builder's risk) | ### Insured | Field | Description | | :---------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Name of Insured | The insured person (natural or legal) covered by the insurance policy | | Date of Birth | The date of birth of the insured person | | FEIN | The tax identifier of the named insured person | | Marital Status or Civil Union | The insured person's marital status. Possible values: S - Single, M - Married, D - Divorced, P - Separated, W - Widowed, C - Domestic Partner (unmarried), V - Civil Union, U - Unknown, O - Other | | **Phone 1** | | | Phone 1 | The primary phone number of the insured person | | **Phone Type** | | | Home | Indicates that the primary phone number is for a home phone | | Business | Indicates that the primary phone number is for a business phone | | Cell | Indicates that the primary phone number is for a cell phone | | **Phone 2** | | | Phone 2 | The secondary phone number of the insured person | | **Phone Type** | | | Home | Indicates that the secondary phone number is for a home phone | | Business | Indicates that the secondary phone number is for a business phone | | Cell | Indicates that the secondary phone number is for a cell phone | | **Phone 3** | | | Phone 3 | The third phone number of the insured person | | **Phone Type** | | | Home | Indicates that the third phone number is for a home phone | | Business | Indicates that the third phone number is for a business phone | | Cell | Indicates that the third phone number is for a cell phone | | Mailing Address | The mailing address of the insured person | | Primary E-mail | The primary email address of the insured person | | Secondary E-mail | The secondary email address of the insured person | ### Contact | Field | Description | | :--------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Contact Insured | Indicates whether the individual to be contacted is the same as the insured person | | Name of Contact | The full name (first, middle, last) of the individual to be contacted as a representative of the insured person on all subsequent business relating to this incident | | **Phone 1** | | | Phone 1 | The primary phone number of the representative of the insured person | | **Phone Type** | | | Home | Indicates that the primary phone number is for a home phone | | Business | Indicates that the primary phone number is for a business phone | | Cell | Indicates that the primary phone number is for a cell phone | | **Phone 2** | | | Phone 2 | The secondary phone number of the representative of the insured person | | **Phone Type** | | | Home | Indicates that the secondary phone number is for a home phone | | Business | Indicates that the secondary phone number is for a business phone | | Cell | Indicates that the secondary phone number is for a cell phone | | **Phone 3** | | | Phone 3 | The third phone number of the representative of the insured person | | **Phone Type** | | | Home | Indicates that the third phone number is for a home phone | | Business | Indicates that the third phone number is for a business phone | | Cell | Indicates that the third phone number is for a cell phone | | Mailing Address | The mailing address of the representative of the insured person | | Primary E-mail | The primary email address of the representative of the insured person | | Secondary E-mail | The secondary email address of the representative of the insured person | ### Loss | Field | Description | | :---------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **Location of Loss** | | | Street | The physical street address of the loss location | | City State ZIP | The city, state or province and postal code of the loss location | | Country | The country of the loss location | | Address | The address (including street, city, state or province, postal code, and country) of the loss location | | Description of Location of Loss | The description of the location of loss if not at a specific street address | | Description of Accident | An explanation of how the loss occurred | | Police or Fire Department Contacted | The name of the municipal, country or other police department, fire department or other authority to which the accident was reported, including any precinct or station number, if available | | Report Number | The report number assigned by the authority contacted | ### Insured Vehicle | Field | Description | | :---------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------ | | **Vehicle** | | | Vehicle Number | The producer-assigned vehicle number | | Year | The model year of the vehicle | | Make | The manufacturer of the vehicle | | Model | The manufacturer's model name for the vehicle | | Body Type | The body type of the vehicle | | VIN | The car's vehicle identification number | | Plate Number | The license plate number | | State | The state or province in which the vehicle is registered | | **Owner** | | | Same as Insured | Indicates whether the owner of the insured vehicle is the same as the named insured person | | Owner's Name | The full name of the person (natural or legal) that is the owner of the vehicle or property | | Owner's Address | The address of the owner | | **Phone 1** | | | Phone 1 | The primary phone number of the owner of the vehicle or property | | **Phone Type** | | | Home | Indicates that the primary phone number is for a home phone | | Business | Indicates that the primary phone number is for a business phone | | Cell | Indicates that the primary phone number is for a cell phone | | **Phone 2** | | | Phone 2 | The secondary phone number of the owner of the vehicle or property | | **Phone Type** | | | Home | Indicates that the secondary phone number is for a home phone | | Business | Indicates that the secondary phone number is for a business phone | | Cell | Indicates that the secondary phone number is for a cell phone | | Primary E-mail | The primary email address of the owner of the vehicle or property | | Secondary E-mail | The secondary email address of the owner of the vehicle or property | | **Driver** | | | Same as Owner | Indicates whether the owner was the driver of the insured vehicle | | Driver's Name | The name of the driver | | Driver's Address | The address of the driver | | **Phone 1** | | | Phone 1 | The primary phone number of the driver | | **Phone Type** | | | Home | Indicates that the primary phone number is for a home phone | | Business | Indicates that the primary phone number is for a business phone | | Cell | Indicates that the primary phone number is for a cell phone | | **Phone 2** | | | Phone 2 | The secondary phone number of the driver | | **Phone Type** | | | Home | Indicates that the secondary phone number is for a home phone | | Business | Indicates that the secondary phone number is for a business phone | | Cell | Indicates that the secondary phone number is for a cell phone | | Primary E-mail | The primary email address of the driver | | Secondary E-mail | The secondary email address of the driver | | Relationship to Insured | The relationship of the driver to the named insured person | | Date of Birth | The birth date of the driver | | Driver's License Number | The driver's license number | | State | The state in which the driver is licensed | | Purpose of Use | A short description of the purpose of the trip during which the accident occurred (e.g., trip to store or commuting to work) | | **User with Permission** | | | Yes | Indicates whether the driver had permission to use the vehicle | | No | Indicates whether the driver had permission to use the vehicle | | Describe Damage | Description of any damage to the vehicle or property | | Child Seat Installed | Indicates whether a standard child passenger restraint system (child seat) was installed in the vehicle at the time of the accident. Possible values: Yes, No | | Child Seat In Use | Indicates whether the child passenger restraint system (child seat) was in use by a child during the time of the accident. Possible values: Yes, No | | Did Child Seat Sustain a Loss | Indicates whether the child passenger restraint system (child seat) sustained a loss at the time of the accident. Possible values: Yes, No | | Estimate Amount | An estimate for the cost of repairing the vehicle or property | | Where Can Vehicle Be Seen | The address where the adjuster can inspect the vehicle or property | | When Can Vehicle Be Seen | The time period during which the vehicle or property is available for inspection | | Carrier of Other Insurance | The insurer's name on any other applicable insurance | | Policy Number | The policy number of any other applicable insurance | ### Other Vehicle or Property Damaged | Field | Description | | :------------------------------------ | :------------------------------------------------------------------------------------------ | | Vehicle | Indicates whether the damage was inflicted on a vehicle | | Non-Vehicle | Indicates whether the damage was inflicted on a vehicle | | **Damaged Vehicle** | | | Vehicle Number | The producer-assigned vehicle number | | Year | The model year of the vehicle | | Make | The manufacturer of the vehicle | | Model | The manufacturer's model name for the vehicle | | Body Type | The body type of the vehicle | | VIN | The car's vehicle identification number (VIN) | | Plate Number | The license plate number | | State | The state or province in which the vehicle is registered | | Property Description | A brief description of the type of property damaged, such as home or fence | | **Other Vehicle or Property Insured** | | | Yes | Indicates whether the damaged property or vehicle was insured or not | | No | Indicates whether the damaged property or vehicle was insured or not | | Carrier or Agency Name | The insurer's name on any other applicable insurance | | NAIC Code | The NAIC code of the insurance company that issued the policy | | Policy Number | The policy number of any other applicable insurance | | **Owner** | | | Owner's Name | The full name of the person (natural or legal) that is the owner of the vehicle or property | | Owner's Address | The address of the owner of the vehicle or property | | **Phone 1** | | | Phone 1 | The primary phone number of the owner of the vehicle or property | | **Phone Type** | | | Home | Indicates that the primary phone number is for a home phone | | Business | Indicates that the primary phone number is for a business phone | | Cell | Indicates that the primary phone number is for a cell phone | | **Phone 2** | | | Phone 2 | The secondary phone number of the owner of the vehicle or property | | **Phone Type** | | | Home | Indicates that the secondary phone number is for a home phone | | Business | Indicates that the secondary phone number is for a business phone | | Cell | Indicates that the secondary phone number is for a cell phone | | Primary E-mail | The primary email address of the owner of the vehicle or property | | Secondary E-mail | The secondary email address of the owner of the vehicle or property | | **Driver** | | | Same as Owner | Indicates whether the owner was the driver of the insured vehicle | | Driver's Name | The name of the driver | | Driver's Address | The address of the driver | | **Phone 1** | | | Phone 1 | The primary phone number of the driver | | **Phone Type** | | | Home | Indicates that the primary phone number is for a home phone | | Business | Indicates that the primary phone number is for a business phone | | Cell | Indicates that the primary phone number is for a cell phone | | **Phone 2** | | | Phone 2 | The secondary phone number of the driver | | **Phone Type** | | | Home | Indicates that the secondary phone number is for a home phone | | Business | Indicates that the secondary phone number is for a business phone | | Cell | Indicates that the secondary phone number is for a cell phone | | Primary E-mail | The primary email address of the driver | | Secondary E-mail | The secondary email address of the driver | | Describe Damage | Description of any damage to the vehicle or property | | Estimate Amount | An estimate for the cost of repairing the vehicle or property | | Where Can Damage Be Seen | The location where the adjuster can inspect the vehicle or property | ### Injured (Repeating Group) | Field | Description | | :--------------- | :------------------------------------------------------------------------------------------------ | | Name | The name of a person that was injured in the incident or accident | | Address | The address of a person that was injured in the incident or accident | | Phone | The primary phone number of the injured party | | Pedestrian | Indicates whether the injured party was a pedestrian | | Insured Vehicle | Indicates whether the injured party was in the vehicle of the insured person | | Other Vehicle | Indicates whether the injured party was in a vehicle other than the vehicle of the insured person | | Age | The age of the injured party at the time of the incident | | Extent of Injury | A brief description of the injury sustained by the injured party | ### Witnesses or Passengers (Repeating Group) | Field | Description | | :-------------- | :--------------------------------------------------------------------------------------------------------------- | | Name | The name of a person that was a witness to the incident or an uninjured passenger | | Address | The address of a person that was a witness to the incident | | Phone | The primary phone number of a person that was a witness to the incident | | Insured Vehicle | Indicates whether the witness was in the vehicle of the insured person at the time of the incident | | Other Vehicle | Indicates whether the witness was in a vehicle other than that of the insured person at the time of the incident | | Other | Additional information related to the incident. | ### Reported By | Field | Description | | :---------- | :------------------------------------------------ | | Reported by | The name of the individual that reported the loss | ### Reported To | Field | Description | | :---------- | :------------------------------------------------------------------------------------- | | Reported to | The name of the individual within the agency or company to whom this loss was reported | ### Remarks | Field | Description | | :------ | :--------------------------------------------------------- | | Remarks | Other general remarks regarding the automobile loss notice | ## Key Fields * Date * Agency Name * Agency Customer ID * Name of Insured * Plate Number ## Validation Rules | Rule | Description | | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Copy Owner/Driver Details if Same as Insured/Owner | If **Insured Vehicle/Owner/Same as Insured** is checked, and **Owner's Name** or **Owner's Address** are empty, the rule copies values of the **Insured/Name of Insured** and **Insured/Mailing address** fields to the corresponding **Owner's Name** and **Owner's Address** fields. If **Insured Vehicle/Driver/Same as Owner** is checked, and **Driver's Name** or **Driver's Address** are empty, the rule copies values of the **Owner's Name** and **Owner's address** fields to the corresponding **Driver's Name** and **Driver's Address** fields | | Copy DamagedVehicle DriverDetails if Same as Owner | If **Other Vehicle** or **Property Damaged/Driver/Same as Owner** is checked, and **Driver's Name** or **Driver's Address** are empty, the rule copies the values of the **Owner's Name** and **Owner's address** fields to the corresponding **Driver's Name** and **Driver's Address** fields | | User With Permission Yes Checkmark, User With Permission No Checkmark, Other Vehicle or Property Insured Yes Checkmark, Other Vehicle or Property Insured No Checkmark | Where applicable, converts all true-or-false fields (for example, checkmarks, and yes or no fields) to Y/N format | # ACORD 25 Certificate of Liability Insurance - Document Skill Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/built-in-skills/acord-25 Extract data from ACORD 25 Certificate of Liability Insurance forms — producer, insured, insurer, policy limits, and certificate holder details. The **ACORD 25 Certificate of Liability Insurance** skill extracts data from ACORD® 25 forms — the one-page Certificate of Liability Insurance (COI) used to prove that a business carries liability coverage and meets the conditions of contracts that require it. The ACORD 25 Certificate of Liability Insurance skill is a preview skill. It has been trained on a limited set of documents and is designed to help you quickly get started with processing ACORD 25 documents. For production use, you may need to uptrain the skill with your own document samples.  The ACORD 25 Certificate of Liability Insurance skill recognizes handwritten text. This option is enabled by default. If you do not import handwritten forms, disable the **Handwritten** option in the skill settings.  ## Countries and Languages | Countries | Languages | | :-------- | :-------- | | Any | English | ## Extracted Fields ### Date | Field | Description | | :---- | :-------------------------------------------- | | Date | The date on which the certificate was issued. | ### Producer | Field | Description | | :----------- | :--------------------------------------------------------------------------------------------------- | | Contact Name | Information about the producer (the insurance agent or broker that arranged the insurance coverage). | | Phone | Information about the producer (the insurance agent or broker that arranged the insurance coverage). | | Fax | Information about the producer (the insurance agent or broker that arranged the insurance coverage). | | E-mail | Information about the producer (the insurance agent or broker that arranged the insurance coverage). | | Name | Information about the producer (the insurance agent or broker that arranged the insurance coverage). | | Address | Information about the producer (the insurance agent or broker that arranged the insurance coverage). | ### Insured | Field | Description | | :------ | :-------------------------------------------------------------------------------------------------------------------- | | Name | Information about the insured (the organization that has purchased the insurance coverages shown on the certificate). | | Address | Information about the insured (the organization that has purchased the insurance coverages shown on the certificate). | ### Insurer Affording Coverage | Field | Description | | :------------- | :---------------------------------------------------- | | Insurer A | Information about the insurer affording the coverage. | | NAIC Insurer A | Information about the insurer affording the coverage. | | Insurer B | Information about the insurer affording the coverage. | | NAIC Insurer B | Information about the insurer affording the coverage. | | Insurer C | Information about the insurer affording the coverage. | | NAIC Insurer C | Information about the insurer affording the coverage. | | Insurer D | Information about the insurer affording the coverage. | | NAIC Insurer D | Information about the insurer affording the coverage. | | Insurer E | Information about the insurer affording the coverage. | | NAIC Insurer E | Information about the insurer affording the coverage. | | Insurer F | Information about the insurer affording the coverage. | | NAIC Insurer F | Information about the insurer affording the coverage. | ### Certificate Number | Field | Description | | :----------------- | :---------------------- | | Certificate Number | The certificate number. | ### Revision Number | Field | Description | | :-------------- | :---------------------------------------- | | Revision Number | A unique number assigned by the producer. | ### Commercial General Liability | Field | Description | | :--------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------- | | Commercial General Liability | Types of general liability insurance forms. | | Claims Made | Types of general liability insurance forms. | | Occurrence | Types of general liability insurance forms. | | Other Checkbox 1 | Other types of general liability insurance forms. | | Other Description 1 | Other types of general liability insurance forms. | | Other Checkbox 2 | Other types of general liability insurance forms. | | Other Description 2 | Other types of general liability insurance forms. | | Additional Insured | Indicates whether there are additional insured person. The value of the field must be: Y (yes), N (no), or empty. | | Subrogation Waived | Indicates whether subrogation is to be waived in the event of legal proceedings. The value of the field must be: Y (yes), N (no), or empty. | | **General Aggregate Limit Applies Per** | | | Policy | Information about the aggregate limit of the policy. | | Project | Information about the aggregate limit of the policy. | | Location | Information about the aggregate limit of the policy. | | Other Checkbox | Information about the aggregate limit of the policy. | | Other Description | Information about the aggregate limit of the policy. | | **Policy Information (repeating group)** | | | Insurer Letter | Information about the policy. Date values must be in the following format: MM/DD/YYYY. | | Policy Number | Information about the policy. Date values must be in the following format: MM/DD/YYYY. | | Policy Effective Date | Information about the policy. Date values must be in the following format: MM/DD/YYYY. | | Policy Expiration Date | Information about the policy. Date values must be in the following format: MM/DD/YYYY. | | **Limits** | | | Each Occurrence | Specifies how much money the insurance policy will pay for a single loss. | | Damage to Rented Premises | Specifies how much money the insurance policy will pay for damage that the insured causes to rented premises. | | Medical Expense | Specifies the amount of money that will be paid for documented medical expenses if someone is hurt or injured without regard for negligence of the insured. | | Personal and Advertising Injury | Specifies general liability coverage that covers personal injury. | | General Aggregate | Specifies the highest amount of money that the insurance policy will pay in total regardless of the number of claims. | | Products and Completed Operations | Specifies the highest amount of money that the policy will pay for all claims arising out of the insured's defective products or work. | | **Other Limit (repeating group)** | Other limits. | | Description | Other limits. | | Amount | Other limits. | ### Automobile Liability | Field | Description | | :--------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------ | | Any Auto | Types of automobile liability insurance forms. | | Owned Autos Only | Types of automobile liability insurance forms. | | Hired Autos Only | Types of automobile liability insurance forms. | | Scheduled Autos | Types of automobile liability insurance forms. | | Non Owned Autos Only | Types of automobile liability insurance forms. | | Other Checkbox 1 | Other types of automobile liability insurance forms. | | Other Description 1 | Other types of automobile liability insurance forms. | | Other Checkbox 2 | Other types of automobile liability insurance forms. | | Other Description 2 | Other types of automobile liability insurance forms. | | Additional Insured | Indicates whether there are additional insured persons. The value of the field must be: Y (yes), N (no), or empty. | | Subrogation Waived | Indicates whether subrogation is to be waived in the event of legal proceedings. The value of the field must be: Y (yes), N (no), or empty. | | **Policy Information (repeating group)** | | | Insurer Letter | Information about the policy. Date values must be in the following format: MM/DD/YYYY. | | Policy Number | Information about the policy. Date values must be in the following format: MM/DD/YYYY. | | Policy Effective Date | Information about the policy. Date values must be in the following format: MM/DD/YYYY. | | Policy Expiration Date | Information about the policy. Date values must be in the following format: MM/DD/YYYY. | | **Limits** | | | Combined Single Limit | Specifies the maximum amount the policy will pay for third party bodily injury and property damage combined for each accident. | | Bodily Injury per Person | Specifies the maximum amount the policy would pay for bodily injury to a single person from each accident. | | Bodily Injury per Accident | Specifies the maximum amount the policy would pay for bodily injury from each accident, regardless of the number of persons injured. | | Property Damage per Accident | Specifies the maximum amount the policy would pay for third party property damage resulting from a single accident. | | **Other Limit (repeating group)** | Other limits. | | Description | Other limits. | | Amount | Other limits. | ### Excess or Umbrella Liability | Field | Description | | :--------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------ | | Umbrella Liability | Types of excess or umbrella liability insurance forms. | | Excess Liability | Types of excess or umbrella liability insurance forms. | | Liability Occurrence | Types of excess or umbrella liability insurance forms. | | Liability Claims Made | Types of excess or umbrella liability insurance forms. | | Deductible | Types of excess or umbrella liability insurance forms. | | Retention | Types of excess or umbrella liability insurance forms. | | Deductible or Retention Amount | Specifies the amount that has to be covered by the insured. | | Additional Insured | Indicates whether there are additional insured persons. The value of the field must be: Y (yes), N (no), or empty. | | Subrogation Waived | Indicates whether subrogation is to be waived in the event of legal proceedings. The value of the field must be: Y (yes), N (no), or empty. | | **Policy Information (repeating group)** | | | Insurer Letter | Information about the policy. Date values must be in the following format: MM/DD/YYYY. | | Policy Number | Information about the policy. Date values must be in the following format: MM/DD/YYYY. | | Policy Effective Date | Information about the policy. Date values must be in the following format: MM/DD/YYYY. | | Policy Expiration Date | Information about the policy. Date values must be in the following format: MM/DD/YYYY. | | **Limits** | | | Each Occurrence | Specifies how much money the insurance policy will pay for a single loss. | | Aggregate | Specifies the maximum amount of money that the insurance policy will pay in total regardless of how many claims are filed. | | **Other Limit (repeating group)** | Other limits. | | Description | Other limits. | | Amount | Other limits. | ### Workers Compensation and Employers' Liability | Field | Description | | :--------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Any Persons Excluded | Indicates whether specific persons are excluded from the coverage under their workers compensation policy. The value of the field must be: Y (yes), N (no), or empty. | | Subrogation Waived | Indicates whether subrogation is to be waived in the event of legal proceedings. The value of the field must be: Y (yes), N (no), or empty. | | **Policy Information (repeating group)** | | | Insurer Letter | Information about the policy. Date values must be in the following format: MM/DD/YYYY. | | Policy Number | Information about the policy. Date values must be in the following format: MM/DD/YYYY. | | Policy Effective Date | Information about the policy. Date values must be in the following format: MM/DD/YYYY. | | Policy Expiration Date | Information about the policy. Date values must be in the following format: MM/DD/YYYY. | | **Per Statute** | Specifies that the benefits meet the workers compensation coverage requirements for the state in which the injury occurs. | | **Other Checkbox** | Other types of coverage. | | **Other Description** | Other types of coverage. | | **Limits** | | | Each Accident | Indicates the employers' liability coverage limits. | | Disease Each Employee | Indicates the employers' liability coverage limits. | | Disease Policy Limit | Indicates the employers' liability coverage limits. | ### Other Policy | Field | Description | | :--------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Additional Insured | Indicates whether there are additional insured persons. The value of the field must be: Y (yes), N (no), or empty. | | Subrogation Waived | Indicates whether subrogation is to be waived in the event of legal proceedings. The value of the field must be: Y (yes), N (no), or empty. | | **Policy Information (repeating group)** | | | Insurer Letter | Information about the policy. Date values must be in the following format: MM/DD/YYYY. If cells **Limits Description 1** and **Limits Description 2** are merged, all information should be considered **Limits Description 1**. | | Type of Insurance | Information about the policy. Date values must be in the following format: MM/DD/YYYY. If cells **Limits Description 1** and **Limits Description 2** are merged, all information should be considered **Limits Description 1**. | | Policy Number | Information about the policy. Date values must be in the following format: MM/DD/YYYY. If cells **Limits Description 1** and **Limits Description 2** are merged, all information should be considered **Limits Description 1**. | | Policy Effective Date | Information about the policy. Date values must be in the following format: MM/DD/YYYY. If cells **Limits Description 1** and **Limits Description 2** are merged, all information should be considered **Limits Description 1**. | | Limits Description 1 | Information about the policy. Date values must be in the following format: MM/DD/YYYY. If cells **Limits Description 1** and **Limits Description 2** are merged, all information should be considered **Limits Description 1**. | | Limits Description 2 | Information about the policy. Date values must be in the following format: MM/DD/YYYY. If cells **Limits Description 1** and **Limits Description 2** are merged, all information should be considered **Limits Description 1**. | | Amount | Information about the policy. | ### Description of Operations or Locations or Vehicles | Field | Description | | :------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------- | | Description of Operations or Locations or Vehicles | Description of the special operations, specific job site/location or contract number and additional insured to the liability coverage. | ### Certificate Holder | Field | Description | | :------ | :---------------------------------------- | | Name | Information about the certificate holder. | | Address | Information about the certificate holder. | ### Authorized Representative | Field | Description | | :----------- | :----------------------------------------------------------------------------- | | Edition Date | The date of the certificate edition. The format of the value must be: YYYY/MM. | ### Edition Date | Field | Description | | :----------- | :----------------------------------------------------------------------------- | | Edition Date | The date of the certificate edition. The format of the value must be: YYYY/MM. | ## Key Fields * Date * Contact Name * Producer/Name * Insured/Name * Certificate Number # Air Waybill - Document Skill Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/built-in-skills/air-waybill Extract data from air waybills (AWB) — shipper, consignee, carrier, airports, flight details, line items, weights, and charges — with validation rules. The **Air Waybill** skill extracts data from air waybills (AWB) — the document an air carrier issues to list the goods shipped along with sender, recipient, and carrier details. The AWB accompanies the goods, serves as a contract between carrier and shipper, and is not a document of title. The Air Waybill skill is a production skill. It has been fully trained on a large document set and provides high accuracy of data identification and extraction. The skill is ready to be used in production and does not require further training on your specific documents. Accuracy and straight-through processing (STP) rates can be further optimized in production through continuous learning from human-in-the-loop feedback. ## Countries and Languages | Countries | Languages | | :-------- | :-------- | | Any | English | ## Extracted Fields ### Shipper | Field | Description | | :---------------- | :----------------------------------------------------- | | Account Number | The shipper's account number. | | Tax ID | The shipper's international tax identification number. | | Name | The shipper's name. | | Address | The shipper's address. | | Street | The shipper's detailed address. | | City | The shipper's detailed address. | | State or Province | The shipper's detailed address. | | Postal Code | The shipper's detailed address. | | Country | The shipper's detailed address. | ### Consignee | Field | Description | | :---------------- | :------------------------------------------------------- | | Account Number | The consignee's account number. | | Tax ID | The consignee's international tax identification number. | | Name | The consignee's name. | | Address | The consignee's address. | | Street | The consignee's detailed address. | | City | The consignee's detailed address. | | State or Province | The consignee's detailed address. | | Postal Code | The consignee's detailed address. | | Country | The consignee's detailed address. | ### Carrier's agent | Field | Description | | :---------------- | :----------------------------------------------------- | | Account Number | The carrier's account number. | | IATA code | The carrier's identification number. | | Tax ID | The carrier's international tax identification number. | | Name | The carrier's name. | | Address | The carrier's address. | | Street | The carrier's detailed address. | | City | The carrier's detailed address. | | State or Province | The carrier's detailed address. | | Postal Code | The carrier's detailed address. | | Country | The carrier's detailed address. | ### Airline | Field | Description | | :---------------- | :-------------------------------------------------- | | Name | The name of the airline engaged to carry the goods. | | Address | The airline's address. | | Street | The airline's detailed address. | | City | The airline's detailed address. | | State or Province | The airline's detailed address. | | City | The airline's detailed address. | | Country | The airline's detailed address. | ### Air Waybill Number | Field | Description | | :---------- | :----------------------------- | | MAWB number | The master air waybill number. | | HAWB number | The house air waybill number. | ### Air Waybill Date | Field | Description | | :--------------- | :--------------------------- | | Air Waybill Date | The date of the air waybill. | ### Airport of Departure | Field | Description | | :----------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Airport Code | Information about the airport of departure. If the air waybill contains the airport code even though other information it contains about it is incomplete, the other fields will be filled in based on the code. | | City | Information about the airport of departure. If the air waybill contains the airport code even though other information it contains about it is incomplete, the other fields will be filled in based on the code. | | Country | Information about the airport of departure. If the air waybill contains the airport code even though other information it contains about it is incomplete, the other fields will be filled in based on the code. | | Name | Information about the airport of departure. If the air waybill contains the airport code even though other information it contains about it is incomplete, the other fields will be filled in based on the code. | ### Airport of Destination | Field | Description | | :----------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Airport Code | Information about the airport of destination. If the air waybill contains the airport code even though other information it contains about it is incomplete, the other fields will be filled in based on the code. | | City | Information about the airport of destination. If the air waybill contains the airport code even though other information it contains about it is incomplete, the other fields will be filled in based on the code. | | Country | Information about the airport of destination. If the air waybill contains the airport code even though other information it contains about it is incomplete, the other fields will be filled in based on the code. | | Name | Information about the airport of destination. If the air waybill contains the airport code even though other information it contains about it is incomplete, the other fields will be filled in based on the code. | ### Flight and Date (repeating group) | Field | Description | | :---------- | :------------------------------------------- | | Flight | The number of the flight carrying the goods. | | Flight Date | The date of the flight carrying the goods. | ### Amount for Insurance | Field | Description | | :------------------ | :------------------------------------------------- | | Amount of Insurance | The amount of the insurance coverage on the goods. | ### Currency | Field | Description | | :------- | :------------------------------- | | Currency | The currency of the air waybill. | ### Declared Value for Carriage | Field | Description | | :-------------------------- | :---------------------------------------------- | | Declared Value for Carriage | The value of the cargo declared to the carrier. | ### Declared Value for Customs | Field | Description | | :------------------------- | :---------------------------------------------- | | Declared Value for Customs | The value of the cargo declared to the customs. | ### Line Items (repeating group) | Field | Description | | :----------------- | :-------------------------------------------------------------------------- | | Quantity | The number of pieces. | | Quantity UoM | The unit of measurement used for the goods (for example, pieces and packs). | | Gross Weight (Kg) | The weight of the goods in kilograms. | | Gross Weight (Lb) | The weight of the goods in pounds. | | Rate Class | The rate class of the goods. | | Commodity Item No. | The code of the goods. | | Chargeable Weight | The chargeable weight of the goods. | | Rate or Charge | Additional charges (master air waybill only). | | Total | The total amount of charges (master air waybill only). | | Length | The length of the package. | | Width | The width of the package. | | Height | The height of the package. | | Dimensions UoM | The unit of measurement used for the dimensions. | ### Description | Field | Description | | :---------- | :-------------------------- | | Description | A description of the goods. | ### Commodity Item Number | Field | Description | | :-------------------- | :--------------------- | | Commodity Item Number | The code of the goods. | ### Dimensions (repeating group) | Field | Description | | :------------- | :----------------------------------------------- | | Length | The length of the package. | | Width | The width of the package. | | Height | The height of the package. | | Dimensions UoM | The unit of measurement used for the dimensions. | ### Totals | Field | Description | | :---------------------- | :-------------------------------------------------------------------------- | | Total Quantity | The total number of pieces. | | Total Quantity UoM | The unit of measurement used for the goods (for example, pieces and packs). | | Total Weight | The total weight of the goods. | | Total Weight UoM | The unit of measurement used for the weight. | | Total Chargeable Weight | The total chargeable weight of the goods. | | Rate or Charge | Additional charges. | | Total | The sum of the **Total** fields in the **Line Items** group. | | Volume | The volume of the goods. | | Volume UoM | The unit of measurement used for the volume. | ### Charges | Field | Description | | :------------------ | :------------------------------------------------------------------------------------------------------------------------- | | Weight Charges | The sum indicated in the air waybill exclusive of any additional charges. | | Valuation Charges | Additional charges imposed on the shipper if the declared value of the cargo exceeds the carrier's insurance coverage. | | Tax | The taxes as stated in the air waybill. | | Freight Advance | The amount paid as advance freight. | | Other Charges | Additional charges (for example, freight charges, origin handling charges, and pickup charges). This is a repeating field. | | Total Other Charges | The total amount of additional charges. This is a repeating field. | | Pickup Charge | The pickup charge for the goods. | | Total Prepaid | The prepaid amount, including all the additional charges. | | Total Collect | The amount payable upon receipt. | ## Key Fields * MAWB Number * HAWB Number * Date * Airport of Departure/Code * Shipper/Name ## Validation Rules | Rule | Description | | :----------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | Check quantity total | Checks if the value in the **Total Quantity** field equals the sum of the values in the **Quantity** fields in the **Line Items** table, and displays an error if the values do not match. If the values are not the same, or some of the fields are missing, the rule prompts the user to populate fields with the calculated value. | | Check weight total | Checks if the value in the **Total Weight** field equals the sum of the values in the **Gross Weight** fields in the **Line Items** table, and displays an error if the values do not match. If the values are not the same, or some of the fields are missing, the rule prompts the user to populate fields with the calculated value. | | Check chargeable weight total | Checks if the value in the **Total Chargeable Weight** field equals the sum of the values in the **Chargeable Weight** fields in the **Line Items** table, and displays an error if the values do not match. If the values are not the same, or some of the fields are missing, the rule prompts the user to populate fields with the calculated value. | | Check table Total amount | Checks if the value in the **Total** field equals the value of the **Weight Charges** field in the **Charges** group and/or the sum of the values in the **Total** fields in the **Line Items** group. If the values do not match, the rule prompts the user to populate fields with the calculated value. | | Copy Quantity UoM | If the main **Total Quantity UoM** field is empty, copies the values from the **Quantity UoM** fields in the **Line Items** group. | | Copy Weight UoM | If the main **Total Weight UoM** field is empty, copies the values from the **Weight UoM** fields in the **Line Items** group. | | Check Other Charges | Checks if the amount of all the additional charges equals the sum of the values in the **Charges** fields. | | Check Total Prepaid or Total Collect | Checks if the total amount of all the charges and additional charges equals the value in the **Total Prepaid** or **Total Collect** field. | | Disambiguate Dates | Normalizes date text to date value. Ambiguous dates are assumed to be in European (date-month-year) format, as is the case on the majority of transport documents. | | Document Type is Required | Checks if one of the following fields is filled in: **MAWB Number** (Master Air Waybill), **HAWB Number** (House Air Waybill). One of the to fields must have a value. If both are fields are empty, it displays an error message. | | Process Currency | Moves currency information from money-type fields to the **Currency** field, if this field is empty and currency information is located elsewhere in the document. If information is absent or ambiguous, suggests possible currency values. | | Process MAWB | Converts the value in the **MAWB number** field into a sequence of 11 digits. Checks that the value in **MAWB number** field is 11 characters long, with the last digit being the check digit. This rule is only applied to master air waybills. | | Suggest Flight Date | If the value in the **Flight Date** field is not complete, suggests it using **Air Waybill Date** as reference in YYYY-MM-DD format. | # Individual Condominium Unit Appraisal (FHLMC 465 / FNMA 1073) Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/built-in-skills/appraisal-1073 Extract data from FHLMC 465 / FNMA 1073 Condominium Unit Appraisal Reports — property data, market analysis, valuation — for US mortgage origination. The **Individual Condominium Unit Appraisal Report (Form FHLMC 465 or FNMA 1073)** skill extracts data from Individual Condominium Unit Appraisal (Form FHLMC 465 or FNMA 1073) reports, which are documents used to provide information about one-unit properties in condominium projects and their estimated value. These documents are also required for mortgage loan applications and contain the following information: information about the property and its surrounding area, real estate market data, technical data, property photos, property blueprints, etc. The Individual Condominium Unit Appraisal Report (Form FHLMC 465 or FNMA 1073) skill is a preview skill. It has been trained on a limited set of documents and is designed to help you quickly get started with processing appraisals. For production use, you may need to uptrain the skill with your own document samples.  This skill recognizes handwritten text. The option is enabled by default. If you do not import handwritten forms, disable the **Handwritten** option in the skill settings. ## Countries and Languages | Countries | Languages | | :-------- | :-------- | | USA | English | ## Project Description | Field | Description | | :--------------- | :----------------------- | | Detached | The type of the project. | | Row or Townhouse | The type of the project. | | Garden | The type of the project. | | Mid-Rise | The type of the project. | | High-Rise | The type of the project. | | Other | The type of the project. | ## Property Information | Field | Description | | :------------------- | :----------------------------------------------------------- | | Number of Units | The number of units in the condominium project. | | Number of Units Sold | The number of units in the condominium project already sold. | | Bedrooms | The number of bedrooms in the property. | | Project Name | The legal name of the project for planned unit development. | ## Appraisal Information | Field | Description | | :---------------------------------- | :-------------------------------------------------------- | | Fannie Mae Form | The number of the form filled in (1073 in this case). | | Appraised Value of Subject Property | The appraised value of the property. | | Effective Date of Appraisal | The date on which appraisal was performed. | | Estimated Monthly Market Rent | The estimate of the monthly rental price of the property. | ## Appraiser Credentials | Field | Description | | :------------------------- | :------------------------------------------------------- | | State License Number | The license number of the appraiser company. | | State Certification Number | The state certification number of the appraiser company. | ## Key Fields * Appraised Value of Subject Property * Effective Date of Appraisal * State License Number * Estimated Monthly Market Rent * Project Name * State Certification Number # Arrival Notice - Document Skill Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/built-in-skills/arrival-notice Extract data from ocean and air arrival notices — consignee, carrier, shipper, BoL numbers, vessel and voyage, ports, containers, weights, and charges. The **Arrival Notice** skill extracts key data from arrival notices in English — the document a carrier sends to the consignee to report a shipment's arrival date and discharge location. The Arrival Notice skill is a production skill. It has been fully trained on a large document set and provides high accuracy of data identification and extraction. The skill is ready to be used in production and does not require further training on your specific documents. Accuracy and straight-through processing (STP) rates can be further optimized in production through continuous learning from human-in-the-loop feedback. ## Countries and Languages | Countries | Languages | | :-------- | :-------- | | Any | English | ## Extracted Fields ### Consignee | Field | Description | | :------ | :----------------------- | | Name | The consignee's name. | | Address | The consignee's address. | ### Carrier | Field | Description | | :-------- | :------------------------------- | | Name | The carrier's name. | | SCAC Code | The Standard Carrier Alpha Code. | ### Shipper | Field | Description | | :------ | :--------------------- | | Name | The shipper's name. | | Address | The shipper's address. | ### Notify party | Field | Description | | :------ | :--------------------------------------------------------------------- | | Name | The name of the company to be notified of the arrival of the cargo. | | Address | The address of the company to be notified of the arrival of the cargo. | ### Bill to | Field | Description | | :------ | :---------------------------------------------- | | Name | Information about the recipient of the invoice. | | Address | Information about the recipient of the invoice. | ### Date | Field | Description | | :---- | :------------------------------ | | Date | The date of the arrival notice. | ### Arrival Date | Field | Description | | :----------- | :-------------------------------- | | Arrival Date | The arrival date of the shipment. | ### BoL Number | Field | Description | | :--------- | :------------------------------------------------------------------------ | | BoL Number | The number of the bill of lading representing the ownership of the goods. | ### House BoL Number | Field | Description | | :--------------- | :--------------------------------------------------------------------------------- | | House BoL Number | The number of the bill of lading created by an Ocean Transport Intermediary (OTI). | ### Purchase Order Number | Field | Description | | :-------------------- | :-------------------------------- | | Purchase Order Number | The number of the purchase order. | ### Vessel Name | Field | Description | | :---------- | :-------------------- | | Vessel Name | The name of the ship. | ### Voyage Number | Field | Description | | :------------ | :------------------------------------------- | | Voyage Number | The number of the voyage carrying the goods. | ### Port of Loading | Field | Description | | :-------------- | :----------------------------------------- | | Port of Loading | The port where the goods are to be loaded. | ### Port of Discharge | Field | Description | | :---------------- | :--------------------------------------------- | | Port of Discharge | The port where the goods are to be discharged. | ### Terminal | Field | Description | | :------- | :-------------------------------------------------------------------------------------------------------------------------- | | Terminal | Terminal at the port of discharge where the ship arrived. The value of the field can be a name and address, or just a name. | ### Place of Receipt | Field | Description | | :--------------- | :--------------------------------- | | Place of Receipt | The place of receipt of the goods. | ### Place of Delivery | Field | Description | | :---------------- | :---------------------------------- | | Place of Delivery | The place of delivery of the goods. | ### Containers not in Table (repeating group) | Field | Description | | :--------------- | :---------------------------------- | | Container Number | The number of the container. | | Seal Number | The number of the seal. | | Size/Type | The size and type of the container. | ### Containers | Field | Description | | :------------------- | :--------------------------------------------------------------------------------------------------------------------- | | Container Number | A table that contains information about containers. These fields refer to documents that describe multiple containers. | | Seal Number | A table that contains information about containers. These fields refer to documents that describe multiple containers. | | Seal Value | A table that contains information about containers. These fields refer to documents that describe multiple containers. | | Size/Type | A table that contains information about containers. These fields refer to documents that describe multiple containers. | | Number of Packages | A table that contains information about containers. These fields refer to documents that describe multiple containers. | | Weight Metric | A table that contains information about containers. These fields refer to documents that describe multiple containers. | | Weight UoM Metric | A table that contains information about containers. These fields refer to documents that describe multiple containers. | | Weight Nonmetric | A table that contains information about containers. These fields refer to documents that describe multiple containers. | | Weight UoM Nonmetric | A table that contains information about containers. These fields refer to documents that describe multiple containers. | | Volume Metric | A table that contains information about containers. These fields refer to documents that describe multiple containers. | | Volume UoM Metric | A table that contains information about containers. These fields refer to documents that describe multiple containers. | | Volume Nonmetric | A table that contains information about containers. These fields refer to documents that describe multiple containers. | | Volume UoM Nonmetric | A table that contains information about containers. These fields refer to documents that describe multiple containers. | | Arrival Date | A table that contains information about containers. These fields refer to documents that describe multiple containers. | ### Weight | Field | Description | | :------------------- | :--------------------------------------------------- | | Weight Metric | The total metric weight of all containers. | | Weight UoM Metric | The unit of measurement used for the weight (kilos). | | Weight Nonmetric | The total nonmetric weight of all containers. | | Weight UoM Nonmetric | The unit of measurement used for the weight (lbs). | ### Packages | Field | Description | | :----------------- | :----------------------------------------------------------------------------------------------------------------- | | Number of Packages | The total number of packages. | | Package Type | The package type. The value of this field can either be a name in full (such as "Palett") or a code (such as PLT). | ### Volume | Field | Description | | :------------------- | :-------------------------------------------------------------------------------- | | Volume Metric | The total metric volume of all containers. | | Volume UoM Metric | The unit of measurement used for the volume (cubic meters). | | Volume Nonmetric | The total nonmetric volume of all containers. | | Volume UoM Nonmetric | The unit of measurement used for the volume (for example, liters and cubic feet). | ### Amount | Field | Description | | :------- | :---------------------------------- | | Total | The total price of the goods. | | Currency | The currency of the arrival notice. | ### Terms | Field | Description | | :------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Prepaid | The freight payment terms. Specifies which party is liable for paying the freight bill. This is a checkmark field and can have one of the following values:
**Prepaid.** The transport expenses are charged to the shipper.
**Collect.** The transport expenses are charged to the consignee. | | Collect | The freight payment terms. Specifies which party is liable for paying the freight bill. This is a checkmark field and can have one of the following values:
**Prepaid.** The transport expenses are charged to the shipper
**Collect.** The transport expenses are charged to the consignee. | ## Key Fields * Shipper Name * Consignee Name * Arrival Date * Port of Discharge ## Validation Rules | Rule | Description | | :-------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Check or calculate Total Weight | If there is one container mentioned in the document, copies the values of either the **Weight Metric** or the **Weight Nonmetric** fields in the table in the **Containers** group to the **Weight Metric** or **Weight Nonmetric** fields. If there are several containers mentioned in the document, checks if the values of the **Weight Metric** or **Weight Nonmetric** fields are equal to the sum of the values in the **Weight Metric** or **Weight Nonmetric** fields in the table in the **Containers** group. If the values do not match or if the **Weight Metric** or **Weight Nonmetric** fields are empty, the rule prompts you to populate them with the calculated value. | | Copy weight UoM | If the **Weight UoM Metric** or **Weight UoM Nonmetric** fields in the **Weight** group are empty, copies the values of the **Weight UoM Metric** or **Weight UoM Nonmetric** fields from the table in the **Containers** group, and vice versa. If the table contains several values for the **Weight UoM Metric** and **Weight UoM Nonmetric** fields and there are no values for the **Weight UoM Metric** and **Weight UoM Nonmetric** fields in the **Weight** group, the rule prompts you to select one of the values. | | Check or calculate Total Volume | If there is one container mentioned in the document, copies the value of the **Volume Metric** or **Volume Nonmetric** fields in the table in the **Containers** group to the **Volume Metric** or **Volume Nonmetric** fields. If there are several containers mentioned in the document, checks if the value of the **Volume Metric** or **Volume Nonmetric** fields equal the sum of the values in **Volume Metric** or **Volume Nonmetric** fields in the table in the **Containers** group. If the values do not match or if the **Volume Metric** or **Volume Nonmetric** fields are empty, the rule prompts you to populate them with the calculated values. | | Copy volume UoM | If the **Volume UoM Metric** or **Volume UoM Nonmetric** fields in the **Volume** group are empty, copies the values of the **Volume UoM Metric** or **Volume UoM Nonmetric** fields from the table in the **Containers** group, and vice versa. If the table contains several values for the **Volume UoM Metric** and **Volume UoM Nonmetric** fields and there are no values for the **Volume UoM Metric** and **Volume UoM Nonmetric** fields in the **Volume** group, the rule prompts you to select one of the values. | | Check or calculate Total Packages | If there is one container mentioned in the document, copies the value of the **Number of Packages** field in the **Containers** group to the **Number of Packages** field in the **Packages** group. If there are several containers mentioned in the document, checks if the value of the **Number of Packages** field in the **Packages** group is equal to the sum of the values in the **Number of Packages** field in the **Containers** group. If the values do not match or if the **Number of Packages** field in the **Packages** group is empty, the rule prompts you to populate it with the calculated value. | | Check Checkmarks | Defines the field value using the possible values for **Terms/Prepaid** and **Terms/Collect**, as well as the following two additional values:
**Terms/PrepaidText** if the Prepaid payment type is set by default or specified in the arrival notice as a word instead of a checkmark.
**Terms/CollectText** if the Collect payment type is set by default or specified in the arrival notice as a word instead of a checkmark. | # Bank Statement - Document Skill Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/built-in-skills/bank-statement Extract data from bank statements — account holder, account details, reporting period, transactions, balances, and totals — with production-grade accuracy. The **Bank Statement** skill extracts data from bank statements — the periodic documents (typically monthly) that banks send to account holders summarizing the account, transactions during the reporting period, and opening and closing balances. The Bank Statement skill is a production skill. It has been fully trained on a large document set and provides high accuracy of data identification and extraction. The skill is ready to be used in production and does not require further training on your specific documents. Accuracy and straight-through processing (STP) rates can be further optimized in production through continuous learning from human-in-the-loop feedback. ## Countries and Languages | Countries | Languages | | :-------- | :-------- | | USA | English | ## Extracted Fields Asterisk (`*`) indicates a required field or field group. Values cannot be empty. | Field | Description | | :----------------------------- | :------------------------------------------------------------------------------------------------------ | | Bank Name | The name of the bank. | | Account Number | The bank account number. | | Account Owner Name\* | The account holder name. | | Account Owner Address\* | The account holder address. | | Date of Bank Statement | The bank statement date. | | Ending Balance of the Period\* | The balance at the end of the reporting period. This value is extracted along with the currency symbol. | | Currency\* | The currency of the account. | | Ending Balance Date\* | The date of the end of the reporting period. | | **Account Co-Owner Name** | **(repeating group)** | | Account Co-Owner Name | The name of the joint account holder. This field is extracted when there are multiple owner names. | ## Key Fields * Account Owner Name * Ending Balance of the Period * Ending Balance Date ## Validation Rules | Rule | Description | | :----------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Copy Date if it is Empty | **If the Date of Bank Statement** is filled in but the **Ending Balance Date** is empty, the date is copied from the **Date of Bank Statement** to the **Ending Balance Date**.
If the **Ending Balance Date** is filled in but the **Date of Bank Statement** is empty, the date is copied from the **Ending Balance Date** to the **Date of Bank Statement**. | # Basic Contract - Document Skill Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/built-in-skills/basic-contract Extract data from basic contracts — leases, loan agreements, service agreements, and supply contracts — including titles, parties, dates, and contract values. The **Basic Contract** skill extracts data from contract documents — including lease agreements, loan applications, loan agreements, service agreements, and supply contracts — surfacing parties, dates, amounts, and other key terms. The Basic Contract skill is a preview skill. It has been trained on a limited set of documents and is designed to help you quickly get started with processing basic contracts. The Basic Contract skill cannot be trained on additional documents. The Basic Contract skill recognizes handwritten text. This option is enabled by default. If you do not import handwritten forms, disable the **Handwritten** option in the skill settings.  ## Countries and Languages | Countries | Languages | | :-------- | :-------- | | USA | English | ## Extracted Fields | Field | Description | | :---------------------- | :------------------------------------------------------------------------------------------------------------------------------------------- | | Title | The title of the contract. | | Deal Amount | The amount or value of the contract. | | Agreement Date | The date on which the contract was officially executed or agreed upon by the parties. | | Effective Date | The start date of the contract. | | Expiration Date | The expiration date of the contract. | | Initial Term | The initial period of time for which the contract will be in effect before any renewal or extension options are considered. | | Renewal Term | The additional period of time for which the contract can be extended or renewed after the initial term has expired. | | Governing Law | The jurisdiction that will govern the interpretation, enforcement, and resolution of any disputes or legal issues arising from the contract. | | Security Deposit | The amount of money that the party providing the security deposit is required to pay. | | Insurance Clause | The insurance requirements and responsibilities of the parties. | | Limitation of Liability | The maximum monetary amount for which a party can be held liable in the event of a breach or dispute. | | Confidentiality Clause | The terms and conditions regarding the confidentiality of the information shared between the parties. | | Indemnity Clause | The terms and conditions related to indemnification. | | Non Compete Clause | The activities or businesses that a party or parties are prohibited from engaging in. | ### Party (repeating group) | Field | Description | | :---------------- | :----------------------------------------------------------------------------------------- | | Organization Name | The legal name of a party. | | Person Name | The name of the individual who represents or acts on behalf of a party. | | Role | The role of a party. Examples of roles include seller, buyer, service provider, or client. | | Address | The address of a party. | ## Key Fields * Title * Party/Organization Name * Party/Person Name * Agreement Date * Effective Date # Bill of Lading - Document Skill Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/built-in-skills/bill-of-lading Extract data from bills of lading (BoL): shipper, consignee, carrier, vessel, ports, containers, weights, charges, and freight terms for ocean and road. The **Bill of Lading** skill extracts data from bills of lading (BoL) — the legal document a carrier issues to the shipper to confirm goods have been received as described, with the carrier undertaking to deliver them to the consignee. The BoL accompanies the shipped goods along the entire freight route, regardless of transport mode. A bill of lading contains all shipping-related information about the following: shipper, consignee, goods being shipped (for example, weight, size, and type), origin and destination of shipments, as well as shipping agreement terms. Various bill of lading types are used in international trade depending on the following: consignee type (named, order, bearer), shipping means (liner, charter, straight, through), additional descriptions of the goods (clean, dirty), and shipping period (on-board, received-for-shipment). The Bill of Lading skill is a production skill. It has been fully trained on a large document set and provides high accuracy of data identification and extraction. The skill is ready to be used in production and does not require further training on your specific documents. Accuracy and straight-through processing (STP) rates can be further optimized in production through continuous learning from human-in-the-loop feedback. ## Supported Languages * English * German ## Extracted Fields Asterisk (`*`) indicates a required field or field group. Values cannot be empty. | Field | Description | | :------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | BoL Number\* | Bill of lading number. | | BoL Date | The date on which the bill of lading was made. | | PO Number | The purchase order number. | | Sales Order Number | The sales order number. | | Shipment ID | The shipment identifier. | | Shipment Date | The date of the shipment. | | Pro Number | A shipment identifier assigned by the carrier. This identifier together with the SCAC code may be used to track the shipment. | | Vehicle Number | The number of the transport vehicle or carriage. | | Seal Number | The seal number. | | Terms | The freight payment terms. Specifies which party is liable for paying the freight bill. Can have one of the following values:
**Prepaid**. The transport expenses are charged to the shipper
**Collect**. The transport expenses are charged to the consignee
**Third Party**. The transport expenses are charged to a third party. | | NMFC Code | National Motor Freight Classification shipment identifier. Applies to less-than-truckload shipping. | | Class | National Motor Freight Classification shipment class. Applies to less-than-truckload shipping. | | Port of Discharge | The destination of the shipment. The location where the shipment is handed over to the consignee. | | Port of Loading | The origin of the shipment. The location where the shipment is handed over to the carrier. | | Special Instructions | Special handling instructions for the carrier regarding the shipment. | | Number of Packages | The total number of packages. | | Package Type | The package type. The value of this field can either be a name in full (such as "Palett") or a code (such as PLT). | | Hazardous Material | Indicates whether the shipment contains any items classified as hazardous. If this field is checked, the shipment must conform to the Hazardous Material requirements of the U.S. Department of Transportation. | | Total Weight Nonmetric | The total weight of the shipment in non-metric units of measurement. When no unit of measurement is specified, the total weight is assumed to be in non-metric units and this field is used by default. | | Total Weight UoM Nonmetric | The non-metric unit of measurement (for example, pounds or ounces) used for the total the weight of the shipment indicated in the **Total Weight Nonmetric** field. | | Total Weight Metric | The total weight of the shipment in metric units of measurement. | | Total Weight UoM Metric | The metric unit of measurement (for example, tons, kilograms, or grams) used for the total weight of the shipment indicated in the **Total Weight Metric** field. | ### Shipper | Field | Description | | :------ | :----------------------------- | | Name | Information about the shipper. | | Address | Information about the shipper. | ### Carrier | Field | Description | | :-------- | :---------------------------------------------------------------------------------- | | Name | The name of the carrier. | | SCAC Code | An SCAC (Standard Carrier Alpha Code) code is used to identify transport companies. | ### Consignee | Field | Description | | :---------- | :--------------------- | | Name | Consignee information. | | Customer ID | Consignee information. | | Address | Consignee information. | ### Bill to | Field | Description | | :------ | :-------------------------------------------------------------------------------------------------------------------------------------------------- | | Name | Information about the organization or business unit responsible for paying the freight fees (if different from both the shipper and the consignee). | | Address | Information about the organization or business unit responsible for paying the freight fees (if different from both the shipper and the consignee). | ## Key Fields * Shipper Name * Consignee Name * BoL Number * BoL Date * Pro Number ## Validation Rules | Rule | Description | | :--------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Check Checkmarks | Defines the field value using the possible values for **Terms/Prepaid**, **Terms/Collect**, **Terms/ThirdParty** (if checked on the bill), as well as the following two additional values: **Terms/PrepaidWordOrDefault** if the Prepaid payment type is set by default or specified in the bill of lading as a word instead of a checkmark, **Terms/CollectWordOrDefault** if the Collect payment type is set by default or specified in the bill of lading as a word instead of a checkmark. | # Broker Slip - Document Skill Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/built-in-skills/broker-slip Extract data from insurance broker slips: risk details, parties, premiums, terms, and conditions used to summarize commercial insurance placements. The **Broker Slip** skill extracts data from broker slips — the documents brokers use to outline risk details for an insurance placement, including parties, terms, conditions, and premium information. The Broker Slip skill is a preview skill. It has been trained on a limited set of documents and is designed to help you quickly get started with processing broker slips. For production use, you may need to uptrain the skill with your own document samples.  ## Countries and Languages | Countries | Languages | | --------- | --------- | | Australia | English | ## Extracted Fields | Field | Description | | ----------- | ---------------------------- | | Broker Name | The legal name of the broker | ### Broker Contact | Field | Description | | ------------- | ------------------------------------------------------- | | First Name | The first name of the broker's contact person. | | Last Name | The last name of the broker's contact person. | | Phone Number | The phone number of the broker's contact person. | | Fax Number | The fax number of the broker's contact person. | | Email Address | The e-mail address of the broker's contact person. | | Mobile Number | The mobile phone number of the broker's contact person. | ### Policy Dates | Field | Description | | ---------------- | -------------------------------------------------------------------------------------------------------------- | | Required by Date | The date by which the insurance policy must be purchased or renewed in order for the coverage to be effective. | | Inception Date | The starting date of the insurance policy. | | Expiry Date | The end date of the insurance policy. | ### Insured Information | Field | Description | | ------------ | -------------------------------------------------------------------------------- | | Insured Name | The full legal names of each natural person and incorporated body to be insured. | | ABN | The Australian Business Number. | ### Locations (repeating group) | Field | Description | | -------------------- | ----------------------------------------------------------------------------------------- | | Street | The address of the insured building. | | Suburb | The address of the insured building. | | State | The address of the insured building. | | Post Code | The address of the insured building. | | Number of Storeys | The total number of levels or floors in the building. | | Year Built | The year the building was constructed. | | EPS | The estimated percentage of Expanded Polystyrene (EPS) used in the building construction. | | Business Description | The business or activity conducted in the building. | ### Floor Construction #### Construction Types | Field | Description | | ------------- | ----------------------------- | | Concrete | Types of floor constructions. | | Iron or Steel | Types of floor constructions. | | Brick | Types of floor constructions. | | EPS | Types of floor constructions. | | Wood | Types of floor constructions. | | Mixed | Types of floor constructions. | | Other | Types of floor constructions. | #### Details | Field | Description | | ------------ | -------------------------------------------------------------------------------------------------- | | Construction | The percentage of the building's floor that is made up of a certain type of construction material. | | Percentage | The percentage of the building's floor that is made up of a certain type of construction material. | ### Wall Construction #### Construction Types | Field | Description | | ------------- | ---------------------------- | | Concrete | Types of wall constructions. | | Iron or Steel | Types of wall constructions. | | Brick | Types of wall constructions. | | EPS | Types of wall constructions. | | Wood | Types of wall constructions. | | Mixed | Types of wall constructions. | | Other | Types of wall constructions. | #### Details | Field | Description | | ------------ | ------------------------------------------------------------------------------------------------- | | Construction | The percentage of the building's wall that is made up of a certain type of construction material. | | Percentage | The percentage of the building's wall that is made up of a certain type of construction material. | ### Roof Construction #### Construction Types | Field | Description | | ------------- | ---------------------------- | | Concrete | Types of roof constructions. | | Masonry | Types of roof constructions. | | Tiles | Types of roof constructions. | | Iron or Steel | Types of roof constructions. | | EPS | Types of roof constructions. | | Wood | Types of roof constructions. | | Mixed | Types of roof constructions. | | Other | Types of roof constructions. | #### Details | Field | Description | | ------------ | ------------------------------------------------------------------------------------------------- | | Construction | The percentage of the building's roof that is made up of a certain type of construction material. | | Percentage | The percentage of the building's roof that is made up of a certain type of construction material. | ### Fire Protection #### Protection Systems | Field | Description | | ----------------------------- | -------------------------------------------------------------------------------- | | None | Types of fire protection systems. Multiple fields can be checked simultaneously. | | Fire Extinguishers | Types of fire protection systems. Multiple fields can be checked simultaneously. | | Hose Reels | Types of fire protection systems. Multiple fields can be checked simultaneously. | | Sprinklers | Types of fire protection systems. Multiple fields can be checked simultaneously. | | Smoke Detectors Monitored | Types of fire protection systems. Multiple fields can be checked simultaneously. | | Smoke Detectors Non Monitored | Types of fire protection systems. Multiple fields can be checked simultaneously. | | Heat Detectors | Types of fire protection systems. Multiple fields can be checked simultaneously. | | Fire Alarm | Types of fire protection systems. Multiple fields can be checked simultaneously. | | Monitor Base Alarm | Types of fire protection systems. Multiple fields can be checked simultaneously. | #### Sprinkler Properties | Field | Description | | ------------------------------------ | ----------------------------------- | | **100% Coverage** | | | Yes | Indicates the sprinkler properties. | | No | Indicates the sprinkler properties. | | Not Known | Indicates the sprinkler properties. | | **Water Supply** | | | Single | Indicates the sprinkler properties. | | Dual | Indicates the sprinkler properties. | | Not Known | Indicates the sprinkler properties. | | **Conforms to Australian Standards** | | | Yes | Indicates the sprinkler properties. | | No | Indicates the sprinkler properties. | | Not Known | Indicates the sprinkler properties. | ### Security | Field | Description | | ----------------------------------------- | -------------------------------------------------------------------- | | None | Security system type. Multiple fields can be checked simultaneously. | | Local Alarm | Security system type. Multiple fields can be checked simultaneously. | | Monitored Base Alarm | Security system type. Multiple fields can be checked simultaneously. | | Bars on Windows | Security system type. Multiple fields can be checked simultaneously. | | Locks on All External Window Without Bars | Security system type. Multiple fields can be checked simultaneously. | | Deadlocks on Doors | Security system type. Multiple fields can be checked simultaneously. | | Protection of Display Windows | Security system type. Multiple fields can be checked simultaneously. | | External Lighting | Security system type. Multiple fields can be checked simultaneously. | | Bollards in Front of Glazing | Security system type. Multiple fields can be checked simultaneously. | | CCTV System Installed | Security system type. Multiple fields can be checked simultaneously. | | Security Fencing | Security system type. Multiple fields can be checked simultaneously. | | Watchman Patrols | Security system type. Multiple fields can be checked simultaneously. | | Electronic Key Pad | Security system type. Multiple fields can be checked simultaneously. | | Digital Dialler | Security system type. Multiple fields can be checked simultaneously. | | Digital Dialler or GSM | Security system type. Multiple fields can be checked simultaneously. | | GPRS | Security system type. Multiple fields can be checked simultaneously. | | Direct Line | Security system type. Multiple fields can be checked simultaneously. | | Not Known | Security system type. Multiple fields can be checked simultaneously. | ### Total Declared Values | Field | Description | | ----------------------- | -------------------------------------------------------------------------------------------------------- | | Material Loss or Damage | The coverage amount provided for any physical damage or loss to the structures of the insured buildings. | | Income | The total amount of insured income. | | Gross Profit | Types of income. | | Gross Revenue | Types of income. | | Gross Earnings | Types of income. | #### Payroll Information | Field | Description | | ------------------------------------ | ----------------------------------------------------------------------------------- | | **Payroll Included in Gross Profit** | | | Yes | Indicate whether the payroll expenses are included in the gross profit calculation. | | No | Indicate whether the payroll expenses are included in the gross profit calculation. | | Insured Payroll | The total amount of insured payroll. | ### Additional Total Declared Values (repeating group) | Field | Description | | ----------- | ----------------------------------------------------------------------------------------------- | | Description | A description and total value of any additional assets or items to be included in the coverage. | | Amount | A description and total value of any additional assets or items to be included in the coverage. | ### Coverage Periods | Field | Description | | ------------------------ | -------------------------------------------------------------------------------------------------------------- | | Indemnity Period | The period during which the insurance company must make payments to cover the losses insured under the policy. | | Initial Period of Cover | The period during which the insurance coverage is effective. | | Wages Insured Percentage | The percentage remaining for the indemnity period. | ### Uninsured Working Expenses | Field | Description | | --------- | ----------------------------------------------------------------------------------------------------- | | Purchases | The percentage of expenses not covered by the insured amount for business interruption by categories. | #### Other (repeating group) | Field | Description | | ----------- | ----------------------------------------------------------------------------------------------------- | | Description | The percentage of expenses not covered by the insured amount for business interruption by categories. | | Percentage | The percentage of expenses not covered by the insured amount for business interruption by categories. | ### Limits of Liability | Field | Description | | ------------------------------------------- | ------------------------------ | | Box a - Section 1 - Material Loss or Damage | The liability coverage limits. | | Box b - Section 2 - Business Interruption | The liability coverage limits. | | Box c - Combined Single Limit | The liability coverage limits. | ### Sub Limits Section 1 | Field | Description | | ----------------------------------------------------------------- | -------------------------------------------------------------------------------------- | | Box a - Statutory Inquiries | The liability coverage sub limits for **Box a - Section 1 - Material Loss of Damage**. | | Box b - Removal of Debris | The liability coverage sub limits for **Box a - Section 1 - Material Loss of Damage**. | | Box c - Personal Property of Employees and Others (Per Person) | The liability coverage sub limits for **Box a - Section 1 - Material Loss of Damage**. | | Box d - Personal Property of Employees and Others (Any One Event) | The liability coverage sub limits for **Box a - Section 1 - Material Loss of Damage**. | | Box e - Accompanied Baggage in Australia (Per Person) | The liability coverage sub limits for **Box a - Section 1 - Material Loss of Damage**. | | Box f - Accompanied Baggage in Australia (Any One Event) | The liability coverage sub limits for **Box a - Section 1 - Material Loss of Damage**. | | Box g - Expediting Expenses | The liability coverage sub limits for **Box a - Section 1 - Material Loss of Damage**. | | Box h - Cost of Clearing Blocked Drains Pipes Filters and Pumps | The liability coverage sub limits for **Box a - Section 1 - Material Loss of Damage**. | | Box i - Unspecified Customers' Goods | The liability coverage sub limits for **Box a - Section 1 - Material Loss of Damage**. | | Box j - Landscaping | The liability coverage sub limits for **Box a - Section 1 - Material Loss of Damage**. | | Box k - Works of Art Antiques and Curios (Any One Claim) | The liability coverage sub limits for **Box a - Section 1 - Material Loss of Damage**. | | Box l - Extra Cost of Reinstatement | The liability coverage sub limits for **Box a - Section 1 - Material Loss of Damage**. | | Box m - Glass | The liability coverage sub limits for **Box a - Section 1 - Material Loss of Damage**. | | Box n - Loss of Land Value | The liability coverage sub limits for **Box a - Section 1 - Material Loss of Damage**. | | Box o - Burglary or Theft (Other Than Money) | The liability coverage sub limits for **Box a - Section 1 - Material Loss of Damage**. | | Box p - Theft of Property in Open Air | The liability coverage sub limits for **Box a - Section 1 - Material Loss of Damage**. | | Box q - Money | The liability coverage sub limits for **Box a - Section 1 - Material Loss of Damage**. | | Box r - Weather Damage to Certain Property in Open Air | The liability coverage sub limits for **Box a - Section 1 - Material Loss of Damage**. | | Box s - Decorative Livestock | The liability coverage sub limits for **Box a - Section 1 - Material Loss of Damage**. | | Box t - Temporary Removal Exemption | The liability coverage sub limits for **Box a - Section 1 - Material Loss of Damage**. | | Box u - Metered Water | The liability coverage sub limits for **Box a - Section 1 - Material Loss of Damage**. | | Box v - Unspecified Damage | The liability coverage sub limits for **Box a - Section 1 - Material Loss of Damage**. | #### Box w - Additional Sub-Limits (repeating group) | Field | Description | | ----------- | -------------------------------------------------------------------------------------- | | Description | The liability coverage sub limits for **Box a - Section 1 - Material Loss of Damage**. | | Amount | The liability coverage sub limits for **Box a - Section 1 - Material Loss of Damage**. | ### Sub Limits Section 2 | Field | Description | | ------------------------------------------------------------------------ | ----------------------------------------------------------------------------------- | | Box a - (Additional) Increased Cost of Working | The liability coverage sub limits for **Box b -Section 2 - Business Interruption**. | | Box b - Claims Preparation Costs | The liability coverage sub limits for **Box b -Section 2 - Business Interruption**. | | Box c - Additional Severance Pay | The liability coverage sub limits for **Box b -Section 2 - Business Interruption**. | | Box d - Rent Receivable | The liability coverage sub limits for **Box b -Section 2 - Business Interruption**. | | Box e - Contractual Damages | The liability coverage sub limits for **Box b -Section 2 - Business Interruption**. | | Box f - Accounts Receivable | The liability coverage sub limits for **Box b -Section 2 - Business Interruption**. | | Box g - Remote Premises of Public Utilities | The liability coverage sub limits for **Box b -Section 2 - Business Interruption**. | | Box h - Interdependency - Australia | The liability coverage sub limits for **Box b -Section 2 - Business Interruption**. | | Box i - Isolation by Flood or Landslide | The liability coverage sub limits for **Box b -Section 2 - Business Interruption**. | | Box j - Prevention of Access - Public Authority Order | The liability coverage sub limits for **Box b -Section 2 - Business Interruption**. | | Box k - Premises in the Vicinity (Prevention of Access) | The liability coverage sub limits for **Box b -Section 2 - Business Interruption**. | | Box l - Infectious or Contagious Diseases | The liability coverage sub limits for **Box b -Section 2 - Business Interruption**. | | Box m - Trade Exhibitions – Worldwide | The liability coverage sub limits for **Box b -Section 2 - Business Interruption**. | | Box n - Unspecified Suppliers' and or Customers' Premises (Single Limit) | The liability coverage sub limits for **Box b -Section 2 - Business Interruption**. | | Box o - Unspecified Suppliers' and or Customers' Premises (Worldwide) | The liability coverage sub limits for **Box b -Section 2 - Business Interruption**. | #### Box p - Additional Sub-Limits (repeating group) | Field | Description | | ----------- | ----------------------------------------------------------------------------------- | | Description | The liability coverage sub limits for **Box b -Section 2 - Business Interruption**. | | Amount | The liability coverage sub limits for **Box b -Section 2 - Business Interruption**. | ### Flood Coverage | Field | Description | | ----------------------- | ---------------------------------------------------------------------------------------------------------------- | | Is Flood Cover Required | Specifies whether the insurance policy includes coverage for damages caused by floods. Possible values: Yes, No. | ### Sub Limits Combined | Field | Description | | ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------- | | Sub-Limit | The liability coverage sub limits for **Box a - Section 1 - Material Loss of Damage** and **Box b - Section 2 - Business Interruption** combined. | | Acquired Companies | The liability coverage sub limits for **Box a - Section 1 - Material Loss of Damage** and **Box b - Section 2 - Business Interruption** combined. | | Acquired Property | The liability coverage sub limits for **Box a - Section 1 - Material Loss of Damage** and **Box b - Section 2 - Business Interruption** combined. | | Fusion | The liability coverage sub limits for **Box a - Section 1 - Material Loss of Damage** and **Box b - Section 2 - Business Interruption** combined. | ### Gross Rentals | Field | Description | | ------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------ | | Gross Rentals Specifications | The total amount of rental income generated by a property. | | Additional Increase in Cost of Working - Gross Rentals | The additional expenses that may be incurred by a property owner in order to continue generating rental income after a loss or damage to the property. | ### Deductible | Field | Description | | -------------------------------- | ----------------------------------------------------------------------------------------------------------------------------- | | Accompanied Baggage in Australia | The amount of money that should be paid before insurance covers claims under the "Accompanied Baggage in Australia" category. | | All Other Claims | The amount of money that should be paid before insurance covers claims under the "All Other Claims" category. | | Time Deductible | The period during which the insurer will not be liable for any loss. | #### Other Deductible (repeating group) | Field | Description | | ----------- | ------------------------------------------------------------------------------------------------------------------------ | | Description | The deductible amount that must be paid before insurance covers any claims not included in specific coverage categories. | | Amount | The deductible amount that must be paid before insurance covers any claims not included in specific coverage categories. | ### Insurance History (repeating group) | Field | Description | | ------------ | -------------------------------------------- | | Date of Loss | Information about previous insurance claims. | | Incurred | Information about previous insurance claims. | | Description | Information about previous insurance claims. | ### Broker Details | Field | Description | | ------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------- | | Holding Broker | Indicates whether the broker currently holds the insurance policy. Possible values: Yes, No. | | Is Commission to Be Nett | Indicates whether commission received by the holding broker should be "net" or netted out from the premium paid by the insured. Possible values: Yes, No. | | Holding Underwriter | The name of the holding underwriter. | ## Key Fields * Broker Name * Broker Contact/First Name * Broker Contact/Last Name # Brokerage Statement - Document Skill Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/built-in-skills/brokerage-statement Extract data from brokerage statements — account, holdings, transactions, fees, and account values — with optional splitting of multi-account statement files. The **Brokerage Statement** skill extracts data from brokerage statements — the periodic documents (monthly or quarterly) a brokerage firm sends investors to detail account value, individual investments held, changes in those investments, and any fees or charges associated with the account. The Brokerage Statement skill is a preview skill. It has been trained on a limited set of documents and is designed to help you quickly get started with processing brokerage statements. For production use, you may need to uptrain the skill with your own document samples.  The Brokerage Statement Document skill can extract data for only one account from brokerage statements files containing information on multiple accounts. If your brokerage statements contain information about multiple accounts, you must split them into documents using the **Brokerage Statement Splitter** skill and extract data from each account. ## Countries and Languages | Countries | Languages | | :-------- | :-------- | | USA | English | ## Extracted Fields | Field | Description | | :-------------------- | :-------------------------------------------------------------------------------------------------- | | Account Number | The unique number assigned to an investment account by the broker or investment firm. | | Statement Start Date | The beginning of the statement period for which the statement was generated. | | Statement End Date | The end of the statement period for which the statement was generated. | | Statement Period | The period between the statement start date and the statement end date. | | Total Portfolio Value | The total value of an investor's investment holdings within the account as of the statement date. | | Base Currency | The currency that is used to calculate the value of the account's holdings and any gains or losses. | ### Broker | Field | Description | | :----------- | :------------------------------ | | Name | The name of the broker. | | Address | The address of the broker. | | Phone Number | The phone number of the broker. | ### Advisor | Field | Description | | :----------- | :------------------------------- | | Name | The name of the advisor. | | Phone Number | The phone number of the advisor. | | Address | The address of the advisor. | ### Client | Field | Description | | :----------- | :------------------------------ | | Name | The name of the client. | | Address | The address of the client. | | Phone Number | The phone number of the client. | ### Holdings Level | Field | Description | | :----------------- | :------------------------------------------------------------------------------------------------------------------------------------- | | Account Type | The type of account in which the investor holds the securities listed on the statement. | | Asset Class | The classification of the investments held in the brokerage account according to their asset class. | | Description | A detailed description of each investment held in the brokerage account. | | Symbol | The unique ticker symbol assigned to each investment held in the brokerage account. | | CUSIP | The unique identifier assigned to each security registered with the Committee on Uniform Securities Identification Procedures (CUSIP). | | Quantity | The number of shares or units of a security that are held in the investor's brokerage account. | | Price | The price per share or unit of a security at the time it was acquired by the investor. | | Price as of Date | The date on which the price per share or unit of a security was last updated or determined by the broker. | | Currency | The currency in which the security is denominated or traded. | | Market Value | The current market value of an investor's holdings of a particular security. | | Prior Market Value | The market value of an investor's holdings of a particular security as of the previous statement date. | | Cost Basis | The total amount an investor has paid to acquire their current holdings of a particular security. | | Accrued Value | The value of the investor's accrued earnings on the security. | | Estimated Income | The estimated income that includes interest, dividends, and other income that the investor is expected to receive from their holdings. | | Estimated Yield | The estimated yield that an investor can expect to earn from their holdings of a particular security over a given period of time | | Current Yield | The actual yield an investor is currently earning from their holdings of a particular security. | ### Transactions | Field | Description | | :----------------- | :---------------------------------------------------------------------------------------------------------------------------------- | | Trade Date | The date on which a particular trade was executed. | | Settlement Date | The date on which the settlement process is complete. | | Account Type | The type of account associated with a particular trade transaction. | | Transaction Type | The specific type of transaction that occurred in an investor's account during the statement period. | | Description | Additional details about the specific transaction that occurred in an investor's account. | | Symbol | The ticker symbol of the security that was involved in a particular transaction. | | CUSIP | The unique identifier assigned to financial instruments in the United States, particularly for stocks, bonds, and other securities. | | Quantity | The number of shares, units, or contracts involved in a particular transaction. | | Price | The price at which a security was bought or sold during a particular transaction. | | Currency | The currency in which a particular transaction was executed. | | Amount | The total amount associated with a particular transaction. | | Taxable Amount | The amount of taxable income associated with specific transactions. | | Non Taxable Amount | The amount of income or proceeds from tax-exempt transactions. | | Pending Status | The current status of a transaction that is pending or not yet completed. | ## Key Fields * Account Number * Broker/Name * Client/Name * Total Portfolio Value * Statement Start Date * Statement End Date # Brokerage Statement Splitter Skill Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/built-in-skills/brokerage-statement-splitter Split files containing brokerage statements with multiple accounts into separate documents for downstream extraction by the Brokerage Statement skill. The **Brokerage Statement Splitter** skill splits files containing brokerage statements for multiple accounts into separate documents — one per account — so each can be processed by the **Brokerage Statement** skill. The Brokerage Statement Splitter skill has only one class, called "Brokerage Statement." For this reason, you cannot use this skill to separate brokerage statements from other types of documents or annexes. ## Skill Components | Component | Description | | :---------------------------------------------- | :------------------------------------------------------------------------- | | **Extraction Rules Activity (First Page)** | Extracts reliable markers of the first page (for example, "Page 1 of 10"). | | **Extraction Rules Activity (Account Numbers)** | Extracts account numbers from the document. | ## Splitting Criteria A file will be split into separate documents whenever: | Trigger | Description | | :---------------------- | :------------------------------------------------ | | **New Document Begins** | A new document is detected in the file. | | **First Page Marker** | A reliable marker of the first page is extracted. | | **New Account Number** | A new account number is extracted. | ## Setup Instructions Follow these steps to configure the Brokerage Statement Splitter skill: | Step | Action | Details | | :---- | :--------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **1** | Create Process Skill | Create a new Process skill in your workflow. | | **2** | Add Input Activity | Add and configure an Input activity for document ingestion. | | **3** | Configure Assemble Activity | Add an Assemble activity. In the **Actions** pane, select **By Document Splitter Skill** option, and then select **Brokerage Statement Splitter skill** from the list. | | **4** | Add Extract Activity | Add an Extract activity. In the **Actions** pane, click **Add Skill** button and select **Brokerage Statement skill**. | | **5** | Configure Document Class | In the **Actions** pane, click the configuration icon next to the Document skill name. In the dialog box, select **Brokerage Statement** in the **Class** field. | | **6** | Add Manual Review (Optional) | Optionally add a **Manual Review** activity to verify extracted data and adjust assembled documents (for example, move pages around). | | **7** | Add Output Activity | Add and configure an Output activity for processed documents. | | **8** | Publish Skill | Click the **Publish Skill** button to make the skill available. | ## Implementation Once you have completed the above steps, you will be able to use the Brokerage Statement Splitter skill in Vantage for processing multi-account brokerage statements. # Business Card - Document Skill Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/built-in-skills/business-card Extract data from business cards — name, company, job title, and contact details — with two skills: Business Card (Latin scripts) and Business Card CJK. The **Business Card** and **Business Card CJK** skills extract data from business cards — the documents people use to share their name, company, job title, and contact information. Use **Business Card** for Latin-script languages and **Business Card CJK** for Chinese, Japanese, and Korean. The Business Card and Business Card CJK skills are preview skills. They have been trained on a limited set of documents and are designed to help you quickly get started with processing business cards. For production use, you may need to uptrain the skills with your own document samples.  ## Supported Languages | Skill Type | Languages | | :-------------------- | :------------------------------------------------------------------------------------------- | | **Business Card** | English, French, German, Italian, Portuguese (Brazil), Spanish | | **Business Card CJK** | Chinese Simplified, Chinese Traditional, English, Japanese (Modern), Korean, Korean (Hangul) | ## Extracted Fields ### Name Components | Field | Description | | :---------- | :------------------------------ | | First Name | Parts of the individual's name. | | Last Name | Parts of the individual's name. | | Middle Name | Parts of the individual's name. | | Extra Name | Parts of the individual's name. | | Degree | Parts of the individual's name. | | Title | Parts of the individual's name. | | Field | Description | | :---------------- | :-------------------------------------------------- | | Name | The name of the individual. | | Company | The name of the organization. | | Department | The department of the organization. | | Official Position | The position of the individual in the organization. | | ZIP | The ZIP code of the organization. | | Address | The business address of the organization. | | Phone | The phone number of the organization. | | Fax | The fax number of the organization. | | Mobile | The phone number of the individual. | | E-Mail | The e-mail address of the individual. | | URL | The website of the organization. | ## Key Fields * Name * Company * Official Position # Certificate of Analysis - Document Skill (Preview) Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/built-in-skills/certificate-of-analysis Extract data from certificates of analysis (CoA): laboratory test results, product specifications, batch and lot information for pharma and food workflows. The Certificate of Analysis skill is currently available in Preview. The **Certificate of Analysis** skill extracts data from certificates of analysis (CoA) — the documents that verify a product's quality by reporting laboratory test results against predetermined specifications. Issued by manufacturers or testing laboratories in industries like pharmaceuticals, chemicals, and food, a CoA serves as proof of compliance and helps build trust between suppliers and customers. The Certificate of Analysis is a preview skill. It has been trained on a limited set of documents and is designed to help you quickly get started with processing certificates of analysis. For production use, you may need to uptrain the skill with your own document samples. The Certificate of Analysis skill recognizes handwritten text. This option is enabled by default. If you do not import handwritten forms, disable the **Handwritten** option in the skill settings. ## Supported Languages * English * French * German * Italian * Portuguese (Standard) * Spanish ## Extracted Fields ### Basic Information | Field | Description | | :------------------- | :------------------------------------------------------------------------------------------------- | | Date | The date when the Certificate of Analysis was issued. | | Date of Manufacture | The date when the product being analyzed was manufactured or produced. | | Delivery Date | The date when the analyzed products were delivered to the customer. | | Material Name | The name of the material that is being analyzed. | | Material Number | The unique identifier assigned to the material being analyzed. | | Customer Part Number | The unique identifier assigned by the customer to the specific product or material being analyzed. | | Batch Identifier | The unique identifier assigned to a specific batch of the material being analyzed. | | Quantity | The total number of packages shipped. | | Metric Weight | The weight of the batch being analyzed (metric units). | | Weight Non-Metric | The weight of the batch being analyzed (non-metric units). | | Purchase Order | The number of the purchase order associated with the material being analyzed. | | Sales Order | The sales order number associated with the material being analyzed. | | Shipment Number | The number assigned to a specific shipment of the material being analyzed. | | Delivery Number | The number assigned to a specific delivery of the material being analyzed. | ### Customer | Field | Description | | :---------------- | :--------------------------------------------------------------- | | Name | The name of the customer sending the certificate of analysis. | | Address | The address of the customer sending the certificate of analysis. | | Street | The address of the customer sending the certificate of analysis. | | City | The address of the customer sending the certificate of analysis. | | Country | The address of the customer sending the certificate of analysis. | | State or Province | The address of the customer sending the certificate of analysis. | | Postal Code | The address of the customer sending the certificate of analysis. | ### Ship To | Field | Description | | :---------------- | :------------------------------------------------------------------- | | Name | The name of the recipient or organization receiving the shipment. | | Address | The address of the recipient or organization receiving the shipment. | | Street | The address of the recipient or organization receiving the shipment. | | City | The address of the recipient or organization receiving the shipment. | | Country | The address of the recipient or organization receiving the shipment. | | State or Province | The address of the recipient or organization receiving the shipment. | | Postal Code | The address of the recipient or organization receiving the shipment. | ### Line Items (repeating group) | Field | Description | | :------------ | :---------------------------------------------------------------------------------- | | Test Name | The name or description of the type of test performed as part of quality assurance. | | Test Method | The methodology or procedure used to perform the test. | | UoM | The unit of measurement associated with the test results. | | Specification | The set of standards against which the test results are evaluated. | | Lower Limit | The minimum acceptable value for the tested material. | | Upper Limit | The maximum acceptable value for the tested material. | | Results | The test outcomes obtained from analyzing the material. | # Certificate of Origin - Document Skill Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/built-in-skills/certificate-of-origin Extract data from certificates of origin — exporter, consignee, country of origin, transport, and goods details — used in international trade and customs. The **Certificate of Origin** skill extracts data from certificates of origin (CoO) — the trade documents that businesses, banks, and customs officials use to attest a product's country of origin. CoOs are central to customs procedures such as determining tariffs and proving that goods are being exported or imported legally. The Certificate of Origin skill is a production skill. It has been fully trained on a large document set and provides high accuracy of data identification and extraction. The skill is ready to be used in production and does not require further training on your specific documents. Accuracy and straight-through processing (STP) rates can be further optimized in production through continuous learning from human-in-the-loop feedback. ## Supported Languages * English ## Extracted Fields | Field | Description | | :----------------- | :------------------------------------------------------------------ | | Certificate Number | The certificate number. | | Serial Number | The certificate serial number. Documents rarely contain this field. | | Country of Issue | The certificate country of issue. | ### Exporter | Field | Description | | :------ | :-------------------------------------------------------- | | Name | Information about the exporter/manufacturer of the goods. | | Address | Information about the exporter/manufacturer of the goods. | ### Consignee | Field | Description | | :------ | :----------------------------------------------------- | | Name | Information about the importer/consignee of the goods. | | Address | Information about the importer/consignee of the goods. | ### Means of Transport and Route | Field | Description | | :--------------------- | :----------------------------------------------------------------------------------------------------------------------- | | City of Origin | The city and country of origin. | | Country of Origin | The city and country of origin. | | City of Destination | The city and country of destination. | | Country of Destination | The city and country of destination. | | Means of Transport | The means of transport used to ship the goods. This field can also have several options that can be marked as its value. | | Departure Date | The departure date of the transport. This field has the following format: Month-Day-Year. | ### Invoice Numbers | Field | Description | | :------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Invoice Number | The invoice number and date. If two or more different invoice numbers are detected in a document, they are processed as instances of a repeating group. Each instance has its own corresponding invoice date (where applicable). If several invoice numbers are the same, only the first instance gets extracted. | | Invoice Date | The invoice number and date. If two or more different invoice numbers are detected in a document, they are processed as instances of a repeating group. Each instance has its own corresponding invoice date (where applicable). If several invoice numbers are the same, only the first instance gets extracted. | ### Marks and Numbers of Packages | Field | Description | | :---------------------------- | :----------------------------- | | Marks and Numbers of Packages | Package marking and numbering. | ### Line Items (Repeating Group) | Field | Description | | :------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Position | The line item position number. Documents rarely contain this field. | | Origin Criterion | The Origin Criterion. Can have one of the following values:
WO (wholly obtained - goods produced entirely within the borders of a signatory country)
PE (produced exclusively from originating materials - goods produced entirely using originating materials from one or both signatory countries)
PSR (goods satisfying product-specific rules - goods produced using non-originating materials that qualify as originating due to undergoing substantial transformation within the borders of a signatory country). | | Preference Criterion | The Preference Criterion. Statement regarding the origin of goods qualifying for preferential treatment under the NAFTA agreement. Can have one of the following values: A, B, C, D, E, F. | | Description | Numbers and Kind of Packages, Description of Goods. A general description of the goods and their packaging. If this field is not split into two different ones, everything within this field will be extracted as a single value. | | HS Code | The Harmonized System (HS) code. | | Country of Origin | The country of origin of the goods. | | Quantity | The number of units of goods. | | UoM | The unit of measurement used for the goods (such as pieces or packs). | | Net Weight | The net weight of the goods. | | Net Weight UoM | The unit of measure for the net weight of the goods. | | Gross Weight | The gross weight of the goods. | | Gross Weight UoM | The unit of measurement for the total weight of the goods (kilograms, pounds). | ### Weight | Field | Description | | :----- | :----------------------------- | | Weight | The total weight of the goods. | ### Weight UoM | Field | Description | | :--------- | :--------------------------------------------------------------------------------- | | Weight UoM | The unit of measurement for the weight of the goods (such as kilograms or pounds). | ## Key Fields * Certificate Number * Exporter/Name * Consignee/Name # Classification Skills Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/built-in-skills/classification-skills Classification skills in ABBYY Vantage assign input documents to types — used for document sorting, document set integrity checks, and page-level assembly. In addition to **Document skills**, ABBYY Vantage includes **Classification skills** that classify input documents into types. Use them to sort documents, verify the integrity of a document set, or classify pages for downstream document assembly. These skills can be used in the following cases: * To classify documents without further data extraction. For example, identifying types of letters to send them to the right department. * To check the integrity of a document set. For example, when opening an account, applying for a loan, or purchasing an insurance policy. * To classify pages for document assembly. For example, when processing a loan application containing several types of documents. ## Available Classification Skills ABBYY Vantage has the following Classification skills: * [Expense Management Classifier skill](/vantage/documentation/skill-catalog/built-in-skills/expense-management-classifier) * [Invoice Classifier skill](/vantage/documentation/skill-catalog/built-in-skills/invoice-skills/invoice-classifier) * [Purchase Order Classifier skill](/vantage/documentation/skill-catalog/built-in-skills/po-skills/purchase-order-classifier) * [Vantage Classifier skill](/vantage/documentation/skill-catalog/built-in-skills/vantage-classifier) # Closing Disclosure - Document Skill Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/built-in-skills/closing-disclosure Extract data from mortgage Closing Disclosure forms — loan terms, interest rate, closing costs, monthly payments, fees, and totals — for US mortgage workflows. The **Closing Disclosure** skill extracts data from mortgage Closing Disclosure forms — the five-page reports lenders provide at least three days before mortgage documents are signed, covering loan terms and size, interest rate, loan fees, closing costs, monthly payments, and the total of all payments and financing fees. The Closing Disclosure skill is a preview skill. It has been trained on a limited set of documents and is designed to help you quickly get started with processing mortgage closing disclosures. For production use, you may need to uptrain the skill with your own document samples.  ## Countries and Languages | Countries | Languages | | :-------- | :-------- | | USA | English | ## Extracted Fields ### Closing Information | Field | Description | | :----------------------- | :------------------------------------------------------------------- | | Date Issued | The date the document was issued. | | Closing Date | The date the document was closed. | | Disbursement Date | The date the loan is funded. | | Settlement Agent | The settlement agent. | | File Number | The file number assigned to the transaction by the settlement agent. | | Property Street | The address of the financed property. | | Property City | The address of the financed property. | | Property State | The address of the financed property. | | Property ZIP Code | The address of the financed property. | | Appraised Property Value | The appraised value of the financed property. | ### Transaction Information | Field | Description | | :---------------- | :------------------------------------------------------------------------------------------------------------------ | | Borrower Name 1 | The name and address of the borrower. The **Borrower Name 2** field is extracted only when there are two borrowers. | | Borrower Name 2 | The name and address of the borrower. The **Borrower Name 2** field is extracted only when there are two borrowers. | | Borrower Street | The name and address of the borrower. The **Borrower Name 2** field is extracted only when there are two borrowers. | | Borrower City | The name and address of the borrower. The **Borrower Name 2** field is extracted only when there are two borrowers. | | Borrower State | The name and address of the borrower. The **Borrower Name 2** field is extracted only when there are two borrowers. | | Borrower ZIP Code | The name and address of the borrower. The **Borrower Name 2** field is extracted only when there are two borrowers. | | Seller Name 1 | The name and address of the seller. The **Seller Name 2** field is extracted only when there are two sellers. | | Seller Name 2 | The name and address of the seller. The **Seller Name 2** field is extracted only when there are two sellers. | | Seller Street | The name and address of the seller. The **Seller Name 2** field is extracted only when there are two sellers. | | Seller City | The name and address of the seller. The **Seller Name 2** field is extracted only when there are two sellers. | | Seller State | The name and address of the seller. The **Seller Name 2** field is extracted only when there are two sellers. | | Seller ZIP Code | The name and address of the seller. The **Seller Name 2** field is extracted only when there are two sellers. | | Lender | The name of the lending organization. | ### Loan Information | Field | Description | | :-------- | :------------------------------------------------------------------- | | Loan Term | The loan term. | | Purpose | The purpose of the loan (such as purchase, construction, refinance). | | Product | The payment type (such as linear, diminishing balance). | | Loan Type | The loan type: Conventional, FHA, VA, Other. | | Loan ID | The loan identifier. | ### Loan Terms | Field | Description | | :---------------------------------------- | :-------------------------------------------------------------------------- | | Loan Amount | The total amount of the loan. | | Loan Amount Can Increase | Specifies whether the loan amount can be increased after registration. | | Interest Rate | The interest rate. | | Interest Rate Can Increase | Specifies whether the interest rate can be increased after registration. | | Monthly Principal & Interest | The monthly payment (both principal and interest). | | Monthly Principal & Interest Can Increase | Specifies whether the monthly payments can be increased after registration. | | Prepayment Penalty | Specifies whether there are any prepayment penalties. | | Balloon Payment | Specifies whether the loan is a balloon payment mortgage. | ### Projected Payments (Repeating Group) | Field | Description | | :-------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | Payment Calculation Period | The calculation period, during which the monthly payment remains the same. | | Principal & Interest Min | The minimum monthly mortgage payment size (both principal and interest). This field is extracted only if both a minimum and a maximum value are detected on the document. | | Principal & Interest Max | The maximum monthly mortgage payment size (both principal and interest). This field is extracted by default if there is only one monthly payment value detected. | | Mortgage Insurance | The monthly mortgage insurance payment size. | | Estimated Escrow | The estimated monthly escrow payment size. | | Estimated Total Monthly Payment Min | The total estimated minimum monthly payment size (**Principal & Interest Min + Mortgage Insurance + Estimated Escrow**). This field is extracted only if both a minimum and a maximum value are detected on the document. | | Estimated Total Monthly Payment Max | The total estimated maximum monthly payment size (**Principal & Interest Max + Mortgage Insurance + Estimated Escrow**). This field is extracted by default if there is only one monthly payment value detected. | | Estimated Taxes Insurance & Assessments | The estimated tax and insurance charges. | ### Costs at Closing | Field | Description | | :------------ | :------------------------------------------------------------------------------------------------------------------ | | Closing Costs | The estimated closing charges. | | Cash to Close | The total estimated amount required to close the deal – including the down payment, the deposit, and other charges. | If the field containing the amount value also contains a currency symbol, it is also included in the extracted value. ## Key Fields * Date Issued * Closing Date * File Number * Loan ID * Loan Amount # International Consignment Note (CMR) - Document Skill Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/built-in-skills/cmr Extract data from international consignment notes (CMR) — shipper, consignee, carrier, goods, transport, and shipping details — for road freight in Europe. The **International Consignment Note (CMR)** skill extracts data from international consignment notes — the documents the shipper, consignee, and carrier compile for internationally shipped goods, listing the items, their characteristics, shipping details, and party information. CMRs are the standard freight contract for road transport across Europe. The International Consignment Note skill is a preview skill. It has been trained on a limited set of documents and is designed to help you quickly get started with processing international consignment notes. For production use, you may need to uptrain the skill with your own document samples.  ## Supported Languages * English * French * German * Spanish ## Party Information ### Shipper | Field | Description | | :---------------- | :----------------------------- | | Name | Information about the shipper. | | Address | Information about the shipper. | | Country | Information about the shipper. | | State or Province | Information about the shipper. | | City | Information about the shipper. | | Postal Code | Information about the shipper. | | Street | Information about the shipper. | ### Consignee | Field | Description | | :---------------- | :------------------------------- | | Name | Information about the consignee. | | Address | Information about the consignee. | | Country | Information about the consignee. | | State or Province | Information about the consignee. | | City | Information about the consignee. | | Postal Code | Information about the consignee. | | Street | Information about the consignee. | ### Carrier | Field | Description | | :---------------- | :----------------------------- | | Name | Information about the carrier. | | Address | Information about the carrier. | | Country | Information about the carrier. | | State or Province | Information about the carrier. | | City | Information about the carrier. | | Postal Code | Information about the carrier. | | Street | Information about the carrier. | ### Successive Carrier | Field | Description | | :---------------- | :---------------------------------------- | | Name | Information about the successive carrier. | | Address | Information about the successive carrier. | | Country | Information about the successive carrier. | | State or Province | Information about the successive carrier. | | City | Information about the successive carrier. | | Postal Code | Information about the successive carrier. | | Street | Information about the successive carrier. | ## Delivery and Pickup Information ### Place of Delivery of Goods | Field | Description | | :------ | :----------------------------------- | | Address | The delivery location for the goods. | | Country | The delivery location for the goods. | ### Place and Date of Taking Over of Goods | Field | Description | | :------ | :-------------------------------- | | Address | The location and date of loading. | | Country | The location and date of loading. | | Date | The location and date of loading. | ## Document Information | Field | Description | | :------------------------ | :--------------------------------------------------------------- | | List of Annexed Documents | A list of annexed documents (e.g., invoice, packing list, etc.). | | Document Number | The consignment note number. | | Place of Issue | The consignment note place of issue. | | Date of Issue | The consignment note date of issue. | ## Line Items (Repeating Group) | Field | Description | | :----------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Marks and Numbers | Special numbering and marking on the packaging. | | Number of Packages | The number of packages of the goods. | | Type of Packaging | The package type. The value of this field can either be a name in full (for example, "Palett") or a code (for example, PLT). | | Nature of Goods | The name of the types of goods. If the goods are classified as hazardous, the name and class of the hazardous goods should be specified according to the European Agreement concerning the International Carriage of Dangerous Goods by Road. | | HS Code | The HS code of the goods. | | Gross Weight | The gross weight of the goods. | | Weight UoM | The unit of measurement used for the weight (kilos, pounds, etc.). | | Volume | The volume of the goods. | | Volume UoM | The unit of measurement used for the volume (liters, cubic meters, etc.). | ## Totals | Field | Description | | :----------------------- | :------------------------------------------------------------------------ | | Total Number of Packages | The total number of packages of the goods. | | Total Packages UoM | The unit of measurement for the goods (units, packages, etc.). | | Total Weight | The total weight of the shipment. | | Total Weight UoM | The unit of measurement used for the weight (kilos, pounds, etc.). | | Total Volume | The total volume of the shipment. | | Total Volume UoM | The unit of measurement used for the volume (liters, cubic meters, etc.). | ## Transportation Schedule ### Loading | Field | Description | | :------------- | :------------------------------------------------- | | Arrival Date | The arrival date of the transport for loading. | | Arrival Time | The arrival time of the transport for loading. | | Departure Date | The departure date of the transport after loading. | | Departure Time | The departure time of the transport after loading. | ### Discharge | Field | Description | | :------------- | :--------------------------------------------------- | | Arrival Date | The arrival date of the transport for discharge. | | Arrival Time | The arrival time of the transport for discharge. | | Departure Date | The departure date of the transport after discharge. | | Departure Time | The departure time of the transport after discharge. | ## Terms and Conditions | Field | Description | | :----------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Terms of Delivery | The delivery terms. This field can contain any names, three-letter codes, or Incoterms rule names in full:
EXW: EX Works
FCA: Free Carrier
FAS: Free Alongside Ship
FOB: Free On Board
CFR: Cost And Freight
CNF: another variant for Cost And Freight
CIF: Cost Insurance Freight
DAP: Delivered At Place
DTU: another variant for Delivered At Place, replace with DAP
DPU: Delivered at Place Unloaded
CPT: Carriage Paid To
CIP: Carriage Insurance Paid
DDP: Delivered Duty Paid
DDU: Delivered Duty Unpaid. | | Value of Goods | The declared value of the goods. | | Currency | The currency of the amounts in the consignment note. | | Sender's Instructions | The shipper's special instructions that may affect transportation (e.g., customs guidelines). | | Carrier Remarks | The remarks of the carrier regarding the state and packaging of the goods. | | Special Agreements of Carriage | Special shipping agreements. | ## Vehicle Information | Field | Description | | :------------------- | :---------------------------------------- | | Number Plate | The registration number of the transport. | | Trailer Number Plate | The registration number of the trailer. | ## Receipt Information | Field | Description | | :------------------ | :---------------------------------------- | | Goods Received Date | The date on which the goods are received. | ## Key Fields * Date of Issue * Document Number * Shipper/Name ## Validation Rules | Rule | Description | | :------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Check quantity total | Checks if the value in the **Totals**/**Total Number of Packages** field equals the sum of the values in the **Number of Packages** fields in the **Line Items** table, and displays an error if the values do not match. If the values are not the same, or some of the fields are missing, the rule prompts the user to populate fields with the calculated value. | | Check weight total | Checks if the value in the **Totals**/**Total Weight** field equals the sum of the values in the **Gross Weight** fields in the **Line Items** table, and displays an error if the values do not match. If the values are not the same, or some of the fields are missing, the rule prompts the user to populate fields with the calculated value. | | Check volume total | Checks if the value in the **Totals**/**Total Volume** field equals the sum of the values in the **Volume** fields in the **Line Items** table, and displays an error if the values do not match. If the values are not the same, or some of the fields are missing, the rule prompts the user to populate fields with the calculated value. | | Copy quantity UoM | If specified in one or several fields, copies the values from the **Type of Packaging** fields in the **Line Items** group to all appropriate fields in **Line Items** and **Totals**. | | Copy weight UoM | If specified in one or several fields, copies the values from the **Weight UoM** fields in the **Line Items** group to all appropriate fields in **Line Items** and **Totals**. | | Copy volume UoM | If specified in one or several fields, copies the values from the **Volume UoM** fields in the **Line Items** group to all appropriate fields in **Line Items** and **Totals**. | # Commercial Invoice - Document Skill Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/built-in-skills/commercial-invoice Extract data from commercial invoices — consignor, consignee, goods, values, currency, freight terms, and customs declarations — for cross-border trade. The **Commercial Invoice** skill extracts data from commercial invoices — the customs declaration documents that record the parties involved in a cross-border transaction, the goods being transported (and their value), and the agreed terms of delivery. The Commercial Invoice skill is a production skill. It has been fully trained on a large document set and provides high accuracy of data identification and extraction. The skill is ready to be used in production and does not require further training on your specific documents. Accuracy and straight-through processing (STP) rates can be further optimized in production through continuous learning from human-in-the-loop feedback. ## Supported Languages * English * German (New Spelling) ## Extracted Fields ### Consignee | Field | Description | | :---------------- | :---------------------------------------------------------------------------------------------------------------------------- | | Consignee ID | The unique identifier of the consignee. This field is extracted only when a consignee data catalog is used. | | Name | The name of the consignee. | | Address | The address of the consignee. | | Tax ID | The international tax ID of the consignee. | | Postal Code | The postal code of the consignee. This field is extracted only when a consignee data catalog is used. | | Street | The Street component of the consignee address. This field is extracted only when a consignee data catalog is used. | | City | The City component of the consignee address. This field is extracted only when a consignee data catalog is used. | | State or Province | The State or Province component of the consignee address. This field is extracted only when a consignee data catalog is used. | | Country | The Country component of the consignee address. This field is extracted only when a consignee data catalog is used. | ### Vendor | Field | Description | | :---------------- | :----------------------------------------------------------------------------------------------------------------------------------- | | Vendor ID | The unique identifier of the sender of the goods. This field is extracted only when a vendor data catalog is used. | | Name | The name of the sender of the goods. | | Address | The address of the sender of the goods. | | Tax ID | The international tax ID of the sender of the goods. | | National Tax ID | The national tax ID of the sender of the goods. This field is extracted only when a vendor data catalog is used. | | IBAN | The IBAN number of the sender of the goods. This field is extracted only when a vendor data catalog is used. | | Bank Code | The bank code of the sender of the goods. This field is extracted only when a vendor data catalog is used. | | Bank Account | The bank account of the sender of the goods. This field is extracted only when a vendor data catalog is used. | | Postal Code | The postal code of the sender of the goods. This field is extracted only when a vendor data catalog is used. | | Street | The Street component of the sender of the goods address. This field is extracted only when a vendor data catalog is used. | | City | The City component of the sender of the goods address. This field is extracted only when a vendor data catalog is used. | | State or Province | The State or Province component of the sender of the goods address. This field is extracted only when a vendor data catalog is used. | | Country | The Country component of the sender of the goods address. This field is extracted only when a vendor data catalog is used. | ### Ship to | Field | Description | | :------ | :----------------------------------------- | | Name | The name of the recipient of the goods. | | Address | The address of the recipient of the goods. | ### Bill to | Field | Description | | :------ | :----------------------------------------------------------------------------------- | | Name | The name of the recipient of the invoice for the goods specified in the document. | | Address | The address of the recipient of the invoice for the goods specified in the document. | ### Invoice Information | Field | Description | | :--------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Invoice Number | The number of the invoice. | | Invoice Date | The date on which the invoice was issued. | | Due Date | The date by which the invoice should be paid. | | Country of Origin | The country where the goods were manufactured. | | Country of Export | The country from which the goods are being exported. | | Country of Destination | The country into which the goods are being imported. | | INCO Term | The terms of shipment. Possible values:
EXW: EX Works
FCA: Free Carrier
FAS: Free Alongside Ship
FOB: Free On Board
CFR: Cost And Freight (variant: CNF)
CIF: Cost Insurance Freight
DAP: Delivered At Place (variant: DTU)
DPU: Delivered at Place Unloaded
CPT: Carriage Paid To
CIP: Carriage Insurance Paid
DDP: Delivered Duty Paid
DDU: Delivered Duty Unpaid
DAT: Delivered at Terminal. | | Weight | The total weight of the goods. | | Weight UoM | The unit of measurement used for the weight of the goods (such as kilos or pounds). | | Total Pallets | The total number of pallets containing the goods. | | Total | The total price of the goods. | | Currency | The currency of the price. | ### Additional Costs (repeating group) | Field | Description | | :------- | :---------------------------------------------------------------------------------------------- | | Type | The type, amount, and currency of any additional costs, such as insurance, freight, or packing. | | Amount | The type, amount, and currency of any additional costs, such as insurance, freight, or packing. | | Currency | The type, amount, and currency of any additional costs, such as insurance, freight, or packing. | ### Line Items (repeating group) | Field | Description | | :---------------- | :---------------------------------------------------------------------------- | | Position | The number of the line item. | | Country of Origin | The country where the line item was manufactured. | | HS Code | The Harmonized System code of the goods. | | Description | A description of the line item. | | Quantity | The number of units purchased. | | UoM | The unit of measurement used for the line item. | | Unit Price | The price of one unit of the goods. | | Total Price | The total price of the line item, including additional charges and discounts. | | Currency | The currency of the line item. | | Net Weight | The net weight of the line item (that is, without the packaging). | | Net Weight UoM | The unit of measurement used for the net weight (such as kilos or pounds). | | Gross Weight | The gross weight of the line item (that is, with the packaging). | | Gross Weight UoM | The unit of measurement used for the gross weight (such as kilos or pounds). | ## Key Fields * Consignee/Name * Vendor/Name * Invoice Number * Invoice Date * Total * Currency ## Validation Rules | Rule | Description | | :------------------------------------------------ | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Sum of Line Items amount should be equal to Total | Verifies that the sum of all line item amounts and **Additional Costs** is equal to the total invoiced amount. | | Separate currency from amount in money fields | Splits the amount and the currency in the **Total** and **Additional Costs** fields and copies the currency into the **Currency** field if it is empty. | | Separate currency from amount in Line Items | Splits the amount and the currency in **Line Items** fields, and copies the currency into the **Currency** fields if they are empty. | | Check item amount | Multiplies the number of units in the line item by the price of one unit and checks that the result is equal to the total price of the line item. | | Complete currency in amounts fields | If the **Currency** field next to the **Total** field is empty, the rule will populate that field with the currency indicated in the **Currency** field in the **Line Items** group. If multiple currencies are specified in the **Line Items** group, the **Currency** field will be left empty. Likewise, the rule will populate the **Currency** field in the **Line Items** group with the currency from the main **Currency** field. This rule also applies to the **Currency** field in the **Additional Costs** group. Only ISO-standard alphabetic currency values are copied. If the currency is specified using a symbol (e.g., "$", "€", "US$", "CA$", "AU$", "NZ\$", or "£"), the value is still copied, but is then formatted to be the standard alphabetic value for that currency type | | Check currency in amounts fields | Checks that the currency in the **Currency** field matches the currency code in the invoice and in the line items. Offers a list of suggestions if the field is empty or if the value doesn't match the currency code. | | Add INCOTerm value from the list | If the **INCO Term** has been detected on the document and is filled in, adds a standardized INCOTerm value and its expansion for that delivery type. Example: DDP: Delivered Duty Paid | | Vendor DB lookup | Checks information about the vendor against the corresponding catalog. If the catalog contains information about that vendor, but the values are either different or incomplete, fills in the appropriate fields using data from the catalog. The **ID**, **Name**, **Street**, **CountryCode**, and **Consignee ID** fields should be filled in the vendor catalog. | | Consignee DB lookup | Checks information about the consignee against the corresponding catalog. If the catalog contains information about the consignee, but the values are either different or incomplete, fills in the appropriate fields using data from the catalog. The **ID**, **Name**, **Street**, and **CountryCode** fields should be filled in the consignee catalog. | ## Parameters The **Commercial Invoice** skill has default parameters that refer to data catalogs used for Vendor and Consignee lookup. You can change the values of these parameters in Vantage or Advanced Designer to modify field extraction. | Parameter | Description | | :----------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | CommercialInvoiceVendors | The predefined data catalog used for Vendor lookup. The default value of this parameter is **CommercialInvoiceVendors**. You can change this value by choosing another available data catalog of the same type (Document Issuer Companies). | | Consignees | The predefined data catalog used for Consignee lookup. The default value of this parameter is **Consignees**. You can change this value by choosing another available data catalog of the same type (Document Receiver Companies). | # Credit Bureau Report - Document Skill Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/built-in-skills/credit-bureau-report Extract data from credit bureau reports — borrower credit history, account balances, payment history, and credit ratings — used by lenders for underwriting. The **Credit Bureau Report** skill extracts data from credit bureau reports — the statements that credit bureaus (Experian, Equifax, TransUnion) issue with a borrower's credit history and current debt situation, including loan payment history, credit account balances, and credit rating. Lenders use these reports to determine whether a borrower is meeting existing credit terms and to calculate potential interest rates. The Credit Bureau Report skill is a preview skill. It has been trained on a limited set of documents and is designed to help you quickly get started with processing credit bureau reports. For production use, you may need to uptrain the skill with your own document samples.  ## Countries and Languages | Countries | Languages | | :-------- | :-------- | | Any | English | ## Extracted Fields | Field | Description | | :----------------- | :------------------------------------------------------------------------------------------------------------------------- | | Bureau Source Code | The reporting national credit agency. Can have one of the following values: Experian (XPN), Equifax (EQF), TransUnion (TU) | | Report Date | The report date | ### Borrower | Field | Description | | :------------ | :-------------------------------------------------------------------- | | Full Name | Information about the borrower. SSN stands for social security number | | Last Name | Information about the borrower. SSN stands for social security number | | First Name | Information about the borrower. SSN stands for social security number | | Middle Name | Information about the borrower. SSN stands for social security number | | Name Suffix | Information about the borrower. SSN stands for social security number | | SSN | Information about the borrower. SSN stands for social security number | | Date of Birth | Information about the borrower. SSN stands for social security number | ### Co-Borrower | Field | Description | | :------------ | :----------------------------------------------------------------------- | | Full Name | Information about the co-borrower. SSN stands for social security number | | Last Name | Information about the co-borrower. SSN stands for social security number | | First Name | Information about the co-borrower. SSN stands for social security number | | Middle Name | Information about the co-borrower. SSN stands for social security number | | Name Suffix | Information about the co-borrower. SSN stands for social security number | | SSN | Information about the co-borrower. SSN stands for social security number | | Date of Birth | Information about the co-borrower. SSN stands for social security number | ### Address | Field | Description | | :----------- | :-------------------------- | | Full Address | The address of the borrower | | Street | The address of the borrower | | City | The address of the borrower | | State | The address of the borrower | | Zip Code | The address of the borrower | ### Credit Score | Field | Description | | :------------ | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Score | The credit score | | Bureau Source | The source credit agency | | Date | The date on which the credit rating was reported | | Factors | The risk factors. Can have one of the following values:
1 (too much unpaid outstanding debt)
2 (missed payments)
3 (too few revolving credit accounts), etc. | ### Credit History | Field | Description | | :------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | ECOA | Specifies the information provided to the credit bureau with regards to the Equal Credit Opportunity Act. This field contains an alphanumeric character denoting a specific ECOA code:
A (Authorized User) - the borrower is an authorized user of the account while another party has contractual responsibility
I (Individual Account) - the borrower has contractual responsibility for the account and has primary responsibility for its payment
J (Joint Account) - there are other parties aside from the borrower that have contractual responsibility, etc. | | Creditor | The lending organization | | Reported | The date on which the credit account was last checked | | Opened | The date on which the credit account was opened | | Last Active | The date on which the last activity occurred | | High Credit | Highest monthly balance owed by the borrower over the account's lifetime | | Type | The credit type (e.g. installment, revolving) | | Balance | The credit account balance | | Terms | The credit terms | | Past Due | The amount overdue | | Number 30 Days Late | The number of payments late for at least 30 days | | Number 60 Days Late | The number of payments late for at least 60 days | | Number 90+ Days Late | The number of payments late for at least 90 days | | Status | The account status. This field contains an alphanumeric character denoting a particular status:
05 - the account has been transferred to a different bank
11 - active account
13 - closed account, etc. | | Bureau Source | The source credit agency | ### Public Record | Field | Description | | :---------- | :---------------------------------------- | | Source | The source credit agency | | Amount | The total amount owed across all accounts | | Status Date | The status acquisition date | | Action Type | The account action type | | Status | The account status | ## Key Fields * Report Date * Borrower Full Name * Borrower SSN * Co-Borrower Full Name * Co-Borrower SSN * Bureau Source Code: Experian (XPN), Equifax (EQF), or TransUnion (TU) # Customs Declaration (EU) - Document Skill Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/built-in-skills/customs-declaration-eu Extract data from EU customs declarations — consignor, consignee, declarant, goods, and means of transport — for goods entering or leaving EU countries. The **Customs Declaration (EU)** skill extracts data from EU customs declarations — the documents recording the consignor, consignee, declarant, goods being transported, and means of transport for shipments crossing EU borders. The skill processes declarations for goods both entering and leaving EU countries. The Customs Declaration (EU) skill is a preview skill. It has been trained on a limited set of documents and is designed to help you quickly get started with processing customs declarations. For production use, you may need to uptrain the skill with your own document samples.  ## Supported Languages * Danish * Dutch * English * French * German * Italian * Spanish ## Extracted Fields | Field | Description | | :-------------------------------- | :-------------------------------------------- | | Movement Reference Number | The Movement Reference Number (MRN). | | Movement Reference Number Barcode | The MRN barcode. | | Issuing Date | The date on which the declaration was issued. | | Customs Office | The customs office identifier. | ### Declaration Type | Field | Description | | :----- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Part 1 | First subdivision of the declaration type code. Can have the one of the following values:
EU for shipping within the EU
EX for shipping to non-EU countries
CO for shipping to territories related to EU countries
IM for importing goods to EU countries. | | Part 2 | Second subdivision of the declaration type code. Can have the one of the following values:
A for a normal declaration
B for an incomplete declaration
C for a simplified declaration
D for a normal declaration (type A) lodged before the declarant is able to present the goods
E for an incomplete declaration (type B) lodged before the declarant is able to present the goods
F for a simplified declaration (type C) lodged before the declarant is able to present the goods. | | Part 3 | Third subdivision of the declaration type code (can be blank). | ### Forms (repeating group) | Field | Description | | :----- | :--------------------------- | | Part 1 | The declaration page number. | | Part 2 | The total number of pages. | ### Declaration Information | Field | Description | | :--------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Security Declaration | Specifies whether the declaration contains additional risk analysis documents regarding the transported goods. Can have one of the following values:
S - contains additional documents
``
0 - does not contain additional documents. | | Items | The number of items in the shipment. | | Total Packages | The total number of packages. | | Reference Number (repeating group) | The reference number (for tracking). | | Transport Charges Method of Payment Code | The code for the method of payment used to cover transport charges. | ### Consignor | Field | Description | | :---------- | :-------------------------------------------------------------------------------- | | Name | The consignor's name. | | Address | The consignor's address. | | EORI Number | The consignor's Economic Operators Registration and Identification (EORI) number. | ### Consignee | Field | Description | | :---------- | :-------------------------------------------------------------------------------- | | Name | The consignee's name. | | Address | The consignee's address. | | EORI Number | The consignee's Economic Operators Registration and Identification (EORI) number. | ### Declarant (repeating group) | Field | Description | | :---------- | :-------------------------------------------------------------------------------- | | Name | The declarant's name. | | Address | The declarant's address. | | EORI Number | The declarant's Economic Operators Registration and Identification (EORI) number. | ### Country and Location Information | Field | Description | | :------------------------- | :---------------------------------------------------------------- | | Export Country Code | The consignor's country code. | | Destination Country Code | The consignee's country code. | | Countries of Routing Codes | The codes for countries of routing for the shipment. | | Location of Goods | The location where the goods are stored before customs clearance. | | Customs Office of Exit | Identifier of the customs office that released the goods. | ### Transport Information | Field | Description | | :--------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Identity of Means of Transport at Departure | The identifier for the means of transport at departure. | | Nationality of Means of Transport at Departure | The country of registration of the transport at departure. | | Container | Specifies whether the goods are being shipped in a container. Can have one of the following values:
0 - shipped without a container
1 - shipped in a container. | | Identity of Means of Transport at Border | The identifier for the transport shipping the goods when they are presented at the border. | | Nationality of Means of Transport at Border | The country of registration of the transport shipping the goods when they are presented at the border. | | Mode of Transport at Border | The mode of transport used to arrive at the border (road, rail, air, sea). | | Internal Mode of Transport | The internal mode of transport of the goods (road, rail, air, sea). | ### Financial Information | Field | Description | | :------------ | :---------------------------------------------------------------------- | | Currency | The currency used to specify the value of the goods in the declaration. | | Total | The total value of the shipped goods. | | Exchange Rate | The currency exchange rate. | ### Shipment Details | Field | Description | | :----------------- | :----------------------------------------------------------- | | Gross Weight in KG | The total gross weight of the packaged goods (in kilograms). | | Seal Number | The seal number. | ### Control by Office of Dispatch | Field | Description | | :------------- | :------------------------------------------------- | | Result | Other information specified by the customs office. | | Seals Affixed | Other information specified by the customs office. | | Seals Identity | Other information specified by the customs office. | | Time Limit | Other information specified by the customs office. | ## Key Fields * Movement Reference Number * Declaration Type/Part 1 * Declarant/Name * Declarant/EORI Number * Customs Office of Exit # Dangerous Goods Declaration - Document Skill Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/built-in-skills/dangerous-goods-declaration Extract data from Dangerous Goods Declarations (DGD) — IATA-compliant transport documents declaring hazardous goods, classes, packaging, and emergency contacts. The **Dangerous Goods Declaration** skill extracts data from Dangerous Goods Declarations (DGDs) — the transport documents shippers compile to confirm that hazardous goods have been packed, marked, and declared in accordance with IATA Dangerous Goods Regulations. A Dangerous Goods Declaration contains required information necessary to transport the goods without any health and safety risks, as well as without danger to the environment and infrastructure. This information can contain the following: * The class of the dangerous goods and their packaging type * The special provision number * A hazardous material emergency response number. The most common types of dangerous goods have UN-assigned four-digit ID's. Declarations of Dangerous Goods, along with other transport documents required for shipping, must accompany each package and consignment of dangerous goods. The Dangerous Goods Declaration skill is a preview skill. It has been trained on a limited set of documents and is designed to help you quickly get started with processing dangerous goods declarations. For production use, you may need to uptrain the skill with your own document samples.  ## Supported Languages * English ## Extracted Fields Asterisk (`*`) indicates a required field or field group. Values cannot be empty. ### Shipper | Field | Description | | :-------- | :----------------------------- | | Name\* | Information about the shipper. | | Address\* | Information about the shipper. | ### Consignee | Field | Description | | :-------- | :------------------------------- | | Name\* | Information about the consignee. | | Address\* | Information about the consignee. | ### Transportation Details | Field | Description | | :------------------------------------------ | :------------------------------------------------------------------------------------------ | | Transportation Document Number\* | The transportation document number. | | Shipper's Reference Number | Reference number or code for tracking the goods. | | Aircraft Type\* | The aircraft type. | | Airport of Departure or Port of Loading | The airport of departure / the port of loading. | | Airport of Destination or Port of Discharge | The airport of destination / the port of discharge. | | Shipment Type\* | Specifies whether the shipment contains radioactive material (Radioactive/Non-radioactive). | | Additional Handling Information | Any additional information pertaining to safe handling of the goods. | ### Emergency Information (repeating group) | Field | Description | | :--------------------------- | :----------------------------------------------- | | Emergency Telephone Number\* | An emergency hazardous material response number. | ### Certification | Field | Description | | :---------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Name of Signatory | The name of the shipper, the shipper's signature, and date of signing. Serves as confirmation by the shipper that the goods comply with all rules and regulations for transportation of dangerous goods. | | Place and Date | The name of the shipper, the shipper's signature, and date of signing. Serves as confirmation by the shipper that the goods comply with all rules and regulations for transportation of dangerous goods. | ### Line Items (repeating group) *Note: This field isn't available for Fast Learning because it contains a repeating group.* | Field | Description | | :----------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | UN Number or ID Number\* | UN-assigned four-digit number identifying the specific types of hazardous substances and materials in international shipments (assigned by the UN Committee of Experts on the Transport of Dangerous Goods), for example, UN2725 NICKEL NITRATE. | | Proper Shipping Name\* | Standard UN-assigned technical name describing the hazard properties and composition of dangerous goods. | | Number of Pieces\* | The number of separate packages of dangerous goods. | | Package Type\* | The UN packaging identification code. | | Quantity per Package\* | The number of items in a single package. | | Unit of Measure\* | The unit of measurement for the goods. | | Class or Division\* | The ADR (European Agreement concerning the International Carriage of Dangerous Goods by Road) hazard class and subclass of dangerous goods. This field can contain a text string or an alphanumeric value. | | Packing Group | The packing group of the dangerous goods. Specifies the degree of danger that the goods being transported present. Can have one of the following values:
I (substance presents high danger)
II (substance presents medium danger)
III (substance presents low danger) | | Packing Instruction\* | The UN-assigned packing instruction number. | | Overpack Used | Specifies whether the packages containing dangerous goods have been placed inside an overpack. | ## Key Fields * Shipper/Name * Consignee/Name ## Validation Rules | Rule | Description | | :---------------------------- | :-------------------------------------------------------------- | | Overpack Used Checkmark Check | Checks if the Dangerous Goods form has the Overpack Used field. | # Deed of Trust - Document Skill Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/built-in-skills/deed-of-trust Extract data from deeds of trust — borrower, lender, trustee, property, loan terms, and recording details — for US real estate and mortgage workflows. The **Deed of Trust** skill extracts data from deeds of trust — the legal documents that secure a real estate transaction by establishing that a third-party trustee holds legal title to the property until the borrower repays the loan in full. Deeds of trust are recorded in public records, similar to mortgages. The Deed of Trust skill is a preview skill. It has been trained on a limited set of documents and is designed to help you quickly get started with processing deeds of trust. For production use, you may need to uptrain the skill with your own document samples.  The Deed of Trust skill recognizes handwritten text. This option is enabled by default. If you do not import handwritten forms, disable the **Handwritten** option in the skill settings.  ## Countries and Languages | Countries | Languages | | :-------- | :-------- | | USA | English | ## Extracted Fields ### Borrower Info (repeating group) | Field | Description | | :------------- | :------------------------------ | | Name | Information about the borrower. | | Signature | Information about the borrower. | | Signature Date | Information about the borrower. | ### Riders and Provisions | Field | Description | | :----------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------ | | Adjustable Rate Rider | Indicates a specific provision or section that addresses the terms and conditions of an adjustable-rate mortgage (ARM). | | Condominium Rider | Indicates a specific provision or section that addresses the unique considerations and requirements associated with a condominium property. | | Second Home Rider | Indicates a specific provision or section that addresses properties designated as second homes or vacation homes. | | Balloon Rider | Indicates a specific provision or section that addresses a balloon payment arrangement within a loan. | | Planned Unit Development Rider | Indicates a specific provision or section that addresses properties located within a planned unit development. | | Biweekly Rider | Indicates a specific provision or section that addresses a biweekly payment arrangement within a loan. | | 1-4 Family Rider | Indicates a specific provision or section that addresses properties classified as 1-4 family residential properties. | | Revocable Trust Rider | Indicates a specific provision or section that addresses properties held within a revocable trust. | | MERS Rider | Indicates a specific provision or section that pertains to the Mortgage Electronic Registration Systems (MERS). | | Other(s) | Any additional provisions or important details. | ### Document Validation | Field | Description | | :-------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | All Pages Are Present | Specifies whether all numbered pages are present in the document. For example, all pages are deemed to be present if the document contains pages numbered as 1 of 5, 2 of 5, 3 of 5, 4 of 5, and 5 of 5. | ## Key Fields * Borrower Info/Name ## Validation Rules | Rule | Description | | :------------------------------------ | :--------------------------------------------------------------- | | All Pages Are Present Checkmark Value | Sets the value of the **All Pages Are Present** checkmark field. | # Delivery Note - Document Skill Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/built-in-skills/delivery-note Extract data from delivery notes — vendor, buyer, goods description, quantities, and shipment details — used alongside bills of lading for shipping and customs. The **Delivery Note** skill extracts data from delivery notes — the transport documents that accompany shipped goods, recording the goods being transported plus vendor and buyer details. Delivery notes feed electronic transportation records and other customs-related transport documents such as bills of lading. The Delivery Note skill is a preview skill. It has been trained on a limited set of documents and is designed to help you quickly get started with processing delivery notes. For production use, you may need to uptrain the skill with your own document samples.  ## Supported Languages * Czech * English * French * German * Hungarian * Romanian * Spanish ## Extracted Fields Asterisk (`*`) indicates a required field or field group. Values cannot be empty. ### Buyer | Field | Description | | :---------------- | :-------------------------------------------------- | | Name | The name of the buyer. | | Address | The address of the buyer. | | Postal Code | The address of the buyer. | | Street | The address of the buyer. | | City | The address of the buyer. | | State or Province | The address of the buyer. | | Country | The address of the buyer. | | Tax ID | The international tax ID of the buyer. | | IBAN | The international bank account number of the buyer. | ### Vendor | Field | Description | | :---------------- | :--------------------------------------------------- | | Name | The name of the vendor. | | Address | The address of the vendor. | | Postal Code | The address of the vendor. | | Street | The address of the vendor. | | City | The address of the vendor. | | State or Province | The address of the vendor. | | Country | The address of the vendor. | | Tax ID | The international tax ID of the vendor. | | National Tax ID | The national tax ID of the vendor. | | IBAN | The international bank account number of the vendor. | | Bank Code | The bank code of the vendor. | | Bank Account | The bank account number of the vendor. | #### Ship to | Field | Description | | :---------------- | :-------------------- | | Name | The delivery address. | | Address | The delivery address. | | Postal Code | The delivery address. | | Street | The delivery address. | | City | The delivery address. | | State or Province | The delivery address. | | Country | The delivery address. | #### Bill to | Field | Description | | :---------------- | :-------------------------------------------- | | Name | The address where the invoice should be sent. | | Address | The address where the invoice should be sent. | | Postal Code | The address where the invoice should be sent. | | Street | The address where the invoice should be sent. | | City | The address where the invoice should be sent. | | State or Province | The address where the invoice should be sent. | | Country | The address where the invoice should be sent. | ### Document Details | Field | Description | | :--------------------- | :-------------------------------------------------------------------------- | | Delivery Note Number\* | The number of the delivery note. | | Delivery Note Date\* | The date on which the delivery note was issued. | | Delivery Date | The date on which the goods are expected to be delivered. | | Due Date | The date on which the goods are expected to arrive at the delivery address. | | Shipping Date | The date on which the goods are shipped. | | Purchaser Name | The name of the buyer. | | Purchase Order Number | The purchase order number (if one is specified in the document). | | Purchase Order Date | The date when the purchase order was created. | | Invoice Number | The invoice number (if one is specified in the document). | | Delivery Terms | The delivery terms. | ### Amounts | Field | Description | | :------- | :----------------------------------------------- | | Total\* | The total amount specified in the delivery note. | | Currency | The currency of the total amount. | ### Taxes (repeating group) | Field | Description | | :---- | :-------------------- | | Tax | The total tax amount. | ### Additional Costs (repeating group) | Field | Description | | :-------------- | :---------------------------- | | Additional Cost | The total additional charges. | ### Weight Information | Field | Description | | :------------------------- | :-------------------------------------------------------------------------------- | | Total Net Weight | The total net weight of the goods. | | Total Gross Weight | The total gross weight of the goods. | | Weight Unit of Measurement | The unit of measurement for the weight of the goods (such as kilogramsor pounds). | ### Line Items (repeating group) | Field | Description | | :------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | Item Number | The item number. | | Order Number | The order number. | | Article Number | The article number. | | Description | A description of the line item. | | Quantity Ordered | The number of units ordered. | | Unit Price | The price of one item of goods. | | Total Price | The price of the line item including tax. | | Currency | The currency of the line item. | | Delivery Date | The planned delivery date for the line item. | | Quantity Delivered | The number of units delivered. | | Unit of Measurement | The unit of measurement used for the goods. | | Gross Weight | The gross weight of the line item. | | Net Weight | The net weight of the line item. | | Weight Unit of Measurement | The unit of measurement for the weight of the line item (kilograms, pounds, etc.). | | Batch Number | A unique identifier assigned to a specific group or batch of items that are being transported or delivered together. | | Serial Number | A unique identifier assigned to each item of goods. All serial numbers can be extracted together as a single field. | | EAN Number | A unique identifier from the European Article Numbering (EAN) system. The EAN number typically refers to the barcode associated with the specific product being shipped or delivered. | ## Key Fields * Buyer/Name * Vendor/Name * Delivery Note Number * Delivery Note Date * Total ## Validation Rules | Rule | Description | | :------------------------------------------------------ | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Total gross weight: Fill from Line Items | If the **Total Gross Weight** field is empty, the rule will populate that field with the value specified for **Total Gross Weight** in Line Items. | | Total net weight: Fill from Line Items | If the **Total Net Weight** field is empty, the rule will populate that field with the value specified for **Total Net Weight** in Line Items. | | Separate currency from amount in money fields | Splits the amount and the currency in a field containing an amount of money, and copies the currency into the **Currency** field if it is empty. | | Sum of Line Items amount should be equal to Total | Adds up the amounts in the line items, applies the additional charges, and checks that the result is equal to the **Total** amount of the delivery note. | | Separate currency from amount in Line Items money field | Splits the amount and the currency in **Line Items** fields, and copies the currency into the **Currency** field if it is empty. | | Check item amount | Multiplies the number of units in the line item by the price of one unit, applies the discount, and checks that the result is equal to the total price of the line item. | | Copy Delivery Notes and Line Items currency | If the **Currency** field is empty, the rule will populate that field with the currency indicated in the **Currency** field in **Line Items**. Likewise, the rule will populate the **Currency** field in **Line Items** with the currency from the main **Currency** field. The rule can also populate the **Currency** field using the country of the buyer (if it has been detected). Only values matching one of the following currency codes will be copied: USD, EUR, CHF, CZK, GBP, PLN, RUB, HUF, CAD, AUD, NZD, JPY, CNY, DKK, NOK, SEK, BGN, HRK, MDL, RON, or RSD. If the currency is marked using the $, €, US$, CA$, AU$, NZ\$, or £ symbols, the value will still be copied, but it will be normalized to the standard value (i.e. USD, EUR, etc.). | | Check currency value | Checks that the value of the **Currency** field corresponds to the currency format. If the field is empty or if the value does not correspond to the currency format, adds a list of suggested values. | | Check line item currency value | Checks that the value of the **Currency** field in **Line Items** corresponds to the currency format. If the field is empty or if the value does not correspond to the currency format, adds a list of suggested values. | | Delivery Note Number is required | Checks that the **Delivery Note Number** field is not empty. | | Delivery Note Date is required | Checks that the **Delivery Note Date** field is not empty. | | Total is required | Checks that the **Total** field is not empty. | | Currency is required | Checks that the **Currency** field is not empty. | | Vendor VATID is required | Checks that the **Vendor VATID** field is not empty. | # Denial - Document Skill (Preview) Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/built-in-skills/denial Extract data from insurance denial letters — patient, provider, payer, denial reasons, and codes — to streamline appeals and revenue cycle management. The Denial skill is currently available in Preview. The **Denial** skill extracts data from insurance denial letters — the documents an insurance company issues to explain why it is refusing or denying responsibility for payment of medical services or treatment provided to the insured or a family member. The Denial skill is a preview skill. It has been trained on a limited set of documents and is designed to help you quickly get started with processing denials from insurance companies. The Denial skill cannot be trained on additional documents. The Denial skill makes use of a data catalog named DenialReasons, containing the following columns: * `DenialReasonID` * `DenialReasonDescription` The DenialReasons data catalog is filled in with demo values by default. Before using the skill, remove these demo values and add your own custom data into the DenialReasons data catolog. For more information about data catalogs and how to edit them, see the [Skill Designer Guide](/vantage/documentation/skill-designer/document/using-data-catalogs/use). The Denial skill recognizes handwritten text. This option is enabled by default. If you do not import handwritten forms, disable the **Handwritten** option in the skill settings. ## Languages * English ## Extracted Fields | Field | Description | | :------------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Payer | The name of the medical insurance company. | | Entity (Hospital Name) | The name of the health care organization where the service was provided (for example, hospital or clinic). | | Patient Name | The name of the patient. | | Patient Account Number | The unique number assigned to the patient to group charges for a hospital visit. | | Claim Number | The number of the claim. | | Denial Reason | The reason why the claim was denied.
Note: The field can only be obtained from the DenialReasons data catalog. Extraction accuracy depends on the accuracy of the information in the data catalog. | | Remark | Additional information. | | Details (Repeating Group) | Detailed information about the health care services. These fields are used if the data is presented in a tabular format: Patient First Name, Patient Last Name, Patient Account Number Service End Date, Service Start Date, Denial Reason, Claim Number | | Service Start Date | The health care service start date. | | Service End Date | The health care service end date. | ## Key Fields * Patient Name * Patient Account Number ## Parameters The Denial skill has a default parameter that specifies which data catalog is to be used to look up denial reasons. You can change the value of these parameters in Vantage or in Advanced Designer to modify the field extraction process. | Parameter | Description | | :------------ | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | DenialReasons | The predefined data catalog is used for looking up denial reasons. The default value of this parameter is `DenialReasons`. You can change this value by choosing another available data catalog that has the same structure. | # Desktop Underwriting Findings Report - Document Skill Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/built-in-skills/desktop-underwriter Extract data from Desktop Underwriting Findings Reports — borrower credit score, DTI, LTV, and loan conditions — for US mortgage origination and underwriting. The **Desktop Underwriting Findings Report** skill extracts data from Desktop Underwriting (DU) findings reports — the assessments lenders use to evaluate a borrower's creditworthiness and the risk associated with a mortgage loan. These reports typically include the borrower's credit score, debt-to-income (DTI) ratio, loan-to-value (LTV) ratio, and any conditions or stipulations required for loan approval. The Desktop Underwriting Findings Report skill is a preview skill. It has been trained on a limited set of documents and is designed to help you quickly get started with processing desktop underwriting reports. For production use, you may need to uptrain the skill with your own document samples. ## Countries and Languages | Countries | Languages | | :-------- | :-------- | | USA | English | ## Extracted Fields ### Borrower Information (repeating group) | Field | Description | | :--------------- | :------------------------------ | | Name | Information about the borrower. | | Credit Report ID | Information about the borrower. | | Credit Score(s) | Information about the borrower. | ### Loan Assessment | Field | Description | | :------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------- | | Actual or Estimated Appraised Value | The value assigned to a property based on an appraisal report or an automated valuation model (AVM). | | Total Loan Amount | The total amount of the loan being requested by the borrower. | | Preliminary Recommendation or Recommendation | The automated decision or recommendation generated by the DU system based on the information provided about the borrower and the loan application. | | Special Feature Code (repeating field) | A code that is used to indicate specific characteristics or special features associated with a loan application or property. | ## Key Fields * Borrower Information/Name * Borrower Information/Credit Report ID * Borrower Information/Credit Score(s) # Escrow Account Disclosure Statement - Document Skill Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/built-in-skills/escrow-disclosure Extract data from Escrow Account Disclosure Statements — lender, borrower, deposits, and disbursements (insurance, property tax) — for US mortgage servicing. The **Escrow Account Disclosure Statement** skill extracts data from escrow account disclosure statements — the documents lenders issue to summarize escrow accounts that receive part of a mortgage borrower's monthly payment to cover insurance and property tax expenses. The statement records the lender, borrower, deposits made over the reporting period, and the expenses paid from the account. The Escrow Account Disclosure Statement skill is a preview skill. It has been trained on a limited set of documents and is designed to help you quickly get started with processing escrow account disclosure statements. For production use, you may need to uptrain the skill with your own document samples. ## Countries and Languages | Countries | Languages | | :-------- | :-------- | | USA | English | ## Extracted Fields ### Basic Information | Field | Description | | :--------------- | :------------------------------------ | | Loan Number | The loan identifier. | | Disclosure Date | The date of the disclosure. | | Property Address | The address of the financed property. | ### Borrower Information | Field | Description | | :------------------ | :------------------------------ | | Borrower Name | The name of the borrower. | | Borrower Address | The address of the borrower. | | Co-Borrower Name | The name of the co-borrower. | | Co-Borrower Address | The address of the co-borrower. | ### Servicer Information | Field | Description | | :-------------------- | :----------------------------------------- | | Servicer Name | The name of the lending organization. | | Servicer Address | The address of the lending organization. | | Servicer Phone Number | The lending organization's contact number. | ### Current Monthly Mortgage Payment (current reporting period) | Field | Description | | :------------------- | :----------------------------------------------------------- | | Effective Date | The date of the payment. | | Principal & Interest | The monthly payment size (both principal and interest). | | Escrow Deposit | The monthly escrow deposit payment. | | Shortage or Surplus | The total payment shortage/surplus for the reporting period. | | Optional Insurance | The monthly insurance payment. | | Other | Other payments. | | Subsidy | The subsidized amount. | | Total | The total amount payable for the reporting period. | ### New Monthly Mortgage Payment (new reporting period) | Field | Description | | :------------------- | :----------------------------------------------------------- | | Effective Date | The date of the payment. | | Principal & Interest | The monthly payment size (both principal and interest). | | Escrow Deposit | The monthly escrow deposit payment. | | Shortage or Surplus | The total payment shortage/surplus for the reporting period. | | Optional Insurance | The monthly insurance payment. | | Other | Other payments. | | Subsidy | The subsidized amount. | | Total | The total amount payable for the reporting period. | ### New Monthly Mortgage Payment Option 2 (new reporting period) | Field | Description | | :------------------- | :----------------------------------------------------------- | | Effective Date | The date of the payment. | | Principal & Interest | The monthly payment size (both principal and interest). | | Escrow Deposit | The monthly escrow deposit payment. | | Shortage or Surplus | The total payment shortage/surplus for the reporting period. | | Optional Insurance | The monthly insurance payment. | | Other | Other payments. | | Subsidy | The subsidized amount. | | Total | The total amount payable for the reporting period. | ### New Monthly Escrow Payment | Field | Description | | :--------------------- | :------------------------------------------------------------------- | | Monthly Escrow Payment | The size of the monthly escrow payment for the new reporting period. | | Effective Date | The date of the payment. | ### Account Balances | Field | Description | | :------------------------------ | :---------------------------------------------------- | | Projected Annual Escrow Payment | The projected total annual escrow payment. | | Starting Balance Projected | The projected starting balance of the escrow account. | | Starting Balance Required | The required escrow account starting balance. | | Projected Escrow Lowest Balance | The projected lowest escrow account balance. | | Required Escrow Lowest Balance | The required lowest escrow account balance. | | Shortage or Surplus | The escrow shortage or surplus. | | Shortage | The escrow shortage. | | Surplus | The escrow surplus. | ### Projected Escrow Account Transactions (repeating group) | Field | Description | | :------------------- | :--------------------------------------------------------------------------------- | | Month | The reporting month. | | Payments to Escrow | The total payments made to the escrow account. | | Payments from Escrow | The total payments made from the escrow account. | | Description | Description of expenses covered by money from the escrow account. | | Projected Balance | The projected escrow account starting balance for the reporting month (**Month**). | | Required Balance | The required escrow account starting balance for the reporting month (**Month**). | ## Key Fields * Loan Number * Disclosure Date * Borrower Name * New Monthly Mortgage Payment/Total * New Monthly Mortgage Payment/Effective Date * New Monthly Escrow Payment/Monthly Escrow Payment ## Validation Rules | Rule | Description | | :------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Copy Borrower Address to Co-Borrower Address | If the borrower and co-borrower reside at the same address, copies the value of the **Borrower Address** field to the **Co-Borrower Address** field. | | Check and Complete Projected Annual Escrow Payment | Checks that the value of the **Projected Annual Escrow Payment** field is equal to the total sum of all payments from the escrow account (**Payments from Escrow**) over the duration of all reporting periods. If the values are not the same, displays an error message. If the **Projected Annual Escrow Payment** field is not filled in, fills it in using the sum of the **Payments from Escrow** fields for all reporting periods. | | Separate Currency from Amount | Splits the amount and the currency in the following fields: **Starting Balance Projected**, **Projected Balance**, **Projected Escrow Lowest Balance**, **Escrow Shortage Payment**. | | Copy Min ProjBal to Projected Escrow Lowest Bal | If the **Projected Escrow Lowest Balance** field is not filled in, fills it in using the lowest value of all **Projected Balance** fields for the reporting period. | | Copy Min ReqBal to Required Escrow Lowest Bal | If the **Required Escrow Lowest Balance** field is not filled in, fills it in using the lowest value of all **Required Balance** fields for the reporting period. | | Check and Complete Shortage or Surplus | 1. If the **Shortage or Surplus**, **Shortage**, **Projected Escrow Lowest Balance**, **Required Escrow Lowest Balance** fields are not filled in, fills them in using the following value: **ReqBal + (- ProjBal)**. 2. Calculates the values of the **Shortage** and **Surplus** fields. | # Expense Management Skills Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/built-in-skills/expense-management Expense Management skills in ABBYY Vantage extract data from receipts and expense documents — taxi, hotel, restaurant, retail, fuel — for T&E workflows. ABBYY Vantage offers **Expense Management** skills that extract data from expense documents (such as receipts) for a wide range of business expenses — primarily travel and entertainment (T\&E), including hotel, taxi, restaurant, retail, and fuel. To process expense-related documents of different types within one workflow, ABBYY Vantage offers the following built-in skills: * [Expense Management Processing](/vantage/documentation/skill-catalog/built-in-skills/expense-management-processing) * [Expense Management Classifier](/vantage/documentation/skill-catalog/built-in-skills/expense-management-classifier) # Expense Management Classifier Skill Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/built-in-skills/expense-management-classifier Classify expense-related documents into types — taxi, hotel, or other receipts — and route each to the matching Receipt skill in your Vantage workflow. The **Expense Management Classifier** skill identifies and classifies expense-related documents by type — taxi, hotel, or other expenses — routing each receipt to the matching pre-trained Receipt skill in your Vantage workflow: * [Hotel Invoice](/vantage/documentation/skill-catalog/built-in-skills/receipt-skills/hotel-invoice) skill for processing hotel invoices * [Receipt and Receipt CJK](/vantage/documentation/skill-catalog/built-in-skills/receipt-skills/receipt) skills for processing categories of expenses, including general retail, restaurant bills, parking charges, toll payments, gasoline expenses, and other payments, such as tickets or services * [Taxi Receipt](/vantage/documentation/skill-catalog/built-in-skills/receipt-skills/taxi-receipt) skill for processing taxi receipts Languages selected by default: English. # Expense Management Processing Skill Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/built-in-skills/expense-management-processing End-to-end receipt processing — classify expense receipts (taxi, hotel, retail, restaurant, fuel) and apply the matching Receipt skill to extract data. The **Expense Management Processing** skill provides end-to-end receipt processing — first classifying each incoming receipt by type, and then applying the matching Receipt skill ([Hotel Invoice](/vantage/documentation/skill-catalog/built-in-skills/receipt-skills/hotel-invoice), [Receipt or Receipt CJK](/vantage/documentation/skill-catalog/built-in-skills/receipt-skills/receipt), [Taxi Receipt](/vantage/documentation/skill-catalog/built-in-skills/receipt-skills/taxi-receipt)) to extract data. The Expense Management Processing skill can be used to extract data from receipts of the following types: taxi receipts, hotel invoices, and receipts for various other expenses (including expenses from general retail, restaurant bills, parking charges, toll payments, gasoline expenses, and other payments, such as tickets or services). # Form 1040, US Individual Income Tax Return Skill Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/built-in-skills/form-skills/1040 Extract data from IRS Form 1040 and 1040-SR (US Individual Income Tax Return) for tax years 2018-2021: taxpayer details, income, deductions, and refunds. The **Form 1040, U.S. Individual Income Tax Return** skill extracts data from Forms 1040 and 1040-SR (for taxpayers age 65 or older) — the annual income tax returns US taxpayers file with the IRS, covering personal details, income, deductions, and the resulting tax owed or refund expected. This skill processes forms for tax years 2018 through 2021. The **Form 1040, U.S. Individual Income Tax Return** is a production skill. It has been fully trained on a large document set and provides high accuracy of data identification and extraction. The skill is ready to be used in production and does not require further training on your specific documents. Accuracy and straight-through processing (STP) rates can be further optimized in production through continuous learning from human-in-the-loop feedback. This skill recognizes handwritten text. The option is enabled by default. If you do not import handwritten forms, disable the **Handwritten** option in the skill settings.  ## Countries and Languages | Countries | Languages | | :-------- | :-------- | | USA | English | ## Extracted Fields ### Form Information | Field | Description | | :------------------------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | Form | Specifies whether the form is 1040 or 1040-SR. Possible values: 1040, 1040-SR. | | Year | Indicates the year of the form. | | Filing Status | The taxpayer's filing status. Possible values: Single, Married filing jointly, Married filing separately (MFS), Head of household (HOH), Qualifying widow(er) (QW). | | Name of MFS Spouse or HOH or QW Child | The name of the taxpayer's spouse or child. | ### Taxpayer Information | Field | Description | | :--------- | :------------------------------------- | | First Name | The taxpayer's first name. | | Last Name | The taxpayer's last name. | | SSN | The taxpayer's social security number. | ### Spouse Information | Field | Description | | :------------------ | :-------------------------------------------------------------------------------- | | Spouse's First Name | The name and social security number of the taxpayer's spouse (if filing jointly). | | Spouse's Last Name | The name and social security number of the taxpayer's spouse (if filing jointly). | | Spouse's SSN | The name and social security number of the taxpayer's spouse (if filing jointly). | ### Address | Field | Description | | :----------------------------------------------------- | :---------------------- | | Home Address | The taxpayer's address. | | Apartment Number | The taxpayer's address. | | City Town or Post Office State and ZIP Code (outdated) | The taxpayer's address. | | City Town or Post Office | The taxpayer's address. | | State | The taxpayer's address. | | ZIP Code | The taxpayer's address. | | Foreign Country Name | The taxpayer's address. | | Foreign Province or State or Country | The taxpayer's address. | | Foreign Postal Code | The taxpayer's address. | ### Basic Information | Field | Description | | :------------------------------------------------------ | :--------------------------------------------------------------------------------------------- | | Full-Year Health Care Coverage (outdated) | Indicates whether the taxpayer has health insurance coverage. | | Financial Interest in Virtual Currency During This Year | Indicates whether there was any income related to virtual currencies for the reporting period. | ### Presidential Election Campaign | Field | Description | | :----- | :---------------------------------------------------------------------------------------------------------------------------------------- | | You | Indicates whether payments have been made to a Presidential election campaign fund by the taxpayer or his/her spouse (if filing jointly). | | Spouse | Indicates whether payments have been made to a Presidential election campaign fund by the taxpayer or his/her spouse (if filing jointly). | ### Standard Deduction | Field | Description | | :----------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | You as a Dependent | Indicates whether the taxpayer and/or their spouse can be claimed as dependents. | | Your Spouse as a Dependent | Indicates whether the taxpayer and/or their spouse can be claimed as dependents. | | Separate Return or Dual-Status Alien | Indicates whether the taxpayer is filing for separate returns and whether the taxpayer is a dual-status alien (both a U.S. resident alien and a nonresident alien in the same tax year). | #### Age or Blindness - You | Field | Description | | :------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | Born Before January 2, 1957 | Indicates whether the taxpayer or his/her spouse (if filing jointly) was born before January 2, 1957 / 1956 / 1955 / 1954 (depending on the year of the form), and whether he/she is blind. | | Born Before January 2, 1956 (outdated) | Indicates whether the taxpayer or his/her spouse (if filing jointly) was born before January 2, 1957 / 1956 / 1955 / 1954 (depending on the year of the form), and whether he/she is blind. | | Born Before January 2, 1955 (outdated) | Indicates whether the taxpayer or his/her spouse (if filing jointly) was born before January 2, 1957 / 1956 / 1955 / 1954 (depending on the year of the form), and whether he/she is blind. | | Born Before January 2, 1954 (outdated) | Indicates whether the taxpayer or his/her spouse (if filing jointly) was born before January 2, 1957 / 1956 / 1955 / 1954 (depending on the year of the form), and whether he/she is blind. | | Blind | Indicates whether the taxpayer or his/her spouse (if filing jointly) was born before January 2, 1957 / 1956 / 1955 / 1954 (depending on the year of the form), and whether he/she is blind. | #### Age or Blindness - Spouse | Field | Description | | :------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | Born Before January 2, 1957 | Indicates whether the taxpayer or his/her spouse (if filing jointly) was born before January 2, 1957 / 1956 / 1955 / 1954 (depending on the year of the form), and whether he/she is blind. | | Born Before January 2, 1956 (outdated) | Indicates whether the taxpayer or his/her spouse (if filing jointly) was born before January 2, 1957 / 1956 / 1955 / 1954 (depending on the year of the form), and whether he/she is blind. | | Born Before January 2, 1955 (outdated) | Indicates whether the taxpayer or his/her spouse (if filing jointly) was born before January 2, 1957 / 1956 / 1955 / 1954 (depending on the year of the form), and whether he/she is blind. | | Born Before January 2, 1954 (outdated) | Indicates whether the taxpayer or his/her spouse (if filing jointly) was born before January 2, 1957 / 1956 / 1955 / 1954 (depending on the year of the form), and whether he/she is blind. | | Blind | Indicates whether the taxpayer or his/her spouse (if filing jointly) was born before January 2, 1957 / 1956 / 1955 / 1954 (depending on the year of the form), and whether he/she is blind. | ### Dependents | Field | Description | | :------------------------ | :------------------------------------------------------------ | | More than Four Dependents | Indicates whether the taxpayer has more than four dependents. | ### Dependents (repeating group) | Field | Description | | :-------------------------- | :-------------------------------- | | Full Name | Information about the dependents. | | SSN | Information about the dependents. | | Relationship | Information about the dependents. | | Child Tax Credit | Information about the dependents. | | Credit for Other Dependents | Information about the dependents. | ### Income Information | Field | Description | | :--------------------------- | :---------------------------------- | | Wages Salaries Tips | The taxpayer's income and payments. | | Other Income from Schedule 1 | The taxpayer's income and payments. | | Total Income | The taxpayer's income and payments. | #### Tax-Exempt Interest Group | Field | Description | | :------------------ | :---------------------------------- | | Tax-Exempt Interest | The taxpayer's income and payments. | | Taxable Interest | The taxpayer's income and payments. | #### Dividends Group | Field | Description | | :------------------ | :---------------------------------- | | Qualified Dividends | The taxpayer's income and payments. | | Ordinary Dividends | The taxpayer's income and payments. | #### IRAs Pensions and Annuities Group (outdated) | Field | Description | | :------------------------------------- | :---------------------------------- | | IRAs Pensions and Annuities (outdated) | The taxpayer's income and payments. | | Taxable Amount (outdated) | The taxpayer's income and payments. | #### IRA Distributions Group | Field | Description | | :---------------- | :---------------------------------- | | IRA Distributions | The taxpayer's income and payments. | | Taxable Amount | The taxpayer's income and payments. | #### Pensions and Annuities Group | Field | Description | | :--------------------- | :---------------------------------- | | Pensions and Annuities | The taxpayer's income and payments. | | Taxable Amount | The taxpayer's income and payments. | #### Social Security Benefits Group | Field | Description | | :----------------------- | :---------------------------------- | | Social Security Benefits | The taxpayer's income and payments. | | Taxable Amount | The taxpayer's income and payments. | #### Capital Gain or Loss Group | Field | Description | | :---------------------- | :---------------------------------- | | Capital Gain or Loss | The taxpayer's income and payments. | | Schedule D Not Required | The taxpayer's income and payments. | ### Adjustments to Income | Field | Description | | :------------------------------------- | :---------------------------------- | | From Schedule 1 | The taxpayer's income and payments. | | Charitable Contributions (outdated) | The taxpayer's income and payments. | | Total Adjustments to Income (outdated) | The taxpayer's income and payments. | | Adjusted Gross Income | The taxpayer's income and payments. | ### Taxable Income Group | Field | Description | | :---------------------------------------- | :---------------------------------- | | Standard Deduction or Itemized Deductions | The taxpayer's income and payments. | | Charitable Contributions | The taxpayer's income and payments. | | Partial Sum | The taxpayer's income and payments. | | Qualified Business Income Deduction | The taxpayer's income and payments. | | Total Deduction | The taxpayer's income and payments. | | Taxable Income | The taxpayer's income and payments. | ### Tax Group | Field | Description | | :-------------------------------------- | :---------------------------------- | | Tax | The taxpayer's income and payments. | | Form 8814 | The taxpayer's income and payments. | | Form 4972 | The taxpayer's income and payments. | | Other Form | The taxpayer's income and payments. | | Other Form Name | The taxpayer's income and payments. | | Amount from Schedule 2 Check (outdated) | The taxpayer's income and payments. | | Amount from Schedule 2 | The taxpayer's income and payments. | | Group Total | The taxpayer's income and payments. | ### Child Tax Credit Group | Field | Description | | :-------------------------------------- | :---------------------------------- | | Child Tax Credit | The taxpayer's income and payments. | | Amount from Schedule 3 Check (outdated) | The taxpayer's income and payments. | | Amount from Schedule 3 | The taxpayer's income and payments. | | Group Total | The taxpayer's income and payments. | ### Tax Calculations | Field | Description | | :---------------------------------------- | :---------------------------------- | | Tax minus Child Tax Credit | The taxpayer's income and payments. | | Other Taxes Including Self-Employment Tax | The taxpayer's income and payments. | | Total Tax | The taxpayer's income and payments. | ### Federal Income Tax Group | Field | Description | | :------------------------------------------------------------- | :---------------------------------- | | Federal Income Tax Withheld from Forms W-2 and 1099 (outdated) | The taxpayer's income and payments. | | Form W-2 | The taxpayer's income and payments. | | Form 1099 | The taxpayer's income and payments. | | Other Forms | The taxpayer's income and payments. | | Group Total | The taxpayer's income and payments. | ### Tax Payments and Credits | Field | Description | | :------------------------------------------------------------------------ | :---------------------------------- | | This Year Estimated Tax Payments and Amount Applied from Last Year Return | The taxpayer's income and payments. | | Additional Child Tax Credit (Schedule 8812) | The taxpayer's income and payments. | | American Opportunity Credit from Form 8863 | The taxpayer's income and payments. | | Recovery Rebate Credit | The taxpayer's income and payments. | | Amount from Schedule 5 (outdated) | The taxpayer's income and payments. | | Amount from Schedule 3 | The taxpayer's income and payments. | | Total Other Payments and Refundable Credits | The taxpayer's income and payments. | | Total Payments | The taxpayer's income and payments. | ### Earned Income Credit | Field | Description | | :------------------------- | :---------------------------------- | | Earned Income Credit | The taxpayer's income and payments. | | Qualified to Claim the EIC | The taxpayer's income and payments. | | Combat Pay Election | The taxpayer's income and payments. | | Prior Year Earned Income | The taxpayer's income and payments. | ### Payment Resolution | Field | Description | | :------------------------------------------------------- | :---------------------------------------- | | Overpaid Amount | The taxpayer's overpaid amount and debts. | | Overpaid Amount to be Applied to Next Year Estimated Tax | The taxpayer's overpaid amount and debts. | | Owed Amount | The taxpayer's overpaid amount and debts. | | Estimated Tax Penalty | The taxpayer's overpaid amount and debts. | ### Refund Group | Field | Description | | :------------------------- | :------------------------------------------------------------ | | Form 8888 Attached | Specifies whether the Form 8888 is attached. | | Refundable Amount/Refunded | The refund amount. | | Routing Number | The number of the bank's branch where the account was opened. | | Type | The type of account. Possible values: Checking, Saving. | | Account Number | The number of the account. | ### Third Party Designee | Field | Description | | :---------------------------------- | :------------------------------------------------------------------------------------------------------------------------- | | Another Person Can Discuss with IRS | The contact information of the taxpayer's representative that is authorized to discuss the taxpayer's return with the IRS. | | Designee's Name | The contact information of the taxpayer's representative that is authorized to discuss the taxpayer's return with the IRS. | | Phone Number | The contact information of the taxpayer's representative that is authorized to discuss the taxpayer's return with the IRS. | | PIN | The contact information of the taxpayer's representative that is authorized to discuss the taxpayer's return with the IRS. | ### Signature | Field | Description | | :---------------------- | :------------------------ | | Date | The taxpayer's signature. | | Occupation | The taxpayer's signature. | | Identity Protection PIN | The taxpayer's signature. | ### Spouse's Signature | Field | Description | | :---------------------- | :------------------------------------------ | | Date | The spouse's signature (if filing jointly). | | Occupation | The spouse's signature (if filing jointly). | | Identity Protection PIN | The spouse's signature (if filing jointly). | | Phone Number | The spouse's signature (if filing jointly). | | Email Address | The spouse's signature (if filing jointly). | ### Preparer | Field | Description | | :------------------------------ | :--------------------------------------------------------------------------------------------------- | | Preparer's Name | Details of the preparer of the tax return (if the return is completed and filed by a paid preparer). | | Date | Details of the preparer of the tax return (if the return is completed and filed by a paid preparer). | | PTIN | Details of the preparer of the tax return (if the return is completed and filed by a paid preparer). | | Firm's Name | Details of the preparer of the tax return (if the return is completed and filed by a paid preparer). | | Firm's Address | Details of the preparer of the tax return (if the return is completed and filed by a paid preparer). | | Phone Number | Details of the preparer of the tax return (if the return is completed and filed by a paid preparer). | | Firm's EIN | Details of the preparer of the tax return (if the return is completed and filed by a paid preparer). | | Third Party Designee (outdated) | Details of the preparer of the tax return (if the return is completed and filed by a paid preparer). | | Self-Employed | Details of the preparer of the tax return (if the return is completed and filed by a paid preparer). | ## Key Fields * First Name * Last Name * SSN * Signature/Date ## Validation Rules | Rule | Description | | :-------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Check Year | Checks the value in the **Year** field, which can only be one of the following: 2018, 2019, 2020, 2021. If the extracted field value is different, displays a message saying that the processed form is not supported by the skill. | | Clean Code | Checks for non-numeric values and replaces them with empty strings in **Refund Group/Account Number**, **Refund Group/Routing Number**, **Signature/Identity Protection PIN**, **Spouse's Signature/Identity Protection PIN**, **SSN**, and **Spouse/Spouse's SSN**. For example, SSN 555-55-5555 changes to 555555555. | | Clean Email | Checks for incorrect values in the **Spouse’s Signature/Email Address** field and replaces them with supported values. For example, Email Address [joe@mail.com](mailto:joe@mail.com) changes to [joe@gmail.com](mailto:joe@gmail.com). | | Form Type Check | Checks that the form is either Form 1040 and/or Form 1040-SR. | # Form 1040 (US Individual Income Tax Return), 2022-2023 Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/built-in-skills/form-skills/1040-2022-2023 Extract data from IRS Form 1040 and 1040-SR (US Individual Income Tax Return) for tax years 2022 and 2023: taxpayer details, income, deductions, totals. The **Form 1040, U.S. Individual Income Tax Return, 2022, 2023** skill extracts key data from 1040 and 1040-SR tax forms for years 2022 and 2023.  Form 1040, U.S. Individual Income Tax Return, 2022, 2023 is a production skill. It has been fully trained on a large document set and provides high accuracy of data identification and extraction. The skill is ready to be used in production and does not require further training on your specific documents. Accuracy and straight-through processing (STP) rates can be further optimized in production through continuous learning from human-in-the-loop feedback. This skill recognizes handwritten text. The option is enabled by default. If you do not import handwritten forms, disable the **Handwritten** option in the skill settings. ## Countries and Languages | Countries | Languages | | :-------- | :-------- | | USA | English | ## Extracted Fields ### Form Information | Field | Description | | :------------------------------------ | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Form | Specifies whether the form is 1040 or 1040-SR. Possible values: 1040, 1040-SR. | | Year | Indicates the year of the form. | | Tax Year Beginning Date | The beginning date of the tax year. | | Tax Year Ending Date | The ending date of the tax year. | | Filing Status | The taxpayer's filing status. Possible values: Single, Married filing jointly, Married filing separately (MFS), Head of household (HOH), Qualifying surviving spouse (QSS). | | Name of MFS Spouse or HOH or QW Child | The name of the taxpayer's spouse or child. | ### Taxpayer Information | Field | Description | | :--------- | :------------------------------------- | | First Name | The taxpayer's first name. | | Last Name | The taxpayer's last name. | | SSN | The taxpayer's social security number. | ### Spouse Information | Field | Description | | :------------------ | :-------------------------------------------------------------------------------- | | Spouse's First Name | The name and social security number of the taxpayer's spouse (if filing jointly). | | Spouse's Last Name | The name and social security number of the taxpayer's spouse (if filing jointly). | | Spouse's SSN | The name and social security number of the taxpayer's spouse (if filing jointly). | ### Address | Field | Description | | :----------------------------------- | :---------------------- | | Home Address | The taxpayer's address. | | Apartment Number | The taxpayer's address. | | City Town or Post Office | The taxpayer's address. | | State | The taxpayer's address. | | ZIP Code | The taxpayer's address. | | Foreign Country Name | The taxpayer's address. | | Foreign Province or State or Country | The taxpayer's address. | | Foreign Postal Code | The taxpayer's address. | ### Presidential Election Campaign | Field | Description | | :----- | :---------------------------------------------------------------------------------------------------------------------------------------- | | You | Indicates whether payments have been made to a Presidential election campaign fund by the taxpayer or his/her spouse (if filing jointly). | | Spouse | Indicates whether payments have been made to a Presidential election campaign fund by the taxpayer or his/her spouse (if filing jointly). | ### Digital Assets | Field | Description | | :------------- | :----------------------------------------------------------------------------------------------------------------------- | | Digital Assets | Indicates whether there was any income related to virtual currencies for the reporting period. Possible values: Yes, No. | ### Standard Deduction | Field | Description | | :----------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | You as a Dependent | Indicates whether the taxpayer and/or their spouse can be claimed as dependents. | | Your Spouse as a Dependent | Indicates whether the taxpayer and/or their spouse can be claimed as dependents. | | Separate Return or Dual-Status Alien | Indicates whether the taxpayer is filing for separate returns and whether the taxpayer is a dual-status alien (both a U.S. resident alien and a nonresident alien in the same tax year). | #### Age or Blindness - You | Field | Description | | :------------------------------------------------------------------------- | :---------------------------------------------------------------------------------- | | Individual is 65 Years of Age or Over as of January 2 of the Current Year. | Indicates if the taxpayer is 65 years or older as of January 2 of the current year. | | Blind | Indicates if the taxpayer is blind. | #### Age or Blindness - Spouse | Field | Description | | :------------------------------------------------------------------------ | :-------------------------------------------------------------------------------- | | Individual is 65 Years of Age or Over as of January 2 of the Current Year | Indicates if the spouse is 65 years or older as of January 2 of the current year. | | Blind | Indicates if the spouse is blind. | ### Dependents | Field | Description | | :------------------------ | :------------------------------------------------------------ | | More than Four Dependents | Indicates whether the taxpayer has more than four dependents. | ### Dependents (repeating group) | Field | Description | | :-------------------------- | :-------------------------------- | | Full Name | Information about the dependents. | | SSN | Information about the dependents. | | Relationship | Information about the dependents. | | Child Tax Credit | Information about the dependents. | | Credit for Other Dependents | Information about the dependents. | ### Box 1 Group - Wages and Income | Field | Description | | :---------------------------------------------------------- | :---------------------------------- | | Box 1a - Total Amount from Form W-2 Box 1 | The taxpayer's income and payments. | | Box 1b - Household Employee Wages | The taxpayer's income and payments. | | Box 1c - Tip Income | The taxpayer's income and payments. | | Box 1d - Medicaid Waiver Payments | The taxpayer's income and payments. | | Box 1e - Taxable Dependent Care Benefits from Form 2441 | The taxpayer's income and payments. | | Box 1f - Employer-Provided Adoption Benefits from Form 8839 | The taxpayer's income and payments. | | Box 1g - Wages from Form 8919 | The taxpayer's income and payments. | | Box 1h - Other Earned Income | The taxpayer's income and payments. | | Box 1i - Nontaxable Combat Pay Election | The taxpayer's income and payments. | | Box 1z - Group Total | The taxpayer's income and payments. | ### Box 2 Group - Interest | Field | Description | | :--------------------------- | :---------------------------------- | | Box 2a - Tax-Exempt Interest | The taxpayer's income and payments. | | Box 2b - Taxable Interest | The taxpayer's income and payments. | ### Box 3 Group - Dividends | Field | Description | | :--------------------------- | :---------------------------------- | | Box 3a - Qualified Dividends | The taxpayer's income and payments. | | Box 3b - Ordinary Dividends | The taxpayer's income and payments. | ### Box 4 Group - IRA Distributions | Field | Description | | :------------------------- | :---------------------------------- | | Box 4a - IRA Distributions | The taxpayer's income and payments. | | Box 4b - Taxable Amount | The taxpayer's income and payments. | ### Box 5 Group - Pensions and Annuities | Field | Description | | :------------------------------ | :---------------------------------- | | Box 5a - Pensions and Annuities | The taxpayer's income and payments. | | Box 5b - Taxable Amount | The taxpayer's income and payments. | ### Box 6 Group - Social Security Benefits | Field | Description | | :---------------------------------------- | :---------------------------------- | | Box 6a - Social Security Benefits | The taxpayer's income and payments. | | Box 6b - Taxable Amount | The taxpayer's income and payments. | | Box 6c - Use the Lump-Sum Election Method | The taxpayer's income and payments. | ### Box 7 Group - Capital Gains | Field | Description | | :--------------------------- | :---------------------------------- | | Schedule D Not Required | The taxpayer's income and payments. | | Box 7 - Capital Gain or Loss | The taxpayer's income and payments. | ### Income Summary | Field | Description | | :--------------------------------------------- | :---------------------------------- | | Box 8 - Other Income from Schedule 1 | The taxpayer's income and payments. | | Box 9 - Total Income | The taxpayer's income and payments. | | Box 10 - Adjustments to Income from Schedule 1 | The taxpayer's income and payments. | | Box 11 - Adjusted Gross Income | The taxpayer's income and payments. | ### Deductions | Field | Description | | :------------------------------------------------- | :---------------------------------- | | Box 12 - Standard Deduction or Itemized Deductions | The taxpayer's income and payments. | | Box 13 - Qualified Business Income Deduction | The taxpayer's income and payments. | | Box 14 - Total of Boxes 12 and 13 | The taxpayer's income and payments. | | Box 15 - Taxable Income | The taxpayer's income and payments. | ### Box 16 Group - Tax Calculation | Field | Description | | :------------------ | :---------------------------------- | | 1 - Form 8814 | The taxpayer's income and payments. | | 2 - Form 4972 | The taxpayer's income and payments. | | 3 - Other Form | The taxpayer's income and payments. | | 3 - Other Form Name | The taxpayer's income and payments. | | Box 16 - Tax | The taxpayer's income and payments. | ### Tax and Credits | Field | Description | | :------------------------------------------------- | :---------------------------------- | | Box 17 - Amount from Schedule 2 | The taxpayer's income and payments. | | Box 18 - Total of Boxes 16 and 17 | The taxpayer's income and payments. | | Box 19 - Child Tax Credit | The taxpayer's income and payments. | | Box 20 - Amount from Schedule 3 | The taxpayer's income and payments. | | Box 21 - Total of Boxes 19 and 20 | The taxpayer's income and payments. | | Box 22 - Tax Minus Child Tax Credit | The taxpayer's income and payments. | | Box 23 - Other Taxes Including Self-Employment Tax | The taxpayer's income and payments. | | Box 24 - Total Tax | The taxpayer's income and payments. | ### Box 25 Group - Federal Income Tax Withheld | Field | Description | | :-------------------- | :---------------------------------- | | Box 25a - Form W-2 | The taxpayer's income and payments. | | Box 25b - Form 1099 | The taxpayer's income and payments. | | Box 25c - Other Forms | The taxpayer's income and payments. | | Box 25d - Group Total | The taxpayer's income and payments. | ### Payments and Credits | Field | Description | | :---------------------------------------------------------------------------------------- | :---------------------------------- | | Box 26 - Current Year’s Estimated Tax Payments and Amount Applied from Last Year’s Return | The taxpayer's income and payments. | | Box 27 - Earned Income Credit | The taxpayer's income and payments. | | Box 28 - Additional Child Tax Credit from Schedule 8812 | The taxpayer's income and payments. | | Box 29 - American Opportunity Credit from Form 8863 | The taxpayer's income and payments. | | Box 31 - Amount from Schedule 3 | The taxpayer's income and payments. | | Box 32 - Total Other Payments and Refundable Credits | The taxpayer's income and payments. | | Box 33 - Total Payments | The taxpayer's income and payments. | | Box 34 - Overpaid Amount | The taxpayer's income and payments. | ### Box 35 Group - Refund Information | Field | Description | | :--------------------------- | :------------------------------------------------------------ | | Box 35a - Form 8888 Attached | Specifies whether the Form 8888 is attached. | | Box 35a - Refundable Amount | The refund amount. | | Box 35b - Routing Number | The number of the bank's branch where the account was opened. | | Checking | The type of account. Possible values: Checking, Saving. | | Saving | The type of account. Possible values: Checking, Saving. | | Box 35d - Account Number | The number of the account. | ### Payment Resolution | Field | Description | | :------------------------------------------------------------------ | :----------------------------------------- | | Box 36 - Overpaid Amount to be Applied to Next Year's Estimated Tax | The taxpayer's overpaid amounts and debts. | | Box 37 - Owed Amount | The taxpayer's overpaid amounts and debts. | | Box 38 - Estimated Tax Penalty | The taxpayer's overpaid amounts and debts. | ### Third Party Designee | Field | Description | | :---------------------------------- | :------------------------------------------------------------------------------------------------------------------------- | | Another Person Can Discuss with IRS | The contact information of the taxpayer's representative that is authorized to discuss the taxpayer's return with the IRS. | | Designee's Name | The contact information of the taxpayer's representative that is authorized to discuss the taxpayer's return with the IRS. | | Phone Number | The contact information of the taxpayer's representative that is authorized to discuss the taxpayer's return with the IRS. | | PIN | The contact information of the taxpayer's representative that is authorized to discuss the taxpayer's return with the IRS. | ### Signature | Field | Description | | :---------------------- | :------------------------ | | Date | The taxpayer's signature. | | Occupation | The taxpayer's signature. | | Identity Protection PIN | The taxpayer's signature. | ### Spouse's Signature | Field | Description | | :---------------------- | :------------------------------------------ | | Date | The spouse's signature (if filing jointly). | | Occupation | The spouse's signature (if filing jointly). | | Identity Protection PIN | The spouse's signature (if filing jointly). | | Phone Number | The spouse's signature (if filing jointly). | | Email Address | The spouse's signature (if filing jointly). | ### Preparer | Field | Description | | :-------------- | :--------------------------------------------------------------------------------------------------- | | Preparer's Name | Details of the preparer of the tax return (if the return is completed and filed by a paid preparer). | | Date | Details of the preparer of the tax return (if the return is completed and filed by a paid preparer). | | PTIN | Details of the preparer of the tax return (if the return is completed and filed by a paid preparer). | | Firm's Name | Details of the preparer of the tax return (if the return is completed and filed by a paid preparer). | | Firm's Address | Details of the preparer of the tax return (if the return is completed and filed by a paid preparer). | | Phone Number | Details of the preparer of the tax return (if the return is completed and filed by a paid preparer). | | Firm's EIN | Details of the preparer of the tax return (if the return is completed and filed by a paid preparer). | | Self-Employed | Details of the preparer of the tax return (if the return is completed and filed by a paid preparer). | ## Key Fields * First Name * Last Name * SSN * Signature/Date ## Validation Rules | Rule | Description | | :-------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Clean Email | Checks for incorrect values in the **Spouse’s Signature/Email Address** field and replaces them with supported values. For example, Email Address [joe@mail.com](mailto:joe@mail.com) changes to [joe@gmail.com](mailto:joe@gmail.com). | | Clean Code | Checks for non-numeric values and replaces them with empty strings in **SSN**, **Third Party Designee/PIN**, **Signature/Identity Protection PIN**, **Spouse’s Signature/Identity Protection PIN**, **Spouse/Spouse's SSN**, **Box 35 Group/Box 35b - Routing Number**, and **Box 35 Group/Box 35d - Account Number** fields. For example, SSN 555-55-5555 changes to 555555555. | | Clean Year | Checks the value in the **Year** field. It converts 2-digit and 3-digit years (such as 22 or 022) into a 4-digit format (such as 2022). It assumes all 2-digit and 3-digit years are 2022 or 2023. | | Form Type Check | Checks that the form is either Form 1040 and/or Form 1040-SR. | | Check Year | Checks the value in the **Year** field, which can only be 2022 or 2023. If the extracted field value is different, displays a message saying that the processed form is not supported by the skill. | # Form 1040 Classifier Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/built-in-skills/form-skills/1040-classifier Classify Forms 1040 by tax year and route each form to the matching Vantage Form 1040 skill — supports tax years 2018 through 2023. The **Form 1040 Classifier** skill identifies and classifies Forms 1040 by tax year, routing each form to the matching pre-trained Form 1040 Document skill in Vantage: * [Form 1040, U.S. Individual Income Tax Return, 2022, 2023](/vantage/documentation/skill-catalog/built-in-skills/form-skills/1040-2022-2023) for processing forms for the tax year of 2022 and 2023. * [Form 1040, U.S. Individual Income Tax Return](/vantage/documentation/skill-catalog/built-in-skills/form-skills/1040) for processing forms for the tax years of 2018, 2019, 2020 and 2021. # Form 1040, U.S. Individual Income Tax Return Skills Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/built-in-skills/form-skills/1040-overview Process IRS Form 1040 and 1040-SR — US Individual Income Tax Return — using the Vantage Form 1040 skills, with a Form 1040 Classifier to route by tax year. The **Form 1040, U.S. Individual Income Tax Return** skill extracts data from Forms 1040 and 1040-SR (for taxpayers who are age 65 or older), completed by U.S. taxpayers to file their annual income tax returns with the IRS. The form is divided into sections where taxpayers can report their income and deductions to determine the amount of tax they owe or the refund they expect to receive. The form also contains personal details about the taxpayer, his or her spouse, and dependents. ABBYY Vantage includes the following built-in Tax Form 1040 skills: * [Form 1040, U.S. Individual Income Tax Return, 2022, 2023](/vantage/documentation/skill-catalog/built-in-skills/form-skills/1040-2022-2023) for processing forms for the tax years of 2022 and 2023. * [Form 1040, U.S. Individual Income Tax Return](/vantage/documentation/skill-catalog/built-in-skills/form-skills/1040) for processing forms for the tax years of 2018, 2019, 2020 and 2021. To identify and classify Forms 1040 based on their year, ABBYY Vantage offers the [Form 1040 Classifier](/vantage/documentation/skill-catalog/built-in-skills/form-skills/1040-classifier) skill. # Form 1095-A, Health Insurance Marketplace Statement Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/built-in-skills/form-skills/1095-a Extract data from IRS Form 1095-A (Health Insurance Marketplace Statement) — coverage effective date, monthly premiums, and advance premium tax credit. The **Form 1095-A, Health Insurance Marketplace Statement** skill extracts data from Forms 1095-A, which are used to report certain information to the Internal Revenue Service (IRS) about individuals who enroll in a qualified health plan through the Health Insurance Marketplace. It includes information such as the effective date of the coverage, the premium amounts paid monthly, and any advance payments of the premium tax credit or subsidy. The Form 1095-A, Health Insurance Marketplace Statement skill is a preview skill. It has been trained on a limited set of documents and is designed to help you quickly get started with processing Forms 1095-A. For production use, you may need to uptrain the skill with your own document samples. This skill recognizes handwritten text. The option is enabled by default. If you do not import handwritten forms, disable the **Handwritten** option in the skill settings. ## Countries and Languages | Countries | Languages | | :-------- | :-------- | | USA | English | ## Extracted Fields ### Form Information | Field | Description | | :-------- | :------------------------------------------------------------------------------------- | | Year | The reporting fiscal year. | | Void | Specifies that the processed form should be annulled. | | Corrected | Specifies that the processed form is being submitted to correct data provided earlier. | ### Part I - Recipient Information | Field | Description | | :------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------- | | Marketplace Identifier | The identifier of the Marketplace where the recipient enrolled in the coverage. | | Marketplace-Assigned Policy Number | The policy number assigned by the Marketplace to identify the policy in which the recipient enrolled. | | Policy Issuer's Name | The name of the insurance company that issued the recipient's policy. | | Recipient's Name | The name of the recipient. | | Recipient's SSN | The Social Security Number (SSN) of the recipient. | | Recipient's Date of Birth | The date of birth of the recipient. | | Recipient's Spouse's Name | The name of the recipient's spouse. Information about the recipient's spouse is entered only if advance credit payments were made for the coverage. | | Recipient's Spouse's SSN | The Social Security Number (SSN) of the recipient's spouse. | | Recipient's Spouse's Date of Birth | The date of birth of the recipient's spouse. | | Policy Start Date | The starting date of the policy. | | Policy Termination Date | The ending date of the policy. | | Street Address | The address of the recipient. | | City or Town | The address of the recipient. | | State or Province | The address of the recipient. | | Country and ZIP or Foreign Postal Code | The address of the recipient. | ### Part II - Covered Individuals (table) | Field | Description | | :------------------------------- | :---------------------------------------------------------------------- | | Covered Individual Name | The name of the individual who is covered under the recipient's policy. | | Covered Individual SSN | The Social Security Number (SSN) of the individual. | | Covered Individual Date of Birth | The date of birth of the individual. | | Coverage Start Date | The starting date of the coverage. | | Coverage Termination Date | The ending date of the coverage. | ### Part III - Coverage Information (table) | Field | Description | | :----------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Month | Month of the insurance coverage. | | Monthly Enrollment Premiums | The monthly premiums for the plan in which the recipient or his family members were enrolled, including premiums that the recipient paid and premiums that were paid through advance payments of the premium tax credit. | | Monthly Second Lowest Cost Silver Plan (SLCSP) Premium | The monthly premium for the second lowest cost silver plan (SLCSP) that the Marketplace has determined, which applies to members of the recipient's family enrolled in the coverage. | | Monthly Advance Payment of Premium Tax Credit | The monthly amount of advance credit payments that were made to the insurance company on behalf of the recipient to pay for all or part of the premiums for his coverage. | ### Annual Totals | Field | Description | | :-------------------------------------------------------------------- | :------------------------------------------------------- | | Monthly Enrollment Premiums - Annual Total | The total amount of the monthly enrollment premiums. | | Monthly Second Lowest Cost Silver Plan (SLCSP) Premium - Annual Total | The total amount of the monthly SLCSP premiums. | | Monthly Advance Payment of Premium Tax Credit - Annual Total | The total amount of the monthly advance credit payments. | ## Key Fields * Part I - Recipient Information/Marketplace Identifier * Part I - Recipient Information/Recipient's Name * Part I - Recipient Information/Recipient's SSN ## Validation Rules | Rule | Description | | :--------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Clean Year | Checks the value in the **Year** field. It converts a 2-digit year (such as 24) into a 4-digit format (such as 2024). It assumes all 2-digit years are in the 2000s. | # Form 1095-B, Health Coverage - Document Skill Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/built-in-skills/form-skills/1095-b Extract data from IRS Form 1095-B (Health Coverage) used to report minimum essential health coverage and exemption from the shared responsibility payment. The **Form 1095-B, Health Coverage** skill extracts data from Forms 1095-B, which are used to report certain information to the Internal Revenue Service (IRS) and to taxpayers about individuals who have minimum essential coverage and are exempt from paying the individual shared responsibility payment. The Form 1095-B, Health Coverage skill is a preview skill. It has been trained on a limited set of documents and is designed to help you quickly get started with processing Forms 1095-B. For production use, you may need to uptrain the skill with your own document samples. This skill recognizes handwritten text. The option is enabled by default. If you do not import handwritten forms, disable the **Handwritten** option in the skill settings. ## Countries and Languages | Countries | Languages | | :-------- | :-------- | | USA | English | ## Extracted Fields ### Form Information | Field | Description | | :-------- | :------------------------------------------------------------------------------------- | | Year | The reporting fiscal year. | | Void | Specifies that the processed form should be annulled. | | Corrected | Specifies that the processed form is being submitted to correct data provided earlier. | ### Part I - Responsible Individual | Field | Description | | :----------------------------------------------- | :------------------------------------------------------------------------------------------------------------ | | Name | The name of the responsible individual. | | Social Security Number or Other TIN | The Social Security Number (SSN) or other Taxpayer Identification Number (TIN) of the responsible individual. | | Date of Birth | The date of birth of the responsible individual. | | Street Address | The address of the responsible individual. | | City or Town | The address of the responsible individual. | | State or Province | The address of the responsible individual. | | Country and ZIP or Foreign Postal Code | The address of the responsible individual. | | Letter Identifying Origin of the Health Coverage | The letter identifying the Origin of the Health Coverage. | ### Part II - Information About Certain Employer-Sponsored Coverage | Field | Description | | :------------------------------------- | :-------------------------------------------------------------------------------- | | Employer Name | The name of the employer sponsoring the coverage. | | Employer Identification Number | The Employer Identification Number (EIN) of the employer sponsoring the coverage. | | Street Address | The address of the employer sponsoring the coverage. | | City or Town | The address of the employer sponsoring the coverage. | | State or Province | The address of the employer sponsoring the coverage. | | Country and ZIP or Foreign Postal Code | The address of the employer sponsoring the coverage. | ### Part III - Issuer or Other Coverage Provider | Field | Description | | :------------------------------------- | :--------------------------------------------------------------------------------- | | Name | The name of the issuer or other coverage provider. | | Employer Identification Number | The Employer Identification Number (EIN) of the issuer or other coverage provider. | | Contact Telephone Number | The phone number of the issuer or other coverage provider. | | Street Address | The address of the issuer or other coverage provider. | | City or Town | The address of the issuer or other coverage provider. | | State or Province | The address of the issuer or other coverage provider. | | Country and ZIP or Foreign Postal Code | The address of the issuer or other coverage provider. | ### Part IV - Covered Individuals (table) | Field | Description | | :-------------------- | :--------------------------------------------------------------------------------------------------------------- | | Name | The name of each covered individual. | | SSN or TIN | The Social Security Number (SSN) or other Taxpayer Identification Number (TIN) for each covered individual. | | DOB | The date of birth (YYYY/MM/DD) for the covered individual. | | Covered All 12 Months | Indicates that the individual was covered for at least one day per month for all 12 months of the calendar year. | #### Monthly Coverage | Field | Description | | :---- | :--------------------------------------------------------------------- | | Jan | The month(s) in which the individual was covered for at least one day. | | Feb | The month(s) in which the individual was covered for at least one day. | | Mar | The month(s) in which the individual was covered for at least one day. | | Apr | The month(s) in which the individual was covered for at least one day. | | May | The month(s) in which the individual was covered for at least one day. | | June | The month(s) in which the individual was covered for at least one day. | | July | The month(s) in which the individual was covered for at least one day. | | Aug | The month(s) in which the individual was covered for at least one day. | | Sept | The month(s) in which the individual was covered for at least one day. | | Oct | The month(s) in which the individual was covered for at least one day. | | Nov | The month(s) in which the individual was covered for at least one day. | | Dec | The month(s) in which the individual was covered for at least one day. | ## Key Fields * Part I - Responsible Individual/Name * Part I - Responsible Individual/Social Security Number or Other TIN * Part III - Issuer or Other Coverage Provider/Name * Part III - Issuer or Other Coverage Provider/Employer Identification Number ## Validation Rules | Rule | Description | | :--------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Clean Name | Checks for unsupported characters such as \| and ] in name fields. It also cleans multiple spaces, tabs, and newlines. | | Clean Year | Checks the value in the **Year** field. It converts a 2-digit year (such as 24) into a 4-digit format (such as 2024). It assumes all 2-digit years are in the 2000s. | # Form 1095-C, Employer Health Insurance Coverage Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/built-in-skills/form-skills/1095-c Extract data from IRS Form 1095-C (Employer-Provided Health Insurance Offer and Coverage) reporting health insurance offered by applicable large employers. The **Form 1095-C, Employer-Provided Health Insurance Offer and Coverage** skill extracts data from Forms 1095-C, which are used to provide information to employees and the Internal Revenue Service (IRS) about health insurance coverage offered by employers. The Form 1095-C, Employer-Provided Health Insurance Offer and Coverage skill is a preview skill. It has been trained on a limited set of documents and is designed to help you quickly get started with processing Forms 1095-C. For production use, you may need to uptrain the skill with your own document samples. This skill recognizes handwritten text. The option is enabled by default. If you do not import handwritten forms, disable the **Handwritten** option in the skill settings. ## Countries and Languages | Countries | Languages | | :-------- | :-------- | | USA | English | ## Basic Form Information | Field | Description | | :-------- | :------------------------------------------------------------------------------------- | | Year | The name of the health insurance carrier. | | Void | Specifies that the processed form should be annulled. | | Corrected | Specifies that the processed form is being submitted to correct data provided earlier. | ## Part I - Employee and Employer Information ### Employee Information | Field | Description | | :------------------------------------- | :-------------------------------------------------------- | | Name of Employee | The name of the covered employee. | | Social Security Number | The Social Security Number (SSN) of the covered employee. | | Street Address | The address of the covered employee. | | City or Town | The address of the covered employee. | | State or Province | The address of the covered employee. | | Country and ZIP or Foreign Postal Code | The address of the covered employee. | ### Employer Information | Field | Description | | :------------------------------------- | :-------------------------------------------------------------------------------- | | Name of Employer | The name of the employer sponsoring the coverage. | | Employer Identification Number | The Employer Identification Number (EIN) of the employer sponsoring the coverage. | | Street Address | The address and phone number of the employer sponsoring the coverage. | | Contact Telephone Number | The address and phone number of the employer sponsoring the coverage. | | City or Town | The address and phone number of the employer sponsoring the coverage. | | State or Province | The address and phone number of the employer sponsoring the coverage. | | Country and ZIP or Foreign Postal Code | The address and phone number of the employer sponsoring the coverage. | ## Part II - Coverage Information ### General Coverage Details | Field | Description | | :-------------------------- | :----------------------------------------------------------------------- | | Employee's Age on January 1 | The age of the employee as of January 1st of the previous calendar year. | | Plan Start Month | The month in which the employer's health insurance plan year begins. | ### Offer of Coverage Table Contains codes from Code Series 1 for each calendar month. If the same code applies for all 12 calendar months, only the **All 12 Months** column contains the applicable code. | Month | Description | | :------------ | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | All 12 Months | Contains codes from Code Series 1 for each calendar month. If the same code applies for all 12 calendar months, only the All 12 Months column contains the applicable code. | | Jan | Contains codes from Code Series 1 for each calendar month. If the same code applies for all 12 calendar months, only the All 12 Months column contains the applicable code. | | Feb | Contains codes from Code Series 1 for each calendar month. If the same code applies for all 12 calendar months, only the All 12 Months column contains the applicable code. | | Mar | Contains codes from Code Series 1 for each calendar month. If the same code applies for all 12 calendar months, only the All 12 Months column contains the applicable code. | | Apr | Contains codes from Code Series 1 for each calendar month. If the same code applies for all 12 calendar months, only the All 12 Months column contains the applicable code. | | May | Contains codes from Code Series 1 for each calendar month. If the same code applies for all 12 calendar months, only the All 12 Months column contains the applicable code. | | June | Contains codes from Code Series 1 for each calendar month. If the same code applies for all 12 calendar months, only the All 12 Months column contains the applicable code. | | July | Contains codes from Code Series 1 for each calendar month. If the same code applies for all 12 calendar months, only the All 12 Months column contains the applicable code. | | Aug | Contains codes from Code Series 1 for each calendar month. If the same code applies for all 12 calendar months, only the All 12 Months column contains the applicable code. | | Sept | Contains codes from Code Series 1 for each calendar month. If the same code applies for all 12 calendar months, only the All 12 Months column contains the applicable code. | | Oct | Contains codes from Code Series 1 for each calendar month. If the same code applies for all 12 calendar months, only the All 12 Months column contains the applicable code. | | Nov | Contains codes from Code Series 1 for each calendar month. If the same code applies for all 12 calendar months, only the All 12 Months column contains the applicable code. | | Dec | Contains codes from Code Series 1 for each calendar month. If the same code applies for all 12 calendar months, only the All 12 Months column contains the applicable code. | ### Employee Required Contribution Table Contains the amount of the Employee Required Contribution for each month. If the same amount applies for all 12 calendar months, only the **All 12 Months** column contains the monthly amount. | Month | Description | | :------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | All 12 Months | Contains the amount of the Employee Required Contribution for each month. If the same amount applies for all 12 calendar months, only the All 12 Months column contains the monthly amount. | | Jan | Contains the amount of the Employee Required Contribution for each month. If the same amount applies for all 12 calendar months, only the All 12 Months column contains the monthly amount. | | Feb | Contains the amount of the Employee Required Contribution for each month. If the same amount applies for all 12 calendar months, only the All 12 Months column contains the monthly amount. | | Mar | Contains the amount of the Employee Required Contribution for each month. If the same amount applies for all 12 calendar months, only the All 12 Months column contains the monthly amount. | | Apr | Contains the amount of the Employee Required Contribution for each month. If the same amount applies for all 12 calendar months, only the All 12 Months column contains the monthly amount. | | May | Contains the amount of the Employee Required Contribution for each month. If the same amount applies for all 12 calendar months, only the All 12 Months column contains the monthly amount. | | June | Contains the amount of the Employee Required Contribution for each month. If the same amount applies for all 12 calendar months, only the All 12 Months column contains the monthly amount. | | July | Contains the amount of the Employee Required Contribution for each month. If the same amount applies for all 12 calendar months, only the All 12 Months column contains the monthly amount. | | Aug | Contains the amount of the Employee Required Contribution for each month. If the same amount applies for all 12 calendar months, only the All 12 Months column contains the monthly amount. | | Sept | Contains the amount of the Employee Required Contribution for each month. If the same amount applies for all 12 calendar months, only the All 12 Months column contains the monthly amount. | | Oct | Contains the amount of the Employee Required Contribution for each month. If the same amount applies for all 12 calendar months, only the All 12 Months column contains the monthly amount. | | Nov | Contains the amount of the Employee Required Contribution for each month. If the same amount applies for all 12 calendar months, only the All 12 Months column contains the monthly amount. | | Dec | Contains the amount of the Employee Required Contribution for each month. If the same amount applies for all 12 calendar months, only the All 12 Months column contains the monthly amount. | ### Section 4980H Safe Harbor and Other Relief Table Contains codes from Code Series 2 for each calendar month. If the same code applies for all 12 calendar months, only the **All 12 Months** column contains the applicable code. | Month | Description | | :------------ | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | All 12 Months | Contains codes from Code Series 2 for each calendar month. If the same code applies for all 12 calendar months, only the All 12 Months column contains the applicable code. | | Jan | Contains codes from Code Series 2 for each calendar month. If the same code applies for all 12 calendar months, only the All 12 Months column contains the applicable code. | | Feb | Contains codes from Code Series 2 for each calendar month. If the same code applies for all 12 calendar months, only the All 12 Months column contains the applicable code. | | Mar | Contains codes from Code Series 2 for each calendar month. If the same code applies for all 12 calendar months, only the All 12 Months column contains the applicable code. | | Apr | Contains codes from Code Series 2 for each calendar month. If the same code applies for all 12 calendar months, only the All 12 Months column contains the applicable code. | | May | Contains codes from Code Series 2 for each calendar month. If the same code applies for all 12 calendar months, only the All 12 Months column contains the applicable code. | | June | Contains codes from Code Series 2 for each calendar month. If the same code applies for all 12 calendar months, only the All 12 Months column contains the applicable code. | | July | Contains codes from Code Series 2 for each calendar month. If the same code applies for all 12 calendar months, only the All 12 Months column contains the applicable code. | | Aug | Contains codes from Code Series 2 for each calendar month. If the same code applies for all 12 calendar months, only the All 12 Months column contains the applicable code. | | Sept | Contains codes from Code Series 2 for each calendar month. If the same code applies for all 12 calendar months, only the All 12 Months column contains the applicable code. | | Oct | Contains codes from Code Series 2 for each calendar month. If the same code applies for all 12 calendar months, only the All 12 Months column contains the applicable code. | | Nov | Contains codes from Code Series 2 for each calendar month. If the same code applies for all 12 calendar months, only the All 12 Months column contains the applicable code. | | Dec | Contains codes from Code Series 2 for each calendar month. If the same code applies for all 12 calendar months, only the All 12 Months column contains the applicable code. | ### ZIP Code Table Contains ZIP codes used to identify the lowest cost silver plan. If the same code applies for all 12 calendar months, only the **All 12 Months** column contains the applicable code. | Month | Description | | :------------ | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | All 12 Months | Contains ZIP codes used to identify the lowest cost silver plan. If the same code applies for all 12 calendar months, only the All 12 Months column contains the applicable code. | | Jan | Contains ZIP codes used to identify the lowest cost silver plan. If the same code applies for all 12 calendar months, only the All 12 Months column contains the applicable code. | | Feb | Contains ZIP codes used to identify the lowest cost silver plan. If the same code applies for all 12 calendar months, only the All 12 Months column contains the applicable code. | | Mar | Contains ZIP codes used to identify the lowest cost silver plan. If the same code applies for all 12 calendar months, only the All 12 Months column contains the applicable code. | | Apr | Contains ZIP codes used to identify the lowest cost silver plan. If the same code applies for all 12 calendar months, only the All 12 Months column contains the applicable code. | | May | Contains ZIP codes used to identify the lowest cost silver plan. If the same code applies for all 12 calendar months, only the All 12 Months column contains the applicable code. | | June | Contains ZIP codes used to identify the lowest cost silver plan. If the same code applies for all 12 calendar months, only the All 12 Months column contains the applicable code. | | July | Contains ZIP codes used to identify the lowest cost silver plan. If the same code applies for all 12 calendar months, only the All 12 Months column contains the applicable code. | | Aug | Contains ZIP codes used to identify the lowest cost silver plan. If the same code applies for all 12 calendar months, only the All 12 Months column contains the applicable code. | | Sept | Contains ZIP codes used to identify the lowest cost silver plan. If the same code applies for all 12 calendar months, only the All 12 Months column contains the applicable code. | | Oct | Contains ZIP codes used to identify the lowest cost silver plan. If the same code applies for all 12 calendar months, only the All 12 Months column contains the applicable code. | | Nov | Contains ZIP codes used to identify the lowest cost silver plan. If the same code applies for all 12 calendar months, only the All 12 Months column contains the applicable code. | | Dec | Contains ZIP codes used to identify the lowest cost silver plan. If the same code applies for all 12 calendar months, only the All 12 Months column contains the applicable code. | ## Part III - Self-Insured Coverage ### General Self-Insured Information | Field | Description | | :-------------------------------------- | :------------------------------------------------------------------------------------- | | Employer Provided Self-Insured Coverage | Indicates that the health insurance coverage offered by the employer was self-insured. | ### Covered Individuals Table | Field | Description | | :-------------------- | :----------------------------------------------------------------------------------------------------------------- | | Name | The name of each covered individual, including the employee, if the employee is enrolled in self-insured coverage. | | SSN or TIN | The Social Security Number (SSN) or Taxpayer Identification Number (TIN) for each covered individual. | | DOB | The date of birth (YYYY-MM-DD) for the covered individual. | | Covered All 12 Months | Indicates that the individual was covered for at least one day per month for all 12 months of the calendar year. | ### Monthly Coverage Details | Month | Description | | :---- | :---------------------------------------------------------------------------------------------------------------------- | | Jan | The month(s) in which the individual was covered for at least one day per month for all 12 months of the calendar year. | | Feb | The month(s) in which the individual was covered for at least one day per month for all 12 months of the calendar year. | | Mar | The month(s) in which the individual was covered for at least one day per month for all 12 months of the calendar year. | | Apr | The month(s) in which the individual was covered for at least one day per month for all 12 months of the calendar year. | | May | The month(s) in which the individual was covered for at least one day per month for all 12 months of the calendar year. | | June | The month(s) in which the individual was covered for at least one day per month for all 12 months of the calendar year. | | July | The month(s) in which the individual was covered for at least one day per month for all 12 months of the calendar year. | | Aug | The month(s) in which the individual was covered for at least one day per month for all 12 months of the calendar year. | | Sept | The month(s) in which the individual was covered for at least one day per month for all 12 months of the calendar year. | | Oct | The month(s) in which the individual was covered for at least one day per month for all 12 months of the calendar year. | | Nov | The month(s) in which the individual was covered for at least one day per month for all 12 months of the calendar year. | | Dec | The month(s) in which the individual was covered for at least one day per month for all 12 months of the calendar year. | ## Key Fields * Part I/Employee/Name of Employee * Part I/Employee/Social Security Number * Part I/Employer/Name of Employer * Part I/Employer/Employer Identification Number ## Validation Rules | Rule | Description | | :--------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Clean Name | Checks for unsupported characters such as \| and ] in name fields. It also cleans multiple spaces, tabs, and newlines. | | Clean Year | Checks the value in the **Year** field. It converts a 2-digit year (such as 24) into a 4-digit format (such as 2024). It assumes all 2-digit years are in the 2000s. | # Form 1095 Skills Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/built-in-skills/form-skills/1095-overview Process IRS Form 1095 health insurance forms — 1095-A (Marketplace), 1095-B (Health Coverage), 1095-C (Employer-Provided) — with Vantage built-in skills. Forms 1095 are IRS tax forms used to report health insurance coverage for the Affordable Care Act (ACA). ABBYY Vantage includes a built-in skill for each variant — 1095-A (Marketplace), 1095-B (Health Coverage), and 1095-C (Employer-Provided). ABBYY Vantage includes the following built-in skills for processing Forms 1095: * [Form 1095-A, Health Insurance Marketplace Statement](/vantage/documentation/skill-catalog/built-in-skills/form-skills/1095-a) * [Form 1095-B, Health Coverage](/vantage/documentation/skill-catalog/built-in-skills/form-skills/1095-b) * [Form 1095-C, Employer-Provided Health Insurance Offer and Coverage](/vantage/documentation/skill-catalog/built-in-skills/form-skills/1095-c) # Form 1098, Mortgage Interest Statement - Document Skill Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/built-in-skills/form-skills/1098 Extract data from IRS Form 1098 (Mortgage Interest Statement) — used by lenders to report mortgage interest of $600 or more paid during the tax year. The **Form 1098, Mortgage Interest Statement** skill extracts data from Forms 1098, which are used by businesses and lenders to report mortgage interest paid to them of \$600 or more. The Form 1098, Mortgage Interest Statement skill is a production skill. It has been fully trained on a large document set and provides high accuracy of data identification and extraction. The skill is ready to be used in production and does not require further training on your specific documents. Accuracy and straight-through processing (STP) rates can be further optimized in production through continuous learning from human-in-the-loop feedback. This skill recognizes handwritten text. The option is enabled by default. If you do not import handwritten forms, disable the **Handwritten** option in the skill settings.  ## Countries and Languages | Countries | Languages | | :-------- | :-------- | | USA | English | ## Extracted Fields ### Basic Form Information | Field | Description | | :-------- | :------------------------------------------------------------------------------------- | | Void | Specifies that the processed form should be annulled. | | Corrected | Specifies that the processed form is being submitted to correct data provided earlier. | | Year | The reporting fiscal year. | ### Recipient Details | Field | Description | | :------- | :--------------------------------- | | Name | The name of the recipient. | | Street | The address of the recipient. | | City | The address of the recipient. | | State | The address of the recipient. | | ZIP Code | The address of the recipient. | | Country | The address of the recipient. | | Phone | The phone number of the recipient. | ### Tax Identification Numbers | Field | Description | | :-------------- | :----------------------------------------------------------------------- | | Recipient's TIN | The tax identification number assigned to the recipient of the payments. | | Payer's TIN | The tax identification number assigned to the payer. | ### Payer Details | Field | Description | | :------- | :------------------------ | | Name | The name of the payer. | | Street | The address of the payer. | | City | The address of the payer. | | State | The address of the payer. | | ZIP Code | The address of the payer. | | Country | The address of the payer. | ### Mortgage Information | Field | Description | | :------------------------------------ | :----------------------------------------------------------------------------- | | Account Number | The unique number used by the payer to identify the payment recipient. | | Mortgage Interest Received from Payer | The interest received on the mortgage from borrowers during the calendar year. | | Outstanding Mortgage Principal | The amount of outstanding principal on the mortgage. | | Mortgage Origination Date | The date of the origination of the mortgage. | | Mortgage Acquisition Date | The date of acquisition. | ### Payment Details | Field | Description | | :--------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------- | | Refund of Overpaid Interest | The total refund or credit of a prior year(s) overpayment of interest. | | Mortgage Insurance Premiums | An upfront and annual insurance premium that is required for any Federal Housing Administration (FHA) home loan, regardless of the size of the down payment. | | Points Paid on Purchase of Principal Residence | Points that are paid on the purchase of the payer of record's principal residence. | | Other | Other information, such as real estate taxes or insurance paid from escrow. | ### Property Information | Field | Description | | :------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Address of Property is the Same as Payer's Address | Specifies if the address of the property securing the mortgage is the same as the payer's address. | | Number of Properties Securing the Mortgage | If more than one property secures the loan, shows the number of properties securing the mortgage. If only one property secures the loan, this field may be blank. | ### Address of Property Securing Mortgage | Field | Description | | :------- | :------------------------------------------------- | | Street | The address of the property securing the mortgage. | | City | The address of the property securing the mortgage. | | State | The address of the property securing the mortgage. | | ZIP Code | The address of the property securing the mortgage. | | Country | The address of the property securing the mortgage. | ## Key Fields * Year * Recipient Details/Name * Recipient's TIN * Payer's TIN * Payer Details/Name * Account Number * Mortgage Interest Received from Payer * Mortgage Acquisition Date ## Validation Rules | Rule | Description | | :----------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Complete Form Year | Checks the value in the **Year** field. It removes any white spaces and converts a 2-digit year into a 4-digit format. If the last two digits are numeric and start with 9, it converts the value to the 1900's (for example, 99 converts to 1999). Otherwise, it assumes the date is from the 2000's (for example, 24 converts to 2024). | # Form 1099-B, Broker and Barter Exchange Proceeds Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/built-in-skills/form-skills/1099-b Extract data from IRS Form 1099-B (Proceeds From Broker and Barter Exchange Transactions): broker-reported gains, losses, and securities for 2021-2023. The **Form 1099-B, Proceeds From Broker and Barter Exchange Transactions** skill extracts data from Forms 1099-B, which are filled in by brokers or barter exchanges to report gains or losses during a tax year. Forms 1099-B usually provide information about securities or property involved in a transaction handled by a broker. Individual taxpayers receive the form from their brokers or barter exchange already filled out and transfer the information to Form 8949 to calculate their preliminary gains and losses. The Form 1099-B, Proceeds From Broker and Barter Exchange Transactions skill is a preview skill. It has been trained on a limited set of documents and is designed to help you quickly get started with processing Forms 1099-B. For production use, you may need to uptrain the skill with your own document samples. The Form 1099-B, Proceeds From Broker and Barter Exchange Transactions skill has been trained to process forms for the tax years of 2021, 2022, and 2023. This skill recognizes handwritten text. The option is enabled by default. If you do not import handwritten forms, disable the **Handwritten** option in the skill settings. ## Countries and Languages | Countries | Languages | | :-------- | :-------- | | USA | English | ## Extracted Fields ### Basic Form Information | Field | Description | | :-------- | :------------------------------------------------------------------------------------- | | Void | Specifies that the processed form should be annulled. | | Corrected | Specifies that the processed form is being submitted to correct data provided earlier. | | Year | The reporting fiscal year. | ### Form 8949 Classification | Field | Description | | :------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Applicable Checkbox on Form 8949 | Indicates where to report this transaction on Form 8949. Possible code values:
Code A (indicates a short-term transaction for which the cost or other basis is being reported to the IRS)
Code B (indicates a short-term transaction for which the cost or other basis is not being reported to the IRS)
Code D (indicates a long-term transaction for which the cost or other basis is being reported to the IRS)
Code E (indicates a long-term transaction for which the cost or other basis is not being reported to the IRS)
Code X (used if a transaction holding period is unknown). | ### Payer Details | Field | Description | | :------- | :--------------------------------------------------------------------------------- | | Name | The name, address, phone number, and tax identification number (TIN) of the payer. | | Street | The name, address, phone number, and tax identification number (TIN) of the payer. | | City | The name, address, phone number, and tax identification number (TIN) of the payer. | | State | The name, address, phone number, and tax identification number (TIN) of the payer. | | Country | The name, address, phone number, and tax identification number (TIN) of the payer. | | ZIP Code | The name, address, phone number, and tax identification number (TIN) of the payer. | | Phone | The name, address, phone number, and tax identification number (TIN) of the payer. | | TIN | The name, address, phone number, and tax identification number (TIN) of the payer. | ### Recipient Details | Field | Description | | :------- | :----------------------------------------------------------------------- | | Name | The name, address, and tax identification number (TIN) of the recipient. | | Street | The name, address, and tax identification number (TIN) of the recipient. | | City | The name, address, and tax identification number (TIN) of the recipient. | | State | The name, address, and tax identification number (TIN) of the recipient. | | Country | The name, address, and tax identification number (TIN) of the recipient. | | ZIP Code | The name, address, and tax identification number (TIN) of the recipient. | | TIN | The name, address, and tax identification number (TIN) of the recipient. | ### Account and Identification Information | Field | Description | | :----------------------- | :--------------------------------------------------------------------------------------------------------------------------------------- | | Account Number | The unique number used by the payer to identify the payment recipient. | | 2nd TIN Notified | Specifies whether the payer has been notified by the IRS twice within 3 calendar years that the TIN provided by the payer was incorrect. | | CUSIP Number | The unique identifier assigned to each security registered with the Committee on Uniform Securities Identification Procedures (CUSIP). | | FATCA Filing Requirement | Specifies that the Foreign Account Tax Compliance Act (FATCA) filing requirement is satisfied. | ### Transaction Details | Field | Description | | :---------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Description of Property | For stock and debt instruments, the description of shares or units that were exchanged. For stock, the class or classes of stock (for example, preferred, common, etc.) that were exchanged. For bartering transactions, the description of the service or property provided. | | Date Acquired | The acquisition date of any securities sold. | | Date Sold or Disposed | The trade date of the sale or exchange. | ### Financial Information | Field | Description | | :------------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Proceeds | The gross cash proceeds from all dispositions (including short sales) of securities, commodities, options, securities futures contracts, or forward contracts. | | Cost or Other Basis | The adjusted basis of any securities sold unless the security is not covered. | | Accrued Market Discount | The amount of accrued market discount. | | Wash Sale Loss Disallowed | Any loss disallowed if both the sale and purchase transactions occur in the same account with respect to covered securities with the same CUSIP number. | ### Gain/Loss Classification | Field | Description | | :---------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------- | | Short-term Gain or Loss | Specifies the profit or loss from the sale of a capital asset that was held for one year or less. | | Long-term Gain or Loss | Specifies the profit or loss from the sale of a capital asset that was held for more than one year before it was sold. | | Ordinary | Specifies that the gain or loss from the sale of a security or other asset is treated as ordinary income or loss, not as a capital gain or loss. | ### Proceeds From | Field | Description | | :----------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Collectibles | Specifies whether the proceeds are from a transaction involving collectibles. Possible values: Collectibles, QOF (disposition of an interest in a Quality and Outcomes Framework). | | QOF | Specifies that the transaction being reported is the disposition (for example, sale, exchange, or other transfer) of an investment in a Qualified Opportunity Fund. | ### Reported to IRS | Field | Description | | :------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Gross Proceeds | The total amount of money received from the sale of a security, commodity, or other property, before any commissions, fees, or other expenses have been deducted. | | Net Proceeds | The total proceeds from a sale after certain expenses, such as commissions and transfer taxes, have been subtracted. | ### Tax Withholding and Reporting | Field | Description | | :-------------------- | :---------------------------------------------------------------------- | | Loss Is Not Allowed | Specifies that the loss is not allowed based on the amount of proceeds. | | Basis Reported to IRS | Specifies whether the basis is reported to IRS. | ### Futures and Foreign Currency Contracts | Field | Description | | :---------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------ | | Profit or (Loss) realized on closed contracts (This Year) | The profit or (loss) realized by the payer on closed regulated futures or foreign currency during the current year. | | Unrealized Profit or (Loss) on Open Contracts (Year before) | The unrealized profit or (loss) on open regulated futures or foreign currency during the previous year. | | Unrealized Profit or (Loss) on Open Contracts (This Year) | The unrealized profit or (loss) on open regulated futures or foreign currency during the current year. | | Aggregate Profit or (Loss) on Contracts | The aggregate profit or (loss) for the year from regulated futures or foreign currency. | ### Bartering Transactions | Field | Description | | :-------- | :--------------------------------------------------------------------- | | Bartering | The gross amounts received by a member or client of a barter exchange. | ### State 1 Information | Field | Description | | :---------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | State Name | The information about filers who participate in the Combined Federal/State Filing Program and/or who are required to file paper copies of this form with a state tax department. | | State Identification No | The information about filers who participate in the Combined Federal/State Filing Program and/or who are required to file paper copies of this form with a state tax department. | | State Tax Withheld | The information about filers who participate in the Combined Federal/State Filing Program and/or who are required to file paper copies of this form with a state tax department. | ### State 2 Information | Field | Description | | :---------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | State Name | The information about filers who participate in the Combined Federal/State Filing Program and/or who are required to file paper copies of this form with a state tax department. | | State Identification No | The information about filers who participate in the Combined Federal/State Filing Program and/or who are required to file paper copies of this form with a state tax department. | | State Tax Withheld | The information about filers who participate in the Combined Federal/State Filing Program and/or who are required to file paper copies of this form with a state tax department. | ## Key Fields * Year * Payer Details/TIN * Recipient Details/Name * Recipient Details/TIN # Form 1099-C, Cancellation of Debt - Document Skill (Preview) Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/built-in-skills/form-skills/1099-c Extract data from IRS Form 1099-C (Cancellation of Debt) reporting debts of $600 or more canceled by a lender, including borrower TIN and amount canceled. The Form 1099-C skill is currently available in Preview. The Form 1099-C, Cancellation of Debt skill extracts data from Forms 1099-С, which are used to report debts of \$600 or more canceled or forgiven by a lender (creditor). Forms 1099-C provide the following information:   * Borrower's (debtor's) name, address, and taxpayer identification number (usually their Social Security number)  * Amount of debt canceled and the date when it was canceled.  The 1099-C, Cancellation of Debt skill is a preview skill. It has been trained on a limited set of documents and is designed to help you quickly get started with processing Forms 1099-C. For production use, you may need to uptrain the skill with your own document samples. This skill recognizes handwritten text. The option is enabled by default. If you do not import handwritten forms, disable the **Handwritten** option in the skill settings. ## Countries and Languages | Countries | Languages | | :-------- | :-------- | | USA | English | ## Extracted Fields ### Basic Form Information | Field | Description | | :-------- | :--------------------------------------------------------------------------- | | Void | Specifies that the form is void. | | Corrected | Specifies that the form is being submitted to correct data provided earlier. | ### Creditor's Details | Field | Description | | :-------------- | :------------------------------------------------------------------------------------ | | Name | The name, address, phone number, and tax identification number (TIN) of the creditor. | | Street | The name, address, phone number, and tax identification number (TIN) of the creditor. | | City | The name, address, phone number, and tax identification number (TIN) of the creditor. | | State | The name, address, phone number, and tax identification number (TIN) of the creditor. | | ZIP Code | The name, address, phone number, and tax identification number (TIN) of the creditor. | | Country | The name, address, phone number, and tax identification number (TIN) of the creditor. | | Phone | The name, address, phone number, and tax identification number (TIN) of the creditor. | | Phone Extension | The name, address, phone number, and tax identification number (TIN) of the creditor. | | Creditor's TIN | The name, address, phone number, and tax identification number (TIN) | ### Debtor's Details | Field | Description | | :-------------- | :---------------------------------------------------------------------------------- | | Name | The name, address, phone number, and tax identification number (TIN) of the debtor. | | Address | The name, address, phone number, and tax identification number (TIN) of the debtor. | | Street | The name, address, phone number, and tax identification number (TIN) of the debtor. | | City | The name, address, phone number, and tax identification number (TIN) of the debtor. | | State | The name, address, phone number, and tax identification number (TIN) of the debtor. | | ZIP Code | The name, address, phone number, and tax identification number (TIN) of the debtor. | | Country | The name, address, phone number, and tax identification number (TIN) of the debtor. | | Phone | The name, address, phone number, and tax identification number (TIN) of the debtor. | | Phone Extension | The name, address, phone number, and tax identification number (TIN) of the debtor. | | Creditor's TIN | The name, address, phone number, and tax identification number (TIN) of the debtor. | ### Account and Identification Information | Field | Description | | :------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Account Number | The unique number used by the payer to identify the payment recipient. | | Date of Identifiable Event | The date of the earliest identifiable event or the date of the actual discharge, if it occurred before the earliest identifiable event. | | For Calendar Year | The calendar year for which the canceled debt is being reported. | | Amount of Debt Discharged | The total amount of debt that was canceled or forgiven by the creditor. | | Interest if Included in Box 2 | Any interest included in the canceled debt amount. | | Debt Description | A brief description of the type of debt that was canceled, such as credit card debt, mortgage debt, or student loan debt. | | Debtor Was Personally Liable for Repayment of Debt | Specifies whether the debtor was personally responsible for repaying the canceled debt. | | Identifiable Event Code | The code of the event that led to the debt cancelation. 
Possible values: 
- A (bankruptcy)
- B (other judicial debt relief) 
- C (statute of limitations or expiration of deficiency period) 
- D (foreclosure election) 
- E (debt relief from probate or similar proceeding) 
- F (by agreement) 
- G (decision or policy to discontinue collection) 
- H (other actual discharge before identifiable event) | | Fair Market Value | The fair market value of the property that was foreclosed or repossessed in connection with the canceled debt. | ## Key Fields  * Creditor’s Details/Name  * Creditor’s TIN  * Debtor’s Details/Name  * Debtor’s TIN  * Account Number  * Date of Identifiable Event  * For Calendar Year  * Amount of Debt Discharged  * Identifiable Event Code  ## Validation Rules | Rule | Description | | :------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Advanced Script Rule | Checks for a valid 4-digit year in the **For Calendar Year** field. If the value is a 2-digit year, it replaces the extracted value with a 4-digit year. If the two-digit year starts with a **9** (such as "98" or "99"), it assumes the century is the 1900s and prepends **19**.  For any other digit (such as "07", "23", "25"), it assumes the century is the 2000s and prepends **20**. 
For example: 
If the input is CY 25, it becomes 2025. 
If the input is Fiscal Year 98, it becomes 1998.
If the input is just 23, it becomes 2023. | # Form 1099 Composite - Document Skill Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/built-in-skills/form-skills/1099-composite Extract data from Form 1099 Composite, a consolidated statement that summarizes 1099-DIV, 1099-INT, and 1099-B forms issued by financial institutions. The **Form 1099 Composite** skill extracts data from Forms 1099 Composite, which summarize all 1099 forms issued by a financial institution to a taxpayer. Typically, a Form 1099 Composite includes multiple 1099-DIV, 1099-INT, or 1099-B forms consolidated into a single statement. The document should provide a detailed breakdown of the totals for each type of 1099 form that the taxpayer is required to report. The Form 1099 Composite skill is a preview skill. It has been trained on a limited set of documents and is designed to help you quickly get started with processing Forms 1099 Composite. For production use, you may need to uptrain the skill with your own document samples. This skill recognizes handwritten text. The option is enabled by default. If you do not import handwritten forms, disable the **Handwritten** option in the skill settings. ## Countries and Languages | Countries | Languages | | :-------- | :-------- | | USA | English | ## Basic Form Information | Field | Description | | :------------- | :---------------------------------------------------------------------------------------------- | | Year | The reporting fiscal year. | | Account | The unique number used by the taxpayer to identify the payment recipient. | | Corrected | Specifies that the processed form is being submitted to correct data provided earlier. | | Statement Date | The statement date. | | Document ID | The identifier that is assigned to each Form 1099 that is issued by the payer to the recipient. | ## Taxpayer Details | Field | Description | | :------------- | :---------------------- | | Name | The taxpayer's name. | | Street Address | The taxpayer's address. | | City | The taxpayer's address. | | State | The taxpayer's address. | | ZIP Code | The taxpayer's address. | | Country | The taxpayer's address. | | Phone | The taxpayer's phone. | | TIN | The taxpayer's TIN. | ## Recipient Details | Field | Description | | :------------- | :----------------------- | | Name | The recipient's name. | | Street Address | The recipient's address. | | City | The recipient's address. | | State | The recipient's address. | | ZIP Code | The recipient's address. | | Country | The recipient's address. | | TIN | The recipient's TIN. | ## FATCA Compliance | Field | Description | | :----------------------- | :--------------------------------------------------------------------------------------------- | | FATCA Filing Requirement | Specifies that the Foreign Account Tax Compliance Act (FATCA) filing requirement is satisfied. | ## Dividends and Distributions (1099-DIV) | Field | Description | | :------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Total Ordinary Dividends | The total amount of ordinary dividends (taxed as ordinary income). | | Qualified Dividends | The amount of ordinary dividends (box **1a Total Ordinary Dividends**) that meets the criteria for being taxed at a lower tax rate. | | Total Capital Gain Distributions | The total amount paid out as capital gain distribution. | | Unrecaptured Section 1250 Gain | The amount of capital gains (box **2a Total Capital Gain Distribution**) received from the sale of depreciated real property and taxed in accordance with Section 1250 of the United States Internal Revenue Code. | | Section 1202 Gain | The amount of capital gains (box **2a Total Capital Gain Distribution**) received from the sale of small business corporation stock qualifying for exclusion under section 1202 of the United States Internal Revenue Code. | | Collectibles (28%) Gain | A tax on certain types of gains from the sale of collectibles. | | Section 897 Ordinary Dividends | The amount of ordinary dividends (box **1a Total Ordinary Dividends**) received from the disposition of United States real property interest (USRPI) in accordance with section 897 of the United States Internal Revenue Code. | | Section 897 Capital Gain | The amount of capital gains (box **2a Total Capital Gain Distribution**) received from the disposition of United States real property interest (USRPI) in accordance with section 897 of the United States Internal Revenue Code. | | Nondividend Distributions | Payments that were not paid out as either dividends or capital gains distribution. | | Federal Income Tax Withheld | The total amount withheld as federal income tax. | | Section 199A Dividends | The amount of ordinary dividends (box **1a Total Ordinary Dividends**) either paid out by a real estate investment trust (REIT) and taxed at a lower rate, or by a regulated investment company (RIC) in accordance with section 199A of the United States Internal Revenue Code. | | Investment Expenses | The share of non-taxable expenses incurred by a regulated investment company (RIC), proportional to the payment share of the recipient. | | Foreign Tax Paid | The amount of taxes withheld in other countries on dividends and other payments (specified in USD). | | Foreign Country or US Possession | The name of the foreign country or United States Territory where the taxed amount specified in box 7 **Foreign Tax Paid** was withheld. | | Cash Liquidation Distributions | The amount paid out as part of a partial or full company liquidation. | | Noncash Liquidation Distributions | Non-cash assets transferred as part of a partial or full company liquidation (specified as the market value of the assets at the time of their distribution). | | Exempt-interest Dividends | Dividends received from mutual funds and/or another regulated investment company (RIC). These dividends are exempt from federal taxes. | | Specified Private Activity Bond Interest Dividends | Dividends received from mutual funds and/or another regulated investment company (RIC). These dividends are exempt from federal taxes. | ### State Information (1099-DIV) | Field | Description | | :-------------------------- | :---------------------------------- | | State | State-specific payment information. | | State Identification Number | State-specific payment information. | | State Tax Withheld | State-specific payment information. | ## Miscellaneous Income (1099-MISC) | Field | Description | | :--------------------------------------------------- | :----------------------------------------------------------------------------------------- | | Rents | The total amount of rent that was paid during the tax year. | | Royalties | The total amount of royalties that were paid during the tax year. | | Other Income | Any miscellaneous income that does not fit into one of the other categories on the form. | | Federal Income Tax Withheld | The amount of federal income tax that was withheld from payments made during the tax year. | | Substitute Payments in Lieu of Dividends or Interest | The amount of substitute payments in lieu of dividends or interest. | | State Tax Withheld | State-specific payment information. | | State Income | State-specific payment information. | ## Proceeds From Broker and Barter Exchange Transactions (1099-B) | Field | Description | | :---------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------- | | Proceeds | The total amount of money received from the sale or disposition of a security during the tax year. | | Cost or Other Basis of Covered Securities | The adjusted basis of the security delivered to close the short sale | | Accrued Market Discount | The amount of accrued market discount. | | Wash Sale Loss Disallowed | The amount of wash sale loss disallowed. | | Federal Income Tax Withheld | Backup withholding. | | Profit or (Loss) Realized on Closed Contracts | The profit or (loss) realized by the customer on closed regulated futures, foreign currency, or Section 1256 option contracts in 2023. | | Unrealized Profit or (Loss) on Open Contracts | The unrealized profit or (loss) on open regulated futures, foreign currency, or Section 1256 option contracts at the end of 2022. | | Unrealized Profit or (Loss) on Open Contracts 2 | The unrealized profit or (loss) on open regulated futures, foreign currency, or Section 1256 option contracts at the end of 2023. | | Aggregate Profit or (Loss) on Contracts | The aggregate profit or (loss) for the year from regulated futures, foreign currency, or Section 1256 option contracts. | ## Interest Income (1099-INT) | Field | Description | | :---------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------ | | Interest Income | Specifies the taxable interest on the tax return. | | Early Withdrawal Penalty | Represents any interest or principal forfeited because of early withdrawal of time savings. | | Interest on US Savings Bonds and Treasury Obligations | Specifies interest on U.S. Savings Bonds, Treasury bills, Treasury bonds, and Treasury notes. This may or may not all be taxable. | | Federal Income Tax Withheld | The total amount withheld as federal income tax. | | Investment Expenses | The share of non-taxable expenses incurred by a regulated investment company (RIC), proportional to the payment share of the recipient. | | Foreign Tax Paid | The amount of taxes withheld in other countries on dividends and other payments (specified in USD). | | Foreign Country or US Possession | The name of the foreign country or United States Territory where the taxed amount specified in the **Foreign Tax Paid** field was withheld. | | Tax-Exempt Interest (includes box 9) | The tax-exempt interest paid. | | Specified Private Activity Bond Interest | Specifies tax-exempt interest subject to the alternative minimum tax. This amount is included in the **Tax-exempt Interest** field. | | Market Discount | Specifies the market discount that accrued on the debt instrument during the year. | | Bond Premium | The bond premium amount for the year for covered taxable securities. | | Bond Premium on Treasury Obligations | The bond premium for the year for covered U.S. Treasury securities. | | Bond Premium on Tax-Exempt Bonds | The bond premium for the year for covered non-taxable securities. | | Tax-exempt and Tax Credit Bond CUSIP no | The CUSIP number of the tax-exempt bond for which tax-exempt interest is reported. | ### State Information (1099-INT) | Field | Description | | :-------------------------- | :---------------------------------- | | State | State-specific payment information. | | State Identification Number | State-specific payment information. | | State Tax Withheld | State-specific payment information. | ## Original Issue Discount (1099-OID) | Field | Description | | :----------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Original Issue Discount for the Year | The taxable OID on the obligation for the part of the year it was owned by the record holder. | | Acquisition Premium (Covered Lots) | The amount of the acquisition premium that applies to the specific covered lots of bonds that you acquired during the tax year. | | Acquisition Premium (Noncovered Lots) | The amount of the acquisition premium that applies to the specific non-covered lots of bonds that you acquired during the tax year. | | Original Issue Discount on Treasury Obligations | The taxable OID on the obligation for the part of the year it was owned by the record holder. | | Acquisition Premium Treasury Obligations (Covered Lots) | The acquisition premium paid for the specific covered lots of treasury obligations that you acquired during the tax year. | | Acquisition Premium Treasury Obligations (Noncovered Lots) | The acquisition premium paid for the non-covered lots of Treasury obligations that you acquired before the date that the IRS required brokers to start reporting the acquisition premium for these types of securities. | | Other Periodic Interest | Any amount of interest, other than OID, accrued to each REMIC or FASIT regular interest holder or paid to each CDO holder. | | Federal Income Tax Withheld | Backup withholding. | | Market Discount | The amount of market discount that accrued on the debt instrument during the tax year in the amount of \$10 or more. | | Acquisition Premium | The amount of premium amortization for the part of the year the debt instrument was owned by the holder. | | Original Issue Discount on US Treasury Obligations | The OID on a U.S. Treasury obligation for the part of the year it was owned by the record holder. | | Investment Expenses | The regular interest holder's pro rata share of investment expenses. | | Bond Premium | The amount of bond premium amortization allocable to the interest paid during the tax year | | Tax-Exempt OID | The OID for the part of the year it was owned by the record holder. | | Tax-Exempt OID (Lots Not Reported) | The tax-exempt OID income that was earned on the lots of the bond that were not reported to the broker by the investor. | | Acquisition Premium (Covered) | The amount paid by the investor for the bond in excess of its face value. | | Acquisition Premium (Lots Not Reported) | The acquisition premium paid for covered lots of the bond that were not reported to the broker by the investor. | | Tax-Exempt OID on Private Activity Bonds | Interest of \$10 or more from specified private activity bonds. | | Tax-Exempt OID on Private Activity Bonds (Lots Not Reported) | The amount of tax-exempt original issue discount (OID) income that was earned on covered lots of the private activity bond that were not reported to the broker by the investor. | | Acquisition Premium (AMT Covered) | The amount paid by the investor for the bond in excess of its face value, that is subject to the AMT calculation. | | Acquisition Premium (AMT Lots Not Reported) | The amount paid by the investor for the bond in excess of its face value, that is subject to the AMT calculation, for the lots of the bond that were not reported to the broker. | | Early Withdrawal Penalty | Interest or principal forfeited because of an early withdrawal of time deposits, such as an early withdrawal from a CD, that is deductible from gross income by the recipient. | | REMIC | The REMIC for the year | | State Tax Withheld | State withholding information related to the income. | ## Reconciliations, Fees, Expenses and Expenditures ### Other Receipts and Reconciliations | Field | Description | | :----------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | Partnership Distributions | Any additional income or expenses that are not directly related to the partnership's primary business operations, as well as any adjustments made to partnership distributions. | | Foreign Tax Paid-Partnership | Any foreign tax payments made by the partnership during the reporting period. | | Return of Principal | Any returns of principal made to investors or lenders during the reporting period. | | Deferred Income Payment | Any income payments that are deferred to a future period. | | Deemed Premium | Any deemed premium payments made or received during the reporting period. | | Income Accrual- UIT | Any income that has been earned but not yet received during the reporting period. | | Basis Adjustments | Any adjustments made to the cost or basis of assets or liabilities during the reporting period. | | Foreign Tax Paid Beyond Treaty | Any foreign taxes paid by the entity that go beyond the tax treaty obligations between the foreign country and the entity's home country. | ### Fees and Expenses | Field | Description | | :---------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Margin Interest | The fees and expenses related to margin borrowing. | | Dividends Paid on Short Position | The dividends paid on the short position, any fees associated with borrowing the securities, and any other expenses related to the management of the short position. | | Interest Paid on Short Position | The interest paid on the borrowed securities, any fees associated with borrowing the securities, and any other expenses related to the management of the short position. | | Non Reportable Distribution Expense | Any expenses associated with the distribution of these non-reportable distributions, such as administrative expenses, distribution fees, or other expenses related to the management of these distributions. | | Other Expenses | Any expenses that do not fit into any of the other categories of fees and expenses. | | Severance Tax | Any expenses associated with the calculation and payment of severance taxes, such as administrative expenses, legal fees, and any other expenses related to the management of these taxes. | | Organizational Expense | Legal and accounting fees, incorporation fees, state filing fees, and other expenses related to the organizational process. | | Miscellaneous Fees | Any fees and expenses that are not directly related to the entity's core business operations or that do not fit into any of the other categories of fees and expenses. | | Tax-Exempt Investment Expense | Any expenses associated with managing tax-exempt investments, such as fees paid to investment managers or advisors, custodial fees, and other expenses related to the management of these investments. | ### Foreign Exchange | Field | Description | | :---------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Foreign Currency Gain or Loss | Any gains or losses resulting from foreign currency transactions, such as gains or losses from the purchase or sale of foreign currency or from the settlement of foreign currency-denominated transactions. | ## 1099-B Summary of Sale Proceeds (Line Items) | Field | Description | | :------------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Section | The section of the Internal Revenue Code (IRC) that applies to the transaction being reported on the form. | | Proceeds | The gross cash proceeds from all dispositions (including short sales) of securities, commodities, options, securities futures contracts, or forward contracts. | | Cost Basis | The adjusted basis of any securities sold unless the security is not a covered security | | Market Discount | The amount of accrued market discount. | | Wash Sale Loss Disallowed | The amount of wash sale loss disallowed. | | Net Gain or Loss | Determines whether the gain or loss is short-term or long-term under section 1222, and whether any portion of the gain or loss is ordinary. | ## Key Fields * Year * Account Number * Taxpayer Details/TIN * Recipient Details/Name * Recipient Details/TIN # Form 1099-DIV, Dividends and Distributions - Document Skill Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/built-in-skills/form-skills/1099-div Extract data from IRS Form 1099-DIV (Dividends and Distributions), annual reports of dividend payments and income distributions from financial institutions. The **Form 1099-DIV, Dividends and Distributions** skill extracts data from Forms 1099-DIV, which are annual reports about income distribution and dividend payments. These forms are filled out by banks and other financial institutions and are provided to both the US Internal Revenue Service (IRS) and each recipient of such payments. A separate report has to be compiled for each such recipient. The Form 1099-DIV, Dividends and Distributions skill is a preview skill. It has been trained on a limited set of documents and is designed to help you quickly get started with processing Forms 1099-DIV. For production use, you may need to uptrain the skill with your own document samples. This skill recognizes handwritten text. The option is enabled by default. If you do not import handwritten forms, disable the **Handwritten** option in the skill settings. ## Countries and Languages | Countries | Languages | | :-------- | :-------- | | USA | English | ## Extracted Fields ### Basic Form Information | Field | Description | | :-------- | :------------------------------------------------------------------------------------- | | Void | Specifies that the processed form should be annulled. | | Corrected | Specifies that the processed form is being submitted to correct data provided earlier. | | Year | The reporting fiscal year. | ### Payer Details | Field | Description | | :------- | :------------------------------------------------ | | Name | The name, address, and phone number of the payer. | | Street | The name, address, and phone number of the payer. | | City | The name, address, and phone number of the payer. | | State | The name, address, and phone number of the payer. | | ZIP Code | The name, address, and phone number of the payer. | | Country | The name, address, and phone number of the payer. | | Phone | The name, address, and phone number of the payer. | ### Tax Identification Numbers | Field | Description | | :-------------- | :----------------------------------------------------------------------- | | Payer's TIN | The tax identification number assigned to the payer. | | Recipient's TIN | The tax identification number assigned to the recipient of the payments. | ### Recipient Details | Field | Description | | :------- | :--------------------------------------------- | | Name | The name and address of the payment recipient. | | Street | The name and address of the payment recipient. | | City | The name and address of the payment recipient. | | State | The name and address of the payment recipient. | | ZIP Code | The name and address of the payment recipient. | | Country | The name and address of the payment recipient. | ### Account and Compliance Information | Field | Description | | :----------------------- | :--------------------------------------------------------------------------------------------- | | Account Number | The unique number used by the payer to identify the payment recipient. | | FATCA Filing Requirement | Specifies that the Foreign Account Tax Compliance Act (FATCA) filing requirement is satisfied. | ### Dividend and Distribution Information | Field | Description | | :------------------------------ | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Total Ordinary Dividends | The total amount of ordinary dividends (taxed as ordinary income). | | Qualified Dividends | The amount of ordinary dividends (box 1a **Total Ordinary Dividends**) that meets the criteria for being taxed at a lower tax rate. | | Total Capital Gain Distribution | The total amount paid out as capital gain distribution. | | Unrecaptured Section 1250 Gain | The amount of capital gains (box 2a **Total Capital Gain Distribution**) received from the sale of depreciated real property and taxed in accordance with Section 1250 of the United States Internal Revenue Code. | | Section 1202 Gain | The amount of capital gains (box 2a **Total Capital Gain Distribution**) received from the sale of small business corporation stock qualifying for exclusion under section 1202 of the United States Internal Revenue Code. | | Collectibles Gain | The amount of capital gains (box 2a **Total Capital Gain Distribution**) received from selling and/or trading collectibles (taxed at 28%). | | Section 897 Ordinary Dividends | The amount of ordinary dividends (box 1a **Total Ordinary Dividends**) received from the disposition of United States real property interest (USRPI) in accordance with section 897 of the United States Internal Revenue Code. | | Section 897 Capital Gain | The amount of capital gains (box 2a **Total Capital Gain Distribution**) received from the disposition of United States real property interest (USRPI) in accordance with section 897 of the United States Internal Revenue Code. | | Nondividend Distributions | Payments that were not paid out as either dividends or capital gains distribution. | ### Tax Withholding and Special Dividends | Field | Description | | :-------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Federal Income Tax Withheld | The total amount withheld as federal income tax. | | Section 199A Dividends | The amount of ordinary dividends (box 1a **Total Ordinary Dividends**) either paid out by a real estate investment trust (REIT) and taxed at a lower rate, or by a regulated investment company (RIC) in accordance with section 199A of the United States Internal Revenue Code. | | Investment Expenses | The share of non-taxable expenses incurred by a regulated investment company (RIC), proportional to the payment share of the recipient. | ### Foreign Tax Information | Field | Description | | :--------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------- | | Foreign Tax Paid | The amount of taxes withheld in other countries on dividends and other payments (specified in USD). | | Foreign Country or U.S. Possession | The name of the foreign country or United States Territory where the taxed amount specified in box 7 **Foreign Tax Paid** was withheld. | ### Liquidation Distributions | Field | Description | | :-------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------ | | Cash Liquidation Distributions | The amount paid out as part of a partial or full company liquidation. | | Noncash Liquidation Distributions | Non-cash assets transferred as part of a partial or full company liquidation (specified as the market value of the assets at the time of their distribution). | ### Tax-Exempt Dividends | Field | Description | | :------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------- | | Exempt-interest Dividends | Dividends received from mutual funds and/or another regulated investment company (RIC). These dividends are exempt from federal taxes. | | Specified Private Activity Bond Interest Dividends | Dividends received from mutual funds and/or another regulated investment company (RIC). These dividends are exempt from federal taxes. | ### State Tax Information | Field | Description | | :---------------------------- | :---------------------------------- | | State 1 | State-specific payment information. | | State 2 | State-specific payment information. | | State Identification Number 1 | State-specific payment information. | | State Identification Number 2 | State-specific payment information. | | State Tax Withheld 1 | State-specific payment information. | | State Tax Withheld 2 | State-specific payment information. | ## Key Fields * Year * Payer Details/Name * Payer's TIN * Recipient's TIN * Recipient Details/Name * Account Number * Total Ordinary Dividends * Qualified Dividends ## Validation Rules | Rule | Description | | :----------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Complete Form Year | Checks the value in the **Year** field. It removes any white spaces and converts a 2-digit year into a 4-digit format. If the last two digits are numeric and start with 9, it converts the value to the 1900's (for example, 99 converts to 1999). Otherwise, it assumes the date is from the 2000's (for example, 24 converts to 2024). | # Form 1099-G, Certain Government Payments - Document Skill Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/built-in-skills/form-skills/1099-g Extract data from IRS Form 1099-G (Certain Government Payments): federal, state, and local government payments such as unemployment, refunds, and CCC loans. The **Form 1099-G, Certain Government Payments** skill extracts data from Forms 1099-G, which are annual reports about various payments carried out by federal, regional, and municipal government agencies. This report is provided to both the US Internal Revenue Service (IRS) and each recipient of such payments. The agency has to compile a separate report for each such recipient. This form is also filled out by government agencies when they receive payments for loans provided by the Commodity Credit Corporation (CCC). The Form 1099-G, Certain Government Payments skill is a preview skill. It has been trained on a limited set of documents and is designed to help you quickly get started with processing Forms 1099-G. For production use, you may need to uptrain the skill with your own document samples. This skill recognizes handwritten text. The option is enabled by default. If you do not import handwritten forms, disable the **Handwritten** option in the skill settings. ## Countries and Languages | Countries | Languages | | :-------- | :-------- | | USA | English | ## Extracted Fields ### Basic Form Information | Field | Description | | :-------- | :------------------------------------------------------------------------------------- | | Void | Specifies that the processed form should be annulled. | | Corrected | Specifies that the processed form is being submitted to correct data provided earlier. | | Year | The reporting fiscal year. | ### Payer Details | Field | Description | | :------- | :------------------------------------------------ | | Name | The name, address, and phone number of the payer. | | Street | The name, address, and phone number of the payer. | | City | The name, address, and phone number of the payer. | | State | The name, address, and phone number of the payer. | | ZIP Code | The name, address, and phone number of the payer. | | Country | The name, address, and phone number of the payer. | | Phone | The name, address, and phone number of the payer. | ### Tax Identification Numbers | Field | Description | | :-------------- | :----------------------------------------------------------------------- | | Payer's TIN | The tax identification number assigned to the payer. | | Recipient's TIN | The tax identification number assigned to the recipient of the payments. | ### Recipient Details | Field | Description | | :------- | :--------------------------------------------- | | Name | The name and address of the payment recipient. | | Street | The name and address of the payment recipient. | | City | The name and address of the payment recipient. | | State | The name and address of the payment recipient. | | ZIP Code | The name and address of the payment recipient. | | Country | The name and address of the payment recipient. | ### Account Information | Field | Description | | :------------- | :--------------------------------------------------------------------- | | Account Number | The unique number used by the payer to identify the payment recipient. | ### Government Payment Information | Field | Description | | :---------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Unemployment Compensation | The total amount of unemployment compensation payments paid out to the recipient before tax. | | State or Local Income Tax Refunds, Credits or Offsets | The total amount of all payments paid out as part of taxable refunds, credits, or offsets of state or local income taxes. | | Box 2 Amount is for Tax Year | Specifies the fiscal year for which the payments listed in field 2 were made. This field is filled in only if this fiscal year is different from the reporting fiscal year. | | Federal Income Tax Withheld | The total amount withheld as federal income tax. | | RTAA Payments | The total amount of all payments carried out as part of the Reemployment Trade Adjustment Assistance (RTAA) program (only if at least 600 USD in total). | | Taxable Grants | The total amount of taxable grants provided. | | Agriculture Payments | The total amount of agriculture payments provided. | | Box 2 is Trade or Business Income | Specifies that the payments listed in field 2 occurred as a result of trade or business income. | | Market Gain | Payments received by the government agency for loans given out by the Commodity Credit Corporation (CCC). | ### State Tax Information | Field | Description | | :---------------------------- | :---------------------------------- | | State 1 | State-specific payment information. | | State 2 | State-specific payment information. | | State Identification Number 1 | State-specific payment information. | | State Identification Number 2 | State-specific payment information. | | State Income Tax Withheld 1 | State-specific payment information. | | State Income Tax Withheld 2 | State-specific payment information. | ## Key Fields * Year * Payer Details/Name * Payer's TIN * Recipient's TIN * Recipient Details/Name * Account Number * Unemployment Compensation * State or Local Income Tax Refunds, Credits or Offsets ## Validation Rules | Rule | Description | | :----------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Complete Form Year | Checks the value in the **Year** field. It removes any white spaces and converts a 2-digit year into a 4-digit format. If the last two digits are numeric and start with 9, it converts the value to the 1900's (for example, 99 converts to 1999). Otherwise, it assumes the date is from the 2000's (for example, 24 converts to 2024). | # Form 1099-INT, Interest Income - Document Skill Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/built-in-skills/form-skills/1099-int Extract data from IRS Form 1099-INT (Interest Income), reporting interest paid in a trade or business, including covered and non-covered securities. The **Form 1099-INT, Interest Income** skill extracts data from Forms 1099-INT, which are used to report interest paid in the course of a trade or business. For interest related to securities transactions, the information provided may be different for covered or non-covered transactions: * For covered securities that were acquired at a discount or premium, the payer must either report the net interest amount or separately report the market discount and premium amortization amounts on the Form 1099-INT. * For non-covered securities, the payer is not required to provide information to the taxpayer on any discount or premium. Also, it is solely the responsibility of the taxpayer to account for those amounts on their tax return. The Form 1099-INT, Interest Income skill is a preview skill. It has been trained on a limited set of documents and is designed to help you quickly get started with processing Forms 1099-INT. For production use, you may need to uptrain the skill with your own document samples. The Form 1099-INT, Interest Income skill recognizes handwritten text. The option is enabled by default. If you do not import handwritten forms, disable the **Handwritten** option in the skill settings. ## Countries and Languages | Countries | Languages | | :-------- | :-------- | | USA | English | ## Extracted Fields ### Basic Form Information | Field | Description | | :-------- | :------------------------------------------------------------------------------------- | | Void | Specifies that the processed form should be annulled. | | Corrected | Specifies that the processed form is being submitted to correct data provided earlier. | | Year | The reporting fiscal year. | ### Payer Details | Field | Description | | :------- | :------------------------------------------------ | | Name | The name, address, and phone number of the payer. | | Street | The name, address, and phone number of the payer. | | City | The name, address, and phone number of the payer. | | State | The name, address, and phone number of the payer. | | ZIP Code | The name, address, and phone number of the payer. | | Country | The name, address, and phone number of the payer. | | Phone | The name, address, and phone number of the payer. | ### Tax Identification Numbers | Field | Description | | :-------------- | :---------------------------------------------------------------------------------- | | Payer's TIN | The tax identification number assigned to the taxpayer. | | Recipient's TIN | The tax identification number assigned to the recipient of the taxpayer's payments. | ### Recipient Details | Field | Description | | :------- | :--------------------------------------------- | | Name | The name and address of the payment recipient. | | Street | The name and address of the payment recipient. | | City | The name and address of the payment recipient. | | State | The name and address of the payment recipient. | | ZIP Code | The name and address of the payment recipient. | | Country | The name and address of the payment recipient. | ### Account and Routing Information | Field | Description | | :----------------------- | :--------------------------------------------------------------------------------------------- | | Account Number | The unique number used by the taxpayer to identify the payment recipient. | | FATCA Filing Requirement | Specifies that the Foreign Account Tax Compliance Act (FATCA) filing requirement is satisfied. | | Payer's RTN | Routing and transit number of the payer. | ### Interest Income Information | Field | Description | | :------------------------------------------------------ | :-------------------------------------------------------------------------------------------------------------------------------------- | | Interest Income | Specifies the taxable interest on the tax return. | | Early Withdrawal Penalty | Represents any interest or principal forfeited because of early withdrawal of time savings. | | Interest on U.S. Savings Bonds and Treasury Obligations | Specifies interest on U.S. Savings Bonds, Treasury bills, Treasury bonds, and Treasury notes. This may or may not all be taxable. | | Federal Income Tax Withheld | The total amount withheld as federal income tax. | | Investment Expenses | The share of non-taxable expenses incurred by a regulated investment company (RIC), proportional to the payment share of the recipient. | ### Foreign Tax Information | Field | Description | | :--------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------ | | Foreign Tax Paid | The amount of taxes withheld in other countries on dividends and other payments (specified in USD). | | Foreign Country or U.S. Possession | The name of the foreign country or United States Territory where the taxed amount specified in the **Foreign Tax Paid** field was withheld. | ### Tax-Exempt Interest | Field | Description | | :--------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------- | | Tax-exempt Interest | The tax-exempt interest paid. | | Specified Private Activity Bond Interest | Specifies tax-exempt interest subject to the alternative minimum tax. This amount is included in the **Tax-exempt Interest** field. | ### Market Discount and Bond Premium | Field | Description | | :----------------------------------- | :--------------------------------------------------------------------------------- | | Market Discount | Specifies the market discount that accrued on the debt instrument during the year. | | Bond Premium | The bond premium amount for the year for covered taxable securities. | | Bond Premium on Treasury Obligations | The bond premium for the year for covered U.S. Treasury securities. | | Bond Premium on Tax-exempt Bond | The bond premium for the year for covered non-taxable securities. | ### CUSIP Information | Field | Description | | :------------------------------------------ | :--------------------------------------------------------------------------------- | | Tax-exempt and Tax Credit Bond CUSIP Number | The CUSIP number of the tax-exempt bond for which tax-exempt interest is reported. | ### State Tax Information | Field | Description | | :---------------------------- | :---------------------------------- | | State 1 | State-specific payment information. | | State 2 | State-specific payment information. | | State Identification Number 1 | State-specific payment information. | | State Identification Number 2 | State-specific payment information. | | State Tax Withheld 1 | State-specific payment information. | | State Tax Withheld 2 | State-specific payment information. | ## Key Fields * Year * Payer Details/Name * Payer's TIN * Recipient's TIN * Recipient Details/Name * Account Number * Payer's RTN * Interest Income * Early Withdrawal Penalty ## Validation Rules | Rule | Description | | :----------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Complete Form Year | Checks the value in the **Year** field. It removes any white spaces and converts a 2-digit year into a 4-digit format. If the last two digits are numeric and start with 9, it converts the value to the 1900's (for example, 99 converts to 1999). Otherwise, it assumes the date is from the 2000's (for example, 24 converts to 2024). | # Form 1099-K, Payment Card and Third Party Networks Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/built-in-skills/form-skills/1099-k Extract data from IRS Form 1099-K (Payment Card and Third Party Network Transactions): payments processed by online platforms, apps, and card processors. The **Form 1099-K, Payment Card and Third Party Network Transactions** skill extracts data from Forms 1099-K, which are used to report payments and transactions from payment settlement entities (PSE), that is online platforms, applications or payment card processors. The Form 1099-K, Payment Card and Third Party Network Transactions skill is a preview skill. It has been trained on a limited set of documents and is designed to help you quickly get started with processing Forms 1099-K. For production use, you may need to uptrain the skill with your own document samples. This skill recognizes handwritten text. The option is enabled by default. If you do not import handwritten forms, disable the **Handwritten** option in the skill settings. ## Countries and Languages | Countries | Languages | | :-------- | :-------- | | USA | English | ## Extracted Fields ### Basic Form Information | Field | Description | | :-------- | :------------------------------------------------------------------------------ | | Void | Indicates whether the form should be annulled. | | Corrected | Indicates whether the form is being submitted to correct data provided earlier. | | Year | The reporting calendar year. | ### Filer Details | Field | Description | | :------- | :------------------------------------------------ | | Name | The name, address, and phone number of the filer. | | Street | The name, address, and phone number of the filer. | | City | The name, address, and phone number of the filer. | | State | The name, address, and phone number of the filer. | | ZIP Code | The name, address, and phone number of the filer. | | Country | The name, address, and phone number of the filer. | | Phone | The name, address, and phone number of the filer. | ### Tax Identification Numbers | Field | Description | | :---------- | :--------------------------------------------------- | | Filer's TIN | The tax identification number assigned to the filer. | | Payee's TIN | The tax identification number assigned to the payee. | ### Payee Details | Field | Description | | :------- | :--------------------------------------------- | | Name | The name and address of the payment recipient. | | Street | The name and address of the payment recipient. | | City | The name and address of the payment recipient. | | State | The name and address of the payment recipient. | | ZIP Code | The name and address of the payment recipient. | | Country | The name and address of the payment recipient. | ### Filer Classification | Field | Description | | :-------------------------------------------------------- | :------------------------------------------------------------------------------------------- | | Payment Settlement Entity (PSE) | Indicates whether the filer is a payment settlement entity (PSE). | | Electronic Payment Facilitator (EPF) or Other Third Party | Indicates whether the filer is an electronic payment facilitator (EPF) or other third party. | ### Transaction Type | Field | Description | | :------------------ | :----------------------------------------------------------------------------------------------------------- | | Payment Card | Indicates whether the transactions being reported for the payee were made through payment card transactions. | | Third Party Network | Indicates whether the transactions being reported for the payee were made through a third-party network. | ### PSE Details | Field | Description | | :---- | :------------------------------------------------ | | Name | The name of the payment settlement entity (PSE). | | Phone | The phone of the payment settlement entity (PSE). | ### Account and Transaction Information | Field | Description | | :--------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | Account Number | The unique number used by the taxpayer to identify the payment recipient. | | Gross Amount of Payment Card or Third Party Network Transactions | The total amount of all reportable payment card and third party network transactions for the calendar year. | | Card Not Present Transactions | The gross amount of all reportable payment card and third-party network transactions for the calendar year where either the card was not present at the time of the transaction or the card number was keyed into the terminal. | | Merchant Category Code | The four-digit merchant category code (MCC) used by the payment card industry to classify the payee for the payment card transactions reported on this form. | | Number of Payment Transactions | The number of payment transactions (not including refund transactions) processed through the payment card or third-party payer network. | | Federal Income Tax Withheld | The total amount withheld as federal income tax. | ### Monthly Transaction Breakdown | Month | Description | | :-------- | :------------------------------------------------------------------------------------------- | | January | The gross amount of all reportable payment transactions for each month of the calendar year. | | February | The gross amount of all reportable payment transactions for each month of the calendar year. | | March | The gross amount of all reportable payment transactions for each month of the calendar year. | | April | The gross amount of all reportable payment transactions for each month of the calendar year. | | May | The gross amount of all reportable payment transactions for each month of the calendar year. | | June | The gross amount of all reportable payment transactions for each month of the calendar year. | | July | The gross amount of all reportable payment transactions for each month of the calendar year. | | August | The gross amount of all reportable payment transactions for each month of the calendar year. | | September | The gross amount of all reportable payment transactions for each month of the calendar year. | | October | The gross amount of all reportable payment transactions for each month of the calendar year. | | November | The gross amount of all reportable payment transactions for each month of the calendar year. | | December | The gross amount of all reportable payment transactions for each month of the calendar year. | ### State Tax Information | Field | Description | | :---------------------------- | :---------------------------------- | | State 1 | State-specific payment information. | | State 2 | State-specific payment information. | | State Identification Number 1 | State-specific payment information. | | State Identification Number 2 | State-specific payment information. | | State Tax Withheld 1 | State-specific payment information. | | State Tax Withheld 2 | State-specific payment information. | ## Key Fields * Year * Filer Details/Name * Filer's TIN * Payee's TIN * Payee Details/Name * Account Number * Gross Amount of Payment Card or Third Party Network Transactions ## Validation Rules | Rule | Description | | :----------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Complete Form Year | Checks the value in the **Year** field. It removes any white spaces and converts a 2-digit year into a 4-digit format. If the last two digits are numeric and start with 9, it converts the value to the 1900's (for example, 99 converts to 1999). Otherwise, it assumes the date is from the 2000's (for example, 24 converts to 2024). | # Form 1099-MISC, Miscellaneous Income - Document Skill Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/built-in-skills/form-skills/1099-misc Extract data from IRS Form 1099-MISC (Miscellaneous Income) — reports rents, royalties, prizes, medical payments, and other income payments of $600 or more. The **Form 1099-MISC, Miscellaneous Income** skill extracts data from Forms 1099-MISC, which are filed for each person to whom a payer has paid during the year: * At least \$10 in royalties or broker payments in lieu of dividends or tax-exempt interest. * At least \$600 in: * Rents. * Prizes and awards. * Other income payments. * Medical and health care payments. * Crop insurance proceeds. * Cash payments for fish (or other aquatic life) purchased from anyone engaged in the trade or business of catching fish. * Generally, the cash paid from a notional principal contract to an individual, partnership, or estate. * Payments to an attorney. * Any fishing boat proceeds. In addition, Forms 1099-MISC are used to report that a person has made direct sales of at least \$5,000 of consumer products to a buyer for resale anywhere other than a permanent retail establishment. The Form 1099-MISC, Miscellaneous Income skill is a preview skill. It has been trained on a limited set of documents and is designed to help you quickly get started with processing Forms 1099-MISC. For production use, you may need to uptrain the skill with your own document samples. This skill recognizes handwritten text. The option is enabled by default. If you do not import handwritten forms, disable the **Handwritten** option in the skill settings. ## Countries and Languages | Countries | Languages | | :-------- | :-------- | | USA | English | ## Extracted Fields ### Basic Form Information | Field | Description | | :-------- | :------------------------------------------------------------------------------ | | Void | Indicates whether the form should be annulled. | | Corrected | Indicates whether the form is being submitted to correct data provided earlier. | | Year | The reporting fiscal year. | ### Payer Details | Field | Description | | :------- | :------------------------------------------------ | | Name | The name, address, and phone number of the payer. | | Street | The name, address, and phone number of the payer. | | City | The name, address, and phone number of the payer. | | State | The name, address, and phone number of the payer. | | ZIP Code | The name, address, and phone number of the payer. | | Country | The name, address, and phone number of the payer. | | Phone | The name, address, and phone number of the payer. | ### Tax Identification Numbers | Field | Description | | :-------------- | :------------------------------------------------------------------------------- | | Payer's TIN | The tax identification number assigned to the payer. | | Recipient's TIN | The tax identification number assigned to the recipient of the payer's payments. | ### Recipient Details | Field | Description | | :------- | :--------------------------------------------- | | Name | The name and address of the payment recipient. | | Street | The name and address of the payment recipient. | | City | The name and address of the payment recipient. | | State | The name and address of the payment recipient. | | ZIP Code | The name and address of the payment recipient. | | Country | The name and address of the payment recipient. | ### Account Information | Field | Description | | :----------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------- | | Account Number | The unique number used by the payer to identify the payment recipient. | | FATCA Filing Requirement | Specifies that the Foreign Account Tax Compliance Act (FATCA) filing requirement is satisfied. | | 2nd TIN Notice | Specifies that the IRS has notified the payer twice within three calendar years that the payee provided an incorrect Taxpayer Identification Number (TIN). | ### Income Categories | Field | Description | | :--------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Rents | Amounts of \$600 or more for all types of rents. | | Royalties | Gross royalty payments (or similar amounts) of \$10 or more. | | Other Income | Other income of \$600 or more required to be reported on Form 1099-MISC that is not reportable in any of the other boxes on the form. | | Federal Income Tax Withheld | The total amount withheld as federal income tax. | | Fishing Boat Proceeds | The individual's share of all proceeds from the sale of a catch or the FMV of a distribution in kind to each crew member of fishing boats with normally fewer than 10 crew members. | | Medical and Health Care Payments | Payments of \$600 or more made in the course of person's trade or business to each physician or other supplier or provider of medical or health care services. | | Nonemployee Compensation | Nonemployee compensation. | | Payer Made Direct Sales | Specifies that the payer has made direct sales totaling \$5000 or more of consumer products to the recipient for resale. | | Substitute Payments in lieu of Dividends or Interest | Aggregate payments of at least \$10 of substitute payments received by a broker for a customer in lieu of dividends or tax-exempt interest as a result of a loan of a customer's securities. | | Crop Insurance Proceeds | Crop insurance proceeds of \$600 or more paid to farmers by insurance companies (unless the farmer has informed the insurance company that expenses have been capitalized under section 278, 263A, or 447). | | Gross Proceeds Paid to an Attorney | Gross proceeds of \$600 or more paid to an attorney in connection with legal services. | | Fish Purchased for Resale | The total cash payments of \$600 or more paid during the year to any person who is engaged in the trade or business of catching fish. | ### Deferred Compensation and Special Payments | Field | Description | | :--------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Section 409A Deferrals | The total amount deferred during the year of at least \$600 for a nonemployee under all nonqualified plans. | | Section 409A Income | Income as a nonemployee under an NQDC plan that does not meet the requirements of section 409A | | Excess Golden Parachute Payments | Any excess golden parachute payments. | | Nonqualified Deferred Compensation | All amounts deferred (including earnings on amounts deferred) that are includible in income under section 409A because the NQDC plan fails to satisfy the requirements of section 409A. | ### State Tax Information | Field | Description | | :------------------------------ | :---------------------------------- | | State Tax Withheld 1 | State-specific payment information. | | State Tax Withheld 2 | State-specific payment information. | | State or Payer's State Number 1 | State-specific payment information. | | State or Payer's State Number 2 | State-specific payment information. | | State Income 1 | State-specific payment information. | | State Income 2 | State-specific payment information. | ## Key Fields * Year * Payer Details/Name * Payer's TIN * Recipient's TIN * Recipient Details/Name * Account Number * Rents * Royalties * Other Income * Federal Income Tax Withheld ## Validation Rules | Rule | Description | | :----------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Complete Form Year | Checks the value in the **Year** field. It removes any white spaces and converts a 2-digit year into a 4-digit format. If the last two digits are numeric and start with 9, it converts the value to the 1900's (for example, 99 converts to 1999). Otherwise, it assumes the date is from the 2000's (for example, 24 converts to 2024). | # Form 1099-NEC, Nonemployee Compensation - Document Skill Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/built-in-skills/form-skills/1099-nec Extract data from IRS Form 1099-NEC (Nonemployee Compensation): payments of $600 or more to non-employees such as independent contractors and freelancers. The **Form 1099-NEC, Nonemployee Compensation** skill extracts data from Forms 1099-NEC, which are annual reports about payments carried out by a taxpayer to non-employees. This report is provided to both the US Internal Revenue Service (IRS) and each recipient of such payments. The taxpayer has to compile a separate report for each such non-employee receiving payments from the taxpayer of at least 600 USD during the reporting year. The Form 1099-NEC, Nonemployee Compensation skill is a preview skill. It has been trained on a limited set of documents and is designed to help you quickly get started with processing Forms 1099-NEC. For production use, you may need to uptrain the skill with your own document samples. This skill recognizes handwritten text. The option is enabled by default. If you do not import handwritten forms, disable the **Handwritten** option in the skill settings. ## Countries and Languages | Countries | Languages | | :-------- | :-------- | | USA | English | ## Extracted Fields ### Basic Form Information | Field | Description | | :-------- | :------------------------------------------------------------------------------------- | | Void | Specifies that the processed form should be annulled. | | Corrected | Specifies that the processed form is being submitted to correct data provided earlier. | | Year | The reporting fiscal year. | ### Payer Details | Field | Description | | :------- | :------------------------------------------------ | | Name | The name, address, and phone number of the payer. | | Street | The name, address, and phone number of the payer. | | City | The name, address, and phone number of the payer. | | State | The name, address, and phone number of the payer. | | ZIP Code | The name, address, and phone number of the payer. | | Country | The name, address, and phone number of the payer. | | Phone | The name, address, and phone number of the payer. | ### Tax Identification Numbers | Field | Description | | :-------------- | :---------------------------------------------------------------------------------- | | Payer's TIN | The tax identification number assigned to the taxpayer. | | Recipient's TIN | The tax identification number assigned to the recipient of the taxpayer's payments. | ### Recipient Details | Field | Description | | :------- | :--------------------------------------------- | | Name | The name and address of the payment recipient. | | Street | The name and address of the payment recipient. | | City | The name and address of the payment recipient. | | State | The name and address of the payment recipient. | | ZIP Code | The name and address of the payment recipient. | | Country | The name and address of the payment recipient. | ### Account and Payment Information | Field | Description | | :----------------------------------------------- | :------------------------------------------------------------------------- | | Account Number | The unique number used by the taxpayer to identify the payment recipient. | | Nonemployee Compensation | The total amount received by the payment recipient from the taxpayer. | | Payer Made Direct Sales Totalling \$5000 or More | Specifies that the taxpayer made direct sales totalling at least 5000 USD. | | Federal Income Tax Withheld | The total amount withheld as federal income tax. | ### State Tax Information | Field | Description | | :--------------------------- | :---------------------------------- | | State Tax Withheld 1 | State-specific payment information. | | State Tax Withheld 2 | State-specific payment information. | | State/Payer's State Number 1 | State-specific payment information. | | State/Payer's State Number 2 | State-specific payment information. | | State Income 1 | State-specific payment information. | | State Income 2 | State-specific payment information. | ## Key Fields * Year * Payer Details/Name * Payer's TIN * Recipient's TIN * Recipient Details/Name * Account Number * Nonemployee Compensation ## Validation Rules | Rule | Description | | :----------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Complete Form Year | Checks the value in the **Year** field. It removes any white spaces and converts a 2-digit year into a 4-digit format. If the last two digits are numeric and start with 9, it converts the value to the 1900's (for example, 99 converts to 1999). Otherwise, it assumes the date is from the 2000's (for example, 24 converts to 2024). | # Form 1099-OID, Original Issue Discount - Document Skill Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/built-in-skills/form-skills/1099-oid Extract data from IRS Form 1099-OID (Original Issue Discount): OID income from debt instruments such as bonds and notes sold at a discount from maturity. The **Form 1099-OID, Original Issue Discount** skill extracts data from Forms 1099-OID, which are used to report original issue discount (OID) on certain debt instruments sold at a discount from their maturity value. This form is usually filled out by the issuer of a debt instrument (payer), such as a bond or note, for the purpose of providing it to the holder of the debt instrument (recipient). The Form 1099-OID, Original Issue Discount skill is a preview skill. It has been trained on a limited set of documents and is designed to help you quickly get started with processing Forms 1099-OID. For production use, you may need to uptrain the skill with your own document samples. This skill recognizes handwritten text. The option is enabled by default. If you do not import handwritten forms, disable the **Handwritten** option in the skill settings. ## Countries and Languages | Countries | Languages | | :-------- | :-------- | | USA | English | ## Extracted Fields ### Basic Form Information | Field | Description | | :-------- | :------------------------------------------------------------------------------------- | | Void | Specifies that the processed form should be annulled. | | Corrected | Specifies that the processed form is being submitted to correct data provided earlier. | | Year | The reporting fiscal year. | ### Payer Details | Field | Description | | :------- | :------------------------------------------------ | | Name | The name, address, and phone number of the payer. | | Street | The name, address, and phone number of the payer. | | City | The name, address, and phone number of the payer. | | State | The name, address, and phone number of the payer. | | ZIP Code | The name, address, and phone number of the payer. | | Country | The name, address, and phone number of the payer. | | Phone | The name, address, and phone number of the payer. | ### Tax Identification Numbers | Field | Description | | :-------------- | :------------------------------------------------------- | | Payer's TIN | The tax identification number assigned to the payer. | | Recipient's TIN | The tax identification number assigned to the recipient. | ### Recipient Details | Field | Description | | :------- | :------------------------------------- | | Name | The name and address of the recipient. | | Street | The name and address of the recipient. | | City | The name and address of the recipient. | | State | The name and address of the recipient. | | ZIP Code | The name and address of the recipient. | | Country | The name and address of the recipient. | ### Account and Compliance Information | Field | Description | | :----------------------- | :--------------------------------------------------------------------------------------------- | | Account Number | The unique number used by the payer to identify the recipient. | | FATCA Filing Requirement | Specifies that the Foreign Account Tax Compliance Act (FATCA) filing requirement is satisfied. | ### Original Issue Discount Information | Field | Description | | :------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------- | | Original Issue Discount for the Year | The taxable OID on the obligation for the part of the year during which it was owned by the payer. | | Other Periodic Interest | The qualified stated interest on the obligation for the year, which is an amount separate from the OID. | | Early Withdrawal Penalty | Interest or principal forfeited if the payer withdrew the money before the maturity date of the obligation. | | Federal Income Tax Withheld | Backup withholding. | | Market Discount | The amount of market discount that accrued on the debt instrument during the tax year in the amount of \$10 or more. | | Acquisition Premium | The amount of acquisition premium amortization for the year that reduces the amount of OID that is included as interest on payer's income tax return. | | Description | The identification (CUSIP) number or description of the obligation (may include the stock exchange, issuer, coupon rate, and year of maturity). | | Original Issue Discount on US Treasury Obligations | OID on a U.S. Treasury obligation for the part of the year during which it was owned by the payer. | | Investment Expenses | The share of non-taxable expenses incurred by a regulated investment company (RIC), proportional to the payment share of the recipient. | | Bond Premium | The bond premium amount for the year for covered taxable securities. | | Tax-exempt OID | The OID for the part of the year during which it was owned by the payer. | ### State Tax Information | Field | Description | | :---------------------------- | :---------------------------------- | | State 1 | State-specific payment information. | | State 2 | State-specific payment information. | | State Identification Number 1 | State-specific payment information. | | State Identification Number 2 | State-specific payment information. | | State Tax Withheld 1 | State-specific payment information. | | State Tax Withheld 2 | State-specific payment information. | ## Key Fields * Year * Payer Details/Name * Payer's TIN * Recipient's TIN * Recipient Details/Name * Account Number * Original Issue Discount for the Year ## Validation Rules | Rule | Description | | :----------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Complete Form Year | Checks the value in the **Year** field. It removes any white spaces and converts a 2-digit year into a 4-digit format. If the last two digits are numeric and start with 9, it converts the value to the 1900's (for example, 99 converts to 1999). Otherwise, it assumes the date is from the 2000's (for example, 24 converts to 2024). | # Form 1099 Skills Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/built-in-skills/form-skills/1099-overview Process IRS Form 1099 income reporting forms — 1099-B, 1099-C, 1099 Composite, 1099-DIV, 1099-G, 1099-INT, 1099-K, 1099-MISC, 1099-NEC, 1099-OID, 1099-R. Forms 1099 are tax forms used to report various types of income other than salaries, wages, and tips. ABBYY Vantage includes the following built-in skills for processing Forms 1099: ## Available Form 1099 Skills * [Form 1099-B, Proceeds From Broker and Barter Exchange Transactions](/vantage/documentation/skill-catalog/built-in-skills/form-skills/1099-b) * [Form 1099-C, Cancellation of Debt](/vantage/documentation/skill-catalog/built-in-skills/form-skills/1099-c) * [Form 1099 Composite](/vantage/documentation/skill-catalog/built-in-skills/form-skills/1099-composite) * [Form 1099-DIV, Dividends and Distributions](/vantage/documentation/skill-catalog/built-in-skills/form-skills/1099-div) * [Form 1099-G, Certain Government Payments](/vantage/documentation/skill-catalog/built-in-skills/form-skills/1099-g) * [Form 1099-INT, Interest Income](/vantage/documentation/skill-catalog/built-in-skills/form-skills/1099-int) * [Form 1099-K, Payment Card and Third Party Network Transactions](/vantage/documentation/skill-catalog/built-in-skills/form-skills/1099-k) * [Form 1099-MISC, Miscellaneous Income](/vantage/documentation/skill-catalog/built-in-skills/form-skills/1099-misc) * [Form 1099-NEC, Nonemployee Compensation](/vantage/documentation/skill-catalog/built-in-skills/form-skills/1099-nec) * [Form 1099-OID, Original Issue Discount](/vantage/documentation/skill-catalog/built-in-skills/form-skills/1099-oid) * [Form 1099-R, Distributions from Pensions, Annuities, etc.](/vantage/documentation/skill-catalog/built-in-skills/form-skills/1099-r) # Form 1099-R, Pension and Annuity Distributions Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/built-in-skills/form-skills/1099-r Extract data from IRS Form 1099-R (Distributions from Pensions, Annuities, etc.): retirement and pension distributions, IRA payouts, and insurance contracts. The **Form 1099-R, Distributions from Pensions, Annuities, etc.** skill extracts data from Forms 1099-R, which are annual reports about distributions from pensions, annuities, retirement or profit-sharing plans, individual retirement accounts, insurance contracts, etc. This form has to be compiled by either the person that carried out such payments or by the manager of the appropriate plan, and is then provided to both the US Internal Revenue Service (IRS) and the recipient of such payments. A separate report has to be compiled for each recipient. Several reports may sometimes be required for a single recipient. The Form 1099-R, Distributions from Pensions, Annuities, etc. skill is a preview skill. It has been trained on a limited set of documents and is designed to help you quickly get started with processing Forms 1099-R. For production use, you may need to uptrain the skill with your own document samples. This skill recognizes handwritten text. The option is enabled by default. If you do not import handwritten forms, disable the **Handwritten** option in the skill settings. ## Countries and Languages | Countries | Languages | | :-------- | :-------- | | USA | English | ## Extracted Fields ### Basic Form Information | Field | Description | | :-------- | :------------------------------------------------------------------------------------- | | Void | Specifies that the processed form should be annulled. | | Corrected | Specifies that the processed form is being submitted to correct data provided earlier. | | Year | The reporting fiscal year. | ### Payer Details | Field | Description | | :------- | :------------------------------------------------ | | Name | The name, address, and phone number of the payer. | | Street | The name, address, and phone number of the payer. | | City | The name, address, and phone number of the payer. | | State | The name, address, and phone number of the payer. | | ZIP Code | The name, address, and phone number of the payer. | | Country | The name, address, and phone number of the payer. | | Phone | The name, address, and phone number of the payer. | ### Tax Identification Numbers | Field | Description | | :-------------- | :----------------------------------------------------------------------- | | Payer's TIN | The tax identification number assigned to the payer. | | Recipient's TIN | The tax identification number assigned to the recipient of the payments. | ### Recipient Details | Field | Description | | :------- | :--------------------------------------------- | | Name | The name and address of the payment recipient. | | Street | The name and address of the payment recipient. | | City | The name and address of the payment recipient. | | State | The name and address of the payment recipient. | | ZIP Code | The name and address of the payment recipient. | | Country | The name and address of the payment recipient. | ### Account Information | Field | Description | | :------------- | :--------------------------------------------------------------------- | | Account Number | The unique number used by the payer to identify the payment recipient. | ### Distribution Information | Field | Description | | :---------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Gross Distribution | The total amount distributed (before taxes and other deductions). | | Taxable Amount | The amount distributed that is subject to taxation (if the data required to calculate this amount can be obtained). | | Taxable Amount Not Determined | Specifies that the data required to calculate an amount for box 2a (**Taxable Amount**) cannot be obtained. | | Total Distribution | Specifies that the amount specified in box 1 (**Gross Distribution**) was either a once-off payment, or that the payment received in the specified fiscal year was the last in a series of periodic or partial payments. | | Capital Gain | The amount taxable as capital gains. | | Federal Income Tax Withheld | The total amount withheld as federal income tax. | ### Employee Contributions and Securities | Field | Description | | :--------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------- | | Employee Contributions or Insurance Premiums | The amount paid by the recipient as employee contributions or insurance premiums (eligible for tax deductions in the reporting fiscal year). | | Net Unrealized Appreciation in Employer's Securities | The net unrealized appreciation of employer's securities received by the payment recipient. | ### Distribution Codes and Account Types | Field | Description | | :---------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | Distribution Code | The distribution code or codes. The payer may specify up to two codes, which are then used by the IRS to determine whether the payment recipient has provided the correct information about the payments. The following symbols are allowed: numbers 1-9 and Latin letters A-W. | | IRA SEP SIMPLE | Specifies that the payments were made from either an individual retirement account (IRA), a SEP IRA account, or a SIMPLE IRA account. | ### Annuity and Distribution Details | Field | Description | | :------------------------------------ | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Other | The distribution amount received from an annuity contract. If the distribution is made to more than one recipient, the share distributed to the recipient specified in the form is also shown. | | Other (%) | The distribution amount received from an annuity contract. If the distribution is made to more than one recipient, the share distributed to the recipient specified in the form is also shown. | | Your Percentage of Total Distribution | The percentage of the distribution received by the recipient (if the distribution was made to more than one recipient). | ### Employee Contribution History | Field | Description | | :--------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Total Employee Contributions | The total amount of employee contributions paid by the recipient. Contributions that were already subject to tax deductions during any previous fiscal year are not specified. | ### Roth Account Information | Field | Description | | :------------------------------------------ | :-------------------------------------------------------------------------------------------------------------------------------------------------- | | Amount Allocable to IRR within 5 Years | The total amount that can be allocated as an in-plan Roth rollover made within 5 years from the date of the first contribution to the Roth account. | | First Year of Designated Roth Contributions | The first year the recipient made a contribution to the designated Roth account. | ### Compliance and Payment Information | Field | Description | | :----------------------- | :----------------------------------------------------------------------------------------------- | | FATCA Filing Requirement | Specifies that the Foreign Account Tax Compliance Act (FATCA) filing requirement is satisfied. | | Date of Payment | Specifies the date of payment for reportable death benefits in the following format: MM/DD/YYYY. | ### State and Local Tax Information | Field | Description | | :----------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | State Tax Withheld 1 | State- and locality-specific payment and tax information. Contains the payment amounts, the withheld tax, the names of the states and localities, as well as the taxpayer identification numbers assigned to the payer in the corresponding states. | | State Tax Withheld 2 | State- and locality-specific payment and tax information. Contains the payment amounts, the withheld tax, the names of the states and localities, as well as the taxpayer identification numbers assigned to the payer in the corresponding states. | | State and Payer State Number 1 | State- and locality-specific payment and tax information. Contains the payment amounts, the withheld tax, the names of the states and localities, as well as the taxpayer identification numbers assigned to the payer in the corresponding states. | | State and Payer State Number 2 | State- and locality-specific payment and tax information. Contains the payment amounts, the withheld tax, the names of the states and localities, as well as the taxpayer identification numbers assigned to the payer in the corresponding states. | | State Distribution 1 | State- and locality-specific payment and tax information. Contains the payment amounts, the withheld tax, the names of the states and localities, as well as the taxpayer identification numbers assigned to the payer in the corresponding states. | | State Distribution 2 | State- and locality-specific payment and tax information. Contains the payment amounts, the withheld tax, the names of the states and localities, as well as the taxpayer identification numbers assigned to the payer in the corresponding states. | | Local Tax Withheld 1 | State- and locality-specific payment and tax information. Contains the payment amounts, the withheld tax, the names of the states and localities, as well as the taxpayer identification numbers assigned to the payer in the corresponding states. | | Local Tax Withheld 2 | State- and locality-specific payment and tax information. Contains the payment amounts, the withheld tax, the names of the states and localities, as well as the taxpayer identification numbers assigned to the payer in the corresponding states. | | Name of Locality 1 | State- and locality-specific payment and tax information. Contains the payment amounts, the withheld tax, the names of the states and localities, as well as the taxpayer identification numbers assigned to the payer in the corresponding states. | | Name of Locality 2 | State- and locality-specific payment and tax information. Contains the payment amounts, the withheld tax, the names of the states and localities, as well as the taxpayer identification numbers assigned to the payer in the corresponding states. | | Local Distribution 1 | State- and locality-specific payment and tax information. Contains the payment amounts, the withheld tax, the names of the states and localities, as well as the taxpayer identification numbers assigned to the payer in the corresponding states. | | Local Distribution 2 | State- and locality-specific payment and tax information. Contains the payment amounts, the withheld tax, the names of the states and localities, as well as the taxpayer identification numbers assigned to the payer in the corresponding states. | ## Key Fields * Year * Payer Details/Name * Payer's TIN * Recipient's TIN * Recipient Details/Name * Account Number * Gross Distribution * Taxable Amount ## Validation Rules | Rule | Description | | :----------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Complete Form Year | Checks the value in the **Year** field. It removes any white spaces and converts a 2-digit year into a 4-digit format. If the last two digits are numeric and start with 9, it converts the value to the 1900's (for example, 99 converts to 1999). Otherwise, it assumes the date is from the 2000's (for example, 24 converts to 2024). | # Form 8949, Sales of Capital Assets Skill Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/built-in-skills/form-skills/8949 Extract data from IRS Form 8949 (Sales and Other Dispositions of Capital Assets) reconciling 1099-B and 1099-S amounts with totals reported on US tax returns. The **Form 8949, Sales and other Dispositions of Capital Assets** skill extracts data from Forms 8949, which are annual reports about sales and exchanges of capital assets. This form allows U.S. taxpayers and the IRS to reconcile amounts that were reported to them on Forms 1099-B or 1099-S (or substitute statements) with the amounts taxpayers report on their returns. The Form 8949, Sales and other Dispositions of Capital Assets skill is a preview skill. It has been trained on a limited set of documents and is designed to help you quickly get started with processing Forms 8949. For production use, you may need to uptrain the skill with your own document samples. This skill recognizes handwritten text. The option is enabled by default. If you do not import handwritten forms, disable the **Handwritten** option in the skill settings. ## Countries and Languages | Countries | Languages | | :-------- | :--------------------------------------------------------- | | USA | English
French
German
German (New Spelling) | ## Extracted Fields Asterisk (`*`) indicates a required field or field group. Values cannot be empty. ### Basic Information | Field | Description | | :------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------ | | Year | The reporting fiscal year. | | Name\* | The name of the payer. | | Social Security Number or Taxpayer Identification Number | The Social Security Number (SSN) or other Taxpayer Identification Number (TIN) of the responsible individual. | ### Short-Term Transactions | Field | Description | | :---------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Short-Term Transactions | Indicates short-term transactions reported on Form 1099-B. Possible code values:
Code A (indicates a short-term transaction for which basis was reported to the IRS)
Code B (indicates a short-term transaction for which basis was not reported to the IRS)
Code C (indicates a short-term transaction that was not reported). | ### Short-Term Gains and Losses (Repeating Group) | Field | Description | | :------------------------ | :-------------------------------------------------------------------------------------------------------------- | | Description of Property | A description of the property for which short-term gains or losses are reported. | | Date Acquired | The acquisition date of any securities sold. | | Date Sold or Disposed of | The trade date of the sale or exchange. | | Proceeds (Sales Price) | The gross cash proceeds from disposition. | | Cost or Other Basis | The adjusted basis of any securities sold unless the security is not covered. | | Code(s) From Instructions | The code for the explanation of any adjustments made to the gain or loss in the **Amount of Adjustment** field. | | Amount of Adjustment | The adjustments to gain or loss. | | Gain or Loss | The amount of gain or loss. | ### Short-Term Gains and Losses Totals | Field | Description | | :--------------------- | :--------------------------------------------------- | | Proceeds (Sales Price) | The gross cash proceeds from all dispositions. | | Cost or Other Basis | The total amount of the adjusted basis. | | Amount of Adjustment | The total amount of the adjustments to gain or loss. | | Gain or Loss | The total amount of gain or loss. | ### Long-Term Transactions | Field | Description | | :--------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Long-Term Transactions | Indicates long-term transaction reported on Form 1099-B. Possible code values:
Code D (indicates a long-term transaction for which basis was reported to the IRS)
Code E (indicates a long-term transaction for which basis was not reported to the IRS)
Code F (indicates a long-term transaction that was not reported). | ### Long-Term Gains and Losses (Repeating Group) | Field | Description | | :------------------------ | :-------------------------------------------------------------------------------------------------------------- | | Description of Property | A description of the property for which long-term gains or losses are reported. | | Date Acquired | The acquisition date of any securities sold. | | Date Sold or Disposed of | The trade date of the sale or exchange. | | Proceeds (Sales Price) | The gross cash proceeds from disposition. | | Cost or Other Basis | The adjusted basis of any securities sold unless the security is not covered. | | Code(s) From Instructions | The code for the explanation of any adjustments made to the gain or loss in the **Amount of Adjustment** field. | | Amount of Adjustment | The adjustments to gain or loss. | | Gain or Loss | The amount of gain or loss. | ### Long-Term Gains and Losses Totals | Field | Description | | :--------------------- | :--------------------------------------------------- | | Proceeds (Sales Price) | The gross cash proceeds from all dispositions. | | Cost or Other Basis | The total amount of the adjusted basis. | | Amount of Adjustment | The total amount of the adjustments to gain or loss. | | Gain or Loss | The total amount of gain or loss. | ## Key Fields * Name # Form 990, Tax-Exempt Organization Return Skill Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/built-in-skills/form-skills/990 Extract data from IRS Form 990 (Return of Organization Exempt From Income Tax), the annual return filed by tax-exempt organizations covering finances. The **Form 990, Return of Organization Exempt From Income Tax** skill extracts data from Forms 990. Form 990 is an informational tax form that most tax-exempt organizations must file annually, providing an overview of the organization's activities and governance, as well as detailed financial information. The Form 990, Return of Organization Exempt From Income Tax skill is a production skill. It has been fully trained on a large document set and provides high accuracy of data identification and extraction. The skill is ready to be used in production and does not require further training on your specific documents. Accuracy and straight-through processing (STP) rates can be further optimized in production through continuous learning from human-in-the-loop feedback. This skill recognizes handwritten text. The option is enabled by default. If you do not import handwritten forms, disable the **Handwritten** option in the skill settings. ## Countries and Languages | Countries | Languages | | :-------- | :-------- | | USA | English | ## Extracted Fields ### Header Information | Field | Description | | :------------------------- | :------------------------------------------------------------------------------------------------- | | Year | The year when the form was revised. | | Box A - Calendar Year | Accounting period. The document can be issued either for a calendar year or for a specific period. | | Box A - Tax Year Beginning | Start date if specific period is specified. | | Box A - Tax Year Ending | End date if specific period is specified. | ### Box B - Check if Applicable | Field | Description | | :------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Address Change | Indicates if the organization changed its address. | | Name Change | Indicates if the organization changed its legal name. | | Initial Return | Indicates that the organization is filing a Form 990 for the first time and has not previously filed Forms 990-EZ, 990-PF, 990-T, or 990-N. | | Final Return | Indicates if the organization has terminated its existence or ceased to be an organization. | | Amended Return | Indicates if the organization previously filed a return with the IRS for a tax year and is now filing another return for the same tax year to amend the previously filed return. | | Application Pending | Indicates if the organization either has filed a Form 1023, 1023-EZ, 1024, or 1024-A with the IRS and is awaiting a response, or claims tax-exempt status under section 501(a) but hasn't filed a Form 1023, 1023-EZ, 1024, or 1024-A to be recognized by the IRS as tax exempt. | ### Organization Information | Field | Description | | :-------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Box C - Name of Organization | The legal name of the organization. | | Box C - Doing Business as | The alternate name of the organization, if the organization operates under a name different from its legal name. | | Box C - Number and Street | The number and street of the organization. If the organization receives its mail in care of a third party (such as an accountant or an attorney), the street address line will have the letters "C/O" followed by the third party's name and street address or P.O. box. | | Box C - Room or Suite | The suite, room, or other unit number of the organization. | | Box C - City State ZIP Code | The organization's foreign address (city or town, state or province, country, and ZIP or foreign postal code). | | Box D - Employer Identification Number | Employer identification number (EIN). | | Box E - Telephone Number | The telephone number of the organization. | | Box F - Name and Address of Principal Officer | The name and address of the principal officer. | | Box G - Gross Receipts | The total amount of gross receipts. | ### Group Return Information | Field | Description | | :--------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------- | | Box H(a) - Group Return for Subordinates | Indicates if this is a group return for subordinates. Possible values: Yes, No. If No is selected, Box H(b) should be empty. | | Box H(b) - All Subordinates Included | Indicates if all subordinates are included. Possible values: Yes, No. | | Box H(c) - Group Exemption Number | The group exemption number. | ### Tax-Exempt Status | Field | Description | | :------------------- | :----------------------------------------------------------- | | 501(c)(3) | The tax-exempt status. | | 501(c)(other) | The tax-exempt status. | | 501(c)(other) Number | The specific subsection number if 501(c)(other) is selected. | | 4947(a)(1) | The tax-exempt status. | | 527 | The tax-exempt status. | ### Additional Organization Details | Field | Description | | :------------------------------ | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Box J - Website | The website of the organization. | | Box K - Form of Organization | The form of the organization or its status under state law (Corporation, Trust, Association, Other). | | Box L - Year of Formation | The year in which the organization was legally created under state or foreign law. If a corporation, contains the year of incorporation. | | Box M - State of Legal Domicile | For a corporation, the state of incorporation (country of incorporation for a foreign corporation formed outside the United States). For a trust or other entity, the state whose law governs the internal affairs of the organization. | ### Part I - Summary | Field | Description | | :----------------------------------------------- | :-------------------------------------------------------------------------------------------------------- | | Box 1 - Organization Mission | The mission of the organization. | | Box 2 - Organization Discontinued Its Operations | Indicates if the organization discontinued its operations or disposed of more than 25% of its net assets. | | Box 3 - Number of Voting Members | The number of voting members of the governing body (Part VI, field Box 1a). | | Box 4 - Number of Independent Voting Members | The number of independent voting members of the governing body. | | Box 5 - Total Number of Individuals Employed | The total number of individuals employed in the given calendar year. | | Box 6 - Total Number of Volunteers | The total number of volunteers. | | Box 7a - Total Unrelated Business Revenue | The total unrelated business revenue from Part VIII. | | Box 7b - Net Unrelated Business Taxable Income | Net unrelated business taxable income from Form 990-T, line 39. | ### Part I - Financial Summary | Field | Description | | :----------------------------------------------------------- | :-------------------------------------------------------------------------- | | Box 8 - Contributions and Grants - Prior/Current Year | Contributions and grants for prior and current year. | | Box 9 - Program Service Revenue - Prior/Current Year | Program service revenue for prior and current year. | | Box 10 - Investment Income - Prior/Current Year | Investment income for prior and current year. | | Box 11 - Other Revenue - Prior/Current Year | Other revenue for prior and current year. | | Box 12 - Total Revenue - Prior/Current Year | The total revenue for prior and current year. | | Box 13 - Grants Paid - Prior/Current Year | Grants and similar amounts paid for prior and current year. | | Box 14 - Benefits Paid - Prior/Current Year | Benefits paid to or for members for prior and current year. | | Box 15 - Salaries - Prior/Current Year | Salaries, other compensation, employee benefits for prior and current year. | | Box 16a - Professional Fundraising Fees - Prior/Current Year | Professional fundraising fees for prior and current year. | | Box 16b - Total Fundraising Expenses | Total fundraising expenses. | | Box 17 - Other Expenses - Prior/Current Year | Other expenses for prior and current year. | | Box 18 - Total Expenses - Prior/Current Year | The total expenses for prior and current year. | | Box 19 - Revenue Less Expenses - Prior/Current Year | Revenue less expenses for prior and current year. | | Box 20 - Total Assets - Beginning/End of Year | The total assets for beginning and end of year. | | Box 21 - Total Liabilities - Beginning/End of Year | The total liabilities for beginning and end of year. | | Box 22 - Net Assets - Beginning/End of Year | Net assets or fund balances for beginning and end of year. | ### Part II - Signature Block | Field | Description | | :------------------------------------------- | :-------------------------------------------------- | | Officer Information - Name and Title | Name and title of signing officer. | | Officer Information - Date | Date signed. | | Preparer Information - Name | Name of paid preparer. | | Preparer Information - Date | Date prepared. | | Preparer Information - Self-Employed | Indicates if preparer is self-employed. | | Preparer Information - PTIN | Preparer Tax Identification Number. | | Preparer Information - Firm's Name | Name of preparer's firm. | | Preparer Information - Firm's EIN | Firm's Employer Identification Number. | | Preparer Information - Firm's Address | Address of preparer's firm. | | Preparer Information - Phone Number | Phone number of preparer. | | IRS May Discuss This Return with the Prepare | Permission for IRS to discuss return with preparer. | ## Key Fields * Box C - Name of Organization * Box D - Employer Identification Number * Box J - Website ## Validation Rules | Rule | Description | | :-------------- | :------------------------------------------------------------- | | Checkmark Check | Sets the value for fields depending on the field descriptions. | # Form W-2 - Document Skill Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/built-in-skills/form-skills/w-2 Extract data from IRS Form W-2 (Wage and Tax Statement): annual employee earnings, taxes withheld, and employer information for IRS and third-party W-2s. The **Form W-2, Wage and Tax Statement** skill extracts data from Forms W-2, annually completed by U.S. employers and provided to their employees and the IRS. The form contains personal information of the employee, his/her annual salary, and the amount of taxes withheld. The Form W-2, Wage and Tax Statement skill extracts data from official IRS Forms W-2, but also W-2 statements created using 3rd party software applications. The Form W-2, Wage and Tax Statement skill is a production skill. It has been fully trained on a large document set and provides high accuracy of data identification and extraction. The skill is ready to be used in production and does not require further training on your specific documents. Accuracy and straight-through processing (STP) rates can be further optimized in production through continuous learning from human-in-the-loop feedback. This skill recognizes handwritten text. The option is enabled by default. If you do not import handwritten forms, disable the **Handwritten** option in the skill settings. ## Countries and Languages | Countries | Languages | | :-------- | :-------- | | USA | English | ## Extracted Fields ### Form Information | Field | Description | | :---- | :--------------- | | Year | The filing year. | ### Employee and Employer Identification | Field | Description | | :-------------------------------------------------- | :------------------------------------- | | Box a: Employee's social security number | The employee's social security number. | | Box b: Employer Identification Number (EIN) | The employer's details. | | Box c: Employer's name | The employer's details. | | Box c: Address, and ZIP code | The employer's details. | | Box d: Control number | The employer's details. | | Box e: Employee's first name and initial, last name | The employee's personal details. | | Box f: Employee's address and ZIP code | The employee's personal details. | ### Wages and Tax Information | Field | Description | | :------------------------------------- | :----------------------------- | | Box 1: Wages, tips, other compensation | The amounts paid and withheld. | | Box 2: Federal income tax withheld | The amounts paid and withheld. | | Box 3: Social security wages | The amounts paid and withheld. | | Box 4: Social security tax withheld | The amounts paid and withheld. | | Box 5: Medicare wages and tips | The amounts paid and withheld. | | Box 6: Medicare tax withheld | The amounts paid and withheld. | | Box 7: Social security tips | The amounts paid and withheld. | | Box 8: Allocated tips | The amounts paid and withheld. | | Box 10: Dependent care benefits | The amounts paid and withheld. | | Box 11: Nonqualified plans | The amounts paid and withheld. | ### Additional Compensation (Box 12) | Field | Description | | :------------------------------------- | :------------------------------------------------------------ | | Box 12a - single or double letter code | The amount of compensation and benefits paid to the employee. | | Box 12a - dollar amount | The amount of compensation and benefits paid to the employee. | | Box 12b - single or double letter code | The amount of compensation and benefits paid to the employee. | | Box 12b - dollar amount | The amount of compensation and benefits paid to the employee. | | Box 12c - single or double letter code | The amount of compensation and benefits paid to the employee. | | Box 12c - dollar amount | The amount of compensation and benefits paid to the employee. | | Box 12d - single or double letter code | The amount of compensation and benefits paid to the employee. | | Box 12d - dollar amount | The amount of compensation and benefits paid to the employee. | ### Employee Status and Other Information | Field | Description | | :--------------------------- | :----------------------------------------------------------------------------------------------------------------- | | Box 13: Statutory employee | Indicates whether the employee works full-time or part-time. | | Box 13: Retirement plan | Indicates whether the employee participates in a pension or retirement plan. | | Box 13: Third-party sick pay | Indicates whether the employer is a third-party sick pay payer or reports sick pay payments made by a third party. | | Box 14: Other | Additional information. | ### State and Local Tax Information (Repeating Group) | Field | Description | | :--------------------------------- | :-------------- | | Box 15: State | Taxes withheld. | | Box 15: Employer's state ID number | Taxes withheld. | | Box 16: State wages, tips, etc. | Taxes withheld. | | Box 17: State income tax | Taxes withheld. | | Box 18: Local wages, tips, etc. | Taxes withheld. | | Box 19: Local income tax | Taxes withheld. | | Box 20: Locality name | Taxes withheld. | ## Key Fields * Box a: Employee's social security number * Box b: Employer identification number (EIN) * Box c: Employer's name * Box e: Employee's name * Box 1: Wages, tips, other compensation # Form W-2G - Document Skill Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/built-in-skills/form-skills/w-2g Extract data from IRS Form W-2G (Certain Gambling Winnings) reporting gambling winnings and federal income tax withheld by the type and amount of winnings. The **Form W-2G, Certain Gambling Winnings** skill extracts data from Forms W-2G, which are documents used to report gambling winnings and any federal income tax withheld on those winnings. The requirements for reporting and withholding depend on: * The type of gambling. * The amount of the gambling winnings. * The ratio of the winnings to the wager. The Form W-2G, Certain Gambling Winnings skill is a preview skill. It has been trained on a limited set of documents and is designed to help you quickly get started with processing Forms W-2G. For production use, you may need to uptrain the skill with your own document samples. This skill recognizes handwritten text. The option is enabled by default. If you do not import handwritten forms, disable the **Handwritten** option in the skill settings. ## Countries and Languages | Countries | Languages | | :-------- | :-------- | | USA | English | ## Extracted Fields ### Form Status and Year | Field | Description | | :-------- | :----------------------------------------------------------------------------------------- | | Void | Indicates that a previously issued form is being voided. | | Corrected | Indicates that the form being filed is a corrected version of a previously submitted form. | | Year | The reporting fiscal year. | ### Payer Information | Field | Description | | :----------------------- | :------------------------------------------------------- | | Payer Details - Name | The name, address, and phone number of the of the payer. | | Payer Details - Street | The name, address, and phone number of the of the payer. | | Payer Details - City | The name, address, and phone number of the of the payer. | | Payer Details - State | The name, address, and phone number of the of the payer. | | Payer Details - ZIP Code | The name, address, and phone number of the of the payer. | | Payer Details - Country | The name, address, and phone number of the of the payer. | | Payer Details - Phone | The name, address, and phone number of the of the payer. | | Payer's TIN | The tax identification number assigned to the payer. | ### Winner Information | Field | Description | | :------------------------ | :------------------------------------------------------- | | Winner's TIN | The tax identification number assigned to the recipient. | | Winner Details - Name | The address of the recipient. | | Winner Details - Street | The address of the recipient. | | Winner Details - City | The address of the recipient. | | Winner Details - State | The address of the recipient. | | Winner Details - ZIP Code | The address of the recipient. | | Winner Details - Country | The address of the recipient. | ### Gambling and Winnings Information | Field | Description | | :----------------------------- | :-------------------------------------------------------------------------------------------------------------- | | Reportable Winnings | The amount of gambling winnings received by the recipient to be reported to the Internal Revenue Service (IRS). | | Date Won | The date on which the gambling winnings were obtained or won by the recipient. | | Type of Wager | The particular type of gambling activity that led to the reported winnings. | | Federal Income Tax Withheld | The amount of federal income tax that has been withheld from the gambling winnings reported on the form. | | Transaction | The specific details of the gambling transaction or activity that resulted in the reported winnings. | | Race | The race (or game) applicable to the winning ticket. | | Winnings from Identical Wagers | The total amount of cash or prizes won from a single type of wager or bet. | ### Payment Processing Information | Field | Description | | :-------- | :-------------------------------------------------------------------------- | | Cashier | The cashier and/or window number making the winning payment. | | Window | The cashier and/or window number making the winning payment. | | First ID | The first identification number associated with the recipient of the form. | | Second ID | The second identification number associated with the recipient of the form. | ### State and Local Tax Information | Field | Description | | :-------------------------- | :------------------------------------------------------------------------------------------------------------------- | | State Identification Number | The identification number issued by the state where the gambling activity took place. | | State Winnings | The amount of state winnings. | | State Income Tax Withheld | The amount of state income tax that was withheld from your gambling winnings by the payer or gambling establishment. | | Local Winnings | The amount of gambling winnings subject to local income taxes. | | Local Income Tax Withheld | The amount of local income tax that has been withheld from certain gambling winnings. | | Name of Locality | The specific location or jurisdiction where the gambling winnings were received. | ### Signature Information | Field | Description | | :-------- | :------------------------------ | | Signature | The signature of the recipient. | | Date | The date of signing. | ## Key Fields * Year * Payer Details/Name * Payer's TIN * Winner Details/Name * Winner's TIN * Reportable Winnings ## Validation Rules | Rule | Description | | :----------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Complete Form Year | Checks the value in the **Year** field. It removes any white spaces and converts a 2-digit year into a 4-digit format. If the last two digits are numeric and start with 9, it converts the value to the 1900's (for example, 99 converts to 1999). Otherwise, it assumes the date is from the 2000's (for example, 24 converts to 2024). | # Form W-4 - Document Skill Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/built-in-skills/form-skills/w-4 Extract data from IRS Form W-4 (Employee's Withholding Certificate) — used by employees to direct employer federal income tax withholding from their paychecks. The **Form W-4, Employee's Withholding Certificate** skill extracts data from Forms W-4. This form is provided by employees so that the employer can withhold the correct federal income tax from the employee's pay. The Form W-4, Employee's Withholding Certificate skill is a preview skill. It has been trained on a limited set of documents and is designed to help you quickly get started with processing Forms W-4. For production use, you may need to uptrain the skill with your own document samples. This skill recognizes handwritten text. The option is enabled by default. If you do not import handwritten forms, disable the **Handwritten** option in the skill settings. ## Countries and Languages | Countries | Languages | | :-------- | :-------- | | USA | English | ## Extracted Fields Asterisk (`*`) indicates a required field or field group. Values cannot be empty. ### Form Information | Field | Description | | :---- | :---------------------------------- | | Year | The year when the form was revised. | ### Step 1 - Enter Personal Information | Field | Description | | :-------------------------------------- | :----------------------------------------------------- | | Box a - First Name and Middle Initial\* | The first name and the middle initial of the employee. | | Box a - Last Name\* | The last name of the employee. | | Box a - Address | The address of the employee. | | Box a - City or Town State and ZIP Code | The address of the employee. | | Box b - Social Security Number\* | The social security number of the employee. | #### Box c - Filing Status | Field | Description | | :---------------------------------------------------- | :----------------------------- | | Single or Married Filing Separately | The anticipated filing status. | | Married Filing Jointly or Qualifying Surviving Spouse | The anticipated filing status. | | Head of Household | The anticipated filing status. | ### Step 2 - Multiple Jobs or Spouse Works | Field | Description | | :-------------------------- | :--------------------------------------------------------- | | Box c - Only Two Jobs Total | Indicates that the employee has two jobs at the same time. | ### Step 3 - Claim Dependents | Field | Description | | :---------------------------------------------------------------- | :------------------------------------------ | | Multiply the Number of Qualifying Children Under Age 17 by \$2000 | Determines the amount of child tax credit. | | Multiply the Number of Other Dependents by \$500 | Determines the credit for other dependents. | | Total | The total credit amount. | ### Step 4 (optional) - Other Adjustments | Field | Description | | :----------------------------------- | :------------------------------------------------------------------------------------------------------------------- | | Box a - Other Income (Not from Jobs) | The total of other estimated income for the year. | | Box b - Deductions | The amount from the Deductions Worksheet. | | Box c - Extra Withholding | Any additional amount withheld from the pay each pay period, including all amounts from the Multiple Jobs Worksheet. | ### Step 5 - Sign Here | Field | Description | | :---- | :------------------- | | Date | The date of signing. | ### Employers Only | Field | Description | | :----------------------------------- | :------------------------------------ | | Employer's Name and Address | The name and address of the employer. | | First Date of Employment | The first date of employment | | Employer Identification Number (EIN) | The employer identification number. | ## Key Fields * Step 1 - Enter Personal Information/Box a - First Name and Middle Initial * Step 1 - Enter Personal Information/Box a - Last Name * Step 1 - Enter Personal Information/Box b - Social Security Number ## Validation Rules | Rule | Description | | :----------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Correct Year | Checks the value in the **Year** field. It converts a 2-digit year (such as 24) into a 4-digit format (such as 2024). It assumes all 2-digit years are in the 2000s. | # Form W-8BEN - Document Skill Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/built-in-skills/form-skills/w-8ben Extract data from IRS Form W-8BEN (Certificate of Foreign Status of Beneficial Owner — Individuals), used by foreign individuals to claim US tax withholding. The **Form W-8BEN, Certificate of Foreign Status of Beneficial Owner for United States Tax Withholding and Reporting (Individuals)** skill extracts data from Forms W-8BEN. This form is provided to the withholding agent or payer by foreign persons who receive certain types of income in the United States. Foreign persons must provide a Form W-8BEN to the withholding agent or payer if they are the beneficial owner of an income subject to tax withholding. The W-8BEN, Certificate of Foreign Status of Beneficial Owner for United States Tax Withholding and Reporting (Individuals) skill is a preview skill. It has been trained on a limited set of documents and is designed to help you quickly get started with processing Forms W-8BEN. For production use, you may need to uptrain the skill with your own document samples. This skill recognizes handwritten text. The option is enabled by default. If you do not import handwritten forms, disable the **Handwritten** option in the skill settings. ## Countries and Languages | Countries | Languages | | :-------- | :-------- | | USA | English | ## Extracted Fields Asterisk (`*`) indicates a required field or field group. Values cannot be empty. ### Form Information | Field | Description | | :---- | :---------------------------------- | | Form | Fixed string W-8BEN, if applicable. | ### Individual Information | Field | Description | | :------------ | :------------------------------ | | Name\* | The name of the individual. | | Citizenship | The country of citizenship. | | Date of Birth | The individual's date of birth. | ### Address Information #### Permanent Residence Address | Field | Description | | :------------------------- | :------------------------------------------------- | | Address | The permanent residence address of the individual. | | City and State or Province | The permanent residence address of the individual. | | Country | The permanent residence address of the individual. | #### Mailing Address | Field | Description | | :------------------------- | :-------------------------------------------------- | | Address | The address to which correspondence should be sent. | | City and State or Province | The address to which correspondence should be sent. | | Country | The address to which correspondence should be sent. | ### Tax Identification | Field | Description | | :------------------------ | :------------------------------------------------------------------------------------------------ | | SSN or ITIN | The individual's Social Security Number (SSN) or Individual Taxpayer Identification Number (TIN). | | Foreign Tax ID | The foreign Tax Identifying Number (Foreign TIN). | | FTIN Not Legally Required | Specifies that FTIN is not legally required. | | Reference Number | Any useful referencing information. | ### Tax Treaty Information | Field | Description | | :---------- | :--------------------------------------------------------------------------------- | | Resident of | The country where the beneficial owner is resident for income tax treaty purposes. | #### Special Rates and Conditions | Field | Description | | :-------------------- | :----------------------------------------------------------------------------- | | Article and Paragraph | Special rates and conditions for individuals who are claiming treaty benefits. | | Rate | Special rates and conditions for individuals who are claiming treaty benefits. | | Income | Special rates and conditions for individuals who are claiming treaty benefits. | | Additional Conditions | Special rates and conditions for individuals who are claiming treaty benefits. | ### Certification | Field | Description | | :--------------- | :-------------------------------------------------------------------------------------------------------------------------------------------- | | Capacity to Sign | Specifies that an authorized representative or agent have the capacity to sign for the person identified on the **Name of Individual** field. | | Date | The date of signing. | | Printed Name | The printed name of the individual. | ## Key Fields * Name * Date # Form W-8BEN-E - Document Skill Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/built-in-skills/form-skills/w-8ben-e Extract data from IRS Form W-8BEN-E (Certificate of Status of Beneficial Owner — Entities), used by foreign entities to document status for US tax withholding. The **Form W-8BEN-E, Certificate of Status of Beneficial Owner for United States Tax Withholding and Reporting (Entities)** skill extracts data from Forms W-8BEN-E. These forms are completed by foreign entities to document their status and provided to the withholding agent. The W-8BEN-E, Certificate of Status of Beneficial Owner for United States Tax Withholding and Reporting (Entities) skill is a preview skill. It has been trained on a limited set of documents and is designed to help you quickly get started with processing Forms W-8BEN-E. For production use, you may need to uptrain the skill with your own document samples. This skill recognizes handwritten text. The option is enabled by default. If you do not import handwritten forms, disable the **Handwritten** option in the skill settings. ## Countries and Languages | Countries | Languages | | :-------- | :-------------------- | | USA | English | | | French | | | German | | | German (New Spelling) | ## Extracted Fields Asterisk (`*`) indicates a required field or field group. Values cannot be empty. ### Basic Information | Field | Description | | :----------------------------------------------- | :--------------------------------------------------------- | | Form | Fixed string W-8BEN-E, if applicable. | | Box 1 - Name of Beneficial Owner\* | The name of the organization that is the beneficial owner. | | Box 2 - Country of Incorporation or Organization | The country of the incorporation or organization. | | Box 3 - Entity Receiving the Payments | The name of the disregarded entity receiving the payment. | ### Chapter 3 Status | Field | Description | | :----------------------------------- | :------------------------------------------------------------------------------ | | Box 4 - Chapter 3 Status Entity Type | Determines the classification of the legal entity based on U.S. tax principles. | **Possible Entity Types:** * Simple Trust * Central Bank of Issue * Grantor Trust * Tax-Exempt Organization * Private Foundation * Disregarded Entity * Corporation * Complex Trust * Estate * International Organization * Partnership * Foreign Government - Controlled Entity * Foreign Government - Integral Part | Field | Description | | :-------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Box 4 - Hybrid Entity | Specifies whether the entity specified in the Box 1 - Name of Beneficial Owner field is a hybrid entity claiming tax treaty benefits.
Possible values: Yes, No | ### Chapter 4 Status (FATCA) | Field | Description | | :------------------------------------ | :----------------------------------------------------------------------------- | | Box 5 - Chapter 4 Status FATCA Status | Specifies the Foreign Account Tax Compliance Act (FATCA) status of the entity. | **Possible FATCA Status Values:** * Nonparticipating FFI * Participating FFI * Reporting Model 1 FFI * Reporting Model 2 FFI * Registered Deemed-Compliant FFI * Sponsored FFI * Certified Deemed-Compliant Nonregistering Local Bank * Certified Deemed-Compliant FFI with Only Low-Value Accounts * Certified Deemed-Compliant Sponsored Closely Held Investment Vehicle * Certified Deemed-Compliant Limited Life Debt Investment Entity * Certain Investment Entities That Do Not Maintain Financial Accounts * Owner-Documented FFI * Restricted Distributor * Nonreporting IGA FFI * Foreign Government or Government of US Possession or Foreign Central Bank of Issue * International Organization * Exempt Retirement Plans * Entity Wholly Owned By Exempt Beneficial Owners * Territory Financial Institution * Excepted Nonfinancial Group Entity * Excepted Nonfinancial Start-Up Company * Excepted Nonfinancial Entity In Liquidation or Bankruptcy * 501(c) Organization * Nonprofit Organization * Publicly Traded NFFE or NFFE Affiliate of Publicly Traded Corporation * Excepted Territory NFFE * Active NFFE * Passive NFFE * Excepted Inter-Affiliate FFI * Direct Reporting NFFE * Sponsored Direct Reporting NFFE * Account That Is Not A Financial Account ### Address Information #### Permanent Residence Address | Field | Description | | :---------------------------------- | :--------------------------------------------- | | Box 6 - Permanent Residence Address | The permanent residence address of the entity. | | Address | Street address | | City and State or Province | City and state/province | | Country | Country | #### Mailing Address | Field | Description | | :------------------------- | :-------------------------------------------------- | | Box 7 - Mailing Address | The address to which correspondence should be sent. | | Address | Street address | | City and State or Province | City and state/province | | Country | Country | ### Tax Identification | Field | Description | | :---------------------------------------- | :------------------------------------------------------------------ | | Box 8 - US Taxpayer Identification Number | The U.S. taxpayer identification number. | | Box 9a - GIIN | The Global Intermediary Identification Number (GIIN) of the entity. | | Box 9b - Foreign TIN | The Foreign Tax Identification Number (Foreign TIN) of the entity. | | Box 9c - FTIN Not Legally Required | Specifies that FTIN is not legally required. | | Box 10 - Reference Number | Any useful referencing information. | ### Disregarded Entity or Branch Information | Field | Description | | :--------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Box 11 - Chapter 4 Status FATCA Status of Disregarded Entity or Branch | Specifies the Foreign Account Tax Compliance Act (FATCA) status of the disregarded entity with a GIIN or the branch that is an FFI located in a country other than the country identified in the Box 2 - Country of Incorporation or Organization field. | **Possible Status Values:** * Branch Treated As Nonparticipating FFI * Participating FFI * Reporting Model 1 FFI * Reporting Model 2 FFI * US Branch #### Address of Disregarded Entity or Branch | Field | Description | | :----------------------------------------------- | :----------------------------------------------- | | Box 12 - Address of Disregarded Entity or Branch | The address of the disregarded entity or branch. | | Address | Street address | | City and State or Province | City and state/province | | Country | Country | | Field | Description | | :---------------------------------- | :---------------------------------------------------------------------------------------- | | Box 13 - GIIN of Disregarded Entity | The Global Intermediary Identification Number (GIIN) of the disregarded entity or branch. | ### Treaty Benefits | Field | Description | | :-------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | Box 14a | Specifies that the entity specified in the Box 1 - Name of Beneficial Owner field is making a claim for reduced withholding under a treaty on certain payments of U.S. source income. | | Box 14a - Resident of | The country for which the beneficial owner is claiming treaty benefits. | | Box 14b | Specifies that the entity derives the items of income for which treaty benefits are claimed and meets any applicable limitation on benefits provisions. | #### Limitation on Benefits Types | Field | Description | | :------------------------ | :--------------------------------------------------------------------------------------------------------- | | Box 14b - Limitation Type | Specifies the types of limitation on benefits provisions that may be included in an applicable tax treaty. | **Possible Limitation Types:** * Government * Tax-Exempt Pension Trust or Pension Fund * Other Tax-Exempt Organization * Publicly Traded Corporation * Subsidiary of a Publicly Traded Corporation * Company That Meets the Ownership and Base Erosion Test * Company That Meets the Derivative Benefits Test * Company With an Item of Income That Meets Active Trade or Business Test * Favorable Discretionary Determination by the US Competent Authority Received * No LOB Article in Treaty * Other | Field | Description | | :-------------- | :--------------------------------------------------------------------- | | Box 14b - Other | Specifies that the type of limitation on benefits is not listed above. | | Box 14c | Specifies the type of limitation on benefits. | ### Special Rates and Conditions | Field | Description | | :------------------------------------ | :--------------------------------------------------------------- | | Box 15 - Special Rates and Conditions | Specifies that the beneficial owner is claiming treaty benefits. | | Article and Paragraph | Treaty article and paragraph | | Rate | Rate claimed | | Income | Type of income | | Additional Conditions | Any additional conditions | ### Certification Boxes The following fields are specific certifications relating to the status marked in Box 5 - Chapter 4 Status FATCA Status: | Field | Description | | :--------------------------------- | :---------------------------------------------------------------------------------------------------------------- | | Box 16 - Name of Sponsoring Entity | Specific certifications relating to the status that is marked on the Box 5 - Chapter 4 Status FATCA Status field. | | Box 17 - Investment Entity | Specific certifications relating to the status that is marked on the Box 5 - Chapter 4 Status FATCA Status field. | | Box 18 through Box 25c | Specific certifications relating to the status that is marked on the Box 5 - Chapter 4 Status FATCA Status field. | ### Box 26 - IGA FFI Information | Field | Description | | :---------------------------------- | :---------------------------------------------------------------------------------------------------------------- | | Box 26 | Specific certifications relating to the status that is marked on the Box 5 - Chapter 4 Status FATCA Status field. | | Box 26 - Name of Jurisdiction | Jurisdiction name for IGA FFI | | Box 26 - IGA Model | Model 1 IGA or Model 2 IGA | | Box 26 - Category of FFI | Category of Foreign Financial Institution | | Box 26 - Name of Trustee or Sponsor | Name of trustee or sponsor | | Box 26 - US or Foreign Trustee | US Trustee or Foreign Trustee | ### Additional Certification Boxes | Field | Description | | :-------------------- | :---------------------------------------------------------------------------------------------------------------- | | Box 27 through Box 32 | Specific certifications relating to the status that is marked on the Box 5 - Chapter 4 Status FATCA Status field. | | Box 33 | Specific certifications relating to the status that is marked on the Box 5 - Chapter 4 Status FATCA Status field. | | Box 33 - Date | Date for Box 33 certification | | Box 34 | Specific certifications relating to the status that is marked on the Box 5 - Chapter 4 Status FATCA Status field. | | Box 34 - Date | Date for Box 34 certification | | Box 35 | Specific certifications relating to the status that is marked on the Box 5 - Chapter 4 Status FATCA Status field. | | Box 35 - Date | Date for Box 35 certification | | Box 36 | Specific certifications relating to the status that is marked on the Box 5 - Chapter 4 Status FATCA Status field. | ### Box 37 - Publicly Traded Entity Information | Field | Description | | :---------------------------------- | :---------------------------------------------------------------------------------------------------------------- | | Box 37a | Specific certifications relating to the status that is marked on the Box 5 - Chapter 4 Status FATCA Status field. | | Box 37a - Securities Exchange | Securities exchange information | | Box 37b | Specific certifications relating to the status that is marked on the Box 5 - Chapter 4 Status FATCA Status field. | | Box 37b - Name of Entity | Name of entity | | Box 37b - Name of Securities Market | Name of securities market | ### Final Certification Boxes | Field | Description | | :--------------------------------- | :---------------------------------------------------------------------------------------------------------------- | | Box 38 through Box 41 | Specific certifications relating to the status that is marked on the Box 5 - Chapter 4 Status FATCA Status field. | | Box 42 - Name of Sponsoring Entity | Specific certifications relating to the status that is marked on the Box 5 - Chapter 4 Status FATCA Status field. | | Box 43 | Specific certifications relating to the status that is marked on the Box 5 - Chapter 4 Status FATCA Status field. | ### Substantial US Owners and Signature | Field | Description | | :------------------------------------ | :---------------------------------------------------------------------------------------------------------------------------------------------- | | Substantial US Owners of Passive NFFE | The name, address and TIN of each substantial U.S. owner of the NFFE. | | Capacity to Sign | Specifies that an authorized representative or agent have the capacity to sign for the person identified on the Name of Beneficial Owner field. | | Printed Name | The printed name of the beneficial owner. | | Date | The date of signing. | ## Key Fields * Box1 - Name of Beneficial Owner * Date # Form W-8ECI - Document Skill Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/built-in-skills/form-skills/w-8eci Extract data from IRS Form W-8ECI, used by foreign persons to certify that US-source income is effectively connected with a US trade or business (ECI). The **Form W-8ECI, Certificate of Foreign Person's Claim That Income Is Effectively Connected With the Conduct of a Trade or Business in the United States** skill extracts data from Forms W-8ECI, which are used by foreign individuals who receive income from US companies to establish that they are not US citizens, to claim that they are the beneficial owner of the income at stake, and to claim that the income is connected with the conduct of a trade or business in the US. The W-8ECI, Certificate of Foreign Person's Claim That Income Is Effectively Connected With the Conduct of a Trade or Business in the United States skill is a preview skill. It has been trained on a limited set of documents and is designed to help you quickly get started with processing Forms W-8ECI. For production use, you may need to uptrain the skill with your own document samples. This skill recognizes handwritten text. The option is enabled by default. If you do not import handwritten forms, disable the **Handwritten** option in the skill settings. ## Countries and Languages | Countries | Languages | | :-------- | :-------- | | USA | English | ## Extracted Fields Asterisk (`*`) indicates a required field or field group. Values cannot be empty. ### Form Information | Field | Description | | :---- | :--------------------------------------- | | Form | Fixed text string W-8ECI, if applicable. | ### Beneficial Owner Information | Field | Description | | :--------------------------------------- | :-------------------------------------------------------- | | Name of Beneficial Owner\* | The name of the beneficial owner. | | Country of Incorporation or Organization | The country of incorporation or organization. | | Entity Receiving the Payments | The name of the disregarded entity receiving the payment. | | Type of Entity | The type of entity. | | Date of Birth | The date of birth. | ### Address Information #### Permanent Residence Address | Field | Description | | :------------------------- | :------------------------------- | | Address | The permanent residence address. | | City and State or Province | The permanent residence address. | | Country | The permanent residence address. | #### Business Address | Field | Description | | :--------------- | :-------------------- | | Business Address | The business address. | | City and State | The business address. | ### Tax Identification #### US Taxpayer Identification Number | Field | Description | | :-------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------ | | SSN or ITIN | Indicates that the value specified in the **Identification Number** field is a Social Security Number or IRS Individual Taxpayer Identification Number. | | EIN | Indicates that the value specified in the **Identification Number** field is an Employer Identification Number. | | Identification Number | The U.S. taxpayer identification number. | #### Foreign Tax Information | Field | Description | | :------------------------ | :------------------------------------------- | | FTIN | The foreign tax identifying number. | | FTIN Not Legally Required | Specifies that FTIN is not legally required. | | Reference Number | Any useful referencing information. | ### Income and Certification | Field | Description | | :-------------- | :--------------------------------------------------------------------------------------------------------------- | | Items of Income | The items of income that are effectively connected with the conduct of a trade or business in the United States. | | Certified | Certification for a dealer in securities. | ### Signature Information | Field | Description | | :--------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------- | | Capacity to Sign | Specifies that an authorized representative or agent have the capacity to sign for the person identified on the **Name of Beneficial Owner** field. | | Printed Name | The printed name of the beneficial owner. | | Date | The date of signing. | ## Key Fields * Box 1 - Name of Beneficial Owner * Date # Form W-8EXP - Document Skill Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/built-in-skills/form-skills/w-8exp Extract data from IRS Form W-8EXP, used by foreign governments, central banks, and tax-exempt entities to claim US withholding exemptions or reductions. The **Form W-8EXP, Certificate of Foreign Government or Other Foreign Organization for United States Tax Withholding and Reporting** skill extracts data from Forms W-8EXP. These forms must be provided in order to do the following: * Establish that the payee is not a U.S. person. * Claim that the payee is the beneficial owner of the income for which Form W-8 EXP is given. * Claim a reduced rate of, or exemption from, withholding as a foreign government, international organization, foreign central bank of issue, foreign tax-exempt organization, foreign private foundation, or government of a U.S. possession. The Form W-8EXP, Certificate of Foreign Government or Other Foreign Organization for United States Tax Withholding and Reporting skill is a preview skill. It has been trained on a limited set of documents and is designed to help you quickly get started with processing Forms W-8EXP. For production use, you may need to uptrain the skill with your own document samples. This skill recognizes handwritten text. The option is enabled by default. If you do not import handwritten forms, disable the **Handwritten** option in the skill settings. ## Countries and Languages | Countries | Languages | | :-------- | :-------------------- | | USA | English | | | French | | | German | | | German (New Spelling) | ## Basic Information | Field | Description | | :----------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------ | | Form | The fixed W-8EXP string, if applicable. | | Box 1 - Name of Organization | The name of the organization. | | Box 2 - Country of Incorporation or Organization | The country under the laws of which the foreign government or other foreign organization was created, incorporated, organized, or governed. | ## Entity Type and Status ### Box 3 - Type of Entity | Field | Description | | :------------------------------ | :------------------ | | Foreign Government | The type of entity. | | International Organization | The type of entity. | | Foreign Central Bank of Issue | The type of entity. | | Foreign Tax-Exempt Organization | The type of entity. | | Foreign Private Foundation | The type of entity. | | Government of US Possession | The type of entity. | ### Box 4 - Chapter 4 Status FATCA Status | Field | Description | | :------------------------------------------- | :------------------------------------------------------------------- | | Participating FFI | The Foreign Account Tax Compliance Act (FATCA) status of the entity. | | Reporting Model 1 FFI | The Foreign Account Tax Compliance Act (FATCA) status of the entity. | | Reporting Model 2 FFI | The Foreign Account Tax Compliance Act (FATCA) status of the entity. | | Registered Deemed-Compliant FFI | The Foreign Account Tax Compliance Act (FATCA) status of the entity. | | Nonreporting IGA FFI | The Foreign Account Tax Compliance Act (FATCA) status of the entity. | | Territory Financial Institution | The Foreign Account Tax Compliance Act (FATCA) status of the entity. | | International Organization | The Foreign Account Tax Compliance Act (FATCA) status of the entity. | | Foreign Government | The Foreign Account Tax Compliance Act (FATCA) status of the entity. | | Exempt Retirement Plan of Foreign Government | The Foreign Account Tax Compliance Act (FATCA) status of the entity. | | 501(c ) Organization | The Foreign Account Tax Compliance Act (FATCA) status of the entity. | | Passive NFFE | The Foreign Account Tax Compliance Act (FATCA) status of the entity. | | Direct Reporting NFFE | The Foreign Account Tax Compliance Act (FATCA) status of the entity. | | Sponsored Direct Reporting NFFE | The Foreign Account Tax Compliance Act (FATCA) status of the entity. | ## Address Information ### Box 5 - Permanent Residence Address | Field | Description | | :------------------------- | :--------------------------------------------------- | | Address | The permanent residence address of the organization. | | City and State or Province | The permanent residence address of the organization. | | Country | The permanent residence address of the organization. | ### Box 6 - Mailing Address | Field | Description | | :------------------------- | :-------------------------------------------------- | | Address | The address to which correspondence should be sent. | | City and State or Province | The address to which correspondence should be sent. | | Country | The address to which correspondence should be sent. | ## Identification Numbers | Field | Description | | :----------------------- | :------------------------------------------------------------------ | | Box 7 - US TIN | The U.S. taxpayer identification number. | | Box 8a - GIIN | The Global Intermediary Identification Number (GIIN) of the entity. | | Box 8b - Foreign TIN | The Foreign Tax Identification Number (Foreign TIN) of the entity. | | Box 9 - Reference Number | Any useful referencing information. | ## Entity Classification and Exemptions ### Government Entity Classifications | Field | Description | | :----------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Box 10a | Indicates that the entity identified in Part I is a foreign government within the meaning of section 892 and the payments are within the scope of the exemption granted by section 892. | | Box 10b | Indicates that the entity identified in Part I is an integral part of the government. | | Box 10b - Integral Part of the Government of | The name of the foreign sovereign's country, if the entity is a controlled entity. | | Box 10c | Indicates that the entity identified in Part I is a controlled entity of the government. | | Box 10c - Controlled Entity of the Government of | The name of the foreign sovereign's country, if the entity is a controlled entity. | ### Organizational Classifications | Field | Description | | :------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Box 11 | Indicates that the entity is an international organization. | | Box 12 | Indicates that the organization is a foreign central bank of issue not wholly owned by a foreign sovereign. | | Box 13a | Indicates that the entity has been issued a determination letter by the IRS. | | Box 13a - Date | The date of the IRS determination letter. | | Box 13b | Indicates that the entity doesn't have an IRS determination letter, but is providing an opinion of U.S. counsel concluding that you are an organization described in section 501(c). | | Box 13c | Indicates that the entity is not a private foundation. | | Box 13d | If it is concluded that the entity identified in Part I is described in section 501(c)(3), indicates that the entity is a private foundation described in section 509. | | Box 14 | Indicates that the entity is a government of a U.S. possession. | ### FATCA and IGA Classifications | Field | Description | | :------------------------------ | :------------------------------------------------------------------------------------------------------------------- | | Box 15 | Indicates that the entity is a treated as a nonreporting FFI under an applicable IGA (and as defined in the IGA). | | Box 15 - Meets the Requirements | The name of the jurisdiction that has the applicable IGA in effect with the United States. | | Box 15 - Is Treated As | The withholding agent with the class of entity described in Annex II of the IGA applicable to your status. | | Box 15 - GIIN | The GIIN (if the entity is an FFI treated as a registered deemed-compliant FFI under an applicable Model 2 IGA). | | Box 16 | Indicates that the entity is a territory financial institution. | | Box 17 | Indicates that the entity is a foreign government, government of a U.S. possession, or foreign central bank. | | Box 18 | Indicates that the entity is an exempt retirement plan of a foreign government. | | Box 19 | Indicates that the entity is a 501(c) organization other than an insurance company described in section 501(c) (15). | ### NFFE Classifications | Field | Description | | :--------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------- | | Box 20a | Indicates that the entity is a passive NFFE. | | Box 20b | Indicates that the entity does not have any substantial U.S. owners. | | Box 20c | Indicates that the entity has provided a statement including the name, address and TIN of each substantial U.S. owner or the NFFE. | | Box 21 - Name of Sponsoring Entity | The name of the sponsoring entity. | | Box 21 | Indicates that the entity is a sponsored direct reporting NFFE. | ## Signature Information | Field | Description | | :--------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------- | | Print Name | The printed name of the authorized official. | | Date | The date of signing. | | Capacity to Sign | Specifies that an authorized representative or agent have the capacity to sign for the entity specified in the **Box 1 - Name of Organization** field. | ## Key Fields * Box 1 - Name of Organization * Date # Form W-8IMY - Document Skill Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/built-in-skills/form-skills/w-8imy Extract data from IRS Form W-8IMY, used by foreign intermediaries and flow-through entities to establish foreign status under sections 1441, 1442, and 1446. The **Form W-8IMY, Certificate of Foreign Intermediary, Foreign Flow-Through Entity, or Certain U.S. Branches for United States Tax Withholding and Reporting** skill extracts data from Forms W-8IMY. These forms may serve to establish foreign status for purposes of sections 1441, 1442, and 1446. The Form W-8IMY, Certificate of Foreign Intermediary, Foreign Flow-Through Entity, or Certain U.S. Branches for United States Tax Withholding and Reporting skill is a preview skill. It has been trained on a limited set of documents and is designed to help you quickly get started with processing Forms W-8IMY. For production use, you may need to uptrain the skill with your own document samples. This skill recognizes handwritten text. The option is enabled by default. If you do not import handwritten forms, disable the **Handwritten** option in the skill settings. ## Countries and Languages | Countries | Languages | | :-------- | :-------------------- | | USA | English | | | French | | | German | | | German (New Spelling) | ## Part I — Identification of Entity ### Basic Information | Field | Description | | :----------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------ | | Form | The fixed W-8IMY string, if applicable. | | Box 1 - Name of Organization | The name of the organization. | | Box 2 - Country of Incorporation or Organization | The country under the laws of which the foreign government or other foreign organization was created, incorporated, organized, or governed. | | Box 3 - Name of Disregarded Entity | The name of the disregarded entity. | ### Box 4 - Chapter 3 Status Entity Type | Field | Description | | :----------------------------------- | :------------------------ | | QI | The status of the entity. | | Nonqualified Intermediary | The status of the entity. | | Territory Financial Institution | The status of the entity. | | US Branch | The status of the entity. | | Withholding Foreign Partnership | The status of the entity. | | Withholding Foreign Trust | The status of the entity. | | Nonwithholding Foreign Partnership | The status of the entity. | | Nonwithholding Foreign Simple Trust | The status of the entity. | | Nonwithholding Foreign Grantor Trust | The status of the entity. | ### Box 5 - Chapter 4 Status FATCA Status | Field | Description | | :-------------------------------------------------------------------- | :------------------------------------------------------------------- | | Nonparticipating FFI | The Foreign Account Tax Compliance Act (FATCA) status of the entity. | | Participating FFI | The Foreign Account Tax Compliance Act (FATCA) status of the entity. | | Reporting Model 1 FFI | The Foreign Account Tax Compliance Act (FATCA) status of the entity. | | Reporting Model 2 FFI | The Foreign Account Tax Compliance Act (FATCA) status of the entity. | | Registered Deemed-Compliant FFI | The Foreign Account Tax Compliance Act (FATCA) status of the entity. | | Territory Financial Institution | The Foreign Account Tax Compliance Act (FATCA) status of the entity. | | Sponsored FFI | The Foreign Account Tax Compliance Act (FATCA) status of the entity. | | Certified Deemed-Compliant Nonregistering Local Bank | The Foreign Account Tax Compliance Act (FATCA) status of the entity. | | Certified Deemed-Compliant FFI with Only Low-Value Accounts | The Foreign Account Tax Compliance Act (FATCA) status of the entity. | | Certified Deemed-Compliant Sponsored Closely Held Investment Vehicle | The Foreign Account Tax Compliance Act (FATCA) status of the entity. | | Certified Deemed-Compliant Limited Life Debt Investment Entity | The Foreign Account Tax Compliance Act (FATCA) status of the entity. | | Certain Investment Entities That Do Not Maintain Financial Accounts | The Foreign Account Tax Compliance Act (FATCA) status of the entity. | | Owner-Documented FFI | The Foreign Account Tax Compliance Act (FATCA) status of the entity. | | Restricted Distributor | The Foreign Account Tax Compliance Act (FATCA) status of the entity. | | Foreign Central Bank of Issue | The Foreign Account Tax Compliance Act (FATCA) status of the entity. | | Nonreporting IGA FFI | The Foreign Account Tax Compliance Act (FATCA) status of the entity. | | Exempt Retirement Plans | The Foreign Account Tax Compliance Act (FATCA) status of the entity. | | Excepted Nonfinancial Group Entity | The Foreign Account Tax Compliance Act (FATCA) status of the entity. | | Excepted Nonfinancial Start-Up Company | The Foreign Account Tax Compliance Act (FATCA) status of the entity. | | Excepted Nonfinancial Entity In Liquidation or Bankruptcy | The Foreign Account Tax Compliance Act (FATCA) status of the entity. | | Publicly Traded NFFE or NFFE Affiliate of Publicly Traded Corporation | The Foreign Account Tax Compliance Act (FATCA) status of the entity. | | Excepted Territory NFFE | The Foreign Account Tax Compliance Act (FATCA) status of the entity. | | Active NFFE | The Foreign Account Tax Compliance Act (FATCA) status of the entity. | | Passive NFFE | The Foreign Account Tax Compliance Act (FATCA) status of the entity. | | Direct Reporting NFFE | The Foreign Account Tax Compliance Act (FATCA) status of the entity. | | Sponsored Direct Reporting NFFE | The Foreign Account Tax Compliance Act (FATCA) status of the entity. | ### Address Information #### Box 6 - Permanent Residence Address | Field | Description | | :------------------------- | :--------------------------------------------------- | | Address | The permanent residence address of the organization. | | City and State or Province | The permanent residence address of the organization. | | Country | The permanent residence address of the organization. | #### Box 7 - Mailing Address | Field | Description | | :------------------------- | :-------------------------------------------------- | | Address | The address to which correspondence should be sent. | | City and State or Province | The address to which correspondence should be sent. | | Country | The address to which correspondence should be sent. | ### Identification Numbers #### Box 8 - US Taxpayer Identification Number | Field | Description | | :-------------------------------- | :--------------------------------------- | | US Taxpayer Identification Number | The U.S. Taxpayer Identification Number. | | QI-EIN | The QI Employer Identification Number. | | WP-EIN | The WP Employer Identification Number. | | WT-EIN | The WT Employer Identification Number. | | EIN | The Employer Identification Number. | | Field | Description | | :---------------------------------------------- | :---------------------------------------------------------------------- | | Box 9a - GIIN | The Global Intermediary Identification Number (GIIN) of the entity. | | Box 9b - Foreign Taxpayer Identification Number | The Foreign Taxpayer Identification Number (Foreign TIN) of the entity. | | Box 10 - Reference Number | Any useful referencing information. | ## Part II — Disregarded Entity or Branch Receiving Payment ### Box 11 - Chapter 4 Status FATCA Status of Disregarded Entity or Branch | Field | Description | | :------------------------------------- | :----------------------------------------------------------------------------------------- | | Branch Treated As Nonparticipating FFI | The Foreign Account Tax Compliance Act (FATCA) status of the disregarded entity or branch. | | Participating FFI | The Foreign Account Tax Compliance Act (FATCA) status of the disregarded entity or branch. | | Reporting Model 1 FFI | The Foreign Account Tax Compliance Act (FATCA) status of the disregarded entity or branch. | | Reporting Model 2 FFI | The Foreign Account Tax Compliance Act (FATCA) status of the disregarded entity or branch. | | US Branch | The Foreign Account Tax Compliance Act (FATCA) status of the disregarded entity or branch. | ### Box 12 - Address of Disregarded Entity or Branch | Field | Description | | :------------------------- | :----------------------------------------------- | | Address | The address of the disregarded entity or branch. | | City and State or Province | The address of the disregarded entity or branch. | | Country | The address of the disregarded entity or branch. | | Field | Description | | :---------------------------------- | :------------------------------------------------------------------------------ | | Box 13 - GIIN of Disregarded Entity | The Global Intermediary Identification Number (GIIN) of the disregarded entity. | ## Part III — Qualified Intermediary | Field | Description | | :------ | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Box 14 | Indicates that the entity is a QI for the payments for which the form is provided. | | Box 15a | Indicates that the entity assumes primary withholding responsibility for purposes of chapters 3 and 4 for each account identified on a withholding statement attached to the form (or, if no withholding statement is attached to this form, for all accounts). | | Box 15b | Indicates that the entity assumes primary withholding and reporting responsibilities under section 1446(f) for each payment of an amount realized on a sale of a PTP interest associated with each account identified on a withholding statement attached to this form for receiving such amounts (or, if no withholding statement is attached to this form, for all accounts). | | Box 15c | Indicates that the entity assumes primary withholding responsibility as a nominee for each distribution by a PTP that is associated with each account identified on a withholding statement attached to this form for receiving such distributions (or, if no withholding statement is attached to this form, for all accounts). | | Box 15d | Indicates that the entity is a QI that is acting as a qualified security lender assuming primary withholding and reporting responsibilities with respect to payments that are U.S. source substitute dividends received from the withholding agent associated with each account identified on a withholding statement attached to the form (or, if no withholding statement is attached to this form, for all accounts). | | Box 15e | Indicates that the entity is a QI that is assuming primary withholding responsibility under chapter 3 and chapter 4 and primary Form 1099 reporting and backup withholding responsibility with respect to all payments associated with this form that are U.S. source interest and substitute interest payments, as permitted by (and described in) the QI agreement. | | Box 15f | Indicates that the entity assumes primary Form 1099 reporting and backup withholding responsibility with respect to the accounts identified in a withholding statement associated with this form or if the entity is a participating FFI or registered deemed-compliant FFI that meets the requirements to report only under Regulations sections 1.6049-4(c)(4)(i) and (c)(4)(ii). | | Box 15g | Indicates that the entity doesn't assume primary Form 1099 reporting and backup withholding responsibility with respect to the account(s) identified on a withholding statement attached to this form (or, if no withholding statement is attached to this form, for all accounts). | | Box 15h | Indicates that the entity meets the requirements of Regulation section, if the entity has allocated or will allocate a portion of a payment to a chapter 4 withholding rate pool of U.S. payees on a withholding statement associated to this form. | | Box 15i | Indicates that the entity has obtained, or will obtain, documentation sufficient to establish each such intermediary or flow-through entity status as a participating FFI, registered deemed-compliant FFI, or FFI that is a QI. | | Box 16a | Indicates that each QDD identified on the form or on the QDD withholding statement that is acting as a QDD meets the requirements to act as a QDD in Regulations section 1.1441-1(e)(6) and assumes primary withholding and reporting responsibilities under chapters 3, 4, and 61, and section 3406 with respect to potential section 871(m) transactions and has been approved by the IRS to act as a QDD. | ### Box 16b - Entity Classification of QDD | Field | Description | | :----------------- | :-------------------------------- | | Corporation | The entity classification of QDD. | | Partnership | The entity classification of QDD. | | Disregarded Entity | The entity classification of QDD. | ## Part IV — Nonqualified Intermediary | Field | Description | | :------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | Box 17a | Indicates that the entity is not acting as a QI with respect to each account(s) for which the form is provided and is not acting for its own account. | | Box 17b | Indicates that the entity uses form to transmit withholding certificates or other documentation along with a withholding statement that satisfies the requirements of chapters 3 and 4 (including for purposes of section 1446(a) and including if the entity is providing pooled information for purposes of chapter 61 under the alternative procedure for U.S. non-exempt recipients, or chapter 4 withholding rate pools (as applicable) for a withholdable payment). | | Box 17c | Indicates that the entity is permitted under Regulations section 1.6049-4(c)(4) to provide a chapter 4 withholding rate pool of U.S. payees to which a payment is allocated on a withholding statement associated with the Form W-8IMY. | | Box 17d | Indicates that the entity is acting as a QSL with respect to the accounts identified on this line or in a withholding statement associated with this form with respect to a payment that is a U.S. source substitute dividend. | | Box 17e | Indicates that the entity is providing an alternative withholding statement. | ## Part V — Territory Financial Institution | Field | Description | | :------ | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Box 18a | Indicates that the entity is a financial institution (other than an investment entity that is not also a depository institution, custodial institution, or specified insurance company) incorporated or organized under the laws of a territory of the United States. | | Box 18b | Indicates that the entity has agreed to be treated as a U.S. person for purposes of both chapter 3 and chapter 4 with respect to payments of reportable amounts and withholdable payments associated with this Form W-8IMY. | | Box 18c | Indicates that the entity is a territory financial institution that has not agreed to be treated as a U.S. person for reportable amounts and withholdable payments associated with this form. | | Box 18d | Indicates that the entity has agreed to be treated as a U.S. person under Regulations section 1.1446(f)-4(a)(2)(i)(B) with respect to an amount realized from a sale of a PTP interest. | | Box 18e | Indicates that the entity has agreed to be treated as a U.S. person (as described in Regulations section 1.1441-1(b)(2)(iv)) and as a nominee under Regulations section 1.1446-4(b)(3) with respect to distributions made by PTPs. | | Box 18f | Indicates that the entity receives PTP distributions for which the entity doesn't act as a nominee under Regulations section 1.1446-4(b)(3). | ## Part VI — Certain U.S. Branches | Field | Description | | :------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Box 19a | Indicates that the entity is a U.S. branch receiving payments of income that are reportable amounts or withholdable payments not effectively connected with the conduct of a trade or business in the United States, payments of PTP distributions, or payments of amounts realized. | | Box 19b | Indicates that the entity is a U.S. branch of a foreign bank or insurance company described in this certification that has agreed with the withholding agent to be treated as a U.S. person under Regulations section 1.1441-1(b)(2)(iv) with respect to such payments associated with this Form W-8IMY. | | Box 19c | Indicates that the entity is a U.S. branch that does not have an agreement with the withholding agent to be treated as a U.S. person under Regulations section 1.1441-1(b)(2)(iv). | | Box 19d | Indicates that the entity is a U.S. branch described in Regulations section 1.1446(f)-4(a)(2)(i)(B) that is acting as a U.S. person with respect to an amount realized from the sale of a PTP interest. | | Box 19e | Indicates that the entity is a U.S. branch described in Regulations section 1.1441-1(b)(2)(iv) that is acting as a nominee with respect to distributions by PTPs under Regulations section 1.1446-4(b)(3). | | Box 19f | Indicates that the entity is a U.S. branch receiving PTP distributions associated with the form and are not acting as a nominee for the distributions under Regulations section 1.1446-4(b)(3) | ## Part VII — Withholding Foreign Partnership (WP) or Withholding Foreign Trust (WT) | Field | Description | | :----- | :-------------------------------------------------------------------------------------------------------------------------------- | | Box 20 | Indicates that the entity is a WP or a WT and you are receiving the payment on behalf of your partners, beneficiaries, or owners. | ## Part VIII — Nonwithholding Foreign Partnership, Simple Trust, or Grantor Trust | Field | Description | | :------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | Box 21a | Indicates that the entity a foreign partnership or a foreign simple or grantor trust that is not a WP or WT, and is providing this form for payments that are not effectively connected, or are not treated as effectively connected, with the conduct of a trade or business in the United States. | | Box 21b | Indicates that the entity is a foreign partnership or foreign grantor trust providing this form for purposes of section 1446(a). | | Box 21c | Indicates that the entity is a foreign partnership that is a transferor of an interest in a partnership receiving an amount realized from the transfer. | | Box 21d | Indicates that the entity is providing a withholding statement for a modified amount realized on the transfer. | | Box 21e | Indicates that the entity is a foreign grantor trust providing the form on behalf of each grantor or owner of the trust under Regulations section 1.1446(f)-1(c)(2) (vii) that is transmitting withholding certificates and providing a withholding statement to allocate an amount realized to each grantor or other owner in the trust for purposes of section 1446(f). | | Box 21f | Indicates that the entity represents that the information on all the withholding certificates associated with the withholding statement may be relied on based on the standard of knowledge under section 1441 or section 1471 applicable to the entity. | ## Part IX — Nonparticipating FFI With Exempt Beneficial Owners | Field | Description | | :----- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | Box 22 | Indicates that the entity is transmitting withholding certificates or other documentation for exempt beneficial owners for chapter 4 purposes on whose behalf you are receiving a payment that is a withholdable payment. | ## Part X — Sponsored FFI | Field | Description | | :---------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Box 23a - Name of Sponsoring Entity | The name of the sponsoring entity that has agreed to fulfill the chapter 4 due diligence, reporting, and withholding obligations on the entity's behalf. | | Box 23b | Indicates that the entity is either an investment entity or controlled foreign corporation (within the meaning of section 957(a)) and satisfies the other relevant requirements for this classification. | | Box 23c | Indicates that the entity is either an investment entity or controlled foreign corporation (within the meaning of section 957(a)) and satisfies the other relevant requirements for this classification. | ## Part XI — Owner-Documented FFI | Field | Description | | :------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | Box 24a | Indicates that the entity satisfies the requirements for owner-documented FFI status and is providing this form to a U.S. financial institution, a participating FFI, or a reporting Model 1 FFI that has agreed to act as a designated withholding agent with respect to the entity. | | Box 24b | Indicates that the entity has provided or will provide the documentation set forth in the certifications, including the owner reporting statement. | | Box 24c | Indicates that the entity has provided or will provide an auditor's letter that satisfies the requirements. | ## Part XII — Certified Deemed-Compliant Nonregistering Local Bank | Field | Description | | :----- | :--------------------------------------------------------------------------------------------------------------------------- | | Box 25 | Indicates that the entity satisfies all of the requirements for certified deemed-compliant nonregistering local bank status. | ## Part XIII — Certified Deemed-Compliant FFI with Only Low-Value Accounts | Field | Description | | :----- | :--------------------------------------------------------------------------------------------------------------------------------- | | Box 26 | Indicates that the entity satisfies all of the requirements for certified deemed-compliant FFI with only low-value account status. | ## Part XIV — Certified Deemed-Compliant Sponsored, Closely Held Investment Vehicle | Field | Description | | :---------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------ | | Box 27a - Name of Sponsoring Entity | The name of the sponsoring entity that has agreed to fulfill your chapter 4 due diligence, reporting, and withholding obligations on the entity behalf. | | Box 27b | Indicates that the entity satisfies the requirements for certified deemed-compliant classification as a sponsored closely held investment vehicle. | ## Part XV — Certified Deemed-Compliant Limited Life Debt Investment Entity | Field | Description | | :----- | :------------------------------------------------------------------------------------------------------------------------------ | | Box 28 | Indicates that the entity satisfies the requirements for certified deemed-compliant limited life debt investment entity status. | ## Part XVI — Certain Investment Entities that Do Not Maintain Financial Accounts | Field | Description | | :----- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Box 29 | Indicates that the entity meets all of the requirements for certified deemed-compliant status as an investment entity that doesn't maintain financial accounts. | ## Part XVII — Restricted Distributor | Field | Description | | :------ | :------------------------------------------------------------------------------------------------ | | Box 30a | Indicates that the entity satisfies the requirements of restricted distributor status. | | Box 30b | Indicates that the entity's distribution agreement meets the requirements of this classification. | | Box 30c | Indicates that the entity's distribution agreement meets the requirements of this classification. | ## Part XVIII — Foreign Central Bank of Issue | Field | Description | | :----- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Box 31 | Indicates that the entity is a foreign central bank of issue acting as an intermediary and is an entity defined in Regulations section 1.1471-6 that is treated as the beneficial owner of the payment for chapter 4 purposes (applying the rule in Regulations section 1.1471-6(d)(4)). | ## Part XIX — Nonreporting IGA FFI | Field | Description | | :---------------------------------- | :--------------------------------------------------------------------------------------------------------------------------- | | Box 32 | Indicates that the entity is treated as a nonreporting IGA FFI. | | Box 32 - Meets the Requirements | The name of the jurisdiction that has the applicable IGA in effect with the United States. | | Box 32 - Is Treated As | The withholding agent with the specific category of entity described in Annex II of the IGA applicable to the entity status. | | Box 32 - Name of Trustee or Sponsor | The name of the trustee or sponsor. | ### Box 32 - IGA Model | Field | Description | | :---------- | :--------------------------------------------------------------------------------------- | | Model 1 IGA | The category of entity described in Annex II of the IGA applicable to the entity status. | | Model 2 IGA | The category of entity described in Annex II of the IGA applicable to the entity status. | ### Box 32 - US or Foreign Trustee | Field | Description | | :-------------- | :--------------------------------- | | US Trustee | The status of the foreign trustee. | | Foreign Trustee | The status of the foreign trustee. | ## Part XX — Exempt Retirement Plans | Field | Description | | :------ | :------------------------------------------------------------------------------------- | | Box 33a | Indicates that the entity satisfies the requirements of exempt retirement plan status. | | Box 33b | Indicates that the entity satisfies the requirements of exempt retirement plan status. | | Box 33c | Indicates that the entity satisfies the requirements of exempt retirement plan status. | | Box 33d | Indicates that the entity satisfies the requirements of exempt retirement plan status. | | Box 33e | Indicates that the entity satisfies the requirements of exempt retirement plan status. | | Box 33f | Indicates that the entity satisfies the requirements of exempt retirement plan status. | ## Part XXI — Excepted Nonfinancial Group Entity | Field | Description | | :----- | :------------------------------------------------------------------------------------------------- | | Box 34 | Indicates that the entity satisfies the requirements of excepted nonfinancial group entity status. | ## Part XXII — Excepted Nonfinancial Start-Up Company | Field | Description | | :------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Box 35 | Indicates that the entity satisfies the requirements of excepted nonfinancial start-up company status. | | Box 35 - Date | The date the entity was formed or your board passed a resolution (or equivalent measure) approving a new line of business (which cannot be that of a financial institution or passive NFFE). | ## Part XXIII — Excepted Nonfinancial Entity in Liquidation or Bankruptcy | Field | Description | | :------------ | :------------------------------------------------------------------------------------------------------------------------ | | Box 36 | Indicates that the entity satisfies the requirements of excepted nonfinancial entity in liquidation or bankruptcy status. | | Box 36 - Date | The date that the entity filed a plan of liquidation, plan of reorganization, or bankruptcy petition. | ## Part XXIV — Publicly Traded NFFE or NFFE Affiliate of a Publicly Traded Corporation | Field | Description | | :---------------------------------- | :-------------------------------------------------------------------------------------------- | | Box 37a | Indicates that the entity is not a financial institution. | | Box 37a - Securities Exchange | The name of a securities exchange on which your stock is publicly traded. | | Box 37b | Indicates that the entity is an NFFE affiliate of a publicly traded corporation. | | Box 37b - Name of Entity | The name of the publicly traded entity. | | Box 37b - Name of Securities Market | The name of the securities market on which the stock of the publicly traded entity is traded. | ## Part XXV — Excepted Territory NFFE | Field | Description | | :----- | :--------------------------------------------------------------------------------------- | | Box 38 | Indicates that the entity satisfies the requirements for excepted territory NFFE status. | ## Part XXVI — Active NFFE | Field | Description | | :----- | :-------------------------------------------------------------------------- | | Box 39 | Indicates that the entity satisfies the requirements of active NFFE status. | ## Part XXVII — Passive NFFE | Field | Description | | :----- | :----------------------------------------------------------------------------------------------------------------------------------------- | | Box 40 | Indicates that the entity is not a financial institution (other than an investment entity organized in a possession of the United States). | ## Part XXVIII— Sponsored Direct Reporting NFFE | Field | Description | | :--------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------- | | Box 41 - Name of Sponsoring Entity | The name of the sponsoring entity. | | Box 42 | Indicates that the entity is not a financial institution and that the entity satisfies all relevant requirements for this classification. | ## Signature Information | Field | Description | | :--------- | :------------------------------------------- | | Print Name | The printed name of the authorized official. | | Date | The date of signing. | ## Key Fields * Box 1 - Name of Organization * Date # Form W-9 - Document Skill Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/built-in-skills/form-skills/w-9 Extract data from IRS Form W-9 (Request for Taxpayer Identification Number and Certification), used to collect TINs from US persons for tax reporting. The **Form W-9, Request for Taxpayer Identification Number and Certification** skill extracts data from Forms W-9, which are documents that are used to request the Taxpayer Identification Numbers of a US citizen (as well as of non-citizen tax residents) and confirm tax exemption applications. This form helps organizations obtain important payment recipient information required by the US Internal Revenue Service (IRS). This skill has been configured to process Forms W-9 dated December 1999 and later. The Form W-9, Request for Taxpayer Identification Number and Certification skill is a preview skill. It has been trained on a limited set of documents and is designed to help you quickly get started with processing Forms W-9. For production use, you may need to uptrain the skill with your own document samples. This skill recognizes handwritten text. The option is enabled by default. If you do not import handwritten forms, disable the **Handwritten** option in the skill settings. ## Countries and Languages | Countries | Languages | | :-------- | :-------- | | USA | English | ## Basic Information | Field | Description | | :------------ | :------------------------------------------------------------- | | Name | The name of the taxpayer. | | Business Name | The organization name (if not the same as the **Name** field). | ## Federal Tax Classification | Field | Description | | :------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | Federal Tax Classification | The federal tax classification. The value of the field can be one of the following (marked): Individual/Sole Proprietor or Single-member LLC, C Corporation, S Corporation, Partnership, Trust or Estate, Limited Liability Company (LLC), Other. | | Tax Classification | Tax classification for LLC's. Can have one of the following values: C Corporation, S Corporation, Partnership. This field is filled in if the value of **Federal Tax Classification** is **Limited Liability Company**. | | Other Tax Classification | Tax type not present in the list. This field is filled in if the value of **Federal Tax Classification** is **Other**. | ## Exemption Information | Field | Description | | :------------------------------------------- | :----------------------------------------------------- | | Exempt Payee Code (If Any) | Payment recipient's Exempt payee code (if applicable). | | Exemption from FATCA Reporting Code (If Any) | FATCA reporting exemption code (if applicable). | ## Address Information | Field | Description | | :---------------------------------------------- | :--------------------------- | | Address (Number, Street, and Apt. or Suite No.) | The address of the taxpayer. | | City, State, and ZIP Code | The address of the taxpayer. | ## Account and Contact Information | Field | Description | | :--------------------------- | :---------------------------------------- | | List Account Number(s) | A list of the taxpayer's account numbers. | | Requester's Name and Address | The name and address of the requester. | ## Identification Numbers | Field | Description | | :----------------------------- | :----------------------------------------------------------------------------------------------------------- | | Social Security Number | Employee Social Security Number (SSN) and Employer Identification Number (EIN). Only one field is filled in. | | Employer Identification Number | Employee Social Security Number (SSN) and Employer Identification Number (EIN). Only one field is filled in. | ## Signature Information | Field | Description | | :---- | :----------- | | Date | Date signed. | ## Key Fields * Name * Business Name * Federal Tax Classification * Exempt payee code * Exemption from FATCA Reporting Code * Social Security Number * Employer Identification Number * Date ## Validation Rules | Rule | Description | | :----------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Checkmark check | Checks that only one field from the **Federal Tax Classification** group is filled in. If none or more than one fields are filled in, displays an error message. | | Format SSN and EIN | Checks the values of the **Social Security Number** and **Employer Identification Number** fields, standardizing them to the formats DDD-DD-DDDD and DD-DDDDDDD respectively. | # Form W Skills Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/built-in-skills/form-skills/wforms-overview Process IRS Form W tax-related withholding and reporting documents — W-2, W-2G, W-4, W-8BEN, W-8BEN-E, W-8ECI, W-8EXP, W-8IMY, W-9 — with Vantage skills. Forms with the **W-** prefix are IRS tax documents related to withholding and reporting — including wage statements (W-2), withholding certificates (W-4), foreign-status certifications (W-8 series), and TIN requests (W-9). ABBYY Vantage includes a built-in skill for each. ABBYY Vantage includes the following built-in skills for processing Forms W: ## Available Form W Skills * [Form W-2, Wage and Tax Statement](/vantage/documentation/skill-catalog/built-in-skills/form-skills/w-2) * [Form W-2G, Certain Gambling Winnings](/vantage/documentation/skill-catalog/built-in-skills/form-skills/w-2g) * [Form W-4, Employee's Withholding Certificate](/vantage/documentation/skill-catalog/built-in-skills/form-skills/w-4) * [Form W-8BEN, Certificate of Foreign Status of Beneficial Owner for United States Tax Withholding and Reporting (Individuals)](/vantage/documentation/skill-catalog/built-in-skills/form-skills/w-8ben) * [Form W-8BEN-E, Certificate of Status of Beneficial Owner for United States Tax Withholding and Reporting (Entities)](/vantage/documentation/skill-catalog/built-in-skills/form-skills/w-8ben-e) * [Form W-8ECI, Certificate of Foreign Person's Claim That Income Is Effectively Connected With the Conduct of a Trade or Business in the United States](/vantage/documentation/skill-catalog/built-in-skills/form-skills/w-8eci) * [Form W-8EXP, Certificate of Foreign Government or Other Foreign Organization for United States Tax Withholding and Reporting](/vantage/documentation/skill-catalog/built-in-skills/form-skills/w-8exp) * [Form W-8IMY, Certificate of Foreign Intermediary, Foreign Flow-Through Entity, or Certain U.S. Branches for United States Tax Withholding and Reporting](/vantage/documentation/skill-catalog/built-in-skills/form-skills/w-8imy) * [Form W-9, Request for Taxpayer Identification Number and Certification](/vantage/documentation/skill-catalog/built-in-skills/form-skills/w-9) # Health Insurance Cards US - Document Skill Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/built-in-skills/health-insurance Extract data from US health insurance cards — insurance provider, member ID, group number, plan type, and copay information — for healthcare workflows. The **Health Insurance Cards US** skill extracts data from US health insurance cards — the cards insurance companies issue to policyholders as proof of coverage, capturing the insurance provider, member ID, group number, and plan information for healthcare and patient onboarding workflows. The Health Insurance Cards US skill is a preview skill. It has been trained on a limited set of documents and is designed to help you quickly get started with processing health insurance cards. For production use, you may need to uptrain the skill with your own document samples. ## Countries and Languages | Countries | Languages | | :-------- | :-------- | | USA | English | ## Insurance Provider Information | Field | Description | | :------------------------ | :------------------------------------------------------------------ | | Insurance Carrier (Payer) | The name of the health insurance carrier. | | Payer ID/EDI/NEIC | The identifier of the insurance company that provides the coverage. | ## Policyholder Information | Field | Description | | :-------------------------------- | :----------------------------------------------------------------------------------------------------------------- | | Member/Subscriber Name (s) | The individual(s) who hold the health insurance policy. | | Policy ID | The unique identifier assigned to the insurance policy by the health insurance company. | | Group Number (if present on card) | The unique identifier assigned to a specific group of individuals who are covered under the same insurance policy. | ## Insurance Company Address | Field | Description | | :--------------- | :--------------------------------------------------------------- | | Insurance PO Box | The address of the insurance company that provides the coverage. | | Insurance City | The address of the insurance company that provides the coverage. | | Insurance State | The address of the insurance company that provides the coverage. | | Insurance Zip | The address of the insurance company that provides the coverage. | ## Coverage Information | Field | Description | | :------------------------------------------- | :------------------------------------------- | | Coverage Effective Date (if present on card) | The date when the insurance coverage begins. | ## Key Fields * Insurance Carrier * Member or Subscriber Name * Policy ID # Initial Escrow Account Disclosure Statement - Document Skill Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/built-in-skills/initial-escrow Extract data from Initial Escrow Account Disclosure Statements — projected escrow activity, deposits, and disbursements — issued at US mortgage origination. The **Initial Escrow Account Disclosure Statement** skill extracts data from Initial Escrow Account Disclosure Statements — the lender-issued documents that estimate the activity in the escrow account based on the payments expected to be made from the account as part of projected loan repayment. Issued at mortgage origination. The Initial Escrow Account Disclosure Statement skill is a preview skill. It has been trained on a limited set of documents and is designed to help you quickly get started with processing escrow account disclosure statements. For production use, you may need to uptrain the skill with your own document samples. This skill recognizes handwritten text. The option is enabled by default. If you do not import handwritten forms, disable the **Handwritten** option in the skill settings. For processing similar statements issued for an existing loan, use the [Escrow Account Disclosure Statement](/vantage/documentation/skill-catalog/built-in-skills/escrow-disclosure) skill. ## Countries and Languages | Countries | Languages | | :-------- | :------------------------------------------- | | USA | English
French
German
Spanish | ## Borrower Information | Field | Description | | :--------------- | :--------------------------- | | Borrower Name | The name of the borrower. | | Co Borrower Name | The name of the co-borrower. | ## Account Information | Field | Description | | :-------------- | :------------------------------------------------------------------------- | | Initial Deposit | The amount to be deposited in the escrow account at the start of the loan. | # Invoice - Document Skill Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/built-in-skills/invoice-skills/invoice Extract data from invoices across about 30 countries: vendor, customer, line items, taxes, and totals — supporting 22 languages for high-accuracy extraction. The **Invoice** skill extracts data from invoices across approximately 30 countries (mostly European) — including vendor, customer, line items, taxes, and totals — with built-in support for 22 languages. The Invoice skill is a production skill. It has been fully trained on a large document set and provides high accuracy of data identification and extraction. The skill is ready to be used in production and does not require further training on your specific documents. Accuracy and straight-through processing (STP) rates can be further optimized in production through continuous learning from human-in-the-loop feedback. ## Countries and Languages | Countries | Languages | | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Austria, Belgium, Bulgaria, Croatia, Cyprus, Czech Republic, Denmark, Estonia, Finland, France, Germany, Hungary, India, Ireland, Italy, Latvia, Lithuania, Moldova, Netherlands, Norway, Poland, Portugal, Romania, Slovakia, Slovenia, Sweden, Switzerland, Turkey, United Kingdom | Bulgarian, Croatian, Czech, Danish, Dutch, English, Estonian, Finnish, French, German, Italian, Hungarian, Latvian, Lithuanian, Norwegian (Bokmal), Polish, Portuguese (Standard), Romanian, Slovak, Swedish, Turkish, Ukrainian | By default, the Invoice skill is enabled for all languages that are listed above. You can disable any languages that are not your documents. This might improve both document processing speed and quality. ## Extracted Fields Asterisk (`*`) indicates a required field or field group. Values cannot be empty. ### Basic Invoice Information | Field | Description | | :------------- | :------------------------------------------------------------------------------------------------------- | | Invoice Number | The number of the invoice. | | Invoice Date\* | The date when the invoice was issued. | | Total\* | The total cost of goods or services. | | Currency | The currency of the invoice.
**Note:** The Currency field is required when the country is Denmark. | ### Business Unit (BU) | Field | Description | | :---------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Name | The name of the business unit (invoice recipient). | | Tax ID | The tax payer registration number. | | Address | The address of the business unit (invoice recipient). The address will be extracted into this field, if no BusinessUnits data catalog is used or if the business unit has not been found in a data catalog. | | Country | The country of the business unit (invoice recipient). | | City | The address of the business unit (invoice recipient). This address format will be used if the BusinessUnits data catalog is used and the business unit has been found in the data catalog. For US invoices, these fields can also be obtained by parsing the **Business Unit/Address** field value. | | Street | The address of the business unit (invoice recipient). This address format will be used if the BusinessUnits data catalog is used and the business unit has been found in the data catalog. For US invoices, these fields can also be obtained by parsing the **Business Unit/Address** field value. | | Postal Code | The address of the business unit (invoice recipient). This address format will be used if the BusinessUnits data catalog is used and the business unit has been found in the data catalog. For US invoices, these fields can also be obtained by parsing the **Business Unit/Address** field value. | | ID | The unique identifier of the business unit in an external system. **Note:** This field can only be obtained from the BusinessUnits data catalog. | ### Vendor | Field | Description | | :-------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Name | The vendor's name. | | Tax ID | International tax payer registration number. | | National Tax ID | The tax payer registration number inside the country of origin. | | IBAN | The vendor's international bank account number. | | Bank Account | The vendor's bank account. | | Bank Code | The vendor's bank code. | | SWIFT Code | The SWIFT code of the vendor. | | Address | The vendor's address. The address will be extracted into this field, if no Vendors data catalog is used or if the vendor has not been found in a data catalog. | | Country | The vendor's country. | | City | The vendor's address. This address format will be used if the Vendors data catalog is used and if the vendor has been found in the data catalog. For US invoices, these fields can also be obtained by parsing the **Vendor/Address** field value. | | Street | The vendor's address. This address format will be used if the Vendors data catalog is used and if the vendor has been found in the data catalog. For US invoices, these fields can also be obtained by parsing the **Vendor/Address** field value. | | Postal Code | The vendor's address. This address format will be used if the Vendors data catalog is used and if the vendor has been found in the data catalog. For US invoices, these fields can also be obtained by parsing the **Vendor/Address** field value. | | ID | The vendor's unique identifier in an external system. **Note:** This field can only be obtained from the Vendors data catalog. | ### Date Information | Field | Description | | :------------ | :------------------------------------------------------- | | Delivery Date | The date the goods were delivered or services performed. | | Due Date | The date by which the invoice should be paid. | ### Tax Information | Field | Description | | :----------------- | :------------------------------------------------ | | Reversed Charge | Indicates that a reverse charge is applied. | | Total Net Amount | The total cost of goods and services without tax. | | Total Taxes | The total tax amount. | | Non Taxable Amount | The amount on which no tax is payable. | ### Tax Rates (Repeating Group) | Field | Description | | :--------- | :------------------------------------ | | Net Amount | Cost of goods or services without tax | | Tax Amount | Tax charged | | Tax Rate | Tax rate | ### Invoice Type | Field | Description | | :---------- | :------------------------------------------------- | | Invoice | Specifies the **Invoice** type of the invoice. | | Credit Note | Specifies the **Credit Note** type of the invoice. | ### Purchase Order | Field | Description | | :------------ | :---------------------------------------------------------------------------------------------------------------------------------------------- | | Order Number | The number of the purchase order. | | Total | The cost of the goods or services listed in the purchase order. **Note:** This field can only be obtained from the PurchaseOrders data catalog. | | Order Checked | Indicates whether the order number is verified. The value of the field can be **True** or **False**. | ### Line Items (Repeating Group) | Field | Description | | :-------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Order Number | The number of the purchase order. | | Order Date | The date when the purchase order was created. | | Position | The number of the line item in the list. | | Article Number Vendor | The article number or code in the vendors's database. | | Article Number BU | The article number or code in the business unit's database. | | Description | A description of the line item. | | Quantity | The number of units purchased. | | Unit of Measurement | The unit of measurement used for the goods. | | Unit Price | The price of one item of goods. | | Discount Percentage | The discount percentage on the initial line item price. | | Discount | Discount applicable to the line item. | | Net Price | The price of the line item without tax. | | Tax Rate | The tax rate for the line item. | | Tax Amount | The amount of tax payable on the line item. | | Tax Code | The code of the tax. | | Total Price | The price of the line item including tax. | | Currency | The currency of the line item. | | Is Valid | Indicates whether the order number in the **Line Item** group matches any checked order number in the **Purchase Order** group. The value of the field can be **True** or **False**. | | Order Item ID | The unique line item identifier. **Note:** This field can only be obtained from the PurchaseOrderItems data catalog. | ### Ship To | Field | Description | | :------ | :------------------------------------------------ | | Name | The name of the recipient receiving the goods. | | Address | The address of the recipient receiving the goods. | Older versions of this skill extracted the tax information into fields named **Tax Rate X**, **Tax Amount X**, and **Net Amount X**. In Vantage 2.4 and later, these fields are grouped into a repeating group called **Tax Rates**. If you are updating a copy of a built-in skill, check that the new **Tax Rates** group works for you. If you are satisfied with the results, remove the individual fields used in the older version. If not, create new fields to suit your processing scenario. ## Key Fields * Vendor/Name * Invoice Date * Invoice Number * Total * Currency ## Validation Rules When you update a copy of this skill to a derived skill, the rules will also be updated. Some rules will get new versions with numbered postfixes. Review these rules and remove any unnecessary versions from the derived skill. | Rule | Description | | :------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | Currency is required | Checks whether the **Currency** field has been detected on the document. If not, displays a message saying that it is a required field.
**Note:** The Currency field is required when the country is Denmark. | | Total is required | Checks whether the **Total** field is filled in. If it is not, displays a message saying that it is a required field. | | Invoice date is required | Checks whether the **Invoice Date** field is filled in. If it is not, displays a message saying that it is a required field. | | Vendor Tax ID is required | Checks whether the vendor **Tax ID** field is filled in. If it is not, displays a message saying that it is a required field. | | Separate currency from amount in LI money fields | Splits the amount and the currency in Line Items fields (**Unit Price**, **Net Price**, **Total Price**) and copies the currency into the **Line Items/Currency** field if it is not filled in. | | Check invoice and line items currency | Checks that the value of the **Currency** and **Line Items/Currency** fields is a supported currency. If the currency is not supported or has not been extracted, suggests currency values from the appropriate invoice region. Currency descriptions are replaced with ISO codes. | | Check item amount | Checks that the calculations for line items are correct (quantity × unit price = net price minus discount, net price × tax rate = tax amount, net price + tax amount = total price). Suggests values for the following fields where calculating them is possible: **Quantity**, **Unit Price**, **Discount**, **Net Price**, **Tax Rate**, **Tax Amount**, and **Total Price**. | | Check LI Total Prices against Total Amount | Checks the value of the **Total Amount** field. If it is not equal to the sum of the **Line Items/Total Price** fields, suggests filling in the fields with their calculated values. | | Check LI Net Prices against Total Net Amount | Checks the value of the **Total Net Amount** field. If it is not equal to the sum of the **Line Items/Net Price** fields, suggests filling in the fields with their calculated values. | | Business unit must be found in database | Checks that the business unit details detected on the document image are the same as those in the BusinessUnits data catalog. If some entries are different, replaces the field values with values from the data catalog. | | Check vendor details against database | Checks whether the appropriate entry in the Vendors data catalog has been found for the vendor bank details detected on the image. If the values in the data catalog are different, replaces the field values with entries from the data catalog. | | Check purchase order number and amount | Checks that the order number and amount detected on the document image are the same as those in the PurchaseOrders data catalog. | | Match invoice line item with order item | Checks invoice line item information against records in the PurchaseOrderItems data catalog. If the catalog contains an entry for a particular line item, fills in the corresponding **Order Item ID** field using the value from the data catalog. | | Copy order number | If there is only one value in the **Order Number** field in the **Purchase Order** group and the values in the **Line Items** **Order Number** fields are empty, copies the value to all line items. | | Check purchase order total amount | Checks if the value in the **Total** field equals the value or sum of values in the **Purchase Order** group **Total** fields. | | Check matching of line items to unique order items | For all line items whose purchase order number is equal to the one extracted in the **Purchase Order** group, checks that the value in the **Order item ID** field is unique for every purchase order number if **Order Checked** is **True**. | | If order is checked make line items valid | For each item in **Purchase Order** group that has the **Order Checked** field set to **True**, compares the order number to the order number in all line items. If they match, sets the **Is Valid** field to **True**. | | Detect invoice type | Sets the type in the **Invoice Type** checkmark group. If the document is marked as credit note or if the value of the **Total** field is negative, sets the type to **Credit Note**. Otherwise, sets the type to **Invoice**. | | Separate currency from amount in money fields | Splits the amount and the currency in fields containing currency amounts and copies the currency into the **Currency** field if it is empty. | | Check Total Tax | Checks that the sum of the **Tax Amount** fields across the **Tax Rates** repeating group is equal to the value of the **Total Taxes** field. For each instance of the **Tax Rates** group, checks calculations and suggests values where needed. | | Check Total field | Checks that the sum of the **Total Net Amount** and **Tax Amount** fields is equal to the total invoiced amount (**Total**). If the values are not equal or if the **Total** field is not filled in, suggests filling in the fields with their calculated values. | | Reversed Charge field is empty or completed | If the document contains references to reversed charges, checks the values of the taxes fields. If they are empty, marks the **Reversed Charge** checkmark. **Note:** Does not apply to **AU-NZ**, **CA**, **US**, and **JP** regions. | | Check Net Total | Checks that the sum of the **Net Amount** fields across the **Tax Rates** repeating group is equal to the total amount charged for the goods or services before tax (**Total Net Amount**). If the values are not equal, suggests filling in the fields with their calculated values. | To fill in a field with its calculated value, click the suggested value button and select one of the suggestions from the drop-down list. ## Parameters The Invoice skills have default skill parameters that refer to data catalogs used for Vendor, Business Unit, and Purchase Order lookup. You can change the values of these parameters in Vantage or Advanced Designer to modify the field extraction process. For more information, see [Skill parameters](/vantage/documentation/skill-designer/skill-parameters). | Parameter | Description | | :------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Vendors | The predefined data catalog used for Vendor lookup. The default value of this parameter is **Vendors**. You can change this value by choosing another available data catalog of the same type (Document Issuer Companies). | | BusinessUnits | The predefined data catalog used for Business Unit lookup. The default value of the parameter is **BusinessUnits**. You can change this value by choosing another available data catalog of the same type (Document Receiver Companies). **Note:** This parameter is not available for the **Invoice JP** skill. | | PurchaseOrders | The predefined data catalog used for Purchase Order lookup. The default value of this parameter is **PurchaseOrders**. You can change this value by choosing another available data catalog having the same structure. | | PurchaseOrderDetails | The predefined data catalog used to check if the Purchase Order details match. The default value of this parameter is **PurchaseOrderItems**. You can change this value by choosing another available data catalog having the same structure. | # Invoice Classifier Skill Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/built-in-skills/invoice-skills/invoice-classifier Classify incoming invoices by region — Default (Europe), USA, CA, AU-NZ, ES, UA — and route each to the matching Vantage Invoice Document skill. The **Invoice Classifier** skill classifies incoming invoices by region — Default (Europe), USA, CA, AU-NZ, ES, UA — routing each invoice to the matching Vantage Invoice Document skill. ## Regional Classification The following table lists which countries are covered by each region. | Region | Country | | :------ | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Default | Austria, Belgium, Bulgaria, Croatia, Czech Republic, Denmark, Estonia, Finland, France, Germany, Greece, Hungary, India, Ireland, Italy, Netherlands, Norway, Poland, Portugal, Slovakia, Sweden, Switzerland, United Kingdom | | USA | USA | | CA | Canada | | AU-NZ | Australia and New Zealand | | ES | Spain | | UA | Ukraine | ## Supported Languages By default, the Invoice Classifier skill supports invoices in the following languages: * English * French * German * Spanish ## Adding Additional Languages To classify invoices in other languages: 1. Duplicate the Invoice Classifier skill. 2. In the Languages settings in the Skill Designer, add the required languages to the copy of the Invoice Classifier skill. Note that allowing too many languages will slow down OCR. 3. Retrain the copy of the Invoice Classifier skill. Once the list of recognition languages has been changed, the classifier needs to be trained again from scratch on your own documents. For more information, see the [Training a Classifier](/vantage/documentation/skill-designer/classification/train-classifier) help section. Invoices from countries other than those listed above will be classified as **Unknown**. # Invoice Skills Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/built-in-skills/invoice-skills/invoice-overview Vantage Invoice skills extract data from invoices across Europe, the US, Canada, Australia/NZ, Spain, Ukraine, China, and Japan, with splitting included. ABBYY Vantage offers a set of built-in skills designed for extracting data from invoices. An invoice is a document issued by a seller to a buyer that lists the goods or services supplied. An invoice typically contains the following information: * A list of goods or services supplied and their quantity and price * The total amount payable for the goods or services * The currency to be used for payment * A description of the goods or services * Details about the seller and the buyer * The number and date of the invoice * Applicable taxes As information provided on invoices varies from region to region (for example, each country has its own tax system and laws of incorporation), each region requires its own invoice skills, with region-specific data fields and validation rules. ## Available Invoice Skills ABBYY Vantage includes the following built-in invoice skills: * [Invoice](/vantage/documentation/skill-catalog/built-in-skills/invoice-skills/invoice) for invoices from various countries, mostly European * [Invoice AU-NZ](/vantage/documentation/skill-catalog/built-in-skills/invoice-skills/invoice-au-nz) for Australian and New Zealand invoices * [Invoice CA](/vantage/documentation/skill-catalog/built-in-skills/invoice-skills/invoice-ca) for Canadian invoices * [Invoice CN](/vantage/documentation/skill-catalog/built-in-skills/invoice-skills/invoice-cn) for Chinese invoices * [Invoice ES](/vantage/documentation/skill-catalog/built-in-skills/invoice-skills/invoice-es) for Spanish invoices * [Invoice JP](/vantage/documentation/skill-catalog/built-in-skills/invoice-skills/invoice-jp) for Japanese invoices * [Invoice UA](/vantage/documentation/skill-catalog/built-in-skills/invoice-skills/invoice-ua) for Ukrainian invoices * [Invoice US](/vantage/documentation/skill-catalog/built-in-skills/invoice-skills/invoice-us) for US invoices ## Multi-Region Processing Skills To process invoices from multiple regions within one workflow, ABBYY Vantage offers the following built-in skills: * [Invoice Classifier](/vantage/documentation/skill-catalog/built-in-skills/invoice-skills/invoice-classifier) * [Invoice Processing](/vantage/documentation/skill-catalog/built-in-skills/invoice-skills/invoice-processing) ## Document Splitting To split files with multiple invoices, ABBYY Vantage offers the built-in [Invoice Document Splitter Skill](/vantage/documentation/skill-catalog/built-in-skills/invoice-skills/invoice-splitter). The built-in invoice skills have been trained on a large document set and provide high accuracy of data identification and extraction. ## Data Catalogs The built-in invoice skills use data catalogs named "Vendors" (of type Document Issuer Companies) and "BusinessUnits" (of type Document Receiver Companies), each containing the following columns. The Invoice CN skill does not use the data catalogs. ### Vendors Data Catalog | Column | Description | | :--------------------- | :----------------------------------------- | | Issuer Company ID | Unique identifier for the issuing company | | Name | Company name | | City | Company city | | Street | Company street address | | State or Province | Company state or province | | Country | Company country | | Postal Code | Company postal code | | Tax ID | Company tax identification number | | National Tax ID | Company national tax identification number | | Bank Account | Company bank account number | | Bank Code | Company bank code | | IBAN | International Bank Account Number | | Company Correlation ID | Internal correlation identifier | ### BusinessUnits Data Catalog | Column | Description | | :------------------ | :------------------------------------------ | | Receiver Company ID | Unique identifier for the receiving company | | Name | Company name | | City | Company city | | Street | Company street address | | State or Province | Company state or province | | Country | Company country | | Postal Code | Company postal code | | Tax ID | Company tax identification number | ## Purchase Order Data Catalogs The built-in invoice skills also use **PurchaseOrders** and **PurchaseOrderItems** data catalogs to identify the invoices that correspond to existing purchase orders and check that the purchase details match. These data catalogs contain the following columns: ### PurchaseOrders Data Catalog | Column | Description | | :------- | :----------------------- | | BUId | Business unit identifier | | Netto | Net amount | | PONumber | Purchase order number | | VendorId | Vendor identifier | ### PurchaseOrderItems Data Catalog | Column | Description | | :--------------- | :----------------------- | | Article | Article identifier | | BUId | Business unit identifier | | Description | Item description | | Discount | Discount amount | | ItemId | Item identifier | | PONumber | Purchase order number | | Quantity | Item quantity | | TotalPriceBrutto | Total gross price | | TotalPriceNetto | Total net price | | UnitPrice | Unit price | For more information on data catalogs and how to add custom data to a data catalog, see [data catalogs](/vantage/documentation/skill-designer/document/using-data-catalogs/use). If you are not using data catalogs, the **Vendor/Name**, **Business Units/Name**, **Business Units/Address**, **Vendor/Address**, **Vendor/Tax ID**, and **Business Units/Tax ID** fields will be detected and captured using neural networks. If you want to select a specific record from your database, use data catalogs. For more information on the company detection, see [company detection algorithm](/vantage/documentation/advanced-designer/activities/company-detection-algorithm). # Invoice Processing Skill Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/built-in-skills/invoice-skills/invoice-processing End-to-end invoice processing — classify invoices by region (Europe, US, CA, AU-NZ, ES, UA) and apply the matching Invoice Document skill to extract data. The **Invoice Processing** skill provides end-to-end invoice processing — first classifying each invoice by region using the **Invoice Classifier** skill, and then applying the matching Invoice Document skill (Australia/NZ, Europe, Spain, Ukraine, Canada, USA) to extract data. Japanese invoices cannot be processed with the Invoice Processing skill because the [Invoice JP skill](/vantage/documentation/skill-catalog/built-in-skills/invoice-skills/invoice-jp) is not included in the Invoice Classifier skill or the Invoice Processing skill. If you need to process Japanese invoices together with invoices from other regions, you can configure your own Invoice Classifier skill or Invoice Processing skill. ## Adding Additional Languages If you need to process invoices in languages that are not enabled by default, add the required languages in the copies of the Invoice Classifier skills. To add additional languages, follow these steps: 1. Duplicate the Invoice Processing skill. 2. Make sure that the required languages are added to the Invoice Classifier skill. If not: a. Duplicate the Invoice Classifier skill. b. Add the required languages to the copy of the Invoice Classifier skill. For more information on how to do this, see the [Invoice Classifier skill](/vantage/documentation/skill-catalog/built-in-skills/invoice-skills/invoice-classifier) help section. Note that once the list of recognition languages has been changed, the classifier needs to be trained again from scratch on your own documents. c. In the copy of the Invoice Processing skill, replace the Invoice Classifier skill with the copy that has the added languages. # Invoice Document Splitter Skill Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/built-in-skills/invoice-skills/invoice-splitter Split files containing multiple invoices into separate documents, and optionally separate invoices from packing lists, certificates of analysis, or annexes. The **Invoice Document Splitter** skill splits files containing multiple invoices into separate documents for further processing. It can also separate invoices from packing lists, certificates of analysis, and other supporting documents (annexes), classifying invoices as **invoice** and the rest as **non\_invoice**. ## Use Cases * **Processing only invoices**: In this scenario, the Invoice Document Splitter skill splits a file with multiple invoices into separate documents. * **Processing both invoices and documents of other types**: In this scenario, the Invoice Document Splitter skill separates invoices from non-invoice documents using two skills—one for processing invoices, and another for processing documents of other types. Invoices are assigned the **invoice** class, while documents of all other types are classified as **non\_invoice**. ## Skill Components This skill consists of the following activities: * A Classify activity, which includes two classes: **invoice** and **non\_invoice** (the **non\_invoice** class covers annexes, email and fax headers, packing lists, waybills, and other types of documents contained within the same file) * An Extraction Rules for extracting invoice numbers and separating documents based on reliable markers of the first page (for example, "Page 1 of 10") ## Document Splitting Criteria A file will be split into separate documents whenever: * A document class is identified. * A reliable marker of the first page is extracted. * A new invoice number is extracted. ## Setup Instructions To use the Invoice Document Splitter skill, follow these steps: 1. Create a new Process skill. 2. Add and set up an Input activity. 3. Add an Assemble activity. For this activity, in the **Actions** pane, select the **By Document Splitter Skill** option, and then select **Invoice Document Splitter skill** from the list. 4. Add an Extract activity. For this activity: a. In the **Actions** pane, click the **Add Skill** button and select a Document skill from the list. b. While still in the **Actions** pane, click the configuration icon next to the name of this Document skill. In the dialog box that opens, select **invoice** in the **Class** field. c. If your document includes annexes, click the **Add Skill** button once again and select the appropriate Document skill for the annex. Then click the configuration icon next to name of this Document skill and select **non\_invoice** in the **Class** field. You can also associate the "invoice" and "non\_invoice" classes with their skills by clicking the **Edit Mapping** button at the bottom of the **Actions** pane. In the dialog box that opens, select an invoice skill for the "invoice" class. If you expect your documents to also include pages of other types, select an appropriate skill for the "non\_invoice" class as well. 5. Optionally, add and set up a **Manual Review** activity to verify extracted data and make any necessary adjustments to assembled documents (for example, you will be able to move pages around). 6. Add and set up an Output activity. 7. Click the **Publish Skill** button. Once you have completed the above steps, you can use the Invoice Document Splitter skill in Vantage. # Vantage Classifier Skill Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/built-in-skills/vantage-classifier Classify input documents into 70+ types — ACORD forms, IRS tax forms, shipping and freight documents, financial statements — with the Vantage Classifier. The **Vantage Classifier** skill assigns input documents to one of 70+ supported types — including ACORD insurance forms, IRS tax forms, shipping and freight documents, financial statements, and more. ## Supported Document Classes * ACORD 25 Certificate of Liability Insurance * ACORD 125 Commercial Insurance Application * ACORD 2 Automobile Loss Notice * Air Waybill * Appraisal 1025 * Appraisal 1073 * Arrival Notice * Bank Statement * Basic Contract * Bill of Lading * Brokerage Statement * Broker Slip * Business Card * Certificate of Analysis * Certificate of Origin * Closing Disclosure * Commercial Invoice * Credit Bureau Report * Customs Declaration (EU) * Dangerous Goods Declaration * Deed of Trust * Delivery Note * Denial * Desktop Underwriting * Escrow Account Disclosure Statement * Form 1040 Schedule C, Profit or Loss from Business * Form 1040 Schedule E, Supplemental Income and Loss * Form 1040 Schedule F, Profit or Loss from Farming * Form 1095-A, Health Insurance Marketplace Statement * Form 1095-B, Health Coverage * Form 1095-C, Employer-Provided Health Insurance Offer and Coverage * Form 1098, Mortgage Interest Statement * Form 1099 Composite * Form 1099-B, Proceeds From Broker and Barter Exchange Definition * Form 1099-C, Cancellation of Debt * Form 1099-DIV, Dividends and Distributions * Form 1099-G, Certain Government Payments * Form 1099-INT, Interest Income * Form 1099-K, Payment Card and Third Party Network * Form 1099-MISC, Miscellaneous Income * Form 1099-NEC, Nonemployee Compensation * Form 1099-OID, Original Issue Discount * Form 1099-R, Distributions From Pensions, Annuities, etc. * Form 8949, Sales and other Dispositions of Capital Assets * Form 990, Return of Organization Exempt From Income Tax * Form W-2G, Certain Gambling Winnings * Form W-4, Employee's Withholding Certificate * Form W-9, Request for Taxpayer Identification Number and Certification * Initial Escrow Account Disclosure Statement * International Consignment Note (CMR) * Invoice * IRS Tax Form 1040, US Individual Income Tax Return * IRS Tax Form W-2, Wage and Tax Statement * Lease Agreement US * Loan Application * Loan Estimate * Mortgage Note * Packing List * Personal Earnings Statement * Purchase Order * Receipt * Remittance Advice * Resume * Riders * Sea Waybill * Sick Note * Truth in Lending Disclosure Statement * Uniform Residential Appraisal Report * US Health Insurance Card * Utility Bill * W-8BEN * W-8BEN-E * W-8ECI * W-8EXP * W-8IMY Documents that do not belong to any of the listed types are assigned the **Unknown** class. ## Supported Languages By default, the Vantage Classifier skill supports documents in the following languages: * English * French * German * Spanish ## Using Other Languages To classify documents in other languages: 1. Duplicate the **Vantage Classifier** skill. 2. In the Languages settings in the Skill Designer, add the required languages to the copy of the **Vantage Classifier** skill. Allowing too many languages will slow down OCR. 3. Retrain the copy of the **Vantage Classifier** skill. After the list of recognition languages has been changed, the classifier needs to be trained again from scratch on your own documents. # Create a skill Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/create-skill Learn how to create a new skill in the ABBYY Vantage Skill Catalog and open it in the Skill Designer for configuration. Create a new skill and open it in the Skill Designer for configuration. You can start from the Skill Catalog or directly from the Skill Designer. Availability of this feature depends on your role. For more information, see [Role-based access control](/vantage/documentation/tenant-admin/tenant-management/role-based-access). ## Create a skill from the Skill Catalog On the Skill Catalog toolbar, click **Create**. Skill Catalog toolbar with the Create button highlighted Choose the skill type from the menu that appears. Create menu showing the available skill types In the dialog box, enter a **Name** and **Description** for the skill. If the skill will process structured documents, enable the **Fixed-form documents** toggle. See [Set up a Document skill](/vantage/documentation/skill-designer/document/set-up) for details. Select a **Technology Core Version**. Use the latest core version for all new skills. See [Technology Core versions](/vantage/documentation/technology-core-versions). Click **Create**. The Skill Designer opens and the skill is ready to configure. ### Verify the skill was created The new skill appears in the Skill Catalog and is visible to all users. Until it is published, it has no version number. The **Locked by** field shows who is currently editing the skill. ## Alternative ways to create a skill You can also create a skill using any of the following methods: * Click **Skill Designer** and select a skill type. * In the **Actions** pane, click one of these shortcuts: * **Extract Data from Documents** — creates a Document skill * **Classify Documents** — creates a Classification skill * **Process** — creates a Process skill For more information, see [Skill Designer](/vantage/documentation/skill-designer/skill-designer). ## Related topics * [Skill Catalog](/vantage/documentation/skill-catalog/skill-catalog) * [Try a skill](/vantage/documentation/skill-catalog/trying-skill) * [Edit a skill](/vantage/documentation/skill-catalog/edit-skill) * [Publish a skill](/vantage/documentation/skill-catalog/publish-skill) * [Set up a Document skill](/vantage/documentation/skill-designer/document/set-up) * [Technology Core versions](/vantage/documentation/technology-core-versions) # Delete a skill Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/delete-skill Permanently remove a skill and all its versions from the Skill Catalog. Deleting a skill permanently removes it from the Skill Catalog, along with all of its published versions and drafts. Availability of this feature depends on your role. For more information, see [Role-based access control](/vantage/documentation/tenant-admin/tenant-management/role-based-access). Built-in (read-only) skills can't be deleted — the **Delete skill** button is disabled in the toolbar for them. Before deleting a custom skill, make sure it isn't referenced by other skills (for example, by a Process skill); removing a referenced skill can break dependent workflows. Deleting a skill is irreversible. Make sure you no longer need any version of the skill before proceeding. In the Skill Catalog, select the skill (click anywhere except the skill name). Click **Delete skill** in the toolbar. The skill and all its versions are permanently removed from the Skill Catalog. ## Related topics * [Skill Catalog](/vantage/documentation/skill-catalog/skill-catalog) * [Find a skill](/vantage/documentation/skill-catalog/finding-skill) * [Edit a skill](/vantage/documentation/skill-catalog/edit-skill) * [Duplicate a skill](/vantage/documentation/skill-catalog/duplicate-skill) * [Publish a skill](/vantage/documentation/skill-catalog/publish-skill) * [Derived skills](/vantage/documentation/skill-catalog/derived-skills/derived-skills) # Configure a derived skill Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/derived-skills/configure-fields Customize fields, validation rules, and recognition settings on a derived skill while keeping it linked to its read-only base skill. A derived skill inherits all of its fields, rules, and recognition settings from the base skill — and you can customize each of those independently. ## Configure fields A derived skill inherits all the fields from its base skill. You can disable or delete inherited fields that you do not need or add new fields to extract additional data. ### Add a field In a derived skill, you can add a new field in the same way as in a custom skill. For information about how to add a field, see [Adding Fields](/vantage/documentation/skill-designer/document/adding-fields/adding-fields). Any fields you create in a derived skill will not be included in its base skill. ### Disable a field To disable an inherited field: In the Skill Designer, click the **Skill Settings** icon to the right of the skill name. In the dialog box that opens, click the **Fields** tab and turn off the corresponding toggle in the row with the field properties. If necessary, you can re-enable a previously disabled field at any time. When you disable a field, all its associated rules are also disabled. If you re-enable a field and want to continue using its associated rules, you must manually enable them. For information on how to manage rules, see [Configure validation rules](#configure-validation-rules). ### Remove a field To remove a field you created: In the data form, click the delete icon to the right of the field name. Click **Remove**. Until you save the settings, you can restore the field by clicking **Restore Settings From Base Skill** in the bottom left corner of the **Field Settings** dialog box. If you have already saved changes and published the skill, you can revert to the previous version of the skill by opening it for editing and publishing it again. ## Set up field properties In the **Field Settings** dialog box, you can adjust the settings of fields inherited from the base skill. To open the **Field Settings** dialog box, in the Skill Designer, click the field settings icon to the right of a field. The following settings always match the settings of the base skill and cannot be changed: * In the General group, the **Allow Multiple Items** property * In the **Text Appearance** group: All properties * In the **Value** group, for a field with the **Text** data type, the **Regular expression** property * The **Barcode type** property of a barcode field You can reset the new settings to the settings for the base skill at any time by clicking **Restore Settings From Base Skill** in the bottom left corner of the **Field Settings** dialog box. ## Edit layout You can edit the appearance of the data form: * Change the layout of the data form. For more information, see [Editing data form layout](/vantage/documentation/skill-designer/document/adding-fields/editing-data-form-layout). * Restore the layout. To do this, click **Restore Layout from Base Skill** in the **Actions** pane. The layout will be restored, and any custom fields you added to the derived skill will be listed at the bottom of the data form. If custom fields were added to a group, these will be listed at the bottom of the group. ## Configure validation rules A derived skill inherits all the validation rules of its base skill. Inherited rules cannot be edited. However, you can copy inherited rules and modify the copies. The modified copies will be used instead of the original rules with the same names. You can turn off inherited rules that are not required for document processing or add new rules to validate extracted data. ### Turn off a validation rule To turn off a validation rule: In the Skill Designer, click the **Skill Settings** icon to the right of the skill name. In the **Skill Settings** dialog box, go to the **Rules** tab and turn off the rule you want. You can turn it back on at any time. ### Create a new rule You can create a new rule in the same way as in a custom skill. For information on how to create a rule, see [Rule Verification](/vantage/documentation/skill-designer/document/rule-verification/rule-verification). Any rules you created in a derived skill will not be included in its base skill. ### Remove a new rule To remove a new rule: On the **Rules** tab of the **Skill Settings** dialog box, select the rule you want to remove. Click the delete icon, and then click **Save**. Until you save the settings, you can restore the rule by clicking **Restore**. ## Configure recognition settings A derived skill inherits the recognition settings from its base skill. To improve recognition speed, disable unnecessary recognition languages in a derived skill. You can also disable the **Handwritten** option if your documents do not contain any handwritten text. You cannot select any other languages or enable the **Handwritten** option if they are disabled in the base skill. ## Related topics * [Derived skills](/vantage/documentation/skill-catalog/derived-skills/derived-skills) * [Update a derived skill](/vantage/documentation/skill-catalog/derived-skills/update) * [Skill Catalog](/vantage/documentation/skill-catalog/skill-catalog) * [Add fields](/vantage/documentation/skill-designer/document/adding-fields/adding-fields) * [Rule verification](/vantage/documentation/skill-designer/document/rule-verification/rule-verification) # Derived skills Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/derived-skills/derived-skills Create a derived skill from a read-only Document skill to customize its fields, rules, and recognition settings while staying linked to the base skill. Derived skills let you adapt read-only Document skills to your needs by customizing fields, rules, and recognition settings while staying linked to a base skill. Derived skills are fully editable and inherit all the fields and rules from their base skill. When the base skill gets a new version, you can update the derived skill to the new version while keeping your customizations. You can create a derived skill from any read-only Document skill (Vantage built-ins and third-party skills). For other read-only skill types — Classification, OCR, or Process — duplicate the skill instead. See [Duplicate a skill](/vantage/documentation/skill-catalog/duplicate-skill). For information on how to work with derived skills in Advanced Designer, see [Derived skills](/vantage/documentation/advanced-designer/document-skills/derived). ## Create a derived skill You can create a derived skill from any read-only Document skill in the **Skill Catalog**. When you create at least one derived skill from a read-only skill, that skill becomes the base skill for its derived skills. To create a derived skill, do one of the following: * Select a skill from the list and click the **Create and Edit Derived Skill** button. * Click the name of a skill in the list and, in the dialog box that opens, click **Create and Edit Derived Skill**. In a derived skill, you can customize the following: * [Fields and field settings](/vantage/documentation/skill-catalog/derived-skills/configure-fields#configure-fields) * [Validation rules](/vantage/documentation/skill-catalog/derived-skills/configure-fields#configure-validation-rules) * [Recognition settings](/vantage/documentation/skill-catalog/derived-skills/configure-fields#configure-recognition-settings) When a new version of the base skill becomes available, [update the derived skill](/vantage/documentation/skill-catalog/derived-skills/update) to inherit the new version while keeping your customizations. ## Related topics * [Skill Catalog](/vantage/documentation/skill-catalog/skill-catalog) * [Configure a derived skill](/vantage/documentation/skill-catalog/derived-skills/configure-fields) * [Update a derived skill](/vantage/documentation/skill-catalog/derived-skills/update) * [Duplicate a skill](/vantage/documentation/skill-catalog/duplicate-skill) * [Edit a skill](/vantage/documentation/skill-catalog/edit-skill) # Update a derived skill Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/derived-skills/update Update a derived skill to the latest version of its base skill while preserving your custom fields, rules, and recognition settings. When an update becomes available, an update icon appears next to the version number of the derived skill in the **Skill Catalog**, and a settings icon shows an alert indicator. To update a derived skill, click the update icon next to the version number and select **Update** — or follow the steps below for full control over the result: Open the derived skill you want to update. Click the settings alert icon to open its settings. Select the latest version of the base skill. Click **Save**. The derived skill is automatically retrained. Test the skill and make any needed adjustments. Publish the skill to make its updated version available in Vantage. If you are not satisfied with the extraction statistics of a derived skill, do not publish the skill. Use its previous version instead. To use the previous version, go to the **Skill Catalog**, select the skill, and click **Discard changes** on the toolbar. ## What changes when a derived skill is updated ### Fields and rules * The derived skill inherits all fields and rules (and their enabled or disabled states) from the base skill. * Fields deleted from the base skill are preserved as custom fields in the derived skill. * Rules deleted from the base skill are also deleted from the derived skill. New rules added in the base skill are inherited with the following logic: | Condition | New rules are... | | :------------------------------------------------------- | :--------------- | | Any base skill rule is enabled in the derived skill | Enabled | | Any related new fields are disabled in the derived skill | Disabled | | No base skill rules are enabled in the derived skill | Disabled | ### Data catalogs and forms * If the structure of a data catalog has changed in the base skill, a new data catalog with the same structure is added to the derived skill. * The data form layout of the derived skill is preserved, with new fields appended at the end of the form. ### Recognition settings The derived skill inherits the recognition settings of the base skill. ### Skill parameters | Scenario | Behavior | | :---------------------------------- | :------------------------------------------------------------------------------------------------------------------------ | | Parameter added in base skill | An identical parameter is added to the derived skill. If a custom parameter with the same name exists, it is overwritten. | | Parameter removed from base skill | Any parameter with the same name in the derived skill becomes a custom parameter. | | Parameter renamed in base skill | Treated as a removal of the old parameter and addition of a new one. | | Default value changed in base skill | The derived skill's value is updated if the user has not changed it. If the user changed it, the value is preserved. | ## Related topics * [Derived skills](/vantage/documentation/skill-catalog/derived-skills/derived-skills) * [Configure a derived skill](/vantage/documentation/skill-catalog/derived-skills/configure-fields) * [Skill versions](/vantage/documentation/skill-versions) * [Skill Catalog](/vantage/documentation/skill-catalog/skill-catalog) * [Publish a skill](/vantage/documentation/skill-catalog/publish-skill) # Duplicate a skill Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/duplicate-skill Create an identical copy of a custom skill that you can modify independently. Duplicate a skill when you need variations of the same skill for different clients or document types. You can duplicate any custom skill. To modify a read-only Document skill (a Vantage built-in or a third-party skill), create a [derived skill](/vantage/documentation/skill-catalog/derived-skills/derived-skills) instead — the **Duplicate skill** button is unavailable for read-only Document skills. Skill Catalog with a read-only built-in skill selected, showing the Duplicate skill button disabled and a tooltip stating it is not available for read-only Document skills Availability of this feature depends on your role. For more information, see [Role-based access control](/vantage/documentation/tenant-admin/tenant-management/role-based-access). A duplicate is an exact copy of the original skill, including its description, demo documents, training documents, and all existing labeling. Select the skill from the list (click anywhere except the skill name), and then click **Duplicate skill** in the toolbar. Skill selected in the Skill Catalog with the Duplicate skill toolbar button highlighted ## After duplicating The copy appears in the Skill Catalog as ` (Copy)`. Duplication may take a moment, and the copy isn't editable until the process completes. A duplicate includes all unpublished changes from the original. To duplicate only the last published version, select the original skill and click **Discard changes** in the toolbar before duplicating. For details, see [Edit a skill](/vantage/documentation/skill-catalog/edit-skill). Duplicating a Process skill does not duplicate the skills it references. Duplicate those separately if needed. See [Duplicate a Process skill](/vantage/documentation/skill-designer/process/duplicating-process-skill). [Publish the duplicate](/vantage/documentation/skill-catalog/publish-skill) before using it. ## Related topics * [Skill Catalog](/vantage/documentation/skill-catalog/skill-catalog) * [Edit a skill](/vantage/documentation/skill-catalog/edit-skill) * [Publish a skill](/vantage/documentation/skill-catalog/publish-skill) * [Delete a skill](/vantage/documentation/skill-catalog/delete-skill) * [Derived skills](/vantage/documentation/skill-catalog/derived-skills/derived-skills) * [Duplicate a Process skill](/vantage/documentation/skill-designer/process/duplicating-process-skill) # Edit a skill Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/edit-skill Open a skill in the Skill Designer to modify it, and manage pending changes from the Skill Catalog. Edit an existing skill in the Skill Designer, and manage pending changes from the Skill Catalog. Availability of this feature depends on your role. For more information, see [Role-based access control](/vantage/documentation/tenant-admin/tenant-management/role-based-access). To open a skill for editing, do one of the following: * In the toolbar, select the skill and click the **Edit Skill** icon. * In the skill list, click the **Edit Skill** icon next to the skill name. * In the Preview pane, click **Edit Skill** at the bottom. Skill Catalog showing three ways to edit a skill: the Edit Skill icon in the toolbar, the Edit Skill icon next to the skill name, and the Edit Skill button at the bottom of the Preview pane For more information, see [Skill Designer](/vantage/documentation/skill-designer/skill-designer). The Skill Catalog shows the name of the user currently editing a skill next to the skill name. Only one user can edit a skill at a time. While a skill is being edited, other users can still use its most recently published version. When you're done, [publish the skill](/vantage/documentation/skill-catalog/publish-skill). ## Discard pending changes Use **Discard changes** to cancel any pending changes to a skill. After you discard changes, the most recently published version remains in the Skill Catalog. If the skill hasn't been published yet, discarding changes removes it from the Skill Catalog entirely. To discard pending changes, select the skill in the Skill Catalog and click **Discard changes** in the toolbar. ## Read-only skills Read-only skills (Vantage built-ins and third-party skills) can't be edited directly. Depending on the skill type, you have these options: * **Document skills** — create a derived skill and edit the derivative. See [Create a derived skill](/vantage/documentation/skill-catalog/derived-skills/derived-skills). * **Classification, OCR, and Process skills** — duplicate the skill and edit the copy. See [Duplicate a skill](/vantage/documentation/skill-catalog/duplicate-skill). * **Splitter skills** — edit in Advanced Designer. ## Related topics * [Skill Catalog](/vantage/documentation/skill-catalog/skill-catalog) * [Publish a skill](/vantage/documentation/skill-catalog/publish-skill) * [Duplicate a skill](/vantage/documentation/skill-catalog/duplicate-skill) * [Derived skills](/vantage/documentation/skill-catalog/derived-skills/derived-skills) * [Delete a skill](/vantage/documentation/skill-catalog/delete-skill) * [Find a skill](/vantage/documentation/skill-catalog/finding-skill) # Export a skill Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/export-skill Export a skill as a ZIP file to share, transfer, or publish, with control over whether training data is included. Export a skill as a ZIP file to share it, transfer it between environments, or back it up. Availability of this feature depends on your role. For more information, see [Role-based access control](/vantage/documentation/tenant-admin/tenant-management/role-based-access). Only published skills can be exported. The **Export** button is disabled in the toolbar for unpublished skills and for read-only skills (Vantage built-ins and third-party skills). ## Before you export When you export a skill, Vantage includes its document set and data catalog records by default. You can change these settings in the **Export Skill** dialog box. The structure of any data catalogs linked to a Document skill is always included in the export, regardless of your settings. Keep the following in mind: * If the exported skill will be used by people outside your organization, make sure the document set does not contain confidential information. * A skill exported without its document set can't be trained further. You can only retrain it from scratch using a new document set. * The export uses the most recently published version of the skill. To export an earlier version, duplicate the skill first and then export the copy. When exporting a Process skill, you can choose to include all skills it references, along with their data catalog records and document sets. The data catalog structure for any referenced Document skills is always exported. ## Run the export In the Skill Catalog, select the skill (click anywhere except the skill name), and then click **Export** in the toolbar. In the **Export Skill** dialog box, clear the **Export skill with document set** option if you want to exclude the training document set. Clear **Export with data catalogs records** if you want to exclude data catalog records. Export Skill dialog with Export with data catalogs records and Export skill with document set checkboxes selected, and Export and Cancel buttons Click **Export**. Vantage packages the skill as a ZIP file (this may take a moment) and downloads it to your local Downloads folder. Skills with large document sets (more than 100 documents) are delivered via SFTP instead of a direct download. Vantage emails you a link to a shared folder, with credentials embedded in the link, so no separate username or password is needed. The folder contains a single ZIP archive, the same package as a direct download. Download it and import it as-is, without extracting it. The folder is deleted after 14 days. For more information, see [Use an SFTP shared folder](/vantage/documentation/skill-catalog/sftp-shared-folder). ## Related topics * [Skill Catalog](/vantage/documentation/skill-catalog/skill-catalog) * [Import a skill](/vantage/documentation/skill-catalog/import-skill) * [Use an SFTP shared folder](/vantage/documentation/skill-catalog/sftp-shared-folder) * [Publish a skill](/vantage/documentation/skill-catalog/publish-skill) * [Duplicate a skill](/vantage/documentation/skill-catalog/duplicate-skill) * [Edit a skill](/vantage/documentation/skill-catalog/edit-skill) # Find a skill Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/finding-skill Find and preview skills in the Skill Catalog using search, filters, and the skill preview window. Use search, filters, and the preview window to locate skills in the Skill Catalog before opening them. Availability of this feature depends on your role. For more information, see [Role-based access control](/vantage/documentation/tenant-admin/tenant-management/role-based-access). ## Search for a skill Enter a keyword or skill name in the search bar in the toolbar. Results include exact and partial matches. When you filter by skill type, search is scoped to that type. Search bar in the Skill Catalog toolbar with matching skills listed below ## Filter by skill type The Skill Catalog toolbar shows tabs for each skill type — **Document**, **Classification**, **OCR**, **Splitter**, and **Process** — each with a count of how many skills of that type your tenant has. Click a tab to scope the list (and any active search) to that type. Click **Total** to clear the filter. Skill Catalog toolbar with skill-type filter tabs (Total, Document, Classification, OCR, Splitter, Process) and skill counts The **Type** column to the left of each skill name shows an icon indicating the skill type, so you can recognize types at a glance even without filtering. ## Preview a skill To preview a skill, click its icon in the **Type** column to the left of the skill name. The preview window opens with the skill description, details (Technology Core version, Skill ID, languages, and more), and a **Demo Document** section that displays the demo documents uploaded with the skill. You can navigate through demo documents directly in the preview. Skill Catalog preview window showing the skill description, details, and a Demo Document section with a sample document The preview window defaults to 35% of the browser width. Drag the left border to resize it — up to 80% of the browser width. Your preferred width persists until you clear the browser cache. ## Related topics * [Skill Catalog](/vantage/documentation/skill-catalog/skill-catalog) * [Try a skill](/vantage/documentation/skill-catalog/trying-skill) * [Edit a skill](/vantage/documentation/skill-catalog/edit-skill) * [Duplicate a skill](/vantage/documentation/skill-catalog/duplicate-skill) * [Publish a skill](/vantage/documentation/skill-catalog/publish-skill) # Import a skill Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/import-skill Import a skill to add it to your Skill Catalog, whether transferring a skill between environments or bringing in a skill purchased from ABBYY Marketplace. Import a skill when you need to transfer an existing skill to a different environment or add a skill purchased from ABBYY Marketplace to your Skill Catalog. Availability of this feature depends on your role. For more information, see [Role-based access control](/vantage/documentation/tenant-admin/tenant-management/role-based-access). Click **Import** in the toolbar. In the dialog box that opens, select the skill's ZIP file. The skill is uploaded to your Skill Catalog and published automatically. You can edit it afterward. If the imported skill has a shared folder import configured, you must enable shared folder import manually after importing. If a skill with the same name already exists in your Skill Catalog, Vantage displays a warning and asks whether you want to create a new version of the existing skill or save it under a different name. If you rename it, Vantage saves the imported skill as ` New`. Imported skills start at version 1.0. If a skill with the same name was previously deleted from the tenant, the version number continues from that deleted skill. ## Skills imported from Advanced Designer Skills imported from Advanced Designer can only be trained in Vantage if a Fast Learning activity was added to the document processing flow in Advanced Designer. ## Import archives larger than 2 GB If the skill archive exceeds 2 GB, Vantage displays a dialog box with a link to a shared SFTP folder and its credentials. The export is a single ZIP archive, so upload that one file to the folder using any SFTP client. Vantage imports the skill automatically and then deletes the archive from the folder. Only one skill can be imported per folder. Any files uploaded afterward are moved to an exception folder. The shared folder remains active for 14 days. For more information, see [Use an SFTP shared folder](/vantage/documentation/skill-catalog/sftp-shared-folder). ## Import a Document skill with data catalogs Data catalogs exported with a skill are imported as follows: | Catalog with same name exists? | Same columns and types? | Catalog imported? | Data imported? | | ------------------------------ | :---------------------- | :---------------------------------------- | :----------------------------------------------- | | No | N/A | Yes | Yes | | Yes | Yes | No | Yes. Previous data in the catalog is overwritten | | Yes | No | Yes, renamed to `Catalog_name Skill_name` | Yes | ## Import a Process skill If you import a Process skill that was exported without its referenced skills, make sure all referenced skills already exist in the Skill Catalog. Import any missing referenced skills before importing the Process skill, otherwise the import will fail. If you import a Process skill that was exported with its referenced skills, they are handled as follows: * If the referenced skill already exists in the Skill Catalog, it is not imported. The existing skill is used, even if the version in the archive is newer. * If a skill with the same name exists in the Skill Catalog, the referenced skill is imported and renamed, and the link in the Process skill is updated to point to the renamed skill. ## Related topics * [Skill Catalog](/vantage/documentation/skill-catalog/skill-catalog) * [Export a skill](/vantage/documentation/skill-catalog/export-skill) * [Use an SFTP shared folder](/vantage/documentation/skill-catalog/sftp-shared-folder) * [Publish a skill](/vantage/documentation/skill-catalog/publish-skill) * [Edit a skill](/vantage/documentation/skill-catalog/edit-skill) * [Find a skill](/vantage/documentation/skill-catalog/finding-skill) # Publish a skill Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/publish-skill Learn how to publish a skill in ABBYY Vantage to assign it a version number and make it available for document processing in the Skill Catalog. After creating or importing a skill, you must publish it before it can be used. Unpublished skills have no version number, can't process documents, and other users can't edit them. Availability of this feature depends on your role. For more information, see [Role-based access control](/vantage/documentation/tenant-admin/tenant-management/role-based-access). Only the user who most recently edited the skill can publish it. In the Skill Catalog, select the skill (click anywhere except the skill name), and then click **Publish** in the Skill Catalog toolbar. The **Publish** tab opens in Skill Designer. * **Name of your skill** — The skill name. * **Describe your skill** — The skill's purpose and any details that help other users understand it. * **Describe changes in this version** — A summary of the changes made in this version. * **Select keywords** — Keywords to help users find the skill in the Skill Catalog. * **Upload demo documents** — Sample documents showing what the skill is designed to process. These appear in the skill preview window and are used when trying a skill. Publish tab in Skill Designer showing the Name your skill, Describe your skill, Describe changes in this version, Select keywords, and Upload demo documents fields, with the Publish Skill button Click **Publish Skill** at the bottom of the Skill Designer window or in the **Actions** pane. The version number increments automatically. If you're editing an existing skill, the most recently published version remains available to others until you publish your changes. For more information, see [Skill versions](/vantage/documentation/skill-versions). ## Related topics * [Skill Catalog](/vantage/documentation/skill-catalog/skill-catalog) * [Edit a skill](/vantage/documentation/skill-catalog/edit-skill) * [Try a skill](/vantage/documentation/skill-catalog/trying-skill) * [Skill versions](/vantage/documentation/skill-versions) * [Create a skill](/vantage/documentation/skill-catalog/create-skill) # Use an SFTP shared folder Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/sftp-shared-folder Open a Vantage SFTP shared folder with a graphical or command-line client to download an exported skill or upload one for import. Vantage delivers large skill transfers through an SFTP shared folder instead of a direct browser download or upload. * When you export a skill with a large document set (more than 100 documents), Vantage emails you a link to the folder. Credentials are embedded in the link, so no separate username or password is needed. * When you import a skill archive larger than 2 GB, Vantage shows a dialog box with the folder link and its credentials. The shared folder stays active for 14 days, then it is deleted. Open it with any SFTP client, either a graphical client or the command-line client. ## Connect with a graphical client A graphical client is the easiest option if you do not work with the command line. Install and launch any SFTP client, such as FileZilla or WinSCP. Paste the shared-folder link that Vantage provided into the **Host** field. For an export, the credentials are embedded in the emailed link, so the client connects without a separate login. For an import, enter the username and password shown in the import dialog box. Click **Connect**. In the confirmation dialog box, click **OK** to trust the host. The shared folder appears in the client's remote folder pane. ## Connect with the command-line client If you prefer the terminal, connect with the `sftp` command, using the host and credentials that Vantage provided in the export link or the import dialog box. ```bash theme={null} sftp @ ``` ## Download an exported skill The shared folder contains a single ZIP archive, the same package as a direct download. Download the archive, then import it as-is without extracting it. For more information, see [Import a skill](/vantage/documentation/skill-catalog/import-skill). ## Upload a skill to import Upload the single ZIP archive to the shared folder. Vantage imports the skill automatically and then deletes the archive from the folder. Only one skill can be imported per folder. Any files uploaded afterward are moved to an exception folder. ## Related topics * [Skill Catalog](/vantage/documentation/skill-catalog/skill-catalog) * [Export a skill](/vantage/documentation/skill-catalog/export-skill) * [Import a skill](/vantage/documentation/skill-catalog/import-skill) # Skill Catalog Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/skill-catalog View, manage, and organize your ABBYY Vantage skills from a single location. The Skill Catalog is where you view and manage all your ABBYY Vantage skills. Skills are displayed as a list sorted by name. Skill Catalog page with skill-type filter tabs, the toolbar, the skill list, and the Actions side panel Each row in the list shows the following details: * Skill type — shown as an icon, with separate marks for base skills and their derived skills * Skill name * Version number * Description * The user currently editing the skill (**Locked by**) * Date last edited Version numbers are only shown for published skills. For more information, see [Skill versions](/vantage/documentation/skill-versions). For OCR skills, the skill details panel also displays the configured PDF Processing Mode. This field is informational only and cannot be edited from the Skill Catalog. To change the PDF Processing Mode, open the skill for editing. ## Skill types ABBYY Vantage supports the following skill types: Extract field values from structured and semi-structured documents of a single type. Identify the document type so the right skill processes it. Extract text from document images and export to multiple formats. Split a flow of pages into separate documents ready for processing. Coordinate multi-step document workflows by chaining skills. ## Filter the list To filter the list by skill type, click a skill-type tab at the top of the page. See [Find a skill](/vantage/documentation/skill-catalog/finding-skill) for details. ## What you can do Search, filter, and preview skills before opening them. Run sample documents through a skill from the Skill Catalog. Create a new skill from the Skill Catalog or Skill Designer. Create an editable copy of a custom skill. Modify a skill in the Skill Designer and manage pending changes. Build a new skill on top of a read-only or third-party skill. Bring an exported skill ZIP into your tenant. Package a skill as a ZIP file for sharing or transfer. Assign a version number to a skill and make it available in the Skill Catalog. Permanently remove a skill and all its versions from the Skill Catalog. # Try a skill Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/trying-skill Test skills from the Skill Catalog or the Try Any Skill portal to verify they meet your requirements before deploying. Test skills directly from the Skill Catalog or through the Try Any Skill portal to confirm they meet your needs before deploying them. Availability of this feature depends on your role. For more information, see [Role-based access control](/vantage/documentation/tenant-admin/tenant-management/role-based-access). To try a skill, do one of the following: * Select the skill from the list (click anywhere except the skill name), and then click **Try Skill** in the toolbar or **Actions** pane. * Open the skill's preview window by clicking the icon in the **Type** column to the left of the skill name, and then click **Try Skill** at the bottom of the window. Each skill opens in a separate browser tab, so you can test multiple skills at once and compare results. To return to the Skill Catalog, close the **Try Skill** tab. ## Try a Document skill When you try a Document skill, processing results for the demo document are displayed automatically. To test with your own files, click **Upload Documents** in the **Actions** pane. Actions pane with the Upload Documents button and a processed demo document on the right Uploaded documents are processed immediately and results are displayed automatically. ## Try an OCR skill Upload documents in any language listed in the **Actions** pane. After processing, the **Actions** pane shows recognition statistics, including the total word count and the number of uncertain words. You can also download recognition results for all uploaded documents in any of the skill's enabled formats. The document image highlights recognized and uncertain words. Below the image, per-document statistics and a list of detected languages are shown. OCR results with highlighted recognized and uncertain words, and per-document statistics below the image ## Use the Try Any Skill portal **Try Any Skill** is a standalone web application for uploading documents and running any skill outside of the Skill Designer. It's useful for quick demos, for testing skills against ad-hoc documents, and for sharing with users who don't work in Skill Designer directly. Access the portal at `https://vantage-.abbyy.com/try-any-skill/`. For example: ```text US theme={null} https://vantage-us.abbyy.com/try-any-skill/ ``` ```text EU theme={null} https://vantage-eu.abbyy.com/try-any-skill/ ``` ```text AU theme={null} https://vantage-au.abbyy.com/try-any-skill/ ``` Log in with your Vantage credentials. The Try Any Skill portal calls the Vantage API, so you can test any skill type from there — not only Document and OCR skills. ## Related topics * [Skill Catalog](/vantage/documentation/skill-catalog/skill-catalog) * [Find a skill](/vantage/documentation/skill-catalog/finding-skill) * [Edit a skill](/vantage/documentation/skill-catalog/edit-skill) * [Derived skills](/vantage/documentation/skill-catalog/derived-skills/derived-skills) * [Publish a skill](/vantage/documentation/skill-catalog/publish-skill) # Configure PDF Processing Mode Source: https://docs.abbyy.com/vantage/documentation/skills/configure-pdf-processing-mode Configure the PDF Processing Mode setting in ABBYY Vantage OCR and Process skills to control how scanned versus digital PDFs are recognized and processed. This guide walks you through configuring the **PDF Processing Mode** setting in each location where it is available. For background information on what each mode does and when to use it, see [PDF Processing Mode](/vantage/documentation/skill-designer/ocr-skill/pdf-processing-mode). ## In an OCR Skill In the **Skill Catalog**, locate the OCR skill you want to configure and click **Edit Skill**. In the **Edit OCR Skill** dialog, select the **General** tab. Under **Image Processing**, open the **PDF Processing Mode** dropdown and select a mode: * **Default** (Recommended) * **Use Text Layer Only** * **Use OCR Only** Click **Save and Publish**. The Skill Catalog displays the currently configured PDF Processing Mode in the skill details panel when you select an OCR skill. You can use this to quickly verify the setting without opening the skill editor. ## In a Process Skill (OCR Activity) Open the Process Skill in the **Skill Designer**. In the workflow, select the **OCR** activity block. In the **Actions** pane, click **OCR Settings**. The OCR Settings dialog box opens. Select the **General** tab. Under **Image Processing**, open the **PDF Processing Mode** dropdown and select a mode. Click **Save**. # Configure LLM connections Source: https://docs.abbyy.com/vantage/documentation/skills/connections Set up LLM connections in ABBYY Vantage to integrate Anthropic, Google AI Studio (Gemini), Microsoft Foundry, Mistral AI, and OpenAI ChatGPT models for AI-powered document extraction. An **LLM connection** stores the tenant-level credentials that link ABBYY Vantage to an external LLM provider. Once configured, a connection is shared across your tenant, and any Document Skill can use it for prompt-based extraction and classification. LLM connections can currently be used in Document Skills through ABBYY Advanced Designer only. Connections are managed at the tenant level and are available to all skill designers in your organization. For a conceptual overview and the full list of supported providers, see [LLMs in ABBYY Vantage](/vantage/documentation/llms/llms) and [Supported LLM providers and models](/vantage/documentation/llms/supported-providers-models). ## Prerequisites Before you begin, make sure you have the following. * **Administrator access** to ABBYY Vantage Configuration. * **An active subscription** with your chosen LLM provider. * **API credentials** from that provider: * **Anthropic** - API key from your Anthropic account. * **Google AI Studio** - API key from your Google AI Studio account. * **Microsoft Foundry** - API key, the complete endpoint URL (including the `/chat/completions` path and API version), and the deployed model name from Azure. * **Mistral AI** - API key from your Mistral AI account. * **OpenAI** - API key from your OpenAI account. ## Add an LLM connection In the left sidebar, under **ADMIN**, click **Configuration** (gear icon), and then click **Connections**. Connections page in Vantage Configuration The **Connections** page lists any existing connections with their **Name**, **Description**, **Used in Skills**, and **Last Updated** values, along with **Add Connection**, **Test**, **Edit**, and **Delete** buttons. Click **+ Add Connection**. The **Add Connection** dialog lists the available providers: **Anthropic**, **Microsoft Foundry**, **Google AI Studio**, **Mistral AI**, and **OpenAI**. Add Connection dialog listing Anthropic, Microsoft Foundry, Google AI Studio, Mistral AI, and OpenAI providers Select the provider that matches your subscription, and then click **Next**. Give the connection a name and an optional description. * **Name** - A unique name for the connection. This name appears when skill designers select a connection in a Document Skill, so choose something descriptive, such as `Production Claude` or `Mistral AI`. * **Description** - Optional context about the connection's purpose or environment. Don't include API keys or other credentials. Enter the credentials for your provider. The required fields depend on the provider you selected. For the fields per provider, see [Connection settings by provider](#connection-settings-by-provider). Connection configuration form with General and Connection Settings sections Click **Test**. Vantage attempts to reach the provider with the credentials you entered. Testing an LLM connection A green checkmark confirms the connection works. A red error means the credentials or settings need attention. For help, see [Troubleshooting](#troubleshooting). Once the test succeeds, click **Add**. The connection appears in the **Connections** list and is immediately available to all skill designers in your tenant. Once a skill that references this connection is published, the connection becomes the **default** in the Vantage Web Portal, under **Skill Catalog → \[skill] → Parameters**. A tenant administrator can override the default per environment without republishing the skill. For more information, see [Document skill parameters](/vantage/documentation/skill-designer/skill-parameters/document-skill-params). ## Connection settings by provider The **Connection Settings** fields differ by provider. Enter the exact model name your account supports. For example models, see [Supported LLM providers and models](/vantage/documentation/llms/supported-providers-models). Never share API keys or include them in a connection's description. These credentials grant access to your LLM services and the associated costs. ### Anthropic * **Model Name** - The Anthropic model to use. Select the model your account supports. * **API Key** - Your Anthropic API key (starts with `sk-`). ### Google AI Studio (Gemini) * **Model Name** - The Gemini model to use, for example `gemini-2.0-flash`. * **API Key** - Your Google AI Studio API key, from **Google AI Studio → Get API key**. ### Microsoft Foundry * **Model Name** - The name of your deployed model in Microsoft Foundry, from **Azure Portal → your Microsoft Foundry resource → Deployments**. This must match the deployment exactly. * **URL** - Your Microsoft Foundry endpoint, from **Azure Portal → your Microsoft Foundry resource → Keys and Endpoint**. Include the deployment path and API version, for example `https://.cognitiveservices.azure.com/openai/deployments//chat/completions?api-version=2025-01-01-preview`. * **API Key** - Your Microsoft Foundry API key, from the same **Keys and Endpoint** page. ### Mistral AI * **Model Name** - The Mistral AI model to use. Select the model your account supports. * **API Key** - Your Mistral AI API key. ### OpenAI ChatGPT * **Model Name** - The OpenAI model to use, for example `gpt-4`. * **API Key** - Your OpenAI API key (starts with `sk-`), from **OpenAI Platform → API Keys**. ## Manage connections Connections are shared, so a change affects every skill that uses them. Test after any change. ### Edit a connection On the **Connections** page, select the connection, and then click **Edit** (pencil icon). Update the fields, click **Test** to confirm the connection still works, and then click **Save**. Editing a connection affects all skills that use it. Test thoroughly after making changes. ### Test a connection On the **Connections** page, select the connection, and then click **Test** (refresh icon) to verify the credentials still work. This is useful for routine checks and troubleshooting. ### Delete a connection On the **Connections** page, select the connection, click **Delete** (trash icon), and then confirm. You can't delete a connection that is used in an active skill. Remove the connection from all skills first. ## Troubleshooting ### The connection test fails Check the credentials and settings for the provider. * **Invalid API key** - Confirm you copied the entire key, with no extra spaces. Regenerate the key in the provider's portal if needed. * **Invalid endpoint URL (Microsoft Foundry)** - Confirm the URL is complete, matches your Azure resource, and has no typos in the deployment path. * **Wrong model name** - Confirm the model or deployment exists and is active, and check spelling and capitalization (case-sensitive). * **Network issues** - Confirm outbound HTTPS is allowed and your Vantage instance can reach the provider. * **Quota or permissions** - Confirm your subscription is active, you're within rate limits, and the key has the necessary permissions. ### The connection works in the test but fails in a skill * Refresh the Skill Designer page, and re-select the connection in the skill. * Confirm the skill is published, not in draft. * Check the skill's error logs for specific messages. ### API costs are higher than expected * Review which skills use the connection, and their processing volume. * Use smaller, faster models for simple tasks. * Monitor usage and set budget alerts in your provider's dashboard. ## Best practices * **Secure your credentials.** Never share API keys or put them in a description. Rotate keys regularly, grant each key the least privilege it needs, and use separate connections for development and production. * **Name connections clearly.** Use names that indicate purpose or environment, such as `Production GPT-4` or `Development Foundry`, rather than `Connection 1`. Record the environment, use case, and owner in the description. * **Review connections regularly.** Test connections on a schedule and after any credential change, and use the **Used in Skills** column to find and remove connections no longer in use. * **Manage cost.** Use smaller, faster models for simple tasks, keep prompts efficient, and set budget alerts in your provider's dashboard. ## Additional resources * [Anthropic API documentation](https://docs.anthropic.com) * [Google AI Studio](https://aistudio.google.com) * [Microsoft Foundry](https://azure.microsoft.com/products/ai-foundry) * [Mistral AI documentation](https://docs.mistral.ai) * [OpenAI API documentation](https://platform.openai.com/docs) ## Related topics * [LLMs in ABBYY Vantage](/vantage/documentation/llms/llms) * [Supported LLM providers and models](/vantage/documentation/llms/supported-providers-models) * [Extract data with prompt-based activities](/vantage/documentation/skills/prompt-extraction) * [Document skill parameters](/vantage/documentation/skill-designer/skill-parameters/document-skill-params) # Working with skills Source: https://docs.abbyy.com/vantage/documentation/skills/overview Understand how skills work in ABBYY Vantage, choose the right design tool for your task, and find guides for the most common skill-building workflows. Skills are the core building blocks of ABBYY Vantage: trained, reusable units that classify documents, extract data, or orchestrate an end-to-end processing workflow. Everything you process in Vantage runs through a skill. ## Choose your starting point How you work with skills depends on how much customization you need: Start with a pre-trained skill for common document types like invoices, receipts, and tax forms. No training required. Build and customize skills in the browser: define fields, set up business rules, and assemble processing workflows. Use the desktop application for complex extraction logic: custom activities, extraction rules, FlexiLayouts, and prompt-based LLM extraction. **Rule of thumb:** check the [Skill Catalog](/vantage/documentation/skill-catalog/skill-catalog) first. If a pre-trained skill covers your document type, derive from it and adjust, which is far faster than training from scratch. Use [Skill Designer](/vantage/documentation/skill-designer/skill-designer) for most custom skills, and reach for [Advanced Designer](/vantage/documentation/advanced-designer/introduction) when you need extraction logic the browser tool cannot express. Not sure whether to start from a pre-trained skill or build new? See [Choose between Base, Derived, and New skills](/vantage/documentation/skills/skill-types). ## Common tasks Beginner-friendly, step-by-step guides for the workflows most people set up first: Decide which skill approach fits your document type and start with the right foundation Create a Process skill and set up automated document processing via SFTP Choose the right PDF Processing Mode in OCR skills and Process skills for your documents Understand how LLM connections and prompt-based extraction fit together, and when to use them Connect Vantage to OpenAI, Microsoft Foundry, or Google AI Studio for AI-powered extraction Use natural language prompts to extract data from documents in Advanced Designer ## Before you begin Most guides assume you have: * Access to an ABBYY Vantage tenant * A user account with appropriate permissions * Basic familiarity with the document types you want to process Don't have access yet? [Contact ABBYY](https://www.abbyy.com/company/contact-us/) to request a tenant or trial. ## Related documentation * [**Getting Started**](/vantage/getting-started/overview) - Process your first document with a guided tutorial * [**Manual Review**](/vantage/documentation/runtime/manual-review/manual-review) - Review, correct, and verify processed documents in production * [**Developer Guide**](/vantage/developer/getting-started) - Integrate Vantage via the REST API # Process documents with SFTP Source: https://docs.abbyy.com/vantage/documentation/skills/process-skill Complete guide to setting up and using ABBYY Vantage for automated document processing via SFTP, from creating Process Skills to downloading extraction results. ## Overview ABBYY Vantage enables automated document processing with intelligent extraction capabilities. This guide focuses on the SFTP-based workflow, which allows you to upload documents to a shared folder and automatically retrieve processed results. **What you'll accomplish:** * Create and configure a Process Skill * Set up SFTP access for input and output * Upload documents via command line * Download extraction results **Time to complete:** 15-20 minutes *** ## Step 1: Create a Process Skill A Process Skill is the foundation of your document processing workflow in Vantage. 1. Navigate to the **Documents** section in ABBYY Vantage. 2. Click on **Skill Designer** in the left sidebar. 3. Select **Process Skill** from the skill types. Selecting Process Skill 4. In the **Create Process skill** dialog, enter: * **Skill Name:** A descriptive name for your process (e.g., "Process Skill Test 1") * **Description:** Optional description of what this skill does * **Technology Core Version:** 3.0 (recommended) Naming Process Skill 5. Click **Create** *** ## Step 2: Configure the Process Skill Workflow After creating your skill, you'll set up the document processing flow. 1. In the Skill Designer, you'll see the **Select Process Skill** panel on the right 2. Choose **Simple Document skill workflow** for processing single document types Selecting Simple Workflow This creates a pre-configured workflow with: * **Input** connector: Where documents enter the system * **OCR** skill: Optical character recognition * **Extract** skill: Data extraction * **Output** connector: Where results are delivered The workflow will appear in the center canvas showing: `Input → OCR → Extract → Output` *** ## Step 3: Set Up Input via SFTP Configure the Input activity to accept documents via SFTP. 1. Click on the **Input** activity in the workflow. 2. In the **Actions** panel on the right, check **Select additional source.** 3. Select the **Shared folder** radio button. 4. Click **Settings** to configure. Configuring Input Activity ### Configure Input Settings In the **Input Settings: Shared Folder** dialog: Input Settings Dialog **Folder settings:** * **Folder name:** Input (default) * **Import method:** Single file **Credentials for import** (displayed for your use): * **Folder link:** `.../Input` * **Exceptions folder link:** `.../Input-exception` * **Username:** A generated UUID (e.g., `685df03c-9e22-41cb-a96f-4c408ab52735`) * **Password:** Displayed with show/hide option Copy these credentials — you'll need them to connect via SFTP. Files that can't be imported will be moved to the exceptions folder. Vantage checks for files every 20 seconds after publishing the Skill. 5. Click **Save.** *** ## Step 4: Set Up Output via SFTP Configure the Output activity to deliver results via SFTP. 1. Click on the **Output** activity in the workflow. 2. In the **Actions** panel, check **Select additional destination.** 3. Select the **Shared folder** radio button. 4. Click **Settings** to configure. Configuring Output Activity ### Configure Output Settings In the **Output Settings: Shared Folder** dialog: Output Settings Dialog **Info:** * **Folder name:** Output (default) * **Folder:** `.../Output` * **Username:** A generated UUID (e.g., `685df03c-9e22-41cb-a96f-4c408ab52735`) * **Password:** Displayed with show/hide option **Exported Data:** * **Fields (JSON):** Default export format Results are organized in subfolders named after the source file and transaction ID (e.g., `invoice_1.jpg-4ac2a31b-d1b6-4231-99b2-39f00bc5df82`). Files are automatically removed according to the data retention policy. 5. Click **Save.** *** ## Step 5: Configure Extraction Skills Set up which document types the Extract activity should recognize and process. 1. Click on the **Extract** activity in the workflow. 2. In the **Actions** panel, you'll see **Document Skills.** Configuring Extraction Skills Available document skills include: * Invoice * Invoice AU-NZ * Invoice CA * Invoice ES * Invoice UA * Invoice US 3. Select the document types relevant to your use case. 4. Click **Add Skill** if you need additional document types. 5. Use **Edit Mapping** to customize field extraction if needed. *** ## Step 6: Publish and Get Your Skill ID Before you can use SFTP, you need to publish the skill and locate its ID. 1. Click the **Publish** button in the top right of the Skill Designer. 2. Once published, note the **Skill ID** from the browser URL. Getting Skill ID from URL The URL format is: ``` https://vantage-preview.abbyy.com/skill-editor/Processing/{skill-id} ``` For example: `fc7116ea-ab6c-40fa-b10d-1aef61aaaa2c` Keep your Skill ID handy — you'll need it to access the correct Input and Output folders in SFTP. *** ## Step 7: Connect to SFTP Now you're ready to connect via SFTP using the credentials from your Input/Output settings. ### Connection Details From your Input/Output settings, you have: * **Server:** `172.172.228.138` * **Port:** `2022` * **Username:** Your generated UUID * **Password:** Your generated password * **Base Path:** `/{skill-id}/` ### Connect via Terminal Open your terminal and connect using: ```bash theme={null} sftp -P 2022 {username}@172.172.228.138 ``` Example: ```bash theme={null} sftp -P 2022 8d1bf446-3abb-4ddb-a8a8-ed87fac7f171@172.172.228.138 ``` Use capital `-P` for the port number in SFTP (lowercase `-p` is used for a different purpose). When prompted, enter your password. *** ## Step 8: Navigate the SFTP Folder Structure Once connected, you'll see the SFTP prompt: `sftp>` ### View Available Skills List all available Process Skills: ```bash theme={null} sftp> ls ``` Accessing Skill Folders You'll see folders for each skill (identified by their skill IDs), plus: * `Catalogs` - Document skill catalogs * `Catalogs-exception` - Failed catalog imports * `skills-import` - Skill import directory ### Navigate to Your Skill Use the skill ID from Step 6: ```bash theme={null} sftp> cd {your-skill-id} sftp> ls ``` You should see three folders: * **Input** - Where you upload documents for processing * **Input-exception** - Failed imports are moved here * **Output** - Where processed results appear *** ## Step 9: Upload Documents for Processing Navigate to the Input folder and upload your documents. ### Navigate to Input Folder ```bash theme={null} sftp> cd Input sftp> pwd Remote working directory: /{skill-id}/Input ``` ### Upload a Single File Upload a file with the full path: ```bash theme={null} sftp> put ~/Documents/Sample\ Files/Demo\ Docs/invoice_1.jpg ``` Or change your local directory first: ```bash theme={null} sftp> lcd ~/Documents/Sample\ Files/Demo\ Docs sftp> lls sftp> put invoice_1.jpg ``` Uploading and Downloading Files ### Upload Multiple Files ```bash theme={null} sftp> mput *.jpg sftp> mput invoice_*.pdf ``` Files uploaded to Input are automatically deleted after successful processing (usually within 20 seconds). If you don't see your file after uploading, it means Vantage has already picked it up for processing. ### Verify Upload Check if files are still in the Input folder: ```bash theme={null} sftp> ls ``` If the folder is empty or your file is missing, processing has begun. *** ## Step 10: Check Processing Status ### Monitor Input-exception Folder If a file fails to import, it will appear here: ```bash theme={null} sftp> cd .. sftp> cd Input-exception sftp> ls ``` An empty folder means all files imported successfully. ### Wait for Processing Processing time varies based on: * Document complexity * Extraction skills configured * Current system load Typically, simple invoices process within 30-60 seconds. *** ## Step 11: Download Processed Results Once processing completes, results appear in the Output folder. ### Navigate to Output Folder ```bash theme={null} sftp> cd .. sftp> cd Output sftp> ls ``` ### Understanding Output Structure Results are organized in subfolders with this naming pattern: ``` {original-filename}-{transaction-id} ``` Example: ``` invoice_1.jpg-4ac2a31b-d1b6-4231-99b2-39f00bc5df82 ``` ### View Contents of a Result Folder ```bash theme={null} sftp> cd invoice_1.jpg-4ac2a31b-d1b6-4231-99b2-39f00bc5df82 sftp> ls ``` Typical contents: * **Invoice\_US.json** - Extracted data in JSON format * **Invoice\_US.csv** - Extracted data in CSV format (if configured) * Additional files depending on your output settings ### Download Results **Set your local download directory:** ```bash theme={null} sftp> lcd ~/Downloads sftp> lpwd Local working directory: /Users/yourname/Downloads ``` **Download a single file:** ```bash theme={null} sftp> get Invoice_US.json ``` **Download all files in the folder:** ```bash theme={null} sftp> mget * ``` **Download the entire result folder recursively:** ```bash theme={null} sftp> cd .. sftp> get -r invoice_1.jpg-4ac2a31b-d1b6-4231-99b2-39f00bc5df82 ``` *** ## Understanding the JSON Output The default output is a JSON file containing: * **Document structure** - Layout and organization * **Extracted field values** - Data pulled from the document * **Confidence scores** - Reliability of each extraction * **Rule errors** - Any validation issues * **Field metadata** - Additional information about each field Example structure: ```json theme={null} { "Document": { "DocumentType": "Invoice US", "Fields": [ { "Name": "InvoiceNumber", "Value": "INV-12345", "Confidence": 0.98 }, { "Name": "Total", "Value": "1250.00", "Confidence": 0.95 } ] } } ``` For detailed JSON schema documentation, refer to the ABBYY Vantage API documentation. *** ## Useful SFTP Commands | Command | Description | Example | | :-------------- | :-------------------------- | :---------------- | | `ls` | List remote files | `ls` | | `lls` | List local files | `lls` | | `pwd` | Show remote directory | `pwd` | | `lpwd` | Show local directory | `lpwd` | | `cd folder` | Change remote directory | `cd Output` | | `lcd folder` | Change local directory | `lcd ~/Downloads` | | `put file` | Upload single file | `put invoice.pdf` | | `mput files` | Upload multiple files | `mput *.jpg` | | `get file` | Download single file | `get result.json` | | `mget files` | Download multiple files | `mget *` | | `get -r folder` | Download folder recursively | `get -r results/` | | `exit` | Disconnect | `exit` | *** ## Troubleshooting ### Connection Issues **Problem:** "Connection refused" or timeout errors **Solutions:** * Verify you're connected to the company VPN * Check the port number (should be `2022` with capital `-P`) * Confirm your username and password are correct * Test basic network connectivity: `ping 172.172.228.138` ### Upload Issues **Problem:** Files not being processed **Solutions:** * Check the `Input-exception` folder for failed imports * Verify file format is supported (PDF, JPG, PNG, TIFF, etc.) * Ensure the Process Skill is published * Check file size limits (varies by configuration) ### No Output Files **Problem:** Output folder is empty after uploading **Solutions:** * Wait longer - processing can take 30-60 seconds or more * Verify Output is configured with "Shared folder" destination * Check transaction logs in the Vantage web interface * Confirm the Extract activity has appropriate document skills configured ### Permission Errors **Problem:** "Permission denied" when uploading/downloading **Solutions:** * Verify you're using the correct credentials for Input vs Output * Input credentials allow: upload, delete * Output credentials allow: view, download, rename, delete * Check that the skill is published and active *** ## Best Practices ### Security * Never share SFTP credentials in plain text * Use secure channels to transmit passwords * Rotate credentials periodically * Limit SFTP access to necessary personnel ### File Management * Use descriptive filenames that include dates or IDs * Process files in batches during off-peak hours if possible * Download and archive results promptly * Clean up old result folders regularly ### Monitoring * Check Input-exception folder regularly for failed imports * Monitor processing times to identify bottlenecks * Review extraction confidence scores in results * Set up alerts for critical failures (if available) ### Workflow Optimization * Group similar document types together * Configure appropriate document skills for your use case * Test with sample documents before production use * Document your SFTP workflow for team reference *** ## Next Steps Now that you have a working SFTP-based document processing pipeline: 1. **Test with various documents** - Upload different file types and document variations 2. **Review extraction accuracy** - Check the JSON results and confidence scores 3. **Customize extraction** - Use Edit Mapping to fine-tune field extraction 4. **Automate uploads** - Create scripts to automate file uploads 5. **Integrate with systems** - Connect your applications via the Vantage REST API 6. **Scale your workflow** - Add more document skills or create additional Process Skills For advanced configurations, API integration, or custom workflows, refer to the [ABBYY Vantage documentation](https://docs.abbyy.com). *** ## Additional Resources * **REST API Documentation:** For programmatic file uploads and result retrieval * **Skill Catalog:** Browse pre-built document skills * **Support:** Contact ABBYY support for technical assistance *** ## Summary You've successfully: * ✅ Created a Process Skill in ABBYY Vantage * ✅ Configured SFTP access for input and output * ✅ Set up document extraction skills * ✅ Connected via SFTP command line * ✅ Uploaded documents for processing * ✅ Downloaded extraction results Your document processing pipeline is now operational and ready for production use! # Extract data with prompt-based activities Source: https://docs.abbyy.com/vantage/documentation/skills/prompt-extraction Build prompt-based extraction activities in ABBYY Vantage Advanced Designer: use natural language instructions with LLMs to extract data from documents. ## Overview Prompt-based extraction allows you to use natural language instructions to extract structured data from documents using LLMs. Instead of training traditional machine learning models, you describe what data you want to extract and how it should be formatted, and the LLM handles the extraction based on your instructions. For background on how Vantage uses LLMs, including data handling and cost, see [LLMs in ABBYY Vantage](/vantage/documentation/llms/llms). **What you'll accomplish:** * Create a prompt-based extraction activity. * Configure an LLM connection. * Write effective extraction prompts. * Define output format and structure. * Apply strictness and validation rules. * Test and refine your extraction. **Time to complete:** 20-30 minutes **Use Cases:** * Vendor information extraction from invoices * Header-level document data capture * Semi-structured document processing * Documents with variable layouts *** ## Prerequisites Before you begin, ensure you have: 1. **Access to ABBYY Vantage Advanced Designer**. 2. **An LLM connection configured**. See [Configure LLM connections](/vantage/documentation/skills/connections). 3. **A Document Skill** with sample documents loaded. 4. **Basic understanding** of JSON structure. 5. **Field definitions** for the data you want to extract. This guide focuses on header-level extraction. Table extraction capabilities may vary. *** ## Understanding Prompt-Based Extraction ### What is Prompt-Based Extraction? Prompt-based extraction uses LLMs to understand and extract data from documents based on natural language instructions. You define: * **Role**: What the LLM should act as (e.g., "data extraction model"). * **Instructions**: How to extract and format data. * **Output Structure**: The exact JSON format for results. * **Rules**: Guidelines for handling ambiguous or missing data. For the strengths and limits of prompt-based extraction, and when to prefer traditional extraction, see [When to use LLMs](/vantage/documentation/llms/llms#when-to-use-llms). *** ## Step 1: Add a Prompt-Based Activity Create a new prompt-based extraction activity in your Document Skill. 1. Open your Document Skill in **ABBYY Vantage Advanced Designer**. 2. In the left panel, locate **EXTRACT FROM TEXT (NLP)**. 3. Find and click on **Prompt-based**. Selecting Prompt-Based Activity 4. The activity appears in your workflow canvas. 5. Connect it between your input and output activities. Prompt-based activities are found under "EXTRACT FROM TEXT (NLP)" in the Activities panel, alongside other extraction methods like Named Entities (NER) and Deep Learning. *** ## Step 2: Configure the LLM Connection Select which LLM connection the activity should use. 1. Select the prompt-based activity in your workflow. 2. In the **Activity Properties** panel on the right, locate **LLM Connection**. 3. Click the dropdown menu. Configuring LLM Connection 4. Select your configured LLM connection from the list. * Example: `Nick-ChatGPT`, `Microsoft Foundry`, `Production GPT-4` 5. Verify the connection is selected. If you don't see any connections listed, you need to configure an LLM connection first through Configuration → Connections. When you publish the skill, the connection you select here becomes the **default** for that skill in the Vantage Web Portal. Under **Skill Catalog → \[your skill] → Parameters**, the connection appears pre-populated. Tenant administrators can switch it to a different connection (for example, to point a production skill at a different LLM endpoint per environment) without republishing the skill — see [Document skill parameters](/vantage/documentation/skill-designer/skill-parameters/document-skill-params). *** ## Step 3: Define Output Fields Set up the fields you want to extract before writing your prompt. 1. In the **Activity Properties** panel, locate the **Output** section. 2. You'll see a hierarchical list of field groups and fields. 3. For this example, we're extracting vendor information: * Vendor * Name * Address * TaxID * Account Number * Sort Code * IBAN * BIC\_SWIFT * Business Unit * Name * Address * Invoice Date * Invoice Number * Totals * Net Amount Field Output Structure 4. Click **Activity Editor** button to begin configuring the prompt. Define all fields before writing your prompt. The field names will be referenced in your prompt structure. *** ## Step 4: Write the Role Definition Define what role the LLM should play when processing documents. 1. In the Activity Editor, you'll see the **Prompt Text** interface 2. Start with the **ROLE** section: ``` ROLE You are a data extraction model. Extract only the specified vendor-related fields from a document. Extract the value text verbatim (not the label). Do not infer or reformat any data. Omit any field that is not clearly present. ``` Prompt Text Editor **Key Role Instructions:** * **Be specific**: "data extraction model" tells the LLM its purpose. * **Define scope**: "vendor-related fields" limits what to extract. * **Set expectations**: "value text verbatim" prevents reformatting. * **Handle missing data**: "Omit any field that is not clearly present". **Best Practices:** * Keep the role clear and concise. * Use imperative statements ("Extract", "Do not infer"). * Be explicit about what NOT to do. * Define how to handle edge cases. *** ## Step 5: Define the Output Format Specify the exact JSON structure for extraction results. 1. Below the ROLE section, add the **OUTPUT FORMAT** heading. 2. Define the JSON structure: ``` OUTPUT FORMAT Return one valid JSON object using this exact structure: { "Fields": [ { "FieldName": Vendor.Name, "Text": "...", "Line": }, { "FieldName": Vendor.Address, "Text": "...", "Line": }, { "FieldName": Vendor.TaxID, "Text": "...", "Line": }, { "FieldName": Vendor.Account Number, "Text": "...", "Line": }, { "FieldName": Vendor.Sort Code, "Text": "...", "Line": }, { "FieldName": Vendor.IBAN, "Text": "...", "Line": }, { "FieldName": Vendor.BIC_SWIFT, "Text": "...", "Line": } ] } ``` JSON Output Format **Structure Components:** * **FieldName**: Must match your field definitions exactly (e.g., `Vendor.Name`). * **Text**: The extracted value as a string. * **Line**: 0-based line index where the value appears in the document. **Important Notes:** * Use exact field names from your Output configuration. * Include all fields even if some might be empty. * The structure must be valid JSON. * Line numbers help with verification and troubleshooting. *** ## Step 6: Add Field-Specific Extraction Rules Provide detailed instructions for extracting each field. Below the OUTPUT FORMAT, add specific rules for each field type: ``` VENDOR NAME 1) Recognize names like "ABC Corporation", "XYZ Ltd", "Acme Inc.". 2) Extract the complete company name including legal suffixes (Ltd, Inc, GmbH, etc.). 3) Vendor name typically appears near the top of the document. VENDOR ADDRESS 1) Extract the complete address including street, city, postal code. 2) For multiline addresses, represent each new line using "\n". 3) Vendor-side only; exclude customer/buyer addresses. ACCOUNT NUMBER 1) Recognize "Account Number", "Account No", "Acct #". 2) Extract the numeric format exactly as printed (e.g., "12-34-56" or "500 105 17"). 3) Vendor-owned accounts only (e.g., "Beneficiary" or "Vendor Payment" sections). 4) Ignore IBAN — it has its own field. SORT CODE 1) Recognize "Sort Code", "Sort No.", "BLZ", "Bankleitzahl". 2) Extract the numeric format exactly as printed (e.g., "12-34-56" or "500 105 17"). 3) Vendor-side data only; ignore payer/buyer codes. IBAN 1) Recognize "IBAN", "International Bank Account Number". 2) Extract the full IBAN exactly as printed (include spaces). 3) Vendor-side only, typically under "Bankverbindung", "Coordonnées bancaires", "Payment Details", or "Beneficiary Bank". BIC_SWIFT 1) Recognize "BIC", "SWIFT", or "BIC/SWIFT". 2) Extract the complete identifier (usually 8 or 11 uppercase letters/numbers). 3) Vendor-side only, near the IBAN or bank name. 4) Exclude customer/payer data. ``` Extraction Rules **Rule Structure:** * **Recognition patterns**: List alternative labels for each field. * **Format specifications**: Describe exact format to extract. * **Location hints**: Where to typically find the data. * **Exclusions**: What NOT to extract. **Best Practices:** * Number your rules for clarity. * Provide multiple label variations. * Specify data ownership (vendor-side vs. customer-side). * Include format examples in parentheses. * Be explicit about related fields (e.g., "Ignore IBAN — it has its own field"). *** ## Step 7: Apply Strictness Rules Add validation rules to ensure data quality and consistency. At the end of your prompt, add a **STRICTNESS** section: ``` STRICTNESS - Never generate or infer values. - Omit ambiguous or missing fields. - If none of the vendor fields are found, return: { "Fields": [] } ``` Strictness Rules **Additional Strictness Rules (Optional):** ``` GENERAL RULES - Extract exactly one value per field. - Skip any field that cannot be confidently located — omit it from the output. - "FieldName" must match the names above exactly. - "Text" must be copied verbatim from the document — no normalization or inference. - For multiline values (e.g., addresses), represent each new line using the escape sequence "\n" (a backslash followed by the letter n). - Do not insert HTML tags such as
in the output text. - "Line" is the 0-based index of the first line containing the extracted value; include it only if verifiable. ``` **Why Strictness Matters:** * **Prevents hallucination**: LLMs may generate plausible but incorrect data. * **Ensures consistency**: Clear rules reduce variation between runs. * **Handles missing data**: Defines what to do when fields aren't found. * **Maintains data integrity**: Verbatim extraction preserves original formatting. **Key Strictness Principles:** * Never generate data that isn't in the document. * Omit uncertain extractions rather than guessing. * Return empty structure if no fields are found. * Match field names exactly. * Preserve original text formatting. *** ## Step 8: Select Document Format Choose which document representation to send to the LLM. 1. In the Activity Editor, locate the **Prompt** dropdown. 2. You'll see options for how the document is provided to the LLM. Document Format Options **Available Formats:** * **PDF**: Original PDF file * Use for: Documents where layout is critical * Considerations: Larger file size, some LLMs have limited PDF support **Deprecated:** The PDF document format is deprecated and only available on pre-existing OpenAI connections. This format is no longer supported for any new connections from any provider. Use Annotated Text instead. * **Plain Text**: Unformatted text extraction * Use for: Simple text-only documents * Considerations: Loses all formatting and layout information * **Annotated Text** ⭐ (Recommended) * Use for: Most document types * Considerations: Preserves structure while being text-based * Benefits: Best balance of structure and performance * **Formatted Text**: Text with basic formatting preserved * Use for: Documents where some formatting matters * Considerations: Middle ground between Plain and Annotated 3. Select **Annotated Text** for best results Through testing, Annotated Text has been found to provide the most consistent and reliable results for extraction tasks. It preserves document structure while being efficiently processed by LLMs. *** ## Step 9: Test Your Extraction Run the activity on sample documents to verify results. ### Run the Activity 1. Close the Activity Editor. 2. Navigate to **All Documents** tab. 3. Select a test document. 4. Click **Test Activity** or **Run** button. Testing Activity 5. Wait for the LLM to process the document * Processing time: typically 5-30 seconds depending on document complexity. * You'll see a loading indicator while waiting for the API response. ### Review Results Once processing completes: 1. The interface switches to **Predictive view**. 2. Review the **Output** panel showing extracted fields. 3. Click on each field to see: * Extracted value * Confidence (if provided) * Highlighted region on the document image Reviewing Results **What to Check:** * ✅ All expected fields are populated * ✅ Values match the document exactly * ✅ No hallucinated or inferred data * ✅ Proper handling of multiline fields * ✅ Missing fields are omitted (not filled with incorrect data) ### Common Result Patterns **Successful Extraction:** ```json theme={null} { "Fields": [ { "FieldName": "Vendor.Name", "Text": "ABC Corporation Ltd", "Line": 3 }, { "FieldName": "Vendor.Address", "Text": "123 Business Street\nLondon SW1A 1AA", "Line": 5 }, { "FieldName": "Vendor.IBAN", "Text": "GB29 NWBK 6016 1331 9268 19", "Line": 15 } ] } ``` **Partial Extraction (some fields missing):** ```json theme={null} { "Fields": [ { "FieldName": "Vendor.Name", "Text": "ABC Corporation Ltd", "Line": 3 } ] } ``` **No Fields Found:** ```json theme={null} { "Fields": [] } ``` *** ## Step 10: Refine Your Prompt Iterate on your prompt based on test results. ### Common Issues and Solutions **Issue: LLM extracts wrong field** * **Solution**: Add more specific location hints. * **Example**: "Vendor-side only; exclude customer/buyer addresses" **Issue: Formatting is changed** * **Solution**: Emphasize verbatim extraction. * **Example**: "Extract the numeric format exactly as printed (e.g., '12-34-56')" **Issue: LLM invents data** * **Solution**: Strengthen strictness rules. * **Example**: "Never generate or infer values. Omit if not present." **Issue: Multiline fields are concatenated** * **Solution**: Specify escape sequences. * **Example**: "For multiline values, use `\n` for new lines" **Issue: Incorrect field names in output** * **Solution**: Verify field names match exactly. * **Example**: Use `Vendor.Account Number` not `AccountNumber` ### Iterative Improvement Process 1. **Test on multiple documents**: Don't optimize for a single example. 2. **Document patterns**: Note which rules work and which need refinement. 3. **Add specific examples**: Include format examples in parentheses. 4. **Refine strictness**: Adjust based on over/under-extraction patterns. 5. **Test edge cases**: Try documents with missing fields, unusual layouts. ### Example Refinements **Before:** ``` VENDOR NAME 1) Extract the vendor name from the document. ``` **After:** ``` VENDOR NAME 1) Recognize names like "ABC Corporation", "XYZ Ltd", "Acme Inc.". 2) Extract the complete company name including legal suffixes (Ltd, Inc, GmbH, etc.). 3) Vendor name typically appears near the top of the document. 4) Exclude customer/buyer names - focus on the entity issuing the invoice. ``` *** ## Understanding the Extraction Process ### How Prompt-Based Extraction Works 1. **Document Conversion**: Your document is converted to the selected format (Annotated Text recommended). 2. **Prompt Assembly**: Your role, output format, field rules, and strictness rules are combined. 3. **API Call**: The prompt and document are sent to the LLM via your connection. 4. **LLM Processing**: The LLM reads the document and extracts data according to your instructions. 5. **JSON Response**: The LLM returns structured data in the specified JSON format. 6. **Field Mapping**: Vantage maps the JSON response to your defined output fields. 7. **Verification**: Line numbers and confidence scores (if provided) help verify accuracy. ### Token Usage and Costs **Factors Affecting Cost:** * **Document length**: Longer documents use more tokens. * **Prompt complexity**: Detailed prompts increase token count. * **Format choice**: Annotated Text is typically more efficient than PDF. * **Number of fields**: More fields = longer prompts. **Optimization Tips:** * Use concise but clear language in prompts. * Don't duplicate instructions. * Remove unnecessary examples. * Consider field grouping for related data. *** ## Best Practices ### Prompt Writing **Do:** * ✅ Use clear, imperative statements ("Extract", "Recognize", "Omit"). * ✅ Provide multiple label variations for each field. * ✅ Include format examples in parentheses. * ✅ Specify what NOT to extract (exclusions). * ✅ Number your rules for easy reference. * ✅ Use consistent terminology throughout. **Don't:** * ❌ Use vague instructions ("get the name"). * ❌ Assume the LLM knows domain-specific conventions. * ❌ Write overly long, complex sentences. * ❌ Contradict yourself in different sections. * ❌ Skip strictness rules. ### Field Definitions **Effective Field Instructions:** * Start with recognition patterns (alternative labels). * Specify exact format to preserve. * Provide location hints (typical placement). * Define data ownership (vendor vs. customer). * Include handling for multiline values. * Reference related fields to avoid confusion. **Example:** ``` IBAN 1) Recognize "IBAN", "International Bank Account Number". 2) Extract the full IBAN exactly as printed (include spaces). 3) Vendor-side only, typically under "Bankverbindung", "Payment Details". 4) Do NOT confuse with Account Number — IBAN is longer and alphanumeric. ``` ### Testing Strategy 1. **Start with simple documents**: Test basic extraction first. 2. **Expand to variations**: Try different layouts and formats. 3. **Test edge cases**: Missing fields, unusual positions, multiple matches. 4. **Document failures**: Keep examples of where extraction fails. 5. **Iterate systematically**: Change one thing at a time. ### Performance Optimization **For Speed:** * Keep prompts concise. * Use Annotated Text format. * Minimize number of fields per activity. * Consider splitting complex documents. **For Accuracy:** * Provide comprehensive field rules. * Include format examples. * Add strong strictness rules. * Test with diverse document samples. **For Cost:** * Optimize prompt length. * Use efficient document formats. * Cache results when appropriate. * Monitor token usage via LLM provider dashboard. *** ## Troubleshooting ### Extraction Issues **Problem:** Fields are empty despite data being present. **Solutions:** * Check field name spelling matches exactly. * Verify the data is in the selected document format. * Add more label variations to recognition patterns. * Reduce strictness temporarily to see if LLM finds it. * Check if document quality affects OCR/text extraction. **Problem:** LLM extracts customer data instead of vendor data. **Solutions:** * Strengthen vendor-side specifications. * Add explicit exclusions for customer/buyer data. * Provide location hints (e.g., "top of document", "issuer section"). * Include examples of correct vs. incorrect extraction. **Problem:** Multiline values are concatenated or malformed. **Solutions:** * Explicitly specify escape sequence format (`\n`). * Provide examples of correct multiline output. * Verify document format preserves line breaks. * Add instruction: "Preserve original line breaks using `\n`". **Problem:** LLM reformats or normalizes data. **Solutions:** * Emphasize "verbatim" and "exactly as printed". * Add strictness rule: "No normalization or inference". * Provide specific examples showing preservation of formatting. * Include negative examples: "Not '12-34-56', keep as '12 34 56'". ### Performance Issues **Problem:** Extraction is too slow. **Solutions:** * Switch to Annotated Text format if using PDF. * Simplify prompt without losing critical instructions. * Reduce document resolution if images are very large. * Check LLM provider status and rate limits. * Consider using a faster model for simple documents. **Problem:** Inconsistent results between runs. **Solutions:** * Strengthen strictness rules. * Make instructions more specific and unambiguous. * Add more format examples. * Reduce prompt complexity that might lead to interpretation. * Test with higher temperature settings (if available in connection). **Problem:** High API costs. **Solutions:** * Optimize prompt length. * Use Annotated Text instead of PDF. * Process documents in batches during off-peak. * Consider using smaller/cheaper models for simple documents. * Monitor and set budget alerts in LLM provider dashboard. *** ## Advanced Techniques ### Conditional Extraction You can instruct the LLM to extract certain fields only if conditions are met: ``` ACCOUNT NUMBER (CONDITIONAL) 1) Only extract if the document contains bank payment details. 2) If "Payment Method: Check" or similar appears, omit this field. 3) Recognize "Account Number", "Account No", "Acct #". ``` ### Multi-Language Support Prompt-based extraction works well with multilingual documents: ``` VENDOR NAME (MULTI-LANGUAGE) 1) Recognize in English: "Vendor Name", "Supplier", "Seller" 2) Recognize in German: "Verkäufer", "Lieferant", "Anbieter" 3) Recognize in French: "Fournisseur", "Vendeur" 4) Extract the complete company name regardless of language. ``` ### Validation Rules Add validation logic to your prompts: ``` IBAN (WITH VALIDATION) 1) Extract the full IBAN exactly as printed. 2) Verify it starts with a 2-letter country code. 3) If format doesn't match IBAN pattern, omit the field. 4) Do not invent check digits or country codes. ``` ### Field Relationships Specify how fields relate to each other: ``` ACCOUNT NUMBER vs IBAN - Account Number: Usually shorter, numeric, domestic format. - IBAN: Alphanumeric, starts with country code (e.g., "GB29 NWBK..."). - If both are present, extract both to separate fields. - If only one is present, extract to the appropriate field. - Do not duplicate the same value in both fields. ``` *** ## Limitations and Considerations ### Current Capabilities **Supported:** * ✅ Header-level field extraction * ✅ Single and multiline values * ✅ Multiple fields per document * ✅ Conditional extraction logic * ✅ Multi-language documents * ✅ Variable document layouts **Limited or Not Supported:** * ⚠️ Table extraction (varies by implementation) * ⚠️ Nested complex structures * ⚠️ Very large documents (token limits) * ⚠️ Real-time processing (API latency) * ⚠️ Guaranteed deterministic results ### When to use prompt-based extraction For guidance on when prompt-based extraction is a good fit and when to prefer traditional extraction, see [When to use LLMs](/vantage/documentation/llms/llms#when-to-use-llms). *** ## Integration with Document Skills ### Using Extracted Data Once extraction is complete, the field data is available throughout your Document Skill: 1. **Validation Activities**: Apply business rules to extracted values. 2. **Script Activities**: Process or transform extracted data. 3. **Export Activities**: Send data to external systems. 4. **Review Interface**: Manual verification of extracted fields. ### Combining with Other Activities Prompt-based extraction can work alongside other activities: ``` Workflow Example: 1. Classification (identify document type) 2. OCR (extract text) 3. Prompt-based extraction (extract structured data) 4. Validation rules (verify data quality) 5. Script (format for export) 6. Output (deliver results) ``` ### Field Mapping The extracted JSON fields automatically map to your defined output fields: * `"FieldName": "Vendor.Name"` → Maps to Output field `Vendor.Name`. * Field hierarchy is preserved in the output structure. * Line numbers help with verification and troubleshooting. *** ## Summary You've successfully: * ✅ Created a prompt-based extraction activity. * ✅ Configured an LLM connection. * ✅ Written a comprehensive extraction prompt with role, format, and rules. * ✅ Selected the optimal document format (Annotated Text). * ✅ Applied strictness rules for data quality. * ✅ Tested extraction and reviewed results. * ✅ Learned best practices for prompt engineering. **Key Takeaways:** * Prompt-based extraction uses natural language instructions. * Annotated Text format provides best results. * Clear, specific prompts yield consistent extraction. * Strictness rules prevent hallucination and maintain data quality. * Iterative testing and refinement improve accuracy. Your prompt-based extraction activity is now ready for document processing! *** ## Next Steps 1. **Test with diverse documents**: Validate across different layouts and variations. 2. **Refine your prompts**: Continuously improve based on results. 3. **Monitor costs**: Track token usage in your LLM provider dashboard. 4. **Optimize performance**: Fine-tune prompts for speed and accuracy. 5. **Explore table extraction**: Experiment with extracting line items (if supported). 6. **Integrate with workflows**: Combine with other activities for complete processing. *** ## Additional Resources * **ABBYY Vantage Advanced Designer Documentation:** [https://docs.abbyy.com](https://docs.abbyy.com) * **LLM Connection Setup Guide:** [Configure LLM connections](/vantage/documentation/skills/connections). * **Prompt Engineering Best Practices:** Consult your LLM provider's documentation. * **Support:** Contact ABBYY support for technical assistance. *** ## Frequently Asked Questions **Q: What's the difference between prompt-based and traditional extraction?** A: Prompt-based uses LLM natural language instructions without training data. Traditional methods require training examples but are faster and more cost-effective at scale. **Q: Can I extract tables with prompt-based activities?** A: Header-level extraction is well-supported. Table extraction capabilities may vary and require specific prompt structures. **Q: Why use Annotated Text over PDF?** A: Annotated Text provides the best balance of structure preservation and processing efficiency. It's been proven most reliable through testing. **Q: How do I reduce API costs?** A: Optimize prompt length, use Annotated Text format, process efficiently, and monitor token usage via your LLM provider's dashboard. **Q: What if my LLM connection fails?** A: Check your connection status in Configuration → Connections. Test the connection, verify credentials, and ensure your API quota isn't exceeded. **Q: Can I use multiple LLM connections in one skill?** A: Yes, different activities can use different connections. This allows you to use different models for different extraction tasks. **Q: How do I handle documents in multiple languages?** A: Add multi-language label variations to your field rules. LLMs generally handle multilingual content well. **Q: What's the maximum document size?** A: This depends on your LLM provider's token limits. Very long documents may need to be split or processed in sections. # Choose between Base, Derived, and New skills Source: https://docs.abbyy.com/vantage/documentation/skills/skill-types Compare Base, Derived, and New skills in ABBYY Vantage and choose the right approach for your document type to save training time and avoid rework. ## Overview Before building any document processing workflow in ABBYY Vantage, you need to decide what kind of skill to use. Making the right choice upfront saves significant time and avoids rework. **What you'll learn:** * What Base Skills, Derived Skills, and New Skills are * The key differences between each approach * How to create a Derived Skill from a Base Skill * How to create a New Skill from scratch * Which approach to choose for your situation **Time to read:** \~5 minutes *** ## Understanding the Three Skill Types | | Base Skill | Derived Skill | New Skill | | ------------------------------- | ---------------------------------- | ----------------------------- | --------------------------- | | **Source** | Provided by ABBYY | Copied from a Base Skill | Built from scratch | | **Editable** | No | Yes | Yes | | **Pre-trained** | Yes | Yes (inherited) | No — you train it | | **Updates with ABBYY releases** | Yes (automatically) | Optional (manual sync) | No | | **Best for** | Using as-is or as a starting point | Customizing an existing skill | Fully custom document types | *** ## Base Skills ### What They Are Base Skills are pre-trained, read-only skills provided by ABBYY. They are designed to handle common document types — invoices, purchase orders, identity documents, and more — out of the box. You cannot edit a Base Skill directly, but you can use it as-is or use it as the starting point for a Derived Skill. ### Where to Find Them Base Skills are listed in the **Skill Catalog**. To open it: 1. Sign in to your ABBYY Vantage tenant. 2. In the left sidebar, click **Skill Catalog**. 3. Browse or search for skills by document type. Skills with a lock icon or a "Read-only" label are Base Skills. Skill Catalog showing built-in base skills ### What You Can Do with a Base Skill * **Use it directly** in a Process Skill workflow — no configuration needed. * **Create a Derived Skill** from it if you need to customize fields, validation, or recognition settings. You cannot rename, retrain, or modify the internal configuration of a Base Skill. *** ## Derived Skills ### What They Are A Derived Skill is a full, editable copy of a Base Skill. When you derive a skill, you inherit all of its pre-trained extraction logic, field definitions, and recognition settings — and then you can customize any of them. ### When to Use a Derived Skill Use a Derived Skill when: * A Base Skill exists for your document type, but it doesn't quite match your needs. * You need to add, remove, or rename fields. * You want to adjust validation rules or confidence thresholds. * You want the benefit of ABBYY's pre-training but with your own configuration on top. ### How to Create a Derived Skill 1. In the left sidebar, click **Skill Catalog**. 2. Find the Base Skill you want to derive from. 3. Click the skill to open its detail page. 4. Click **Create and Edit Derived Skill**. Create and Edit Derived Skill button 5. Click **Create and Edit Derived Skill**. Second Create and Edit Derived Skill button The skill opens in the editor. 6. Upload or drag and drop documents to get started. 7. Now you can: * Add or remove extraction fields * Modify field labels and validation rules * Adjust recognition settings * Upload additional training documents if needed 8. When finished editing the skill, click **Train.** Skill Designer Train button 8. When Training is finished, click **Publish** to make the skill available for use in Process Skills. Skill Designer Publish button ### Updating a Derived Skill When the Base Skill Updates When ABBYY releases an update to a Base Skill, your Derived Skill does not automatically inherit the changes. To apply updates: 1. In the Skill Catalog, look for an **update icon** next to the version number of the Derived Skill. 2. Click the update icon and select **Update**, or open the Derived Skill, click the **settings** icon, select the latest version of the base skill, and click **Save**. 3. The Derived Skill is automatically retrained. Test the skill and make any needed adjustments. 4. Click **Publish** to make the updated version available. If you are not satisfied with the extraction results after updating, do not publish the skill. Use the previous version instead by selecting the skill in the Skill Catalog and clicking **Discard changes**. *** ## New Skills ### What They Are A New Skill is built entirely from scratch using the **Skill Designer**. There is no pre-trained base — you define the fields, upload training documents, label your data, and train the model yourself. ### When to Use a New Skill Use a New Skill when: * No Base Skill exists for your document type. * Your document has a highly custom or proprietary layout. * You need complete control over the extraction model. ### Types of New Skills | Skill Type | Use For | | ------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **Document Skill** | Extracting structured data fields from documents | | **Classification Skill** | Categorizing documents by type | | **OCR Skill** | Extracting text from document images and exporting results to formats like PDF, DOCX, and others — with options for recognition languages, handwriting, image preprocessing, and barcode detection | | **Splitter Skill** | Splitting a flow of pages from multi-document files into separate documents for further processing | | **Process Skill** | Orchestrating end-to-end document workflows that combine classification, extraction, review, and export activities | ### How to Create a New Document Skill 1. In the **Skill Catalog**, click the **Create** button on the toolbar. 2. Select **Document Skill** from the menu that appears. Skill Designer Create dialog showing skill type options 3. Enter a name and optional description for the skill. 4. Click **Create** to open the Skill Designer editor. 5. In the **Documents** tab, upload sample documents for training. Start by labeling fields on one document — accuracy improves as you add more varied examples. 6. In the **Editor** tab, use the labeling tool to mark and tag the fields you want to extract from each document. 7. Click **Train** in the Actions pane to build the extraction model from your labeled data. 8. Review extraction accuracy, correct errors, and repeat steps 5–7 until results are satisfactory. 9. Click **Publish** when results meet your requirements. The more training documents you provide — and the more varied they are — the more accurate your extraction model will be. *** ## Decision Guide Use this guide to choose the right approach: 1. **Does ABBYY have a pre-built skill for your document type?** * Check the Skill Catalog. * If yes → start with a **Base Skill**. Use it directly in a Process Skill. 2. **Does the Base Skill work well enough as-is?** * If yes → use the **Base Skill** directly. No customization needed. * If no (fields are missing, validation is wrong, layout doesn't match) → create a **Derived Skill**. 3. **Is there no Base Skill for your document type?** * If correct → create a **New Skill** in the Skill Designer. In short: | Situation | Recommended Approach | | -------------------------------------- | -------------------- | | ABBYY has a skill and it works | Base Skill | | ABBYY has a skill, but it needs tweaks | Derived Skill | | No suitable Base Skill exists | New Skill | *** ## Summary * **Base Skills** are pre-trained, ready to use, and cannot be edited. * **Derived Skills** are editable copies of Base Skills that inherit pre-trained logic. * **New Skills** are built from scratch and require your own training data. * Start with a Base Skill whenever possible — derive or build new only when you need to. *** ## Next steps * [Skill Catalog](/vantage/documentation/skill-catalog/skill-catalog) — Browse available Base Skills * [Skill Designer](/vantage/documentation/skill-designer/skill-designer) — Build and manage skills * [Process documents with SFTP](/vantage/documentation/skills/process-skill) — Set up a Process Skill workflow using your chosen skill # Process via API Source: https://docs.abbyy.com/vantage/getting-started/api Step-by-step quickstart for processing a document with the ABBYY Vantage REST API: authenticate, pick a skill, upload a file, and download extracted JSON data. This guide walks you through the Vantage API workflow: authenticate, find a skill, upload a document, and download structured results. **What you'll accomplish:** Submit a document to the Vantage REST API and receive structured extracted data as JSON. **Time to complete:** \~10 minutes ## Prerequisites * A Vantage tenant with API client credentials (`client_id` and `client_secret`) * A sample document to process (PDF, TIFF, JPEG, or PNG) Don't have credentials yet? Your tenant admin can create API client credentials in **Administration > API clients**. ## Step 1: Authenticate Get an access token using your client credentials. ```bash theme={null} curl -X POST "https://vantage-us.abbyy.com/auth2/connect/token" \ -d "grant_type=client_credentials" \ -d "scope=openid permissions global.wildcard" \ -d "client_id=YOUR_CLIENT_ID" \ -d "client_secret=YOUR_CLIENT_SECRET" ``` ```python theme={null} import requests response = requests.post( "https://vantage-us.abbyy.com/auth2/connect/token", data={ "grant_type": "client_credentials", "scope": "openid permissions global.wildcard", "client_id": "YOUR_CLIENT_ID", "client_secret": "YOUR_CLIENT_SECRET", }, ) token = response.json()["access_token"] ``` The response includes an `access_token` (valid for 24 hours). Use it in the `Authorization` header for all subsequent requests. Use the **Tenant Region** selector at the top of this page to update all URLs to match your region. ## Step 2: Find a skill List the skills available in your tenant to find the right one for your document. ```bash theme={null} curl -X GET "https://vantage-us.abbyy.com/api/publicapi/v1/skills" \ -H "Authorization: Bearer $TOKEN" ``` ```python theme={null} skills = requests.get( "https://vantage-us.abbyy.com/api/publicapi/v1/skills", headers={"Authorization": f"Bearer {token}"}, ).json() for skill in skills: print(f"{skill['id']}: {skill['name']}") ``` Note the `id` of the skill you want to use (e.g., an Invoice skill). ## Step 3: Process a document Upload a document and process it with a skill in a single API call. ```bash theme={null} curl -X POST "https://vantage-us.abbyy.com/api/publicapi/v1/transactions/launch?skillId=SKILL_ID" \ -H "Authorization: Bearer $TOKEN" \ -H "Content-Type: multipart/form-data" \ -F 'Model={"files": [{}]}' \ -F "Files=@invoice.pdf;type=application/pdf" ``` ```python theme={null} with open("invoice.pdf", "rb") as f: response = requests.post( "https://vantage-us.abbyy.com/api/publicapi/v1/transactions/launch", params={"skillId": "SKILL_ID"}, headers={"Authorization": f"Bearer {token}"}, files={ "Model": (None, '{"files": [{}]}', "application/json"), "Files": ("invoice.pdf", f, "application/pdf"), }, ) transaction_id = response.json()["transactionId"] ``` ## Step 4: Check status Poll the transaction until processing is complete. ```bash theme={null} curl -X GET "https://vantage-us.abbyy.com/api/publicapi/v1/transactions/$TRANSACTION_ID" \ -H "Authorization: Bearer $TOKEN" ``` ```python theme={null} import time while True: status = requests.get( f"https://vantage-us.abbyy.com/api/publicapi/v1/transactions/{transaction_id}", headers={"Authorization": f"Bearer {token}"}, ).json() print(f"Status: {status['status']}") if status["status"] == "Processed": break if status["status"] in ("Failed", "Canceled"): raise Exception("Processing failed") time.sleep(5) ``` Poll every 5–10 seconds. Typical processing takes 10–30 seconds depending on document complexity. ## Step 5: Download results Get the extracted data as JSON. The result file identifiers come from the transaction status response you polled in Step 4: each entry in `documents[].resultFiles[]` has a `fileId` and a `type`. By default, a Document skill produces two result files: `type: "Json"` (the full results, including field metadata) and `type: "FieldsJson"` (the extracted values, which is the easiest place to start); skill export settings can add other formats. ```bash theme={null} # Get the transaction status; find documents[].resultFiles[] in the response curl -X GET "https://vantage-us.abbyy.com/api/publicapi/v1/transactions/$TRANSACTION_ID" \ -H "Authorization: Bearer $TOKEN" # Download a result file using its fileId curl -X GET "https://vantage-us.abbyy.com/api/publicapi/v1/transactions/$TRANSACTION_ID/files/$FILE_ID/download" \ -H "Authorization: Bearer $TOKEN" \ -o result.json ``` ```python theme={null} # The status response from Step 4 lists the result files result_files = status["documents"][0]["resultFiles"] # Pick the values-only file fields_file = next(f for f in result_files if f["type"] == "FieldsJson") result = requests.get( f"https://vantage-us.abbyy.com/api/publicapi/v1/transactions/{transaction_id}/files/{fields_file['fileId']}/download", headers={"Authorization": f"Bearer {token}"}, ).json() print(result) ``` The values-only result maps each field defined by the skill to its extracted value. If any rule checks failed during processing, the file also contains a top-level `RuleErrors` array alongside `Version` and `Fields`. ```json theme={null} { "Version": "3.0", "Fields": { "Invoice Number": "INV-2024-0042", "Invoice Date": "01/15/2024", "Currency": "USD", "Total": "1,250.00", "Business Unit": { "Name": "Acme Corp", "City": "Springfield", "CountryCode": "US" }, "Line Items": [ { "Description": "Widget, industrial grade", "Quantity": "2", "Unit Price": "625.00", "Total Price": "1,250.00" } ] } } ``` The exact field names and nesting depend on the skill. For confidence scores, character coordinates, and other field metadata, download the `type: "Json"` result file instead; its structure is documented in the [JSON schema reference](/vantage/developer/output/json/json-schema). For a full walkthrough of the output structure, see [Understanding your results](/vantage/getting-started/results). ## Full example ```python theme={null} import requests import time # Configuration BASE_URL = "https://vantage-us.abbyy.com" CLIENT_ID = "YOUR_CLIENT_ID" CLIENT_SECRET = "YOUR_CLIENT_SECRET" SKILL_ID = "YOUR_SKILL_ID" FILE_PATH = "invoice.pdf" # Step 1: Authenticate auth = requests.post( f"{BASE_URL}/auth2/connect/token", data={ "grant_type": "client_credentials", "scope": "openid permissions global.wildcard", "client_id": CLIENT_ID, "client_secret": CLIENT_SECRET, }, ) token = auth.json()["access_token"] headers = {"Authorization": f"Bearer {token}"} # Step 2: Find skills skills = requests.get(f"{BASE_URL}/api/publicapi/v1/skills", headers=headers).json() print(f"Available skills: {[s['name'] for s in skills]}") # Step 3: Process document with open(FILE_PATH, "rb") as f: launch = requests.post( f"{BASE_URL}/api/publicapi/v1/transactions/launch", params={"skillId": SKILL_ID}, headers=headers, files={ "Model": (None, '{"files": [{}]}', "application/json"), "Files": (FILE_PATH, f, "application/pdf"), }, ) transaction_id = launch.json()["transactionId"] print(f"Transaction: {transaction_id}") # Step 4: Poll for completion while True: tx = requests.get( f"{BASE_URL}/api/publicapi/v1/transactions/{transaction_id}", headers=headers, ).json() print(f"Status: {tx['status']}") if tx["status"] == "Processed": break if tx["status"] in ("Failed", "Canceled"): raise Exception(f"Processing failed") time.sleep(5) # Step 5: Download results (result file ids come from the status response) for doc in tx["documents"]: for rf in doc["resultFiles"]: if rf["type"] != "FieldsJson": continue result = requests.get( f"{BASE_URL}/api/publicapi/v1/transactions/{transaction_id}/files/{rf['fileId']}/download", headers=headers, ).json() print(result) ``` ## Next steps Learn how to read extracted fields, confidence scores, and table data. Full API documentation with interactive playground. Authorization Code Flow, ROPC, and other auth methods. Process multiple documents with separate API calls for more control. # Change the Vantage interface language Source: https://docs.abbyy.com/vantage/getting-started/change-language Change the ABBYY Vantage web interface language from the login screen or in User Preferences. Vantage supports 12 interface languages, including Dutch (Nederlands). When you first open Vantage, the interface uses your browser's language if Vantage supports it. If not, the interface opens in English. You can change the interface language in two places: on the login screen, or in **User Preferences** after you sign in. Either way, the change applies immediately and is saved for future sessions. ## Change the language on the login screen On the login screen, select a language from the drop-down list in the upper-right corner. The interface switches right away. ## Change the language in User Preferences Click your email address in the lower-left corner, and then select **User Preferences**. Under **Interface Language**, select the language you want. Click **Save**. The interface switches immediately, and Vantage remembers your choice the next time you sign in. User Preferences dialog showing the Interface Language list of 12 languages ## Supported interface languages Vantage supports the following interface languages. The list shows each language under its native name. | Language | Shown in the list as | | :---------------------- | :---------------------- | | German | Deutsch | | English (Europe) | English (Europe) | | English (United States) | English (United States) | | Spanish | Español | | French | Français | | Italian | Italiano | | Dutch | Nederlands | | Portuguese (Brazil) | Português (Brasil) | | Korean | 한국어 | | Japanese | 日本語 | | Chinese (Simplified) | 简体中文 | | Chinese (Traditional) | 繁體中文 | The two English options match in wording but differ in date and number formats. | English option | Date format | Number separators | | :---------------------- | :---------- | :---------------- | | English (United States) | MM/DD/YYYY | 1,000,000.00 | | English (Europe) | DD/MM/YYYY | 1 000 000,00 | # What to learn next Source: https://docs.abbyy.com/vantage/getting-started/next-steps Suggested next steps after the Vantage quickstart: developer integration paths, custom skill building, MCP server setup, and Manual Review for production. You've processed your first document and seen the results. Where you go next depends on what you want to build. ## For developers: integrate Vantage into your application 1. **Understand the output format** — learn how to parse extracted fields, confidence scores, and table data in [Understanding your results](/vantage/getting-started/results) and the full [JSON schema reference](/vantage/developer/output/json/json-output) 2. **Process documents in batch** — use [separate API calls](/vantage/developer/processing-documents/processing-documents-with-separate-api-calls) for more control over multi-document workflows 3. **Implement proper authentication** — move beyond client credentials to [Authorization Code Flow or ROPC](/vantage/developer/authentication/authentication) for production deployments 4. **Add human review to your pipeline** — integrate [Manual Review](/vantage/documentation/skill-designer/process/manual-review) so operators can verify low-confidence extractions before data reaches downstream systems 5. **Set up AI-assisted development** — add the [Vantage MCP server](/vantage/developer/mcp-server) to Claude Code or [VS Code Copilot](/vantage/developer/mcp-server-copilot) for instant access to documentation while coding ## For business users: build and customize skills 1. **Browse the Skill Catalog** — explore [100+ pre-trained skills](/vantage/documentation/skill-catalog/skill-catalog) for common document types 2. **Choose the right skill approach** — learn the difference between [Base, Derived, and New skills](/vantage/documentation/skills/skill-types) and when to use each 3. **Create a custom skill** — [build your own skill](/vantage/documentation/skill-catalog/create-skill) for document types not covered by pre-trained models 4. **Automate with Process Skills** — set up [automated document processing via SFTP](/vantage/documentation/skills/process-skill) so documents are extracted without manual uploads ## For automation builders: connect Vantage to your systems 1. **Set up automated ingestion** — configure [SFTP-based import](/vantage/documentation/skills/process-skill) so documents flow into Vantage automatically from shared folders 2. **Configure LLM connections** — connect Vantage to [OpenAI or Microsoft Foundry](/vantage/documentation/skills/connections) for AI-powered extraction 3. **Use prompt-based extraction** — write [natural language prompts](/vantage/documentation/skills/prompt-extraction) to extract data from complex or unstructured documents in Advanced Designer 4. **Explore the full API** — the [API reference](/vantage/developer/api-introduction) covers every endpoint for building custom integrations ## Full documentation map Browse pre-trained skills, create derived skills, and manage your skill library. Build and train custom document skills with the low-code designer. Fine-tune extraction with rules, NLP, and prompt-based activities. Full REST API documentation for authentication, processing, and reporting. # Getting Started Source: https://docs.abbyy.com/vantage/getting-started/overview Get started with ABBYY Vantage by processing your first document in about 10 minutes via the REST API or the web UI, and see how AI skills extract data. This section walks you through processing your first document end-to-end with ABBYY Vantage. You'll upload a real document, apply an AI-powered skill, and get structured data back — in about 10 minutes. Choose your path depending on how you want to work with Vantage: Authenticate, upload a document, and extract data using the REST API. Best for developers integrating Vantage into applications. \~10 minutes. Upload a document and review extracted data in the Vantage web interface. Best for business users and evaluation. \~10 minutes. ## How Vantage processes a document Whether you use the API or the web UI, every document goes through the same pipeline: Connect to your Vantage tenant — via API credentials or the web login. A **skill** is an AI model trained to extract data from a specific document type. Vantage has [100+ pre-trained skills](/vantage/documentation/skill-catalog/skill-catalog) — or you can build your own. Upload a PDF, image, or Office document. Vantage creates a **transaction** — a processing job that tracks the document through extraction. The skill reads the document and extracts field values (e.g., invoice number, vendor name, total amount). Each field gets a **confidence score** from 0 to 100 indicating how certain Vantage is about the extraction. Download the extracted data as JSON or XML, or verify it in **Manual Review** — a built-in interface where operators can check and correct fields before the data moves downstream. ## What you'll need * An ABBYY Vantage account — [contact ABBYY](https://www.abbyy.com/vantage-contact-us/) to request a tenant * A sample document (invoice, receipt, purchase order, or any supported type) * About 10 minutes ## Key concepts | Concept | What it means | | -------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **Skill** | An AI model trained to extract data from a specific document type. There are [100+ pre-trained skills](/vantage/documentation/skill-catalog/skill-catalog), or you can [create your own](/vantage/documentation/skill-catalog/create-skill). | | **Document Skill** | The most common skill type — extracts named fields (like "InvoiceNumber" or "VendorName") from a single document type. | | **Transaction** | A processing job. Each time you submit a document to a skill, Vantage creates a transaction to track it. | | **Confidence Score** | A number from 0 to 100 indicating how certain Vantage is about an extracted value. Fields below configured thresholds are flagged for review. | | **Manual Review** | A built-in interface where human operators verify and correct extracted data before it moves to downstream systems. | After processing your first document, see [Understanding your results](/vantage/getting-started/results) to learn how to read the extracted data, and [What to learn next](/vantage/getting-started/next-steps) for guidance on where to go based on your goals. # Understanding your results Source: https://docs.abbyy.com/vantage/getting-started/results Read and understand ABBYY Vantage extraction results: JSON structure, ExtractedData, confidence scores, RawValue, verification flags, and table fields. After processing a document — whether through the [API](/vantage/getting-started/api) or the [web UI](/vantage/getting-started/ui) — Vantage returns structured data containing extracted field values, confidence scores, and verification flags. This page explains how to read that output. ## Result structure at a glance Every result follows the same hierarchy: ``` ExtractedDataTransaction ├── SkillName, SkillId ├── Documents[] │ ├── ExtractedData │ │ ├── DocumentDefinition ← field schema (what can be extracted) │ │ └── RootObject ← field values (what was extracted) │ │ └── Fields[] │ │ ├── Name │ │ └── List[] │ │ ├── Value │ │ ├── Annotation (Confidence, RawValue, ...) │ │ ├── NeedVerification │ │ └── isVerified │ └── ClassificationResult ← document type (if classification was applied) └── SourceFiles[] ``` For most use cases, you only need to navigate to `Documents[0].ExtractedData.RootObject.Fields` to access the extracted values. ## Reading extracted fields Here is a simplified example from an invoice processed with the ABBYY Invoice skill: ```json theme={null} { "SkillName": "ABBYY Invoice", "SkillId": "a1b2c3d4-...", "Documents": [ { "ExtractedData": { "RootObject": { "Fields": [ { "Name": "InvoiceNumber", "List": [ { "Value": "INV-2024-0042", "Annotation": { "Confidence": 97, "RawValue": "INV-2024-0042", "Source": "Text" }, "NeedVerification": false, "isVerified": false } ] }, { "Name": "InvoiceDate", "List": [ { "Value": "2024-03-15", "Annotation": { "Confidence": 94, "RawValue": "March 15, 2024", "Source": "Text" }, "NeedVerification": false, "isVerified": false } ] }, { "Name": "TotalAmount", "List": [ { "Value": "1,250.00", "Annotation": { "Confidence": 62, "RawValue": "1.250,00", "Source": "Image" }, "NeedVerification": true, "isVerified": false } ] } ] } } } ] } ``` Each field contains: | Property | What it means | | ----------------------- | --------------------------------------------------------------------------------------------------- | | `Name` | The field name defined by the skill (e.g., "InvoiceNumber", "VendorName") | | `Value` | The extracted value after normalization — dates become ISO format, numbers get standardized | | `Annotation.Confidence` | An integer from 0 to 100 indicating how certain Vantage is about the extraction | | `Annotation.RawValue` | The original text as recognized by OCR, before any normalization | | `Annotation.Source` | Whether the value came from the document's `Text` layer or was read from the `Image` | | `NeedVerification` | `true` if the field was flagged for human review (e.g., low confidence or failed a validation rule) | | `isVerified` | `true` if a human operator has already confirmed the value in Manual Review | Notice how `TotalAmount` above has `Confidence: 62` and `NeedVerification: true`. The raw value `1.250,00` (European format) was normalized to `1,250.00`, but the low confidence suggests Vantage wasn't fully certain about the OCR result. This is exactly the kind of field a human reviewer would check. ## Table fields (line items) Skills that extract tables — like invoice line items — represent them as fields containing repeating groups. Each row appears as an `ExtractedObject` within the field's `List` array, with its own sub-fields: ```json theme={null} { "Name": "LineItems", "List": [ { "Fields": [ { "Name": "Description", "List": [{ "Value": "Consulting services", ... }] }, { "Name": "Quantity", "List": [{ "Value": "10", ... }] }, { "Name": "UnitPrice", "List": [{ "Value": "100.00", ... }] }, { "Name": "Amount", "List": [{ "Value": "1,000.00", ... }] } ] }, { "Fields": [ { "Name": "Description", "List": [{ "Value": "Travel expenses", ... }] }, { "Name": "Quantity", "List": [{ "Value": "1", ... }] }, { "Name": "UnitPrice", "List": [{ "Value": "250.00", ... }] }, { "Name": "Amount", "List": [{ "Value": "250.00", ... }] } ] } ] } ``` Each row has the same field structure, making it straightforward to iterate in code. ## Confidence scores in practice Confidence scores reflect how certain Vantage is about an extracted value. Several factors affect confidence: * **Document quality** — blurry scans, low-resolution images, or handwritten text produce lower scores * **Layout complexity** — unusual table layouts or overlapping fields can reduce accuracy * **Training data match** — values that closely match patterns the skill was trained on score higher **How to use confidence programmatically:** * **High confidence (90–100)** — accept the value automatically * **Medium confidence (70–89)** — accept with caution, or route to review for critical fields * **Low confidence (below 70)** — route to [Manual Review](/vantage/documentation/skill-designer/process/manual-review) for human verification Fields with `NeedVerification: true` have already been flagged by Vantage based on confidence thresholds and validation rules configured in the skill. ## Common field names by skill Each skill defines its own set of field names. Here are the most common fields for frequently used skills: | Skill | Key fields | | ------------------ | ----------------------------------------------------------------------------------------- | | **Invoice** | `InvoiceNumber`, `InvoiceDate`, `VendorName`, `TotalAmount`, `TaxAmount`, `LineItems` | | **Receipt** | `ReceiptNumber`, `Date`, `VendorName`, `Total`, `Tax`, `PaymentMethod`, `LineItems` | | **Purchase Order** | `PONumber`, `OrderDate`, `BuyerName`, `SupplierName`, `TotalAmount`, `LineItems` | | **ID Document** | `FirstName`, `LastName`, `DateOfBirth`, `DocumentNumber`, `ExpirationDate`, `Nationality` | These are the most common fields. Each skill may include additional fields. Browse the [Skill Catalog](/vantage/documentation/skill-catalog/skill-catalog) to see the full field list for any skill. ## Next steps Complete reference for all objects and properties in the JSON output. Alternative output format with the same extracted data in XML structure. Configure human-in-the-loop verification for extracted fields. Choose your path through the Vantage documentation based on your goals. # Process via UI Source: https://docs.abbyy.com/vantage/getting-started/ui Quickstart for processing a document in the ABBYY Vantage web UI: upload a file, let Vantage detect the right skill, review extracted data, and export results. This guide walks you through processing your first document in the Vantage web interface: upload a document, let Vantage detect the right skill, review the extracted data, and export results. **What you'll accomplish:** Upload a document in the Vantage web UI, review extracted fields, and export results. **Time to complete:** \~10 minutes ## Prerequisites * A Vantage account with access to the web interface * A sample document to process (invoice, receipt, purchase order, or any supported type) Don't have access yet? [Contact ABBYY](https://www.abbyy.com/vantage-contact-us/) to request a tenant, or ask your admin to create a user account. ## Step 1: Open the Documents page Sign in to Vantage and navigate to the **Documents** page. This is your main workspace for uploading and processing documents. ## Step 2: Upload a document Upload your document using either method: * Click **Upload documents** and select a file * Drag and drop a file onto the browser window Each file should contain only one document. If you have a multi-page document, combine all pages into a single file (e.g., a multi-page PDF). Password-protected PDFs are not supported. ## Step 3: Automatic skill detection Once uploaded, Vantage automatically: 1. Detects the document type (invoice, receipt, purchase order, etc.) 2. Selects the most suitable skill from the Skill Catalog 3. Applies the skill and begins extraction You'll see the applied skill name appear next to your document in the list, along with the number of fields detected. If Vantage doesn't recognize your document type or selects the wrong skill, you can manually select a different skill. Click the button to the right of the document, select **Select Skill**, browse the skill list, and click **Select**. ## Step 4: Review extracted data Once processing is complete, open the results: 1. Click the link next to your document to open the **Manual Review** window 2. Review the extracted fields — each field shows the value Vantage found in the document 3. Verify the data and correct any fields if needed The Manual Review window shows the document image alongside extracted fields, so you can cross-reference values against the original. The Manual Review window showing extracted fields alongside the document ## Step 5: Export results After reviewing, your extracted data is ready for export. Depending on your workflow configuration, results can be: * Downloaded as JSON or XML * Sent to a connected system via a process skill * Accessed via the API for integration with your applications The exported JSON contains the same structure as the API output — each field with a `Value`, `Confidence` score, and verification flags. See [Understanding your results](/vantage/getting-started/results) for a full walkthrough of what each property means. ## Explore the Skill Catalog Before processing documents at scale, browse the **Skill Catalog** to see all available pre-trained skills: 1. Navigate to **Skill Catalog** in the sidebar 2. Use the search bar to find skills by name 3. Click the **preview icon** next to a skill to see its description and sample documents 4. Click **Try Skill** to test a skill with your own documents in a new tab Skill Catalog showing a skill preview with demo document and Try Skill button You can test multiple skills simultaneously — each **Try Skill** opens in a separate browser tab, making it easy to compare results. ## Next steps Learn how to read extracted fields, confidence scores, and table data. Browse all pre-trained skills and learn how to find the right one for your documents. Build your own skill for document types not covered by pre-trained models. Integrate Vantage into your applications with the REST API. # Invoice AU-NZ - Document Skill Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/built-in-skills/invoice-skills/invoice-au-nz Extract data from Australian and New Zealand invoices — vendor, customer, GST, line items, ABN/NZBN, and totals — for AP automation in ANZ region. The **Invoice AU-NZ** skill extracts data from Australian and New Zealand invoices — including vendor, customer, GST details, ABN/NZBN, line items, and totals — for AP automation in the ANZ region. The Invoice AU-NZ skill is a production skill. It has been fully trained on a large document set and provides high accuracy of data identification and extraction. The skill is ready to be used in production and does not require further training on your specific documents. Accuracy and straight-through processing (STP) rates can be further optimized in production through continuous learning from human-in-the-loop feedback. ## Countries and Languages | Countries | Languages | | :---------- | :-------- | | Australia | English | | New Zealand | | ## Extracted Fields Asterisk (`*`) indicates a required field or field group. Values cannot be empty. ### Basic Invoice Information | Field | Description | | :------------- | :------------------------------------------------------- | | Invoice Number | The number of the invoice. | | Invoice Date\* | The date when the invoice was issued. | | Total\* | The total cost of goods or services. | | Currency | The currency of the invoice. | | Delivery Date | The date the goods were delivered or services performed. | | Due Date | The date by which the invoice should be paid. | ### Business Unit (Invoice Recipient) | Field | Description | | :---------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Name | The name of the business unit (invoice recipient). | | Tax ID | The tax payer registration number. | | Address | The address of the business unit (invoice recipient). The address will be extracted into this field if no BusinessUnits data catalog is used or if the business unit has not been found in a data catalog. | | Country | The country of the business unit (invoice recipient). | | State or Province | The address of the business unit (invoice recipient). This address format will be used if the BusinessUnits data catalog is used and the business unit has been found in the data catalog. | | City | The address of the business unit (invoice recipient). This address format will be used if the BusinessUnits data catalog is used and the business unit has been found in the data catalog. | | Street | The address of the business unit (invoice recipient). This address format will be used if the BusinessUnits data catalog is used and the business unit has been found in the data catalog. | | Postal Code | The address of the business unit (invoice recipient). This address format will be used if the BusinessUnits data catalog is used and the business unit has been found in the data catalog. | | ID | The unique identifier of the business unit in an external system. Note: This field can only be obtained from the BusinessUnits data catalog. | ### Vendor Information | Field | Description | | :---------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------ | | Name | The vendor's name. | | Tax ID | The tax payer registration number. | | Address | The vendor's address. The address will be extracted into this field if no Vendors data catalog is used or if the vendor has not been found in a data catalog. | | Country | The vendor's country. | | State or Province | The vendor's address. This address format will be used if the Vendors data catalog is used and if the vendor has been found in the data catalog. | | City | The vendor's address. This address format will be used if the Vendors data catalog is used and if the vendor has been found in the data catalog. | | Street | The vendor's address. This address format will be used if the Vendors data catalog is used and if the vendor has been found in the data catalog. | | Postal Code | The vendor's address. This address format will be used if the Vendors data catalog is used and if the vendor has been found in the data catalog. | | ID | The vendor's unique identifier in an external system. Note: This field can only be obtained from the Vendors data catalog. | ### Tax Information | Field | Description | | :-------------------------- | :--------------------------------------------------------------------------------------------------------------------------------- | | Total Net Amount | The total cost of goods and services without tax. | | Total Taxes | The total tax amount. | | Tax Rates (repeating group) | For each tax group:
Net Amount. Cost of goods or services without tax.
Tax Amount. Tax charged.
Tax Rate. Tax rate. | | Non Taxable Amount | The amount on which no tax is payable. | ### Invoice Type | Field | Description | | :---------- | :------------------------------------------------- | | Invoice | Specifies the **Invoice** type of the invoice. | | Credit Note | Specifies the **Credit Note** type of the invoice. | ### Purchase Order | Field | Description | | :------------ | :------------------------------------------------------------------------------------------------------------------------------------------ | | Order Number | The number of the purchase order. | | Total | The cost of the goods or services listed in the purchase order. Note: This field can only be obtained from the PurchaseOrders data catalog. | | Order Checked | Indicates whether the order number is verified. The value of the field can be **True** or **False**. | ### Line Items (Repeating Group) | Field | Description | | :-------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Order Number | The number of the purchase order. | | Order Date | The date when the purchase order was created. | | Position | The number of the line item in the list. | | Article Number Vendor | The article number or code in the vendor's database. | | Article Number BU | The article number or code in the business unit's database. | | Description | A description of the line item. | | Quantity | The number of units purchased. | | Unit of Measurement | The unit of measurement used for the goods. | | Unit Price | The price of one item of goods. | | Discount Percentage | The discount percentage on the initial line item price. | | Discount | Discount applicable to the line item. | | Net Price | The price of the line item without tax. | | Tax Rate | The tax rate applicable to the line item. | | Tax Amount | The amount of tax payable on the line item. | | Tax Code | The code of the tax. | | Total Price | The price of the line item including tax. | | Currency | The currency of the line item. | | Is Valid | Indicates whether the order number in the Line Items group matches any checked order number in the Purchase Order group. The value of the field can be **True** or **False**. | | Order Item ID | The unique line item identifier. Note: This field can only be obtained from the PurchaseOrderItems data catalog. | ### Ship To | Field | Description | | :------ | :------------------------------------------------ | | Name | The name of the recipient receiving the goods. | | Address | The address of the recipient receiving the goods. | Older versions of this skill extracted the tax information into fields named **Tax Rate X**, **Tax Amount X**, and **Net Amount X**. In Vantage 2.4 and later, these fields are grouped into a repeating group called **Tax Rates**. If you are updating a copy of a built-in skill, check that the new **Tax Rates** group works for you. If you are satisfied with the results, remove the individual fields used in the older version. If not, create new fields to suit your processing scenario. ## Key Fields * Vendor/Name * Invoice Date * Invoice Number * Total * Currency ## Validation Rules | Rule | Description | | :------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Separate currency from amount in money fields | Splits the amount and the currency in fields containing currency amounts and copies the currency into the **Currency** field if it is empty | | Invoice date is required | Checks whether the **Invoice Date** field is filled in. If it is not, displays a message saying that it is a required field | | Currency is required | Checks whether the **Currency** field has been detected on the document. If not, displays a message saying that it is a required field | | Vendor VAT ID is required | Checks whether the vendor **Tax ID** field is filled in. If it is not, displays a message saying that it is a required field | | Check item amount | Checks that:
1. The number of units of each type (**Quantity**) multiplied by the unit price (**Unit Price**) is equal to the total amount charged before tax (**Net Price**) minus the applicable discount (**Discount**).
2. The total amount charged before tax (**Net Price**) multiplied by the tax rate (**Tax Rate**) is equal to the value of the **Tax Amount** field.
3. The sum of the values of the **Net Price** and **Tax Amount** fields is equal to the value of the **Total Price** field. For each invoice line item, suggests values for the following fields (wherever calculating them is possible): **Quantity**, **Unit Price**, **Discount**, **Net Price**, **Tax Rate**, **Tax Amount**, and **Total Price** | | Separate currency from amount in LI money fields | Splits the amount and the currency in the corresponding field and copies the currency into the **Line Items/Currency** field if it is not filled in. Applies to:
Line Items/Unit Price
Line Items/Net Price
Line Items/Total Price | | Check invoice and line items currency | Checks that the value of the **Currency** and **Line Items/Currency** fields is a supported currency. If the currency is not supported or has not been extracted, suggests currency values from the appropriate invoice region. Currency descriptions are replaced with ISO codes | | Check LI Total Prices against Total Amount | Checks the value of the **Total Amount** field. If it is not equal to the sum of the **Line Items/Total Price** fields, suggests filling in the fields with their calculated values | | Check LI Net Prices against Total Net Amount | Checks the value of the **Total Net Amount** field. If it is not equal to the sum of the **Line Items/Net Price** fields, suggests filling in the fields with their calculated values | | Check Total Tax | Checks that the sum of the **Tax Amount** fields across the **Tax Rates** repeating group is equal to the value of the **Total Taxes** field.
If the values are not equal, suggests filling in the fields with the calculated values.
If the **Total Taxes** field is not filled in, fills it in with its calculated value.

For each instance of the **Tax Rates** group:
1. Checks that (**Tax Rate** / 100) \* **Net Amount** is equal to **Tax Amount**.
2. If **Tax Rate**, **Net Amount**, or **Tax Amount** is not filled in, suggests filling in these fields with their calculated values.
3. Removes the percent sign (%) from the value in the **Tax Rate** field | | Check Total field | Checks that the sum of the **Total Net Amount** and **Tax Amount** fields is equal to the total invoiced amount (**Total**). If the values are not equal or if the **Total** field is not filled in, suggests filling in the fields with their calculated values | | Check Net Total | Checks that the sum of the **Net Amount** fields across the **Tax Rates** repeating group is equal to the total amount charged for the goods or services before tax (**Total Net Amount**). If the values are not equal, suggests filling in the fields with their calculated values. If the **Total Net Amount** is not filled in, fills it in with its calculated value | | Set default country | If a country has not been detected on the image, specifies the default country for the invoice. For Invoice AU-NZ, the default country is AU. | | Check vendor details against database | Checks whether the appropriate entry in the Vendors data catalog has been found for the vendor bank details detected on the image. If the values in the data catalog are different, replaces the field values with entries from the data catalog. If the vendor was not detected correctly, the operator may select a different vendor from the data catalog manually during manual review. The **Vendor Id**, **Name**, **Street**, **Country**, and **Business Unit ID** fields should be filled in the Vendors data catalog | | Business unit must be found in database | Checks that the business unit details detected on the document image are the same as those in the BusinessUnits data catalog. If some entries are different, replaces the field values with values from the data catalog. If the business unit was not detected correctly, the operator may select a different business unit from the data catalog manually during manual review. The **Business Unit Id**, **Name**, **Street**, and **Country** fields should be filled in the BusinessUnits data catalog | | Check purchase order number and amount | Checks that the order number and amount detected on the document image are the same as those in the PurchaseOrders data catalog. If several order numbers are detected, checks all of them and their amounts against the values in the data catalog. The **Order Number** field should be filled in the PurchaseOrders data catalog | | Match invoice line item with order item | Checks invoice line item information against records in the PurchaseOrderItems data catalog. If the catalog contains an entry for a particular line item, fills in the corresponding **Order Item ID** field using the value from the data catalog. The **Order Item ID** and **Order Number** fields should be filled in the PurchaseOrderItems data catalog | | Check purchase order total amount | Checks if the value in the **Total** field equals the value of the **Total** field in the **Purchase Order** group when one purchase order is found. Checks if the value in the **Total** field equals the sum of values in **Total** fields in the **Purchase Order** group when several purchase orders are found | | Check matching of line items to unique order items | For all line items whose purchase order number is equal to the one extracted in the **Purchase Order** group, checks that the value in the **Order item ID** field in the **Line Items** group is unique for every purchase order number if the value of the **Order Checked** field is **True** | | If order is checked make line items valid | For each item in **Purchase Order** group that has the **Order Checked** field set to **True**, compares the order number to the order number in all line items of the **Line Items** group. If they match in the **Line Items** group row, the value of the **Is Valid** field in the **Line Items** group value in that row is set to **True** | | Copy order number | If there is only one value in the **Order Number** field in the **Purchase Order** group and the values in the **Order Number** field in the **Line Items** group are empty, copies the value of the **Order Number** field in the **Purchase Order** group to the values of the **Order Number** field in the **Line Items** group | | Detect invoice type | Sets the type in the **Invoice Type** checkmark group. If the document is marked as credit note or if the value of the **Total** field is negative, sets the type to **Credit Note**. Otherwise, sets the type to **Invoice** | | Reversed Charge field is empty or completed | If the document contains references to reversed charges, checks the values of the taxes fields. If they are empty, marks the **Reversed Charge** checkmark. Note: Does not apply to **AU-NZ**, **CA**, **US**, and **JP** regions | To fill in a field with its calculated value, click the suggested value button in the value region of the field and select one of the suggestions from the drop-down list. When you update a copy of this skill to a derived skill, the rules will also be updated: * Some of the rules will get new versions. The outdated versions will receive numbered postfixes (for example, **Check item amount 1**). Review these rules and remove any unnecessary versions from the derived skill. * If you remove outdated **Tax Rate X**, **Tax Amount X**, and **Net Amount X** fields, the rules that checked them will become unnecessary. Remove those rules from the derived skill. ## Parameters The Invoice skills have default skill parameters that refer to data catalogs used for Vendor, Business Unit, and Purchase Order lookup. You can change the values of these parameters in Vantage or Advanced Designer to modify the field extraction process. | Parameter | Description | | :----------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Vendors | The predefined data catalog used for Vendor lookup. The default value of this parameter is **Vendors**. You can change this value by choosing another available data catalog of the same type (Document Issuer Companies) | | BusinessUnits | The predefined data catalog used for Business Unit lookup. The default value of the parameter is **BusinessUnits**. You can change this value by choosing another available data catalog of the same type (Document Receiver Companies). Note: This parameter is not available for the **Invoice JP** skill | | PurchaseOrders | The predefined data catalog used for Purchase Order lookup. The default value of this parameter is **PurchaseOrders**. You can change this value by choosing another available data catalog having the same structure | | PurchaseOrderItems | The predefined data catalog used to check if the Purchase Order details match. The default value of this parameter is **PurchaseOrderItems**. You can change this value by choosing another available data catalog having the same structure | # Invoice CA - Document Skill Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/built-in-skills/invoice-skills/invoice-ca Extract data from Canadian invoices — vendor, customer, GST/HST/PST, line items, and totals in English and French — for Canadian AP automation. The **Invoice CA** skill extracts data from Canadian invoices — vendor, customer, GST/HST/PST details, line items, and totals in English and French — for AP automation across Canada. The Invoice CA skill is a production skill. It has been fully trained on a large document set and provides high accuracy of data identification and extraction. The skill is ready to be used in production and does not require further training on your specific documents. Accuracy and straight-through processing (STP) rates can be further optimized in production through continuous learning from human-in-the-loop feedback. ## Countries and Languages | Countries | Languages | | :-------- | :-------- | | Canada | English | | | French | ## Extracted Fields Asterisk (`*`) indicates a required field or field group. Values cannot be empty. ### Basic Information | Field | Description | | :------------- | :------------------------------------ | | Invoice Number | The number of the invoice. | | Invoice Date\* | The date when the invoice was issued. | | Total\* | The total cost of goods or services. | | Currency | The currency of the invoice. | ### Business Unit (BU) | Field | Description | | :---------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Name | The name of the business unit (invoice recipient). | | Address | The address of the business unit (invoice recipient). The address will be extracted into this field, if no BusinessUnits data catalog is used or if the business unit has not been found in a data catalog. | | Country | The country of the business unit (invoice recipient). | | State or Province | The address of the business unit (invoice recipient). This address format will be used if the BusinessUnits data catalog is used and the business unit has been found in the data catalog. | | City | The address of the business unit (invoice recipient). This address format will be used if the BusinessUnits data catalog is used and the business unit has been found in the data catalog. | | Street | The address of the business unit (invoice recipient). This address format will be used if the BusinessUnits data catalog is used and the business unit has been found in the data catalog. | | Postal Code | The address of the business unit (invoice recipient). This address format will be used if the BusinessUnits data catalog is used and the business unit has been found in the data catalog. | | ID | The unique identifier of the business unit in an external system. **Note:** This field can only be obtained from the BusinessUnits data catalog. | ### Vendor | Field | Description | | :---------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Name | The vendor's name. | | Address | The vendor's address. The address will be extracted into this field, if no Vendors data catalog is used or if the vendor has not been found in a data catalog. | | Country | The vendor's country. | | State or Province | The vendor's address. This address format will be used if the Vendors data catalog is used and if the vendor has been found in the data catalog. | | City | The vendor's address. This address format will be used if the Vendors data catalog is used and if the vendor has been found in the data catalog. | | Street | The vendor's address. This address format will be used if the Vendors data catalog is used and if the vendor has been found in the data catalog. | | Postal Code | The vendor's address. This address format will be used if the Vendors data catalog is used and if the vendor has been found in the data catalog. | | Bank Account | The vendor's bank account. | | Bank Code | The vendor's bank code. | | ID | The vendor's unique identifier in an external system. **Note:** This field can only be obtained from the Vendors data catalog. | ### Invoice Details | Field | Description | | :------------ | :------------------------------------------------------- | | Delivery Date | The date the goods were delivered or services performed. | | Due Date | The date by which the invoice should be paid. | ### Taxes | Field | Description | | :-------------------------- | :--------------------------------------------------------------------------------------------------------------------------------- | | Total Net Amount | The total cost of goods and services without tax. | | Total Taxes | The total tax amount. | | Tax Rates (repeating group) | For each tax group:
Net Amount. Cost of goods or services without tax.
Tax Amount. Tax charged.
Tax Rate. Tax rate. | | Non Taxable Amount | The amount on which no tax is payable. | ### Invoice Type | Field | Description | | :---------- | :------------------------------------------------- | | Invoice | Specifies the **Invoice** type of the invoice. | | Credit Note | Specifies the **Credit Note** type of the invoice. | ### Purchase Order | Field | Description | | :------------ | :---------------------------------------------------------------------------------------------------------------------------------------------------- | | Order Number | The number of the purchase order. | | Total | The cost of the goods or services listed in the purchase order.
**Note:** This field can only be obtained from the PurchaseOrders data catalog. | | Order Checked | Indicates whether the order number is verified. The value of the field can be **True** or **False**. | ### Line Items (repeating group) | Field | Description | | :-------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Order Number | The number of the purchase order. | | Order Date | The date when the purchase order was created. | | Position | The number of the line item in the list. | | Article Number Vendor | The article number or code in the vendors's database. | | Article Number BU | The article number or code in the business unit's database. | | Description | A description of the line item. | | Quantity | The number of units purchased. | | Unit of Measurement | The unit of measurement used for the goods. | | Unit Price | The price of one item of goods. | | Discount Percentage | The discount percentage on the initial line item price. | | Discount | Discount applicable to the line item. | | Net Price | The price of the line item without tax. | | Tax Rate | The tax rate for the line item. | | Tax Amount | The amount of tax payable on the line item. | | Tax Code | The code of the tax. | | Total Price | The price of the line item including tax. | | Currency | The currency of the line item. | | Is Valid | Indicates whether the order number in the **Line Item** group matches any checked order number in the **Purchase Order** group. The value of the field can be **True** or **False**. | | Order Item ID | The unique line item identifier. **Note:** This field can only be obtained from the PurchaseOrderItems data catalog. | ### Ship To | Field | Description | | :------ | :------------------------------------------------ | | Name | The name of the recipient receiving the goods. | | Address | The address of the recipient receiving the goods. | Older versions of this skill extracted the tax information into fields named **Tax Rate X**, **Tax Amount X**, and **Net Amount X**. In Vantage 2.4 and later, these fields are grouped into a repeating group called **Tax Rates**. If you are updating a copy of a built-in skill, check that the new **Tax Rates** group works for you. If you are satisfied with the results, remove the individual fields used in the older version. If not, create new fields to suit your processing scenario. ## Key Fields * Vendor/Name * Invoice Date * Invoice Number * Total * Currency ## Validation Rules | Rule | Description | | :------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Total is required field | Checks whether the **Total** field is filled in. If it is not, displays a message saying that it is a required field. | | Separate currency from amount in money fields | Splits the amount and the currency in fields containing currency amounts and copies the currency into the **Currency** field if it is empty. | | Invoice date is required | Checks whether the **Invoice Date** field is filled in. If it is not, displays a message saying that it is a required field. | | Currency is required | Checks whether the **Currency** field has been detected on the document. If not, displays a message saying that it is a required field. | | Vendor Tax ID is required | Checks whether the vendor **Tax ID** field is filled in. If it is not, displays a message saying that it is a required field. | | Check item amount | Checks that:
1. The number of units of each type (**Quantity**) multiplied by the unit price (**Unit Price**) is equal to the total amount charged before tax (**Net Price**) minus the applicable discount (**Discount**).
2. The total amount charged before tax (**Net Price**) multiplied by the tax rate (**Tax Rate**) is equal to the value of the **Tax Amount** field.
3. The sum of the values of the **Net Price** and **Tax Amount** fields is equal to the value of the **Total Price** field.
4. For each invoice line item, suggests values for the following fields (wherever calculating them is possible): **Quantity**, **Unit Price**, **Discount**, **Net Price**, **Tax Rate**, **Tax Amount**, and **Total Price**. | | Separate currency from amount in LI money fields | Splits the amount and the currency in the corresponding field and copies the currency into the **Line Items/Currency** field if it is not filled in.
1. Line Items/Unit Price
2. Line Items/Net Price
3. Line Items/Total Price | | Check invoice and line items currency | Checks that the value of the **Currency** and **Line Items/Currency** fields is a supported currency. If the currency is not supported or has not been extracted, suggests currency values from the appropriate invoice region. Currency descriptions are replaced with ISO codes. | | Check LI Total Prices against Total Amount | Checks the value of the **Total Amount** field. If it is not equal to the sum of the **Line Items/Total Price** fields, suggests filling in the fields with their calculated values. | | Check LI Net Prices against Total Net Amount | Checks the value of the **Total Net Amount** field. If it is not equal to the sum of the **Line Items/Net Price** fields, suggests filling in the fields with their calculated values. | | Check Total Tax | Checks that the sum of the **Tax Amount** fields across the **Tax Rates** repeating group is equal to the value of the **Total Taxes** field. If the values are not equal, suggests filling in the fields with the calculated values. If the **Total Taxes** field is not filled in, fills it in with its calculated value.
For each instance of the **Tax Rates** group:
Checks that (**Tax Rate** / 100 ) \* **Net Amount** is equal to **Tax Amount**. If **Tax Rate**, **Net Amount**, or **Tax Amount** is not filled in, suggests filling in these fields with their calculated values. Removes the percent sign (%) from the value in the **Tax Rate** field. | | Check Total field | Checks that the sum of the **Total Net Amount** and **Tax Amount** fields is equal to the total invoiced amount (**Total**). If the values are not equal or if the **Total** field is not filled in, suggests filling in the fields with their calculated values. | | Check Net Total | Checks that the sum of the **Net Amount** fields across the **Tax Rates** repeating group is equal to the total amount charged for the goods or services before tax (**Total Net Amount**). If the values are not equal, suggests filling in the fields with their calculated values. If the **Total Net Amount** is not filled in, fills it in with its calculated value. | | Set default country | If a country has not been detected on the image, specifies the default country for the invoice based on the supported country for the skill. For example, Invoice CA = `CA`; Invoice = `Default Country Not Set` ) | | Check vendor details against database | Checks whether the appropriate entry in the Vendors data catalog has been found for the vendor bank details detected on the image. If the values in the data catalog are different, replaces the field values with entries from the data catalog. If the vendor was not detected correctly, the operator may select a different vendor from the data catalog manually during manual review. The **Vendor Id**, **Name**, **Street**, **Country**, and **Business Unit ID** fields must be filled in the Vendors data catalog. | | Business unit must be found in database | Checks that the business unit details detected on the document image are the same as those in the BusinessUnits data catalog. If some entries are different, replaces the field values with values from the data catalog. If the business unit was not detected correctly, the operator may select a different business unit from the data catalog manually during manual review. The **Business Unit Id**, **Name**, **Street**, and **Country** fields should be filled in the BusinessUnits data catalog. | | Check purchase order number and amount | Checks that the order number and amount detected on the document image are the same as those in the PurchaseOrders data catalog. If several order numbers are detected, checks all of them and their amounts against the values in the data catalog. The **Order Number** field should be filled in the PurchaseOrders data catalog. | | Match invoice line item with order item | Checks invoice line item information against records in the PurchaseOrderItems data catalog. If the catalog contains an entry for a particular line item, fills in the corresponding **Order Item ID** field using the value from the data catalog. The **Order Item ID** and **Order Number** fields should be filled in the PurchaseOrderItems data catalog. | | Check purchase order total amount | Checks if the value in the **Total** field equals the value of the **Total** field in the **Purchase Order** group when one purchase order is found. Checks if the value in the **Total** field equals the sum of values in **Total** fields in the **Purchase Order** group when several purchase orders are found. | | Check matching of line items to unique order items | For all line items whose purchase order number is equal to the one extracted in the **Purchase Order** group, checks that the value in the **Order item ID** field in the **Line Items** group is unique for every purchase order number if the value of the **Order Checked** field is **True**. | | If order is checked make line items valid | For each item in **Purchase Order** group that has the **Order Checked** field set to **True**, compares the order number to the order number in all line items of the **Line Items** group. If they match in the **Line Items** group row, the value of the **Is Valid** field in the **Line Items** group value in that row is set to **True**. | | Copy order number | If there is only one value in the **Order Number** field in the **Purchase Order** group and the values in the **Order Number** field in the **Line Items** group are empty, copies the value of the **Order Number** field in the **Purchase Order** group to the values of the **Order Number** field in the **Line Items** group. | | Detect invoice type | Sets the type in the **Invoice Type** checkmark group. If the document is marked as credit note or if the value of the **Total** field is negative, sets the type to **Credit Note**. Otherwise, sets the type to **Invoice**. | | Reversed Charge field is empty or completed | If the document contains references to reversed charges, checks the values of the taxes fields. If they are empty, marks the **Reversed Charge** checkmark.
**Note:** Does not apply to **AU-NZ**, **CA**, **US**, and **JP** regions. | To fill in a field with its calculated value, click the suggested value button in the value region of the field and select one of the suggestions from the drop-down list. When you update a copy of this skill to a derived skill, the rules will also be updated: * Some of the rules will get new versions. The outdated versions will receive numbered postfixes (for example, **Check item amount 1**). Review these rules and remove any unnecessary versions from the derived skill. * If you remove outdated **Tax Rate X**, **Tax Amount X**, and **Net Amount X** fields, the rules that checked them will become unnecessary. Remove those rules from the derived skill. ## Parameters The Invoice skills have default skill parameters that refer to data catalogs used for Vendor, Business Unit, and Purchase Order lookup. You can change the values of these parameters in Vantage or Advanced Designer to modify the field extraction process. | Parameter | Description | | :----------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Vendors | The predefined data catalog used for Vendor lookup. The default value of this parameter is **Vendors**. You can change this value by choosing another available data catalog of the same type (Document Issuer Companies). | | BusinessUnits | The predefined data catalog used for Business Unit lookup. The default value of the parameter is **BusinessUnits**. You can change this value by choosing another available data catalog of the same type (Document Receiver Companies). **Note:** This parameter is not available for the **Invoice JP** skill. | | PurchaseOrders | The predefined data catalog used for Purchase Order lookup. The default value of this parameter is **PurchaseOrders**. You can change this value by choosing another available data catalog having the same structure. | | PurchaseOrderItems | The predefined data catalog used to check if the Purchase Order details match. The default value of this parameter is **PurchaseOrderItems**. You can change this value by choosing another available data catalog having the same structure. | # Invoice CN - Document Skill Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/built-in-skills/invoice-skills/invoice-cn Extract data from Chinese VAT invoices issued by manufacturers — vendor, buyer, VAT details, goods, quantities, prices, currency, and totals. The **Invoice CN** skill extracts data from VAT invoices posted by manufacturers from China. A VAT invoice is a document issued by a seller to a buyer that lists the goods or services supplied. A VAT invoice typically contains the following information: * The list of goods or services supplied and their quantity and price * The total amount payable for the goods or services * The currency to be used for payment * A description of the goods or services * Details about the seller and the buyer * The number and date of the invoice * Applicable taxes The Invoice CN skill is a production skill. It has been fully trained on a large document set and provides high accuracy of data identification and extraction. The skill is ready to be used in production and does not require further training on your specific documents. Accuracy and straight-through processing (STP) rates can be further optimized in production through continuous learning from human-in-the-loop feedback. This skill is designed for processing VAT invoices from China, which have a specific structure that does not change from document to document. Other types of invoices from China may not be processed correctly using this skill. The Invoice CN skill does not use the **Vendors**, **BusinessUnits**, **PurchaseOrders** and **PurchaseOrderItems** data catalogs. ## Countries and Languages | Countries | Languages | | :-------- | :------------------- | | China | Chinese (Simplified) | | | English | ## Extracted Fields Asterisk (`*`) indicates a required field or field group. Values cannot be empty. ### Business Unit (BU) | Field | Description | | :----------- | :----------------------------------------------------------- | | Name | The invoice recipient's name. | | Tax ID | The invoice recipient's taxpayer identifier. | | Address | The address of the invoice recipient. | | Country | The address of the invoice recipient. | | Phone | The invoice recipient's phone number. | | Bank Name | The invoice recipient's bank name and branch (if specified). | | Bank Account | The invoice recipient's bank account number. | ### Vendor | Field | Description | | :----------- | :-------------------------------- | | Name | The vendor's name. | | Tax ID | The vendor's taxpayer identifier. | | Address | The vendor's address. | | Country | The vendor's address. | | Phone | The vendor's phone number. | | Bank Name | The vendor's bank name. | | Bank Account | The vendor's bank account number. | ### Header Fields | Field | Description | | :------------- | :------------------------------------ | | Invoice Number | The number of the invoice. | | Invoice Date\* | The date when the invoice was issued. | | Invoice ID | The invoice identifier. | | Total\* | The total cost of goods or services. | | Currency | The currency of the invoice. | ### Purchase Order | Field | Description | | :----------- | :------------------------- | | Order Number | The purchase order number. | ### Line Items (repeating group) | Field | Description | | :---------- | :-------------------------------------------- | | Description | A description of the line item. | | Article | The article number or code of the line item. | | UoM | The unit of measurement used for the goods. | | Quantity | The number of line item units purchased. | | Unit Price | The price of one unit of the line item goods. | | Net Price | The price of the line item before tax. | | Tax Rate | The tax rate applicable to the line item. | | Tax Amount | The amount of tax payable on the line item. | ### Taxes | Field | Description | | :--------------- | :------------------------------------------------ | | Total Net Amount | The total cost of goods and services without tax. | | Total Taxes | The total amount of tax charged. | | Tax Rate | The tax rate. | ## Key Fields * Vendor/Name * Invoice Date * Invoice Number * Total * Currency ## Validation Rules | Rule | Description | | :-------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Invoice Date is required | Checks that the **Invoice Date** field is filled in. If the field is empty, displays a message that it is a required field. | | Total is required | Checks that the **Total** field is filled in. If the field is empty, displays a message that it is a required field. | | Set Default Country | If the values for the **Business Unit (BU)/Country** and **Vendor/Country** fields are either missing from the document or have not been extracted, fills them in using the following value: "中国". | | Process money fields and currency | Checks that the value **Currency** field is a supported currency. If not, sets the value to "CNY". Currency descriptions are replaced with ISO codes. | | Check Total Net Amount | Checks if the value of the **Total Net Amount** field equals the sum of the **Line Items/Net Price** fields. If not, displays a warning message and suggests filling in the fields with their calculated values. | | Check Total Taxes | Checks if the value of the **Total Taxes** field equals the sum of the **Line Items/Tax Amount** fields. If not, displays an appropriate message and suggests filling in the fields with their calculated values. | | Check Sum | Checks if the value of the **Total** field equals the sum of all line items (**Total Net Amount**) after taxes (**Total Taxes**). If not, displays an appropriate message and suggests filling in the fields with their calculated values. | | Check item amount | Checks the following:
1. That the number of units for each line item (**Quantity**) multiplied by the price of a unit (**Unit Price**) equals the price of the goods or service before taxes (**Net Price**).
2. That the price of the goods or service before taxes (**Net Price**) multiplied by the tax rate (**Tax Rate**) equals the value in the **Tax Amount** field.
Removes the percent sign (%) from the value in the **Tax Rate** field.
For each invoice line item, suggests values for the following fields (wherever calculating them is possible): **Quantity**, **Unit Price**, **Net Price**, **Tax Rate**, and **Tax Amount**. | | Complete Tax Rate | Checks that the value of the **Tax Rate** field equals the following: **Total Taxes\*100/Total Net**. If the values are different or **Tax Rate** is empty, suggests filling it with its calculated value. | To fill in a field with its calculated value, click the suggested value button in the value region of the field and select one of the suggestions from the drop-down list. # Invoice ES - Document Skill Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/built-in-skills/invoice-skills/invoice-es Extract data from Spanish invoices — vendor, customer, NIF/CIF, IVA tax, line items, and totals — for AP automation in Spain (Spanish and English). The **Invoice ES** skill extracts data from Spanish invoices (*facturas*) — vendor, customer, NIF/CIF, IVA tax, line items, and totals — for AP automation in Spain (Spanish and English). The Invoice ES skill is a production skill. It has been fully trained on a large document set and provides high accuracy of data identification and extraction. The skill is ready to be used in production and does not require further training on your specific documents. Accuracy and straight-through processing (STP) rates can be further optimized in production through continuous learning from human-in-the-loop feedback. ## Countries and Languages | Countries | Languages | | :-------- | :-------- | | Spain | Spanish | | | English | ## Extracted Fields Asterisk (`*`) indicates a required field or field group. Values cannot be empty. ### Basic Information | Field | Description | | :------------- | :------------------------------------ | | Invoice Number | The number of the invoice. | | Invoice Date\* | The date when the invoice was issued. | | Total\* | The total cost of goods or services. | | Currency | The currency of the invoice. | ### Business Unit (BU) | Field | Description | | :---------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Name | The name of the business unit (invoice recipient). | | Tax ID | The tax payer registration number. | | Address | The address of the business unit (invoice recipient). The address will be extracted into this field, if no BusinessUnits data catalog is used or if the business unit has not been found in a data catalog. | | Country | The country of the business unit (invoice recipient). | | City | The address of the business unit (invoice recipient). This address format will be used if the BusinessUnits data catalog is used and the business unit has been found in the data catalog. | | Street | The address of the business unit (invoice recipient). This address format will be used if the BusinessUnits data catalog is used and the business unit has been found in the data catalog. | | Postal Code | The address of the business unit (invoice recipient). This address format will be used if the BusinessUnits data catalog is used and the business unit has been found in the data catalog. | | ID | The unique identifier of the business unit in an external system. **Note:** This field can only be obtained from the BusinessUnits data catalog. | ### Vendor | Field | Description | | :-------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Name | The vendor's name. | | Tax ID | International tax payer registration number. | | National Tax ID | The tax payer registration number in the country of origin. | | IBAN | The vendor's international bank account number. | | Bank Account | The vendor's bank account. | | Bank Code | The vendor's bank code. | | SWIFT Code | The SWIFT code of the vendor. | | Address | The vendor's address. The address will be extracted into this field, if no Vendors data catalog is used or if the vendor has not been found in a data catalog. | | Country | The vendor's country. | | City | The vendor's address. This address format will be used if the Vendors data catalog is used and if the vendor has been found in the data catalog. | | Street | The vendor's address. This address format will be used if the Vendors data catalog is used and if the vendor has been found in the data catalog. | | Postal Code | The vendor's address. This address format will be used if the Vendors data catalog is used and if the vendor has been found in the data catalog. | | ID | The vendor's unique identifier in an external system. **Note:** This field can only be obtained from the Vendors data catalog. | ### Invoice Details | Field | Description | | :-------------- | :------------------------------------------------------- | | Delivery Date | The date the goods were delivered or services performed. | | Due Date | The date by which the invoice should be paid. | | Reversed Charge | Indicates that a reverse charge is applied. | ### Taxes | Field | Description | | :----------------- | :------------------------------------------------ | | Total Net Amount | The total cost of goods and services without tax. | | Total Taxes | The total tax amount. | | Non Taxable Amount | The amount on which no tax is payable. | #### Tax Rates (repeating group) | Field | Description | | :--------- | :------------------------------------ | | Net Amount | Cost of goods or services without tax | | Tax Amount | Tax charged | | Tax Rate | Tax rate | ### Invoice Type | Field | Description | | :---------- | :------------------------------------------------- | | Invoice | Specifies the **Invoice** type of the invoice. | | Credit Note | Specifies the **Credit Note** type of the invoice. | ### Purchase Order | Field | Description | | :------------ | :---------------------------------------------------------------------------------------------------------------------------------------------- | | Order Number | The number of the purchase order. | | Total | The cost of the goods or services listed in the purchase order. **Note:** This field can only be obtained from the PurchaseOrders data catalog. | | Order Checked | Indicates whether the order number is verified. The value of the field can be **True** or **False**. | ### Line Items (repeating group) | Field | Description | | :-------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Order Number | The number of the purchase order. | | Order Date | The date when the purchase order was created. | | Position | The number of the line item in the list. | | Article Number Vendor | The article number or code in the vendors's database. | | Article Number BU | The article number or code in the business unit's database. | | Description | A description of the line item. | | Quantity | The number of units purchased. | | Unit of Measurement | The unit of measurement used for the goods. | | Unit Price | The price of one item of goods. | | Discount Percentage | The discount percentage on the initial line item price. | | Discount | Discount applicable to the line item. | | Net Price | The price of the line item without tax. | | Tax Rate | The tax rate for the line item. | | Tax Amount | The amount of tax payable on the line item. | | Tax Code | The code of the tax. | | Total Price | The price of the line item including tax. | | Currency | The currency of the line item. | | Is Valid | Indicates whether the order number in the **Line Item** group matches any checked order number in the **Purchase Order** group. The value of the field can be **True** or **False**. | | Order Item ID | The unique line item identifier. **Note:** This field can only be obtained from the PurchaseOrderItems data catalog. | ### Ship To | Field | Description | | :------ | :------------------------------------------------ | | Name | The name of the recipient receiving the goods. | | Address | The address of the recipient receiving the goods. | Older versions of this skill extracted the tax information into fields named **Tax Rate X**, **Tax Amount X**, and **Net Amount X**. In Vantage 2.4 and later, these fields are grouped into a repeating group called **Tax Rates**. If you are updating a copy of a built-in skill, check that the new **Tax Rates** group works for you. If you are satisfied with the results, remove the individual fields used in the older version. If not, create new fields to suit your processing scenario. ## Key Fields * Vendor/Name * Invoice Date * Invoice Number * Total * Currency ## Validation Rules | Rule | Description | | :------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Total is required field | Checks whether the **Total** field is filled in. If it is not, displays a message saying that it is a required field. | | Separate currency from amount in money fields | Splits the amount and the currency in fields containing currency amounts and copies the currency into the **Currency** field if it is empty. | | Invoice date is required | Checks whether the **Invoice Date** field is filled in. If it is not, displays a message saying that it is a required field. | | Vendor Tax ID is required | Checks whether the vendor **Tax ID** field is filled in. If it is not, displays a message saying that it is a required field. | | Check item amount | Checks that:
The number of units of each type (**Quantity**) multiplied by the unit price (**Unit Price**) is equal to the total amount charged before tax (**Net Price**) minus the applicable discount (**Discount**).
The total amount charged before tax (**Net Price**) multiplied by the tax rate (**Tax Rate**) is equal to the value of the **Tax Amount** field.
The sum of the values of the **Net Price** and **Tax Amount** fields is equal to the value of the **Total Price** field.
For each invoice line item, suggests values for the following fields (wherever calculating them is possible): **Quantity**, **Unit Price**, **Discount**, **Net Price**, **Tax Rate**, **Tax Amount**, and **Total Price**. | | Separate currency from amount in LI money fields | Splits the amount and the currency in the corresponding field and copies the currency into the **Line Items/Currency** field if it is not filled in. Line Items/Unit Price, Line Items/Net Price, Line Items/Total Price | | Check invoice and line items currency | Checks that the value of the **Currency** and **Line Items/Currency** fields is a supported currency. If the currency is not supported or has not been extracted, suggests currency values from the appropriate invoice region. Currency descriptions are replaced with ISO codes. | | Check LI Total Prices against Total Amount | Checks the value of the **Total Amount** field. If it is not equal to the sum of the **Line Items/Total Price** fields, suggests filling in the fields with their calculated values. | | Check LI Net Prices against Total Net Amount | Checks the value of the **Total Net Amount** field. If it is not equal to the sum of the **Line Items/Net Price** fields, suggests filling in the fields with their calculated values. | | Check Total Tax | Checks that the sum of the **Tax Amount** fields across the **Tax Rates** repeating group is equal to the value of the **Total Taxes** field.
If the values are not equal, suggests filling in the fields with the calculated values.
If the **Total Taxes** field is not filled in, fills it in with its calculated value.

For each instance of the **Tax Rates** group:
Checks that (**Tax Rate** / 100 ) \* **Net Amount** is equal to **Tax Amount**.
If **Tax Rate**, **Net Amount**, or **Tax Amount** is not filled in, suggests filling in these fields with their calculated values.
Removes the percent sign (%) from the value in the **Tax Rate** field. | | Check Total field | Checks that the sum of the **Total Net Amount** and **Tax Amount** fields is equal to the total invoiced amount (**Total**). If the values are not equal or if the **Total** field is not filled in, suggests filling in the fields with their calculated values. | | Check Net Total | Checks that the sum of the **Net Amount** fields across the **Tax Rates** repeating group is equal to the total amount charged for the goods or services before tax (**Total Net Amount**). If the values are not equal, suggests filling in the fields with their calculated values. If the **Total Net Amount** is not filled in, fills it in with its calculated value. | | Set default country | If a country has not been detected on the image, specifies the default country for the invoice based on the supported country for the skill (e.g., Invoice ES = `ES`; Invoice = `Default Country Not Set` ) | | Check vendor details against database | Checks whether the appropriate entry in the Vendors data catalog has been found for the vendor bank details detected on the image. If the values in the data catalog are different, replaces the field values with entries from the data catalog. If the vendor was not detected correctly, the operator may select a different vendor from the data catalog manually during manual review. The **Vendor Id**, **Name**, **Street**, **Country**, and **Business Unit ID** fields should be filled in the Vendors data catalog. | | Business unit must be found in database | Checks that the business unit details detected on the document image are the same as those in the BusinessUnits data catalog. If some entries are different, replaces the field values with values from the data catalog. If the business unit was not detected correctly, the operator may select a different business unit from the data catalog manually during manual review. The **Business Unit Id**, **Name**, **Street**, and **Country** fields should be filled in the BusinessUnits data catalog. | | Check purchase order number and amount | Checks that the order number and amount detected on the document image are the same as those in the PurchaseOrders data catalog. If several order numbers are detected, checks all of them and their amounts against the values in the data catalog. The **Order Number** field should be filled in the PurchaseOrders data catalog. | | Match invoice line item with order item | Checks invoice line item information against records in the PurchaseOrderItems data catalog. If the catalog contains an entry for a particular line item, fills in the corresponding **Order Item ID** field using the value from the data catalog. The **Order Item ID** and **Order Number** fields should be filled in the PurchaseOrderItems data catalog. | | Check purchase order total amount | Checks if the value in the **Total** field equals the value of the **Total** field in the **Purchase Order** group when one purchase order is found. Checks if the value in the **Total** field equals the sum of values in **Total** fields in the **Purchase Order** group when several purchase orders are found. | | Check matching of line items to unique order items | For all line items whose purchase order number is equal to the one extracted in the **Purchase Order** group, checks that the value in the **Order item ID** field in the **Line Items** group is unique for every purchase order number if the value of the **Order Checked** field is **True**. | | If order is checked make line items valid | For each item in **Purchase Order** group that has the **Order Checked** field set to **True**, compares the order number to the order number in all line items of the **Line Items** group. If they match in the **Line Items** group row, the value of the **Is Valid** field in the **Line Items** group value in that row is set to **True**. | | Copy order number | If there is only one value in the **Order Number** field in the **Purchase Order** group and the values in the **Order Number** field in the **Line Items** group are empty, copies the value of the **Order Number** field in the **Purchase Order** group to the values of the **Order Number** field in the **Line Items** group. | | Detect invoice type | Sets the type in the **Invoice Type** checkmark group. If the document is marked as credit note or if the value of the **Total** field is negative, sets the type to **Credit Note**. Otherwise, sets the type to **Invoice**. | | Reversed Charge field is empty or completed | If the document contains references to reversed charges, checks the values of the taxes fields. If they are empty, marks the **Reversed Charge** checkmark. **Note:** Does not apply to **AU-NZ**, **CA**, **US**, and **JP** regions. | To fill in a field with its calculated value, click the suggested value button in the value region of the field and select one of the suggestions from the drop-down list. When you update a copy of this skill to a derived skill, the rules will also be updated: * Some of the rules will get new versions. The outdated versions will receive numbered postfixes (for example, **Check item amount 1**). Review these rules and remove any unnecessary versions from the derived skill. * If you remove outdated **Tax Rate X**, **Tax Amount X**, and **Net Amount X** fields, the rules that checked them will become unnecessary. Remove those rules from the derived skill. ## Parameters The Invoice skills have default skill parameters that refer to data catalogs used for Vendor, Business Unit, and Purchase Order lookup. You can change the values of these parameters in Vantage or Advanced Designer to modify the field extraction process. | Parameter | Description | | :----------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Vendors | The predefined data catalog used for Vendor lookup. The default value of this parameter is **Vendors**. You can change this value by choosing another available data catalog of the same type (Document Issuer Companies). | | BusinessUnits | The predefined data catalog used for Business Unit lookup. The default value of the parameter is **BusinessUnits**. You can change this value by choosing another available data catalog of the same type (Document Receiver Companies). **Note:** This parameter is not available for the **Invoice JP** skill. | | PurchaseOrders | The predefined data catalog used for Purchase Order lookup. The default value of this parameter is **PurchaseOrders**. You can change this value by choosing another available data catalog having the same structure. | | PurchaseOrderItems | The predefined data catalog used to check if the Purchase Order details match. The default value of this parameter is **PurchaseOrderItems**. You can change this value by choosing another available data catalog having the same structure. | # Invoice JP - Document Skill Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/built-in-skills/invoice-skills/invoice-jp Extract data from Japanese invoices (請求書 / seikyusho) — vendor, customer, line items, consumption tax, and totals in Japanese (Modern). The **Invoice JP** skill extracts data from Japanese invoices (請求書 / *seikyusho*) — vendor, customer, line items, consumption tax, and totals. Invoice JP is the only Invoice Document skill that is not part of the Invoice Processing or Invoice Classifier skills. To process Japanese invoices alongside other regions, configure your own Invoice Classifier or Invoice Processing skill. The Invoice JP skill is a preview skill. It has been trained on a limited set of documents and is designed to help you quickly get started with processing Japanese invoices. For production use, you may need to uptrain the skill with your own document samples.  ## Countries and Languages | Countries | Languages | | :-------- | :---------------- | | Japan | Japanese (Modern) | | | English | ## Extracted Fields Asterisk (`*`) indicates a required field or field group. Values cannot be empty. ### Basic Information | Field | Description | | :------------- | :------------------------------------ | | Invoice Number | The number of the invoice. | | Invoice Date\* | The date when the invoice was issued. | | Total\* | The total cost of goods or services. | | Currency | The currency of the invoice. | ### Vendor | Field | Description | | :---------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Name | The vendor's name. | | Tax ID | The official company ID of the vendor. | | Address | The vendor's address. The address will be extracted into this field, if no Vendors data catalog is used or if the vendor has not been found in a data catalog. | | State | The vendor's address. This address format will be used if the Vendors data catalog is used and if the vendor has been found in the data catalog. | | City | The vendor's address. This address format will be used if the Vendors data catalog is used and if the vendor has been found in the data catalog. | | Street | The vendor's address. This address format will be used if the Vendors data catalog is used and if the vendor has been found in the data catalog. | | Postal Code | The vendor's address. This address format will be used if the Vendors data catalog is used and if the vendor has been found in the data catalog. | | Country | The vendor's country. | | ID | The vendor's unique identifier in an external system. **Note:** This field can only be obtained from the Vendors data catalog. | ### Bank Information | Field | Description | | :------------- | :---------------------------------------------- | | Account Number | The vendor's account number. | | Account Type | The vendor's account type. | | Bank Name | The name of the bank used by the vendor. | | Branch Name | The name of the bank branch used by the vendor. | ### Invoice Details | Field | Description | | :------------ | :------------------------------------------------------- | | Delivery Date | The date the goods were delivered or services performed. | | Due Date | The date by which the invoice should be paid. | ### Taxes | Field | Description | | :----------------- | :------------------------------------------------ | | Total Net Amount | The total cost of goods and services without tax. | | Total Taxes | The total tax amount. | | Non Taxable Amount | The amount on which no tax is payable. | #### Tax Rates (repeating group) For each tax group: | Field | Description | | :--------- | :------------------------------------ | | Net Amount | Cost of goods or services without tax | | Tax Amount | Tax charged | | Tax Rate | Tax rate | ### Invoice Type | Field | Description | | :---------- | :------------------------------------------------- | | Invoice | Indicates the **Invoice** type of the invoice. | | Credit Note | Indicates the **Credit Note** type of the invoice. | ### Purchase Order | Field | Description | | :------------ | :---------------------------------------------------------------------------------------------------------------------------------------------- | | Order Number | The number of the purchase order. | | Order Checked | Specifies whether the order number is verified. The value of the field can be **True** or **False**. | | Total | The cost of the goods or services listed in the purchase order. **Note:** This field can only be obtained from the PurchaseOrders data catalog. | ### Line Items (repeating group) | Field | Description | | :-------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Order Number | The number of the purchase order. | | Order Date | The date when the purchase order was created. | | Position | The number of the line item in the list. | | Article Number Vendor | The article number or code in the vendors's database. | | Article Number BU | The article number or code in the business unit's database. | | Description | A description of the line item. | | Quantity | The number of units purchased. | | Unit of Measurement | The unit of measurement used for the goods. | | Unit Price | The price of one item of goods. | | Discount Percentage | The discount percentage on the initial line item price. | | Discount | Discount applicable to the line item. | | Net Price | The price of the line item without tax. | | Tax Rate | The tax rate for the line item. | | Tax Amount | The amount of tax payable on the line item. | | Tax Code | The code of the tax. | | Total Price | The price of the line item including tax. | | Currency | The currency of the line item. | | Is Valid | Specifies whether the order number in the **Line Item** group matches any checked order number in the **Purchase Order** group. The value of the field can be **True** or **False**. | | Order Item ID | The unique line item identifier. **Note:** This field can only be obtained from the PurchaseOrderItems data catalog. | ### Ship To | Field | Description | | :------ | :------------------------------------------------ | | Name | The name of the recipient receiving the goods. | | Address | The address of the recipient receiving the goods. | Older versions of this skill extracted the tax information into fields named **Tax Rate X**, **Tax Amount X**, and **Net Amount X**. In Vantage 2.4 and later, these fields are grouped into a repeating group called **Tax Rates**. If you are updating a copy of a built-in skill, check that the new **Tax Rates** group works for you. If you are satisfied with the results, remove the individual fields used in the older version. If not, create new fields to suit your processing scenario. ### Key Fields * Vendor/Name * Invoice Date * Invoice Number * Total * Currency ## Validation Rules | Rule | Description | | :------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Total is required field | Checks whether the **Total** field is filled in. If it is not, displays a message saying that it is a required field. | | Separate currency from amount in money fields | Splits the amount and the currency in fields containing currency amounts and copies the currency into the **Currency** field if it is empty. | | Invoice date is required | Checks whether the **Invoice Date** field is filled in. If it is not, displays a message saying that it is a required field. | | Check item amount | Checks that:
The number of units of each type (**Quantity**) multiplied by the unit price (**Unit Price**) is equal to the total amount charged before tax (**Net Price**) minus the applicable discount (**Discount**).
The total amount charged before tax (**Net Price**) multiplied by the tax rate (**Tax Rate**) is equal to the value of the **Tax Amount** field.
The sum of the values of the **Net Price** and **Tax Amount** fields is equal to the value of the **Total Price** field.
For each invoice line item, suggests values for the following fields (wherever calculating them is possible): **Quantity**, **Unit Price**, **Discount**, **Net Price**, **Tax Rate**, **Tax Amount**, and **Total Price**. | | Separate currency from amount in LI money fields | Splits the amount and the currency in the corresponding field and copies the currency into the **Line Items/Currency** field if it is not filled in. Line Items/Unit Price, Line Items/Net Price, Line Items/Total Price | | Check invoice and line items currency | Checks that the value of the **Currency** and **Line Items/Currency** fields is a supported currency. If the currency is not supported or has not been extracted, suggests currency values from the appropriate invoice region. Currency descriptions are replaced with ISO codes. | | Check LI Total Prices against Total Amount | Checks the value of the **Total Amount** field. If it is not equal to the sum of the **Line Items/Total Price** fields, suggests filling in the fields with their calculated values. | | Check LI Net Prices against Total Net Amount | Checks the value of the **Total Net Amount** field. If it is not equal to the sum of the **Line Items/Net Price** fields, suggests filling in the fields with their calculated values. | | Check Total Tax | Checks that the sum of the **Tax Amount** fields across the **Tax Rates** repeating group is equal to the value of the **Total Taxes** field.
If the values are not equal, suggests filling in the fields with the calculated values.
If the **Total Taxes** field is not filled in, fills it in with its calculated value.
For each instance of the **Tax Rates** group: Checks that (**Tax Rate** / 100 ) \* **Net Amount** is equal to **Tax Amount**. If **Tax Rate**, **Net Amount**, or **Tax Amount** is not filled in, suggests filling in these fields with their calculated values.
Removes the percent sign (%) from the value in the **Tax Rate** field. | | Check Total field | Checks that the sum of the **Total Net Amount** and **Tax Amount** fields is equal to the total invoiced amount (**Total**). If the values are not equal or if the **Total** field is not filled in, suggests filling in the fields with their calculated values. | | Check Net Total | Checks that the sum of the **Net Amount** fields across the **Tax Rates** repeating group is equal to the total amount charged for the goods or services before tax (**Total Net Amount**).
If the values are not equal, suggests filling in the fields with their calculated values. If the **Total Net Amount** is not filled in, fills it in with its calculated value. | | Set default country | If a country has not been detected on the image, specifies the default country for the invoice. For Invoice JP, the default country is JP. | | Check vendor details against database | Checks whether the appropriate entry in the Vendors data catalog has been found for the vendor bank details detected on the image.
If the values in the data catalog are different, replaces the field values with entries from the data catalog.
If the vendor was not detected correctly, the operator may select a different vendor from the data catalog manually during manual review.
The **Vendor Id**, **Name**, **Street**, **Country**, and **Business Unit ID** fields must be populated in the Vendors data catalog. | | Check purchase order number and amount | Checks that the order number and amount detected on the document image are the same as those in the PurchaseOrders data catalog. If several order numbers are detected, checks all of them and their amounts against the values in the data catalog. The **Order Number** field should be filled in the PurchaseOrders data catalog. | | Match invoice line item with order item | Checks invoice line item information against records in the PurchaseOrderItems data catalog. If the catalog contains an entry for a particular line item, fills in the corresponding **Order Item ID** field using the value from the data catalog. The **Order Item ID** and **Order Number** fields should be filled in the PurchaseOrderItems data catalog. | | Check purchase order total amount | Checks if the value in the **Total** field equals the value of the **Total** field in the **Purchase Order** group when one purchase order is found. Checks if the value in the **Total** field equals the sum of values in **Total** fields in the **Purchase Order** group when several purchase orders are found. | | Check matching of line items to unique order items | For all line items whose purchase order number is equal to the one extracted in the **Purchase Order** group, checks that the value in the **Order item ID** field in the **Line Items** group is unique for every purchase order number if the value of the **Order Checked** field is **True**. | | If order is checked make line items valid | For each item in **Purchase Order** group that has the **Order Checked** field set to **True**, compares the order number to the order number in all line items of the **Line Items** group. If they match in the **Line Items** group row, the value of the **Is Valid** field in the **Line Items** group value in that row is set to **True**. | | Copy order number | If there is only one value in the **Order Number** field in the **Purchase Order** group and the values in the **Order Number** field in the **Line Items** group are empty, copies the value of the **Order Number** field in the **Purchase Order** group to the values of the **Order Number** field in the **Line Items** group. | | Detect invoice type | Sets the type in the **Invoice Type** checkmark group. If the document is marked as credit note or if the value of the **Total** field is negative, sets the type to **Credit Note**. Otherwise, sets the type to **Invoice**. | To fill in a field with its calculated value, click the suggested value button in the value region of the field and select one of the suggestions from the drop-down list. When you update a copy of this skill to a derived skill, the rules will also be updated: * Some of the rules will get new versions. The outdated versions will receive numbered postfixes (for example, **Check item amount 1**). Review these rules and remove any unnecessary versions from the derived skill. * If you remove outdated **Tax Rate X**, **Tax Amount X**, and **Net Amount X** fields, the rules that checked them will become unnecessary. Remove those rules from the derived skill. ## Parameters The Invoice skills have default skill parameters that refer to data catalogs used for Vendor, and Purchase Order lookup. You can change the values of these parameters in Vantage or Advanced Designer to modify the field extraction process. | Parameter | Description | | :----------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Vendors | The predefined data catalog used for Vendor lookup. The default value of this parameter is **Vendors**. You can change this value by choosing another available data catalog of the same type (Document Issuer Companies). | | PurchaseOrders | The predefined data catalog used for Purchase Order lookup. The default value of this parameter is **PurchaseOrders**. You can change this value by choosing another available data catalog having the same structure. | | PurchaseOrderItems | The predefined data catalog used to check if the Purchase Order details match. The default value of this parameter is **PurchaseOrderItems**. You can change this value by choosing another available data catalog having the same structure. | # Invoice UA - Document Skill Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/built-in-skills/invoice-skills/invoice-ua Extract data from Ukrainian invoices — vendor, customer, VAT details, line items, and totals in English, Russian, and Ukrainian — for AP automation in Ukraine. The **Invoice UA** skill extracts data from Ukrainian invoices — vendor, customer, VAT details, line items, and totals — with support for English, Russian, and Ukrainian. The Invoice UA skill is a production skill. It has been fully trained on a large document set and provides high accuracy of data identification and extraction. The skill is ready to be used in production and does not require further training on your specific documents. Accuracy and straight-through processing (STP) rates can be further optimized in production through continuous learning from human-in-the-loop feedback. ## Countries and Languages | Countries | Languages | | :-------- | :-------- | | Ukraine | English | | | Russian | | | Ukrainian | ## Extracted Fields Asterisk (`*`) indicates a required field or field group. Values cannot be empty. ### Basic Information | Field | Description | | :------------- | :------------------------------------ | | Invoice Number | The number of the invoice. | | Invoice Date\* | The date when the invoice was issued. | | Total\* | The total cost of goods or services. | | Currency | The currency of the invoice. | ### Business Unit (BU) | Field | Description | | :---------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Name | The name of the business unit (invoice recipient). | | Tax ID | The tax payer registration number. | | Address | The address of the business unit (invoice recipient). The address will be extracted into this field, if no BusinessUnits data catalog is used or if the business unit has not been found in a data catalog. | | Country | The country of the business unit (invoice recipient). | | City | The address of the business unit (invoice recipient). This address format will be used if the BusinessUnits data catalog is used and the business unit has been found in the data catalog. | | Street | The address of the business unit (invoice recipient). This address format will be used if the BusinessUnits data catalog is used and the business unit has been found in the data catalog. | | Postal Code | The address of the business unit (invoice recipient). This address format will be used if the BusinessUnits data catalog is used and the business unit has been found in the data catalog. | | ID | The unique identifier of the business unit in an external system. **Note:** This field can only be obtained from the BusinessUnits data catalog. | ### Vendor | Field | Description | | :-------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Name | The vendor's name. | | Tax ID | International TAX payer registration number. | | National Tax ID | The TAX payer registration number inside the origin country. | | IBAN | The vendor's international bank account number. | | Bank Account | The vendor's bank account. | | Bank Code | The vendor's bank code. | | Address | The vendor's address. The address will be extracted into this field, if no Vendors data catalog is used or if the vendor has not been found in a data catalog. | | Country | The vendor's country. | | City | The vendor's address. This address format will be used if the Vendors data catalog is used and if the vendor has been found in the data catalog. | | Street | The vendor's address. This address format will be used if the Vendors data catalog is used and if the vendor has been found in the data catalog. | | Postal Code | The vendor's address. This address format will be used if the Vendors data catalog is used and if the vendor has been found in the data catalog. | | ID | The vendor's unique identifier in an external system. **Note:** This field can only be obtained from the Vendors data catalog. | ### Invoice Details | Field | Description | | :-------------- | :------------------------------------------------------- | | Delivery Date | The date the goods were delivered or services performed. | | Due Date | The date by which the invoice should be paid. | | Reversed Charge | Indicates that a reverse charge is applied. | ### Taxes | Field | Description | | :----------------- | :------------------------------------------------ | | Total Net Amount | The total cost of goods and services without tax. | | Total Taxes | The total tax amount. | | Non Taxable Amount | The amount on which no tax is payable. | #### Tax Rates (repeating group) For each tax group: | Field | Description | | :--------- | :------------------------------------ | | Net Amount | Cost of goods or services without tax | | Tax Amount | Tax charged | | Tax Rate | Tax rate | ### Invoice Type | Field | Description | | :---------- | :------------------------------------------------- | | Invoice | Specifies the **Invoice** type of the invoice. | | Credit Note | Specifies the **Credit Note** type of the invoice. | ### Purchase Order | Field | Description | | :------------ | :---------------------------------------------------------------------------------------------------------------------------------------------- | | Order Number | The number of the purchase order. | | Total | The cost of the goods or services listed in the purchase order. **Note:** This field can only be obtained from the PurchaseOrders data catalog. | | Order Checked | Indicates whether the order number is verified. The value of the field can be **True** or **False**. | ### Line Items (repeating group) | Field | Description | | :-------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Order Number | The number of the purchase order. | | Order Date | The date when the purchase order was created. | | Position | The number of the line item in the list. | | Article Number Vendor | The article number or code in the vendors's database. | | Article Number BU | The article number or code in the business unit's database. | | Description | A description of the line item. | | Quantity | The number of units purchased. | | Unit of Measurement | The unit of measurement used for the goods. | | Unit Price | The price of one item of goods. | | Discount Percentage | The discount percentage on the initial line item price. | | Discount | Discount applicable to the line item. | | Net Price | The price of the line item without tax. | | Tax Rate | The tax rate for the line item. | | Tax Amount | The amount of tax payable on the line item. | | Tax Code | The code of the tax. | | Total Price | The price of the line item including tax. | | Currency | The currency of the line item. | | Is Valid | Indicates whether the order number in the **Line Item** group matches any checked order number in the **Purchase Order** group. The value of the field can be **True** or **False**. | | Order Item ID | The unique line item identifier. **Note:** This field can only be obtained from the PurchaseOrderItems data catalog. | ### Ship To | Field | Description | | :------ | :------------------------------------------------ | | Name | The name of the recipient receiving the goods. | | Address | The address of the recipient receiving the goods. | ## Key Fields * Vendor/Name * Invoice Date * Invoice Number * Total * Currency ## Validation Rules | Rule | Description | | :------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Total is required field | Checks whether the **Total** field is filled in. If it is not, displays a message saying that it is a required field. | | Separate currency from amount in money fields | Splits the amount and the currency in fields containing currency amounts and copies the currency into the **Currency** field if it is empty. | | Invoice date is required | Checks whether the **Invoice Date** field is filled in. If it is not, displays a message saying that it is a required field. | | Currency is required | Checks whether the **Currency** field has been detected on the document. If not, displays a message saying that it is a required field. | | Vendor Tax ID is required | Checks whether the vendor **Tax ID** field is filled in. If it is not, displays a message saying that it is a required field. | | Check item amount | Checks that:
The number of units of each type (**Quantity**) multiplied by the unit price (**Unit Price**) is equal to the total amount charged before tax (**Net Price**) minus the applicable discount (**Discount**).
The total amount charged before tax (**Net Price**) multiplied by the tax rate (**Tax Rate**) is equal to the value of the **Tax Amount** field.
The sum of the values of the **Net Price** and **Tax Amount** fields is equal to the value of the **Total Price** field.
For each invoice line item, suggests values for the following fields (wherever calculating them is possible): **Quantity**, **Unit Price**, **Discount**, **Net Price**, **Tax Rate**, **Tax Amount**, and **Total Price**. | | Separate currency from amount in LI money fields | Splits the amount and the currency in the corresponding field and copies the currency into the **Line Items/Currency** field if it is not filled in. Line Items/Unit Price, Line Items/Net Price, Line Items/Total Price | | Check invoice and line items currency | Checks that the value of the **Currency** and **Line Items/Currency** fields is a supported currency. If the currency is not supported or has not been extracted, suggests currency values from the appropriate invoice region. Currency descriptions are replaced with ISO codes. | | Check LI Total Prices against Total Amount | Checks the value of the **Total Amount** field. If it is not equal to the sum of the **Line Items/Total Price** fields, suggests filling in the fields with their calculated values. | | Check LI Net Prices against Total Net Amount | Checks the value of the **Total Net Amount** field. If it is not equal to the sum of the **Line Items/Net Price** fields, suggests filling in the fields with their calculated values. | | Check Total Tax | Checks that the sum of the **Tax Amount** fields across the **Tax Rates** repeating group is equal to the value of the **Total Taxes** field.
If the values are not equal, suggests filling in the fields with the calculated values. If the **Total Taxes** field is not filled in, fills it in with its calculated value.
For each instance of the **Tax Rates** group: Checks that (**Tax Rate** / 100 ) \* **Net Amount** is equal to **Tax Amount**.
If **Tax Rate**, **Net Amount**, or **Tax Amount** is not filled in, suggests filling in these fields with their calculated values. Removes the percent sign (%) from the value in the **Tax Rate** field. | | Check Total field | Checks that the sum of the **Total Net Amount** and **Tax Amount** fields is equal to the total invoiced amount (**Total**). If the values are not equal or if the **Total** field is not filled in, suggests filling in the fields with their calculated values. | | Check Net Total | Checks that the sum of the **Net Amount** fields across the **Tax Rates** repeating group is equal to the total amount charged for the goods or services before tax (**Total Net Amount**). If the values are not equal, suggests filling in the fields with their calculated values. If the **Total Net Amount** is not filled in, fills it in with its calculated value. | | Set default country | If a country has not been detected on the image, specifies the default country for the invoice. For Invoice UA, the default country is UA. | | Check vendor details against database | Checks whether the appropriate entry in the Vendors data catalog has been found for the vendor bank details detected on the image. If the values in the data catalog are different, replaces the field values with entries from the data catalog. If the vendor was not detected correctly, the operator may select a different vendor from the data catalog manually during manual review. The **Vendor Id**, **Name**, **Street**, **Country**, and **Business Unit ID** fields should be filled in the Vendors data catalog. | | Business unit must be found in database | Checks that the business unit details detected on the document image are the same as those in the BusinessUnits data catalog. If some entries are different, replaces the field values with values from the data catalog. If the business unit was not detected correctly, the operator may select a different business unit from the data catalog manually during manual review. The **Business Unit Id**, **Name**, **Street**, and **Country** fields should be filled in the BusinessUnits data catalog. | | Check purchase order number and amount | Checks that the order number and amount detected on the document image are the same as those in the PurchaseOrders data catalog. If several order numbers are detected, checks all of them and their amounts against the values in the data catalog. The **Order Number** field should be filled in the PurchaseOrders data catalog. | | Match invoice line item with order item | Checks invoice line item information against records in the PurchaseOrderItems data catalog. If the catalog contains an entry for a particular line item, fills in the corresponding **Order Item ID** field using the value from the data catalog. The **Order Item ID** and **Order Number** fields should be filled in the PurchaseOrderItems data catalog. | | Check purchase order total amount | Checks if the value in the **Total** field equals the value of the **Total** field in the **Purchase Order** group when one purchase order is found. Checks if the value in the **Total** field equals the sum of values in **Total** fields in the **Purchase Order** group when several purchase orders are found. | | Check matching of line items to unique order items | For all line items whose purchase order number is equal to the one extracted in the **Purchase Order** group, checks that the value in the **Order item ID** field in the **Line Items** group is unique for every purchase order number if the value of the **Order Checked** field is **True**. | | If order is checked make line items valid | For each item in **Purchase Order** group that has the **Order Checked** field set to **True**, compares the order number to the order number in all line items of the **Line Items** group. If they match in the **Line Items** group row, the value of the **Is Valid** field in the **Line Items** group value in that row is set to **True**. | | Copy order number | If there is only one value in the **Order Number** field in the **Purchase Order** group and the values in the **Order Number** field in the **Line Items** group are empty, copies the value of the **Order Number** field in the **Purchase Order** group to the values of the **Order Number** field in the **Line Items** group. | | Detect invoice type | Sets the type in the **Invoice Type** checkmark group. If the document is marked as credit note or if the value of the **Total** field is negative, sets the type to **Credit Note**. Otherwise, sets the type to **Invoice**. | | Reversed Charge field is empty or completed | If the document contains references to reversed charges, checks the values of the taxes fields. If they are empty, marks the **Reversed Charge** checkmark. **Note:** Does not apply to **AU-NZ**, **CA**, **US**, and **JP** regions. | To fill in a field with its calculated value, click the suggested value button in the value region of the field and select one of the suggestions from the drop-down list. When you update a copy of this skill to a derived skill, the rules will also be updated: * Some of the rules will get new versions. The outdated versions will receive numbered postfixes (for example, **Check item amount 1**). Review these rules and remove any unnecessary versions from the derived skill. * If you remove outdated **Tax Rate X**, **Tax Amount X**, and **Net Amount X** fields, the rules that checked them will become unnecessary. Remove those rules from the derived skill. ## Parameters The Invoice skills have default skill parameters that refer to data catalogs used for Vendor, Business Unit, and Purchase Order lookup. You can change the values of these parameters in Vantage or Advanced Designer to modify the field extraction process. | Parameter | Description | | :----------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Vendors | The predefined data catalog used for Vendor lookup. The default value of this parameter is **Vendors**. You can change this value by choosing another available data catalog of the same type (Document Issuer Companies). | | BusinessUnits | The predefined data catalog used for Business Unit lookup. The default value of the parameter is **BusinessUnits**. You can change this value by choosing another available data catalog of the same type (Document Receiver Companies). **Note:** This parameter is not available for the **Invoice JP** skill. | | PurchaseOrders | The predefined data catalog used for Purchase Order lookup. The default value of this parameter is **PurchaseOrders**. You can change this value by choosing another available data catalog having the same structure. | | PurchaseOrderItems | The predefined data catalog used to check if the Purchase Order details match. The default value of this parameter is **PurchaseOrderItems**. You can change this value by choosing another available data catalog having the same structure. | # Invoice US - Document Skill Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/built-in-skills/invoice-skills/invoice-us Extract data from US invoices — vendor, customer, sales tax, line items, and totals — for accounts payable automation across the United States. The **Invoice US** skill extracts data from US invoices — vendor, customer, sales tax, line items, and totals — for accounts payable automation across the United States. The Invoice US skill is a production skill. It has been fully trained on a large document set and provides high accuracy of data identification and extraction. The skill is ready to be used in production and does not require further training on your specific documents. Accuracy and straight-through processing (STP) rates can be further optimized in production through continuous learning from human-in-the-loop feedback. ## Countries and Languages | Countries | Languages | | :-------- | :-------- | | USA | English | ## Extracted Fields Asterisk (`*`) indicates a required field or field group. Values cannot be empty. ### Basic Information | Field | Description | | :------------- | :------------------------------------ | | Invoice Number | The number of the invoice. | | Invoice Date\* | The date when the invoice was issued. | | Total\* | The total cost of goods or services. | | Currency | The currency of the invoice. | ### Business Unit (BU) | Field | Description | | :------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Name | The name of the business unit (invoice recipient). | | Address | The address of the business unit (invoice recipient). The address will be extracted into this field, if no BusinessUnits data catalog is used or if the business unit has not been found in a data catalog. | | Country | The country of the business unit (invoice recipient). | | State | The address of the business unit (invoice recipient). **Note:** These fields can be obtained either by parsing the **Business Unit/Address** field value or from the BusinessUnits data catalog. | | City | The address of the business unit (invoice recipient). **Note:** These fields can be obtained either by parsing the **Business Unit/Address** field value or from the BusinessUnits data catalog. | | Street | The address of the business unit (invoice recipient). **Note:** These fields can be obtained either by parsing the **Business Unit/Address** field value or from the BusinessUnits data catalog. | | ZIP Code | The address of the business unit (invoice recipient). **Note:** These fields can be obtained either by parsing the **Business Unit/Address** field value or from the BusinessUnits data catalog. | | ID | The unique identifier of the business unit in an external system. **Note:** This field can only be obtained from the BusinessUnits data catalog. | ### Vendor | Field | Description | | :----------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Name | The vendor's name. | | Tax ID | The tax payer registration number. | | Address | The vendor's address. The address will be extracted into this field, if no Vendors data catalog is used or if the vendor has not been found in a data catalog. | | Country | The vendor's country. | | State | The vendor's address. **Note:** These fields can be obtained either by parsing the **Vendors/Address** field value or from the Vendors data catalog. | | City | The vendor's address. **Note:** These fields can be obtained either by parsing the **Vendors/Address** field value or from the Vendors data catalog. | | Street | The vendor's address. **Note:** These fields can be obtained either by parsing the **Vendors/Address** field value or from the Vendors data catalog. | | ZIP Code | The vendor's address. **Note:** These fields can be obtained either by parsing the **Vendors/Address** field value or from the Vendors data catalog. | | Bank Account | The vendor's bank account. | | Bank Code | The vendor's bank code. | | ID | The vendor's unique identifier in an external system. **Note:** This field can only be obtained from the Vendors data catalog. | ### Invoice Details | Field | Description | | :------------ | :------------------------------------------------------- | | Delivery Date | The date the goods were delivered or services performed. | | Due Date | The date by which the invoice should be paid. | ### Taxes | Field | Description | | :----------------- | :------------------------------------------------ | | Total Net Amount | The total cost of goods and services without tax. | | Total Taxes | The total tax amount. | | Non Taxable Amount | The amount on which no tax is payable. | #### Tax Rates (repeating group) For each tax group: | Field | Description | | :--------- | :------------------------------------ | | Net Amount | Cost of goods or services without tax | | Tax Amount | Tax charged | | Tax Rate | Tax rate | ### Invoice Type | Field | Description | | :---------- | :------------------------------------------------- | | Invoice | Specifies the **Invoice** type of the invoice. | | Credit Note | Specifies the **Credit Note** type of the invoice. | ### Purchase Order | Field | Description | | :------------ | :---------------------------------------------------------------------------------------------------------------------------------------------- | | Order Number | The number of the purchase order. | | Total | The cost of the goods or services listed in the purchase order. **Note:** This field can only be obtained from the PurchaseOrders data catalog. | | Order Checked | Indicates whether the order number is verified. The value of the field can be **True** or **False**. | ### Line Items (repeating group) | Field | Description | | :-------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Order Number | The number of the purchase order. | | Is Valid | Indicates whether the order number in the **Line Item** group matches any checked order number in the **Purchase Order** group. The value of the field can be **True** or **False**. | | Order Date | The date when the purchase order was created. | | Position | The number of the line item in the list. | | Article Number Vendor | The article number or code from a database of vendors. | | Article Number BU | The article number or code from a database of business units. | | Description | A description of the line item. | | Quantity | The number of units purchased. | | Unit of Measurement | The unit of measurement used for the goods. | | Unit Price | The price of one item of goods. | | Discount Percentage | The discount percentage on the initial line item price. | | Discount | Discount applicable to the line item. | | Net Price | The price of the line item without tax. | | Tax Rate | The tax rate for the line item. | | Tax Amount | The amount of tax payable on the line item. | | Tax Code | The code of the tax. | | Total Price | The price of the line item including tax. | | Currency | The currency of the line item. | | Order Item ID | The unique line item identifier. **Note:** This field can only be obtained from the PurchaseOrderItems data catalog. | ### Ship To | Field | Description | | :------- | :------------------------------------------------ | | Name | The name of the recipient receiving the goods. | | Address | The address of the recipient receiving the goods. | | Country | The address of the recipient receiving the goods. | | Street | The address of the recipient receiving the goods. | | State | The address of the recipient receiving the goods. | | City | The address of the recipient receiving the goods. | | Zip Code | The address of the recipient receiving the goods. | Older versions of this skill extracted the tax information into fields named **Tax Rate X**, **Tax Amount X**, and **Net Amount X**. In Vantage 2.4 and later, these fields are grouped into a repeating group called **Tax Rates**. If you are updating a copy of a built-in skill, check that the new **Tax Rates** group works for you. If you are satisfied with the results, remove the individual fields used in the older version. If not, create new fields to suit your processing scenario. ## Key Fields * Vendor/Name * Invoice Date * Invoice Number * Total * Currency ## Validation Rules | Rule | Description | | :------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Total is required field | Checks whether the **Total** field is filled in. If it is not, displays a message saying that it is a required field. | | Separate currency from amount in money fields | Splits the amount and the currency in fields containing currency amounts and copies the currency into the **Currency** field if it is empty. | | Invoice date is required | Checks whether the **Invoice Date** field is filled in. If it is not, displays a message saying that it is a required field. | | Check item amount | Checks that:
The number of units of each type (**Quantity**) multiplied by the unit price (**Unit Price**) is equal to the total amount charged before tax (**Net Price**) minus the applicable discount (**Discount**).
The total amount charged before tax (**Net Price**) multiplied by the tax rate (**Tax Rate**) is equal to the value of the **Tax Amount** field.
The sum of the values of the **Net Price** and **Tax Amount** fields is equal to the value of the **Total Price** field.
For each invoice line item, suggests values for the following fields (wherever calculating them is possible): **Quantity**, **Unit Price**, **Discount**, **Net Price**, **Tax Rate**, **Tax Amount**, and **Total Price**. | | Separate currency from amount in LI money fields | Splits the amount and the currency in the corresponding field and copies the currency into the **Line Items/Currency** field if it is not filled in. Line Items/Unit Price, Line Items/Net Price, Line Items/Total Price | | Check invoice and line items currency | Checks that the value of the **Currency** and **Line Items/Currency** fields is a supported currency. If the currency is not supported or has not been extracted, suggests currency values from the appropriate invoice region. Currency descriptions are replaced with ISO codes. | | Check LI Total Prices against Total Amount | Checks the value of the **Total Amount** field. If it is not equal to the sum of the **Line Items/Total Price** fields, suggests filling in the fields with their calculated values. | | Check LI Net Prices against Total Net Amount | Checks the value of the **Total Net Amount** field. If it is not equal to the sum of the **Line Items/Net Price** fields, suggests filling in the fields with their calculated values. | | Check Total Tax | Checks that the sum of the **Tax Amount** fields across the **Tax Rates** repeating group is equal to the value of the **Total Taxes** field.
If the values are not equal, suggests filling in the fields with the calculated values. If the **Total Taxes** field is not filled in, fills it in with its calculated value.
For each instance of the **Tax Rates** group: Checks that (**Tax Rate** / 100 ) \* **Net Amount** is equal to **Tax Amount**.
If **Tax Rate**, **Net Amount**, or **Tax Amount** is not filled in, suggests filling in these fields with their calculated values. Removes the percent sign (%) from the value in the **Tax Rate** field. | | Check Total field | Checks that the sum of the **Total Net Amount** and **Tax Amount** fields is equal to the total invoiced amount (**Total**). If the values are not equal or if the **Total** field is not filled in, suggests filling in the fields with their calculated values. | | Check Net Total | Checks that the sum of the **Net Amount** fields across the **Tax Rates** repeating group is equal to the total amount charged for the goods or services before tax (**Total Net Amount**). If the values are not equal, suggests filling in the fields with their calculated values. If the **Total Net Amount** is not filled in, fills it in with its calculated value. | | Set default country | If a country has not been detected on the image, specifies the default country for the invoice. For Invoice US, the default country is US. | | Check vendor details against database | Checks whether the appropriate entry in the Vendors data catalog has been found for the vendor bank details detected on the image. If the values in the data catalog are different, replaces the field values with entries from the data catalog. If the vendor was not detected correctly, the operator may select a different vendor from the data catalog manually during manual review. The **Vendor Id**, **Name**, **Street**, **Country**, and **Business Unit ID** fields should be filled in the Vendors data catalog. | | Business unit must be found in database | Checks that the business unit details detected on the document image are the same as those in the BusinessUnits data catalog. If some entries are different, replaces the field values with values from the data catalog. If the business unit was not detected correctly, the operator may select a different business unit from the data catalog manually during manual review. The **Business Unit Id**, **Name**, **Street**, and **Country** fields should be filled in the BusinessUnits data catalog. | | Check purchase order number and amount | Checks that the order number and amount detected on the document image are the same as those in the PurchaseOrders data catalog. If several order numbers are detected, checks all of them and their amounts against the values in the data catalog. The **Order Number** field should be filled in the PurchaseOrders data catalog. | | Match invoice line item with order item | Checks invoice line item information against records in the PurchaseOrderItems data catalog. If the catalog contains an entry for a particular line item, fills in the corresponding **Order Item ID** field using the value from the data catalog. The **Order Item ID** and **Order Number** fields should be filled in the PurchaseOrderItems data catalog. | | Check purchase order total amount | Checks if the value in the **Total** field equals the value of the **Total** field in the **Purchase Order** group when one purchase order is found. Checks if the value in the **Total** field equals the sum of values in **Total** fields in the **Purchase Order** group when several purchase orders are found. | | Check matching of line items to unique order items | For all line items whose purchase order number is equal to the one extracted in the **Purchase Order** group, checks that the value in the **Order item ID** field in the **Line Items** group is unique for every purchase order number if the value of the **Order Checked** field is **True**. | | If order is checked make line items valid | For each item in **Purchase Order** group that has the **Order Checked** field set to **True**, compares the order number to the order number in all line items of the **Line Items** group. If they match in the **Line Items** group row, the value of the **Is Valid** field in the **Line Items** group value in that row is set to **True**. | | Copy order number | If there is only one value in the **Order Number** field in the **Purchase Order** group and the values in the **Order Number** field in the **Line Items** group are empty, copies the value of the **Order Number** field in the **Purchase Order** group to the values of the **Order Number** field in the **Line Items** group. | | Detect invoice type | Sets the type in the **Invoice Type** checkmark group. If the document is marked as credit note or if the value of the **Total** field is negative, sets the type to **Credit Note**. Otherwise, sets the type to **Invoice**. | | Reversed Charge field is empty or completed | If the document contains references to reversed charges, checks the values of the taxes fields. If they are empty, marks the **Reversed Charge** checkmark. **Note:** Does not apply to **AU-NZ**, **CA**, **US**, and **JP** regions. | To fill in a field with its calculated value, click the suggested value button in the value region of the field and select one of the suggestions from the drop-down list. When you update a copy of this skill to a derived skill, the rules will also be updated: * Some of the rules will get new versions. The outdated versions will receive numbered postfixes (for example, **Check item amount 1**). Review these rules and remove any unnecessary versions from the derived skill. * If you remove outdated **Tax Rate X**, **Tax Amount X**, and **Net Amount X** fields, the rules that checked them will become unnecessary. Remove those rules from the derived skill. ## Parameters The Invoice skills have default skill parameters that refer to data catalogs used for Vendor, Business Unit, and Purchase Order lookup. You can change the values of these parameters in Vantage or Advanced Designer to modify the field extraction process. | Parameter | Description | | :------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Vendors | The predefined data catalog used for Vendor lookup. The default value of this parameter is **Vendors**. You can change this value by choosing another available data catalog of the same type (Document Issuer Companies). | | BusinessUnits | The predefined data catalog used for Business Unit lookup. The default value of the parameter is **BusinessUnits**. You can change this value by choosing another available data catalog of the same type (Document Receiver Companies). **Note:** This parameter is not available for the **Invoice JP** skill. | | PurchaseOrders | The predefined data catalog used for Purchase Order lookup. The default value of this parameter is **PurchaseOrders**. You can change this value by choosing another available data catalog having the same structure. | | PurchaseOrderDetails | The predefined data catalog used to check if the Purchase Order details match. The default value of this parameter is **PurchaseOrderDetails**. You can change this value by choosing another available data catalog having the same structure. | # Lease Agreement (US) - Document Skill Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/built-in-skills/lease-agreement-us Extract data from US lease agreements — landlord, tenant, property, rental terms, and lease duration — for commercial and residential real estate workflows. The **Lease Agreement (US)** skill extracts data from US lease agreements — the legal documents that set out rental terms between a property owner (landlord) and a renter (tenant), covering both commercial and residential real estate. The Lease Agreement (US) skill is a preview skill. It has been trained on a limited set of documents and is designed to help you quickly get started with processing US lease agreements. The Lease Agreement (US) skill cannot be trained on additional documents. This skill recognizes handwritten text. The option is enabled by default. If you do not import handwritten forms, disable the **Handwritten** option in the skill settings. ## Countries and Languages | Countries | Languages | | :-------- | :-------- | | USA | English | ## Extracted Fields | Field | Description | | :--------------------------------- | :------------------------------------------------------------------------------------------------------------------------------- | | Preamble Segment | Preamble. | | Landlord Legal Name | Name of the landlord organization. | | Tenant Legal Name | Name of the tenant organization. | | Agreement Date | Agreement date. | | Premises Segment | Property description. | | Premises Address (repeating field) | Property address. | | Initial Term Segment | Lease term. | | Initial Term | Lease duration. | | Renewal Option Segment | Option to extend the lease. | | Renewal Term | Duration of the additional rental period when extending the lease. | | Use (repeating field) | Specifies any use restrictions. | | Holdover | Description of the conditions for cases when a tenant continues to occupy and use the premises after the term of the lease ends. | | Governing Law Segment | Governing law. | | Governing Law | Specifies the state whose law governs the agreement and where the property is located. | # Loan Application - Document Skill Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/built-in-skills/loan-application Extract data from IRS Form 1003 (Uniform Residential Loan Application) — borrower, co-borrower, loan terms, and property details — for US mortgage origination. The **Loan Application** skill extracts data from Form 1003 (Uniform Residential Loan Application, URLA) — the standard form completed as part of US mortgage loan applications, capturing personal information about the borrower and co-borrower, loan terms, and property details. The Loan Application skill is a preview skill. It has been trained on a limited set of documents and is designed to help you quickly get started with processing loan applications. For production use, you may need to uptrain the skill with your own document samples. ## Countries and Languages | Countries | Languages | | :-------- | :-------- | | USA | English | ## Extracted Fields ### Terms of Loan and Property Information #### Type of Mortgage | Field | Description | | :------------------- | :------------------------------------------------ | | Mortgage Applied for | Mortgage type. | | Agency Case Number | Mortgage identifier in MISMO format. | | Lender Case Number | The lender's internal system mortgage identifier. | #### Terms of Loan | Field | Description | | :---------------- | :-------------------------------- | | Amount | The total amount of the loan. | | Interest Rate | The interest rate. | | Number of Months | The term of the loan (in months). | | Amortization Type | The loan payment type. | #### Property Information | Field | Description | | :------------------------------------ | :----------------------------------------------------------------------------------------------------------------------------- | | Subject Property Address | The address of the financed property. | | Number of Units | The number of property units being financed (e.g., number of apartments). | | Legal Description of Subject Property | A legal description of the financed property (e.g., number of rooms, property size, the year the property was built in, etc.). | #### Additional Terms | Field | Description | | :--------------- | :----------------------------------------------------------------- | | Purpose of Loan | The purpose of the loan (purchase, construction, refinance, etc.). | | Property Will Be | The purpose of the financed property. | ### Borrower Information | Field | Description | | :-------------- | :------------------------------------- | | Borrower's Name | The borrower's name. | | SSN | The borrower's Social Security Number. | | Home Phone | The borrower's home phone number. | | Date of Birth | The borrower's date of birth. | #### Borrower Employment Information | Field | Description | | :------------------ | :----------------------------------------------------- | | Name of Employer | The name of the borrower's employing organization. | | Address of Employer | The address of the borrower's employing organization. | | Position | The borrower's job position. | | Years in Job | How long the borrower has worked for the organization. | | Dates | The borrower's employment start and end dates. | | Self Employed | Specifies whether the borrower is self-employed. | ### Co-Borrower Information | Field | Description | | :----------------- | :---------------------------------------- | | Co-Borrower's Name | The co-borrower's name. | | SSN | The co-borrower's Social Security Number. | | Home Phone | The co-borrower's home phone number. | | Date of Birth | The co-borrower's date of birth. | #### Co-Borrower Employment Information | Field | Description | | :------------------ | :-------------------------------------------------------- | | Name of Employer | The name of the co-borrower's employing organization. | | Address of Employer | The address of the co-borrower's employing organization. | | Position | The co-borrower's job position. | | Years in Job | How long the co-borrower has worked for the organization. | | Dates | The co-borrower's employment start and end dates. | | Self Employed | Specifies whether the co-borrower is self-employed. | ### Income and Expenses #### Monthly Income and Housing Expense | Field | Description | | :------------------------------------------------ | :--------------------------------------------------------------- | | Gross Monthly Income (Borrower) | The borrower's monthly income before taxes. | | Gross Monthly Income (Co-Borrower) | The co-borrower's monthly income before taxes. | | Gross Monthly Income Total | The combined monthly income of the borrowers. | | Combined Monthly Housing Expense Total (Present) | The current combined monthly housing expenses of the borrowers. | | Combined Monthly Housing Expense Total (Proposed) | The proposed combined monthly housing expenses of the borrowers. | #### Assets and Liabilities | Field | Description | | :---------------- | :------------------------------------------------------------------------------------ | | Total Assets | The total combined assets of the borrowers (monetary value). | | Total Liabilities | The total combined liabilities of the borrowers (monetary value). | | Net Worth | The total combined net worth of the borrowers (**Total Assets − Total Liabilities**). | ### Details of Transaction | Field | Description | | :------------------------------ | :------------------------------------------------------------------------------------------------ | | Box a - Purchase Price | The purchase price of the financed property. | | Box i - Total Costs | The total cost of the financed property, including all additional charges (e.g., insurance fees). | | Box o - Loan Amount | The total amount loaned out. | | Loan Origination Company's Name | The name of the lending organization. | ## Key Fields * Lender Case Number * Amount * Borrower's Name * Borrower Information/SSN ## Validation Rules | Rule | Description | | :------------------------- | :------------------------------------------------------------------------------------------------------------- | | Check Checkmark Borrower | Sets the Borrower **Employment Information/Self Employed** field to **false** if marked as "N" on the form. | | Check Checkmark CoBorrower | Sets the Co-Borrower **Employment Information/Self Employed** field to **false** if marked as "N" on the form. | # Loan Estimate - Document Skill Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/built-in-skills/loan-estimate Extract data from Loan Estimate forms — loan terms, projected payments, closing costs, and APR disclosures — required by TRID for US mortgage applications. The **Loan Estimate** skill extracts data from Loan Estimate forms — the disclosures lenders provide to potential borrowers under the TILA-RESPA Integrated Disclosure (TRID) rule, covering loan terms and a detailed list of charges required to close the deal. The Loan Estimate skill is a preview skill. It has been trained on a limited set of documents and is designed to help you quickly get started with processing loan estimates. For production use, you may need to uptrain the skill with your own document samples. ## Countries and Languages | Countries | Languages | | :-------- | :-------- | | USA | English | ## Extracted Fields ### Basic Information | Field | Description | | :--------------------- | :------------------------------------------------------------------- | | Date Issued | Date of signing. | | Applicant 1 | The borrower's name. | | Applicant 2 (optional) | The co-borrower's name (optional field). | | Sale Price | The sale price of the financed property. | | Loan Term | The term of the loan. | | Purpose | The purpose of the loan (purchase, construction, refinancing, etc.). | | Product | The payment type. | | Loan Type | The loan type. | | Loan ID | The loan identifier. | | Rate Lock | Specifies whether the interest rate is locked. | ### Applicant Address | Field | Description | | :------- | :---------------------- | | Street | The borrower's address. | | City | The borrower's address. | | State | The borrower's address. | | ZIP Code | The borrower's address. | ### Property Address | Field | Description | | :------- | :------------------------------------ | | Street | The address of the financed property. | | City | The address of the financed property. | | State | The address of the financed property. | | ZIP Code | The address of the financed property. | ### Loan Terms | Field | Description | | :---------------------------------------- | :-------------------------------------------------------------------------- | | Loan Amount | The total amount of the loan. | | Loan Amount Can Increase | Specifies whether the loan amount can be increased after registration. | | Interest Rate | The interest rate. | | Interest Rate Can Increase | Specifies whether the interest rate can be increased after registration. | | Monthly Principal & Interest | The monthly payment (both principal and interest). | | Monthly Principal & Interest Can Increase | Specifies whether the monthly payments can be increased after registration. | | Prepayment Penalty | Specifies whether there are any prepayment penalties. | | Balloon Payment | Specifies whether the loan is a balloon payment mortgage. | ### Payment Calculation | Field | Description | | :------------------------------ | :------------------------------------------------------------------------------------------------------ | | Years | The period during which the monthly payment size is locked. | | Principal & Interest | The monthly mortgage payment size (both principal and interest). | | Mortgage Insurance | The monthly insurance fee. | | Estimated Escrow | The estimated escrow fee. | | Estimated Total Monthly Payment | The estimated total monthly payment (**Principal & Interest + Mortgage Insurance + Estimated Escrow**). | ### Taxes and Insurance | Field | Description | | :-------------------------------------- | :--------------------------------------- | | Estimated Taxes Insurance & Assessments | The estimated tax and insurance charges. | | Property Taxes | The property tax. | | Homeowner's Insurance Taxes | The homeowner's insurance tax. | | Other | Other payments. | ### Closing Costs | Field | Description | | :---------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Estimated Closing Costs | The estimated closing charges. | | Estimated Cash to Close | The total estimated amount required to close the deal – including the down payment, the deposit, and other charges (the sum of all fields in the **Calculating Cash to Close** group). | ### Loan Costs #### Section A - Origination Charges | Field | Description | | :-------------------------------------- | :---------------------------- | | Section A - Origination Charges - Total | Section A: Registration fees. | | Section A - % of Loan Amount (Points) | Section A: Registration fees. | | Section A - Underwriting Fee | Section A: Registration fees. | #### Section B - Services You Cannot Shop for | Field | Description | | :----------------------------------------------- | :--------------------------------------------------------------------------- | | Section B - Services You Cannot Shop for - Total | Section B: Fees charged by third parties selected exclusively by the lender. | | Section B - Appraisal Fee | Section B: Fees charged by third parties selected exclusively by the lender. | | Section B - Credit Report Fee | Section B: Fees charged by third parties selected exclusively by the lender. | #### Section C and D | Field | Description | | :------------------------------------ | :----------------------------------------------------------------------------- | | Section C - Services You Can Shop for | Section C: Fees charged by third parties that can be selected by the borrower. | | Section D - Total Loan Costs (A+B+C) | The total combined fees for sections A, B, and C. | ### Other Costs | Field | Description | | :---------------------------------------------------- | :------------------------------------------- | | Section E - Taxes and Other Government Fees - Total | Other fees (taxes, insurance charges, etc.). | | Section E - Recording Fees and Other Taxes | Other fees (taxes, insurance charges, etc.). | | Section E - Transfer Taxes | Other fees (taxes, insurance charges, etc.). | | Section F - Prepaids - Total | Other fees (taxes, insurance charges, etc.). | | Section F - Homeowner's Insurance Premium | Other fees (taxes, insurance charges, etc.). | | Section F - Mortgage Insurance Premium | Other fees (taxes, insurance charges, etc.). | | Section F - Prepaid Interest | Other fees (taxes, insurance charges, etc.). | | Section F - Property Taxes | Other fees (taxes, insurance charges, etc.). | | Section G - Initial Escrow Payment at Closing - Total | Other fees (taxes, insurance charges, etc.). | | Section G - Homeowner's Insurance | Other fees (taxes, insurance charges, etc.). | | Section G - Mortgage Insurance | Other fees (taxes, insurance charges, etc.). | | Section G - Property Tax | Other fees (taxes, insurance charges, etc.). | | Section H - Other - Total | Other fees (taxes, insurance charges, etc.). | | Section I - Total Other Costs (E+F+G+H) | Other fees (taxes, insurance charges, etc.). | | Section J - Total Closing Costs - Total | Other fees (taxes, insurance charges, etc.). | | Section J - D+I | Other fees (taxes, insurance charges, etc.). | | Section J - Lender Credits | Other fees (taxes, insurance charges, etc.). | ### Calculating Cash to Close | Field | Description | | :---------------------------------- | :------------------------------- | | Total Closing Costs (J) | A detailed list of closing fees. | | Estimated Closing Costs Financed | A detailed list of closing fees. | | Down Payment or Funds from Borrower | A detailed list of closing fees. | | Deposit | A detailed list of closing fees. | | Funds for Borrower | A detailed list of closing fees. | | Seller Credits | A detailed list of closing fees. | | Adjustments and Other Credits | A detailed list of closing fees. | | Estimated Cash to Close | The estimated total closing fee. | ### Additional Information | Field | Description | | :----------- | :------------------------------------- | | Loan Officer | The name of the lender's loan officer. | ### Comparisons | Field | Description | | :------------------------------ | :------------------------------------------------------------------------------------------------------------------------ | | In 5 Years - Total | The total amount that is estimated to be paid after 5 years (including interest, insurance, and other monthly fees). | | In 5 Years - Principal | The total amount that is estimated to be paid towards the original loan amount (i.e., excluding interest payments). | | Annual Percentage Rate (APR) | The total annual amount of interest paid – interest payments, taxes, and other fees (i.e., excluding principal payments). | | Total Interest Percentage (TIP) | The total amount of interest estimated to be paid by the borrower over the term of the loan. | ## Key Fields * Date Issued * Applicant 1 * Loan ID * Loan Amount # Mortgage Note - Document Skill (Preview) Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/built-in-skills/mortgage-note Extract data from Mortgage Note documents — loan terms, monthly payments, interest rate, and late-payment penalties — signed at US mortgage closing. The Mortgage Note skill is currently available in Preview. The **Mortgage Note** skill extracts data from Mortgage Note documents — the legal documents signed at mortgage closing that capture the loan terms, monthly payment amount, interest rate, late-payment penalties, and other details. The Mortgage Note skill is a preview skill. It has been trained on a limited set of documents and is designed to help you quickly get started with processing mortgage notes. The Mortgage Note skill cannot be trained on additional documents. The Mortgage Note skill recognizes handwritten text. This option is enabled by default. If you do not import handwritten forms, disable the **Handwritten** option in the skill settings. ## Countries and Languages | Countries | Languages | | :-------- | :-------- | | USA | English | ## Extracted Fields ### Borrower's Information | Field | Description | | :-------- | :--------------------------------------------------------------------------------------------------------------------------------------------- | | Name | The legal name of the individual(s) or entity borrowing the money. All borrowers are typically held equally responsible for repaying the loan. | | Signature | The signature of the borrower(s). | ### Mortgage Information | Field | Description | | :-------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Principal | The initial sum of money borrowed from the lender. | | Yearly Interest Rate | The annual percentage rate (APR) charged on the loan. It is the cost of borrowing the money, expressed as a percentage. This rate can be fixed for the life of the loan or adjustable, depending on the type of mortgage. | | Change Date of Interest Date | This field is relevant for adjustable-rate mortgages (ARMs). It specifies the date when the initial fixed interest rate is scheduled to change to a variable rate. | | Period of Possible Interest Rate Change (in months) | For ARMs, this field indicates how often the interest rate will adjust after the initial fixed-rate period. For example, a 5/1 ARM has a fixed rate for five years, and then the rate can adjust annually (every 12 months). | | Starting Date of Monthly Payment | The date on which the first monthly mortgage payment is due. | | All Pages Are Present | Indicates whether all numbered pages are present in the document. For example, all five pages of a 5-page document are deemed to be present if the document contains pages numbered as 1 of 5, 2 of 5, 3 of 5, 4 of 5, and 5 of 5. | ## Key Fields * Borrower info/Name * Starting Date of Monthly Payments ## Validation Rules | Rule | Description | | :-------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Rule To Copy Borrower Name | If the **Borrower Info/Name** field is blank, Vantage copies the name from the **AuxPerSignature** field to the **Borrower Info/Name** field if certain conditions are met. | | Clean Period of Possible Interest Rate Change | Checks if the **Period of Possible Interest Rate Change (in months)** field has a value, and if it does, it removes any "th" characters from that value. For example, if the field's value was "12th," the rule would change it to "12." | # Packing List - Document Skill Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/built-in-skills/packing-list Extract data from packing lists — package contents, quantities, weights, dimensions, and volumes — used for shipping, customs clearance, and goods registration. The **Packing List** skill extracts data from packing lists. A packing list is a document enclosed by a shipper detailing the contents of each package, for example, box and pallet. A packing list is helpful when a shipment includes multiple different items. It usually states the quantity, weight, dimensions, and volume of each item. Information contained in a packing list may be used in other shipping documents (such as bills of lading) to facilitate the preparation and loading of goods, customs clearance, and registration of the shipped items at various stages of their transportation. A packing list accompanies shipped items until they have been accepted by the consignee. The Packing List skill is a preview skill. It has been trained on a limited set of documents and is designed to help you quickly get started with processing packing lists. For production use, you may need to uptrain the skill with your own document samples. ## Supported Languages * English * French * German * Spanish ## Extracted Fields Asterisk (`*`) indicates a required field or field group. Values cannot be empty. ### Consignee\* | Field | Description | | :------ | :----------------------- | | Name | The consignee's name. | | Address | The consignee's address. | ### Shipper\* | Field | Description | | :----------- | :----------------------------------------------- | | Name | The shipper's name. | | Address | The shipper's address. | | Tax ID | The shipper's taxpayer identifier. | | IBAN | The shipper's International Bank Account Number. | | Bank Account | The shipper's bank account. | | Bank Code | The shipper's bank code. | ### Buyer | Field | Description | | :------ | :-------------------------------------------------------------- | | Name | Information about the buyer (if not the same as the consignee). | | Address | Information about the buyer (if not the same as the consignee). | ### Bill To | Field | Description | | :------ | :------------------------------------------------------- | | Name | Information about the recipient of the invoice (if any). | | Address | Information about the recipient of the invoice (if any). | ### Document Information | Field | Description | | :-------------------- | :----------------------------------------------- | | Packing List Number | The packing list number. | | Packing List Date | The date of the packing list. | | Invoice Number | The number of the invoice for the shipped goods. | | Invoice Date | The date of the invoice. | | Bill of Lading Number | The bill of lading number. | ### Purchase Order (repeating group) | Field | Description | | :----- | :------------------------------------------------------------------------- | | Number | The purchase order number. | | Date | The date of the corresponding purchase order placed for the shipped goods. | ### Shipping Information | Field | Description | | :--------------------------- | :----------------------------------------------------- | | Country of Origin | The country where the shipped goods were manufactured. | | Country of Final Destination | The country of destination of the shipped goods. | | Shipping Date | The date of the shipment. | #### Mode of Transportation The shipment method to be used (by land, by air, or by sea). This field contains one of the following shipment types: * AIR * SEA/OCEAN * RAIL * GROUND/TRUCK * Intermodal #### Incoterm The delivery terms. This field contains one of the following Incoterm types: * EXW: EX Works * FCA: Free Carrier * FAS: Free Alongside Ship * FOB: Free On Board * CFR: Cost And Freight * CIF: Cost Insurance Freight * DAP: Delivered At Place * DTU: another variant for Delivered At Place, replace with DAP * DPU: Delivered at Place Unloaded * CPT: Carriage Paid To * CIP: Carriage Insurance Paid * DDP: Delivered Duty Paid * DDU: Delivered Duty Unpaid ### Line Items (repeating group) | Field | Description | | :------------------------------- | :------------------------------------------------------------------------------------- | | Position | The number of the item in the list. | | Article Number | The article number. | | Order Number | The purchase order number. | | Invoice Number | The invoice number. | | Country of Origin | The country of origin of goods. | | Container Number | The container (container, box, pallet) number. | | Description | A description of the goods. | | Quantity | Number of items of goods delivered to the destination. | | Unit of Measurement | The unit of measurement used for the quantity of goods (container, box, pallet, skid). | | Package Quantity | The total number of shipments containing the goods. | | Package Unit of Measurement | The unit of measurement used for packages. | | Net Weight | The net weight of the goods. | | Net Weight Unit of Measurement | The unit of measurement used for the net weight. | | Gross Weight | The gross weight of the goods. | | Gross Weight Unit of Measurement | The unit of measurement used for the gross weight. | | Volume | The volume of the goods. | | Volume Unit of Measurement | The unit of measurement used for the volume. | | Dimensions | The dimensions of the goods. | | Dimensions Unit of Measurement | The unit of measurement used for the dimensions. | | Length | The length of each item in the shipment. | | Width | The width of each item in the shipment. | | Height | The height of each item in the shipment. | ### Summary Totals #### Total Quantity | Field | Description | | :------------------ | :---------------------------------- | | Amount | The total number of units of goods. | | Unit of Measurement | The total number of units of goods. | #### Total Packages | Field | Description | | :------------------ | :---------------------------------- | | Amount | The total number of shipment units. | | Unit of Measurement | The total number of shipment units. | #### Total Net Weight | Field | Description | | :------------------ | :--------------------------- | | Amount | The net weight of the goods. | | Unit of Measurement | The net weight of the goods. | #### Total Gross Weight | Field | Description | | :------------------ | :----------------------------- | | Amount | The gross weight of the goods. | | Unit of Measurement | The gross weight of the goods. | #### Total Volume | Field | Description | | :------------------ | :----------------------------- | | Amount | The total volume of the goods. | | Unit of Measurement | The total volume of the goods. | #### Total Dimensions | Field | Description | | :------------------ | :--------------------------------- | | Amount | The total dimensions of the goods. | | Unit of Measurement | The total dimensions of the goods. | ## Key Fields * Shipper/Name * Packing List Number * Packing List Date # Personal Earnings Statement - Document Skill Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/built-in-skills/personal-earnings Extract data from personal earnings statements (pay stubs): employee, employer, gross pay, taxes withheld, deductions, and year-to-date totals for US payroll. The **Personal Earnings Statement** skill extracts data from personal earnings statements (also known as pay stubs) — the documents that report an employee's salary and other compensation. Each statement covers the employee and employing organization, salary paid for the reporting period, year-to-date earnings, and the taxes and other deductions from the paycheck. The Personal Earnings Statement skill is a production skill. It has been fully trained on a large document set and provides high accuracy of data identification and extraction. The skill is ready to be used in production and does not require further training on your specific documents. Accuracy and straight-through processing (STP) rates can be further optimized in production through continuous learning from human-in-the-loop feedback. ## Countries and Languages | Countries | Languages | | :-------- | :-------- | | USA | English | ## Extracted Fields | Field | Description | | :------------------------------ | :------------------------------------------------------------------------------------ | | Employee Name | The employee's name. | | Employee Address | The employee's address. | | Employer Identification Number | The employer's identification number. | | SSN | The employee's Social Security Number. | | Employer Name | The name of the employing organization. | | Employer Address | The address of the employing organization. | | Employer Phone Number | The phone number of the employing organization. | | Reporting Period Start Date | The start date of the reporting period. | | Reporting Period End Date | The end date of the reporting period. | | Pay Date | The date of payment. | | Pay Rate | The amount of salary paid for a unit of working time or for volume of work. | | Current Period Gross Pay | The employee's total gross pay for the reporting period. | | Year-To-Date Gross Pay | The employee's total year-to-date gross pay. | | Current Period Total Deductions | The total amount deducted from the salary (excluding taxes) for the reporting period. | | Current Period Total Taxes | The total amount of tax withheld from the salary for the reporting period. | | Current Period Net Pay | The employee's total net pay for the reporting period. | | Year-To-Date Total Deductions | The total amount deducted from the salary (excluding taxes) year-to-date. | | Year-To-Date Total Taxes | The total amount of tax withheld from the salary year-to-date. | | Year-To-Date Net Pay | The employee's total year-to-date net pay. | ## Key Fields * Employee Name * SSN * Employer Name * Employer Identification Number * Reporting Period Start Date * Reporting Period End Date # Purchase Order Classifier Skill Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/built-in-skills/po-skills/purchase-order-classifier Classify purchase orders by region — EU (France, Germany, Italy, Netherlands, Spain) or US — and route each PO to the matching Vantage PO Document skill. The **Purchase Order Classifier** skill classifies purchase orders by region — EU or US — based on the country of origin, routing each PO to the matching Vantage Purchase Order Document skill. POs from other regions are classified as "Unknown". The table below shows which countries are covered by each region. ## Regional Coverage | Region | Country | | :----- | :--------------------------------------------- | | EU | France, Germany, Italy, the Netherlands, Spain | | US | USA | Purchase orders from countries other than those listed above will be classified as "Unknown". # Purchase Order EU - Document Skill Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/built-in-skills/po-skills/purchase-order-eu Extract data from EU purchase orders (France, Germany, Italy, Netherlands, Spain): header, footer, line items in 6 languages with regional business rules. The **Purchase Order EU** skill extracts data from purchase orders in France, Germany, Italy, the Netherlands, and Spain — applying regional business rules and processing documents in English, German, French, Italian, Dutch, and Spanish. The skill captures header, footer, and line-item details across a variety of input formats. The Purchase Order EU skill is a production skill. It was trained on a large set of POs. The skill is ready to be used in production and does not require further training on your specific documents. Accuracy and straight-through processing (STP) rates can be further optimized in production through continuous learning from human-in-the-loop feedback. ## Countries and Languages | Countries | Languages | | :---------- | :-------- | | | English | | France | French | | Germany | German | | Italy | Italian | | Netherlands | Dutch | | Spain | Spanish | ## Extracted Fields Asterisk (`*`) indicates a required field or field group. Values cannot be empty. ### Basic Information | Field | Description | | :------------- | :-------------------------------------------- | | Order Number\* | The number of the purchase order. | | Order Date\* | The date when the purchase order was created. | ### Buyer Information | Field | Description | | :---------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Name\* | The name of the buyer. | | Address | The address of the buyer. | | Country | The country of the buyer.
Note: This field can be obtained either by parsing the **Buyer/Address** field value or from the Buyers data catalog. | | Tax ID | The tax identification number of the buyer. | | IBAN | The international bank account number of the buyer. | | Buyer ID | The buyer ID.
Note: This field can only be obtained from the Buyers data catalog. | | Bank Code | The bank code of the buyer. | | Bank Account | The bank account number of the buyer. | | Street | The street part of the buyer's address.
Note: This field can be obtained either by parsing the **Buyer/Address** field value or from the Buyers data catalog. | | Postal Code | The postal code part of the buyer's address.
Note: This field can be obtained either by parsing the **Buyer/Address** field value or from the Buyers data catalog. | | City | The city part of the buyer's address.
Note: This field can be obtained either by parsing the **Buyer/Address** field value or from the Buyers data catalog. | | State or Province | The state or province part of the buyer's address.
Note: This field can only be obtained from the Buyers data catalog. | ### Supplier Information | Field | Description | | :---------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Name\* | The name of the supplier. | | Address | The address of the supplier. | | Country | The country of the supplier.
Note: This field can be obtained either by parsing the **Supplier/Address** field value or from the Suppliers data catalog. | | Tax ID | The tax identification number of the supplier. | | Supplier ID | The supplier ID.
Note: This field can only be obtained from the Suppliers data catalog. | | Street | The street part of the supplier's address.
Note: This field can be obtained either by parsing the **Supplier/Address** field value or from the Suppliers data catalog. | | Postal Code | The postal code part of the supplier's address.
Note: This field can be obtained either by parsing the **Supplier/Address** field value or from the Suppliers data catalog. | | City | The city part of the supplier's address.
Note: This field can be obtained either by parsing the **Supplier/Address** field value or from the Suppliers data catalog. | | State or Province | The state or province part of the supplier's address.
Note: This field can only be obtained from the Suppliers data catalog. | ### Delivery and Billing Information #### Ship to | Field | Description | | :------ | :--------------------------------------------- | | Name | The address where the goods must be delivered. | | Address | The address where the goods must be delivered. | #### Bill to | Field | Description | | :------ | :-------------------------------------------- | | Name | The address where the invoice should be sent. | | Address | The address where the invoice should be sent. | ### Line Items (repeating group)\* | Field | Description | | :---------------------- | :------------------------------------------------------------- | | Position | The number of the line item in the list. | | Article Number Buyer | The article number of the goods in the buyer's database. | | Article Number Supplier | The article number of the goods in the supplier's database. | | Description | A description of the goods or services. | | Quantity | The number of units ordered. | | Unit of Measurement | The unit of measurement used for the goods. | | Unit Price | The price of one item of goods. | | Discount | The applicable discount in the currency of the purchase order. | | Total Price | The price of the line item including tax. | | Currency | The currency of the line item. | | Delivery Date | The delivery date of the goods in the line item. | ### Financial Information | Field | Description | | :------- | :------------------------------------------------------------------------------------------- | | Total | The total amount of the purchase order. | | Currency | The currency of the total amount. If no total amount is indicated, this field will be empty. | #### Taxes | Field | Description | | :--------------- | :----------------------------------- | | Total Tax Amount | The total tax amount. | | Total Net Amount | The total cost of goods without tax. | ### Delivery | Field | Description | | :-------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Delivery Date\* | The delivery date of the ordered goods or services.
Note: If a single delivery date is specified for all the ordered good or services, this date will be extracted into a separate **Delivery Date** field. If a separate delivery date is indicated for each line item, these dates will be extracted as columns in the LineItems table. | ## Key Fields * Buyer/Name * Order Number * Order Date * Total ## Validation Rules | Rule | Description | | :------------------------------------------------------ | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Line items are required | Checks that all Line items have been detected on the document. | | Delivery date must be later than order date | Checks that the delivery date is later than the date of the purchase order. | | Total: Amount Check | Checks that:
1. **Line Items/Total Price** equals **Total**
2. **Line Items/Total Price** + **Taxes/Total Tax Amount** equals **Total**
3. **Line Items/Total Price** equals **Taxes/Total Net Amount**
If none of the conditions are fulfilled, returns an error and suggests corrected values.
If the **Taxes/Total Tax Amount** and **Taxes/Total Net Amount** fields are empty, and the **Total** field is not empty, fills the **Taxes/Total Net Amount** field with the value of the **Total** field.
Suggests calculated values for **Total**, **Taxes/Total Tax Amount**, or **Taxes/Total Net Amount**, if any of these fields are not detected. | | Check item amount | Multiplies the number of units ordered in the line item by the price of one unit, applies the discount, and suggests a value if the result is not equal to the total price of the line item. | | Separate currency from amount in Total field | Splits the amount and the currency in the amount fields and copies the currency into the **Currency** field if it is empty. | | Copy PO and Line Items currency | If the **Currency** field is empty, fills it in using the value of the **Line Items**/**Currency** field. This rule also applies to the **Line Items**/**Currency** field, which is filled in using the value of the **Currency** field. Only values that correspond to the ISO format are copied. If the **Currency** fields are empty, checks the value of the**Supplier** /**Country** field. If the country of the supplier is France, Italy, Germany, Netherlands, or Spain, fills in the **Currency** field with the value “EUR”. | | Quantity is required | Checks that the quantity of goods has been detected on the document. | | Separate currency from amount in Line Items money field | Splits the amount and the currency in the amount fields and copies the currency into the **Currency** field if it is empty. | | Check currency value | Checks that the value of the **Currency** field in the order corresponds to a currency format. Adds a list of suggested values if the field is empty or if its value does not correspond to any currency code. | | Check Line Items currency value | Checks that the value of the **Currency** field in **Line Items** corresponds to a currency format. Adds a list of suggested values if the field is empty or if its value does not correspond to any currency code. | | Buyer DB lookup | Checks information about the buyer against the corresponding data catalog. If the data catalog contains information about that buyer, but the values are either different or incomplete, fills in the appropriate fields using data from the data catalog. If the buyer was not detected correctly, the operator may select a different buyer from the data catalog manually during manual review. The **Buyer ID**, **Name**, **Street**, **Country**, and **Company Correlation ID (Supplier ID)** fields should be filled in the Buyers data catalog. | | Supplier DB lookup | Checks information about the supplier against the corresponding data catalog. If the data catalog contains information about that supplier, but the values are either different or incomplete, fills in the appropriate fields using data from the data catalog. If the supplier was not detected correctly, the operator may select a different supplier from the data catalog manually during manual review. The **Supplier ID**, **Name**, **Street** and **Country** fields should be filled in the Suppliers data catalog. | ## Parameters The **Purchase Order EU** and **Purchase Order US** skills have default skill parameters that refer to data catalogs used for Buyer and Supplier lookup. You can change the values of these parameters in Vantage or Advanced Designer to modify field extraction. For more information, see [Skill parameters](/vantage/documentation/skill-designer/skill-parameters). | Parameter | Description | | :-------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Buyers | The predefined data catalog used for Buyer lookup. The default value of this parameter is **Buyers**. You can change this value by choosing another available data catalog of the same type (Document Issuer Companies). | | Suppliers | The predefined data catalog used for Supplier lookup. The default value of this parameter is **Suppliers**. You can change this value by choosing another available data catalog of the same type (Document Receiver Companies). | # Purchase Order Skills Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/built-in-skills/po-skills/purchase-order-overview Vantage Purchase Order skills extract data from POs across regions — EU (DE/FR/IT/NL/ES) and US — with classification, processing, and document splitting. ABBYY Vantage offers a set of built-in skills designed for processing purchase orders. A purchase order is a document sent by a buyer to a supplier that lists the goods or services that the buyer wants to purchase. A purchase order typically contains the following information: * A list of goods or services purchased * The total amount payable for the goods or services * The number and date of the purchase order * The expected date of delivery As information provided on purchase orders varies from region to region, each region requires its own purchase order skills, with region-specific data fields and validation rules. ## Available Purchase Order Skills ABBYY Vantage includes the following built-in purchase order skills: * [Purchase Order EU](/vantage/documentation/skill-catalog/built-in-skills/po-skills/purchase-order-eu) for purchase orders in France, Germany, Italy, the Netherlands, and Spain * [Purchase Order US](/vantage/documentation/skill-catalog/built-in-skills/po-skills/purchase-order-us) for purchase orders in the USA. ## Multi-Region Processing To process purchase orders from multiple regions within one workflow, ABBYY Vantage offers the following built-in skills: * [Purchase Order Classifier](/vantage/documentation/skill-catalog/built-in-skills/po-skills/purchase-order-classifier) * [Purchase Order Processing](/vantage/documentation/skill-catalog/built-in-skills/po-skills/purchase-order-processing) The built-in purchase order skills have been trained on a large document set and provide high accuracy of data identification and extraction. ## Data Catalogs The built-in purchase order skills make use of data catalogs named "Buyers" (of type Document Receiver Companies) and "Suppliers" (of type Document Issuer Companies), each containing the following columns: ### Buyers Data Catalog | Column | Description | | :------------- | :-------------------------------- | | Id | Unique identifier | | VATID | VAT identification number | | BusinessUnitId | Business unit identifier | | IBAN | International Bank Account Number | | BankAccount | Bank account number | | BankCode | Bank routing code | | Name | Company name | | ZIP | Postal code | | Street | Street address | | City | City name | | State | State or province | | CountryCode | Country code | ### Suppliers Data Catalog | Column | Description | | :---------- | :------------------------ | | Id | Unique identifier | | VATID | VAT identification number | | Name | Company name | | ZIP | Postal code | | Street | Street address | | City | City name | | State | State or province | | CountryCode | Country code | For more information about data catalogs and how to add custom data to a data catalog, see the Skills Designer documentation. ## Neural Network Detection If you are not using data catalogs, the **Buyer/Name**, **Supplier/Name**, **Supplier/Address**, **Buyer/Address**, **Buyer/Tax ID**, and **Supplier/Tax ID** fields will be detected and captured using neural networks. If you want to select a specific record from your database, use data catalogs. For more information about the company detection, see the Advanced Designer documentation. # Purchase Order Processing Skill Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/built-in-skills/po-skills/purchase-order-processing End-to-end purchase order processing — classify each PO by region with the Purchase Order Classifier, and then apply the matching Document skill to extract data. The **Purchase Order Processing** skill provides end-to-end PO processing for multiple regions — first classifying each uploaded order with the **Purchase Order Classifier** skill (based on the order recipient's country), and then applying the matching region-specific Document skill to extract data. ## Document Splitting If you need to split files with multiple purchase orders into separate purchase orders or if you need to separate purchase orders from other types of documents (for example, invoices or waybills), you can use the Purchase Order Splitter skill. You can add this skill to the **Purchase Order Processing** workflow or to any other Process skill. # Purchase Order Splitter Skill Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/built-in-skills/po-skills/purchase-order-splitter Split files containing multiple purchase orders into separate documents — and optionally separate POs from invoices, waybills, or other supporting annexes. The **Purchase Order Splitter** skill splits files containing multiple purchase orders into separate documents for further processing. It can also separate POs from other documents (invoices, waybills, supporting annexes), classifying each as **Purchase Order** or **no Purchase Order**. ## Skill Components This skill consists of the following activities: * A Classify activity, which includes two classes: **Purchase Order** and **no Purchase Order** (the **no Purchase Order** class covers annexes, email and fax headers, invoices, and other types of documents contained within the same file) * An Extraction Rules activity for separating documents based on reliable markers of the first page (for example, "Page 1 of 10") * An Extraction Rules activity for extracting purchase order numbers ## Document Splitting Logic Files will be split into separate documents if any of the following occurs (in the order listed): * The beginning of a new file is detected. * A document class is identified that is different from the one previously detected. * A reliable marker of the first page is extracted. * A new purchase order number is extracted. ## Implementation Guide You can create a Process skill and use the Purchase Order Splitter skill in the Assemble activity to split files into purchase orders and then use any relevant Document skill to extract their data. ### Setup Steps To use the Purchase Order Splitter skill, follow these steps: 1. Create a new Process skill. 2. Add and set up an Input activity. 3. Add an Assemble activity. For this activity, in the **Actions** pane, select the **By Document Splitter Skill** option, and then select **Purchase Order Splitter** skill from the list. 4. Add an Extract activity. For this activity, in the **Actions** pane, click the **Add Skill** button and then select a Document skill from the list. 5. While still in the **Actions** pane, click the configuration icon next to the Document skill name specified for the Extract activity. In the dialog box that opens, select **Purchase Order** in the **Class** field. 6. Optionally, add and set up a **Manual Review** activity to verify extracted data and make any necessary adjustments to assembled documents (for example, you will be able to move pages around). 7. Add and set up an Output activity. 8. Click the **Publish Skill** button. Once you have completed the above steps, you can use the Purchase Order Splitter skill in Vantage. # Purchase Order US - Document Skill Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/built-in-skills/po-skills/purchase-order-us Extract data from US purchase orders: buyer, supplier, header, footer, and line items in English, applying regional business rules for US procurement workflows. The **Purchase Order US** skill extracts data from US purchase orders in English — capturing header, footer, and line-item details across a variety of input formats — and applies regional business rules for US procurement workflows. The Purchase Order US Skill is a production skill. It was trained on a large set of POs. It processes documents in a variety of input formats and extracts key data including header, footer, and line item details. The skill is ready to be used in production and does not require further training on your specific documents. Accuracy and straight-through processing (STP) rates can be further optimized in production through continuous learning from human-in-the-loop feedback. ## Countries and Languages | Countries | Languages | | :-------- | :-------- | | USA | English | ## Extracted Fields Asterisk (`*`) indicates a required field or field group. Values cannot be empty. ### Basic Information | Field | Description | | :------------- | :-------------------------------------------- | | Order Number\* | The number of the purchase order. | | Order Date\* | The date when the purchase order was created. | ### Buyer Information | Field | Description | | :----------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Buyer/Name\* | The name of the buyer. | | Buyer/Address | The address of the buyer. | | Buyer/Country | The country of the buyer. Note: This field can either be obtained from the Buyers data catalog or set to the default value (US) by using a rule. | | Buyer/Tax ID | The tax identification number of the buyer. | | Buyer/Buyer ID | The buyer ID. Note: This field can only be obtained from the Buyers data catalog. | | Buyer/Bank Code | The bank code of the buyer. | | Buyer/Bank Account | The bank account number of the buyer. | | Buyer/Street | The street part of the buyer's address. Note: This field can be obtained either by parsing the **Buyer/Address** field value or from the Buyers data catalog. | | Buyer/ZIP Code | The ZIP code part of the buyer's address. Note: This field can be obtained either by parsing the **Buyer/Address** field value or from the Buyers data catalog. | | Buyer/City | The city part of the buyer's address. Note: This field can be obtained either by parsing the **Buyer/Address** field value or from the Buyers data catalog. | | Buyer/State | The state part of the buyer's address. Note: This field can be obtained either by parsing the **Buyer/Address** field value or from the Buyers data catalog. | ### Supplier Information | Field | Description | | :------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Supplier/Name\* | The name of the supplier. | | Supplier/Address | The address of the supplier. | | Supplier/Country | The country of the supplier. Note: This field can either be obtained from the Suppliers data catalog or set to the default value (US) by using a rule. | | Supplier/Tax ID | The tax identification number of the supplier. | | Supplier/Supplier ID | The supplier ID. Note: This field can only be obtained from the Suppliers data catalog. | | Supplier/Street | The street part of the supplier's address. Note: This field can be obtained either by parsing the **Supplier/Address** field value or from the Suppliers data catalog. | | Supplier/ZIP Code | The ZIP code part of the supplier's address. Note: This field can be obtained either by parsing the **Supplier/Address** field value or from the Suppliers data catalog. | | Supplier/City | The city part of the supplier's address. Note: This field can be obtained either by parsing the **Supplier/Address** field value or from the Suppliers data catalog. | | Supplier/State | The state part of the supplier's address. Note: This field can be obtained either by parsing the **Supplier/Address** field value or from the Suppliers data catalog. | ### Delivery Information | Field | Description | | :-------------- | :--------------------------------------------- | | Ship to/Name | The address where the goods must be delivered. | | Ship to/Address | The address where the goods must be delivered. | | Bill to/Name | The address where the invoice should be sent. | | Bill to/Address | The address where the invoice should be sent. | ### Line Items (Repeating Group) | Field | Description | | :--------------------------------- | :------------------------------------------------------------- | | Line Items\*/Position | The number of the line item in the list. | | Line Items/Article Number Buyer | The article number of the goods in the buyer's database. | | Line Items/Article Number Supplier | The article number of the goods in the supplier's database. | | Line Items/Description | A description of the goods or services. | | Line Items/Quantity | The number of units ordered. | | Line Items/Unit of Measurement | The unit of measurement used for the goods. | | Line Items/Unit Price | The price of one item of goods. | | Line Items/Discount | The applicable discount in the currency of the purchase order. | | Line Items/Total Price | The price of the line item including tax. | | Line Items/Currency | The currency of the line item. | | Line Items/Delivery Date | The delivery date of the goods in the line item. | ### Totals and Taxes | Field | Description | | :--------------------- | :------------------------------------------------------------------------------------------- | | Total | The total amount of the purchase order. | | Currency | The currency of the total amount. If no total amount is indicated, this field will be empty. | | Taxes/Total Tax Amount | The total tax amount. | | Taxes/Total Net Amount | The total cost of goods without tax. | ### Delivery | Field | Description | | :-------------- | :-------------------------------------------------- | | Delivery Date\* | The delivery date of the ordered goods or services. | If a single delivery date is specified for all the ordered good or services, this date will be extracted into a separate **Delivery Date** field. If a separate delivery date is indicated for each line item, these dates will be extracted as columns in the **Line Items** table. ## Key Fields * Buyer/Name * Order Number * Order Date * Total ## Validation Rules | Rule | Description | | :------------------------------------------------------ | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Line items are required | Checks that all Line items have been detected on the document. | | Delivery date must be later than order date | Checks that the delivery date is later than the date of the purchase order. | | Total: Amount Check | Checks that:
1. **Line Items/Total Price** equals **Total**
2. **Line Items/Total Price** + **Taxes/Total Tax Amount** equals **Total**
3. **Line Items/Total Price** equals **Taxes/Total Net Amount**
If none of the conditions are fulfilled, returns an error and suggests corrected values.
If the **Taxes/Total Tax Amount** and **Taxes/Total Net Amount** fields are empty, and the **Total** field is not empty, fills the **Taxes/Total Net Amount** field with the value of the **Total** field.
Suggests calculated values for **Total**, **Taxes/Total Tax Amount**, or **Taxes/Total Net Amount**, if any of these fields are not detected. | | Separate currency from amount in Total field | Splits the amount and the currency in the amount fields and copies the currency into the **Currency** field if it is empty. | | Check item amount | Multiplies the number of units ordered in the line item by the price of one unit, applies the discount, and suggests a value if the result is not equal to the total price of the line item. | | Quantity is required | Checks that the quantity of goods has been detected on the document. | | Copy PO and Line Items currency | If the **Currency** field is empty, fills it in using the value of the **Line Items**/**Currency** field. This rule also applies to the **Line Items**/**Currency** field, which is filled in using the value of the **Currency** field. Only the values that correspond to the ISO format are copied. If the currency is marked using the "\$" sign, the value is still copied, but is then formatted to be the standard "USD" value. If the **Currency** fields are empty, checks the value of the **Supplier**/**Country** field. If the country of the supplier is the US, fills the **Currency** field with the value "USD". | | Separate currency from amount in Line Items money field | Splits the amount and the currency in the amount fields and copies the currency into the **Currency** field if it is empty. | | Check currency value | Checks that the value of the **Currency** field in the order corresponds to a currency format. Adds a list of suggested values if the field is empty or if its value does not correspond to any currency code. | | Check Line Items currency value | Checks that the value of the **Currency** field in **Line Items** corresponds to a currency format. Adds a list of suggested values if the field is empty or if its value does not correspond to any currency code. | | Set Default Country | If the **Country** fields in the **Supplier** and **Buyer** groups are not filled in, fills them in using the default value (US). | | Supplier DB lookup | Checks information about the supplier against the corresponding data catalog. If the data catalog contains information about that supplier, but the values are either different or incomplete, fills in the appropriate fields using data from the data catalog. If the supplier was not detected correctly, the operator may select a different supplier from the data catalog manually during manual review. The **Supplier ID**, **Name**, **Street** and **Country** fields should be filled in the Suppliers data catalog. | | Buyer DB lookup | Checks information about the buyer against the corresponding data catalog. If the data catalog contains information about that buyer, but the values are either different or incomplete, fills in the appropriate fields using data from the data catalog. If the buyer was not detected correctly, the operator may select a different buyer from the data catalog manually during manual review. The **Buyer ID**, **Name**, **Street**, **Country**, and **Company Correlation ID (Supplier ID)** fields should be filled in the Buyers data catalog. | ## Parameters The **Purchase Order EU** and **Purchase Order US** skills have default skill parameters that refer to data catalogs used for Buyer and Supplier lookup. You can change the values of these parameters in Vantage or Advanced Designer to modify field extraction. For more information, see Skill parameters. | Parameter | Description | | :-------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Buyers | The predefined data catalog used for Buyer lookup. The default value of this parameter is **Buyers**. You can change this value by choosing another available data catalog of the same type (Document Issuer Companies). | | Suppliers | The predefined data catalog used for Supplier lookup. The default value of this parameter is **Suppliers**. You can change this value by choosing another available data catalog of the same type (Document Receiver Companies). | # Hotel Invoice - Document Skill Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/built-in-skills/receipt-skills/hotel-invoice Extract data from hotel invoices and bills: guest, hotel, dates of stay, room rates, additional charges, taxes, and totals — for T&E and corporate travel. The **Hotel Invoice** skill extracts data from hotel invoices and bills (folios) — capturing the guest, hotel, dates of stay, room rates, additional charges, and totals — for T\&E and corporate-travel workflows. The Hotel Invoice skill is a production skill. It has been fully trained on a large document set and provides highly accurate data identification and extraction. The skill is ready to be used in production and does not require further training on your specific documents. Accuracy and straight-through processing (STP) rates can be further optimized in production through continuous learning from human-in-the-loop feedback. ## Countries and Languages | Countries | Languages | | :-------- | :-------- | | Australia | English | | Canada | English | | France | English | | Germany | English | | Italy | English | | Mexico | English | | Spain | English | | USA | English | ## Extracted Fields Asterisk (`*`) indicates a required field or field group. Values cannot be empty. ### Stay Information | Field | Description | | :------------- | :------------------------------------------------- | | Date\* | The date when the invoice was issued by the hotel. | | Check-in Date | The date when the guest checked into the hotel. | | Check-out Date | The date when the guest checked out of the hotel. | | Nights | The duration of the guest's stay. | ### Hotel Details | Field | Description | | :---------- | :---------------------------------------------- | | Hotel Name | The name of the hotel. | | Address | The address of the hotel. | | Street | The address of the hotel. | | City | The city component of the hotel address. | | Postal Code | The postal code component of the hotel address. | | State | The state component of the hotel address. | | Country | The country component of the hotel address. | | Phone | The phone number of the hotel. | ### Financial Information | Field | Description | | :--------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | Currency\* | The currency of the payment. | | Total\* | The total amount of the invoice. | | Tax Total | The total amount of tax levied on the purchase. If the **Tax Total** field is empty, it can be filled in automatically by the **Process money fields and currency** rule. | ### Taxes (Repeating Group) | Field | Description | | :--------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Tax Rate | Tax details. No details will be shown if the **Tax Rate** and **Tax Amount** fields are empty. If multiple taxes have been detected, they will be displayed in multiple lines in the table. The total amount of tax will be recorded in the **Tax Total** field. | | Tax Amount | Tax amount value | ### Payment Details | Field | Description | | :-------------- | :--------------------------------------------------------------------------------------------------------------------------------------- | | Payment Method | Payment method. Possible values: Card, Cash, Transfer, Mixed, Undefined | | Card Type | The payment processing network of the card used for payment. Possible values: Mastercard, VISA, AmericanExpress, NationalCard, Undefined | | Credit or Debit | Whether a credit or debit card was used. Possible values: Credit, Debit | | Card Number | The number of the card used for payment. The number may be partially masked, with some of the digits replaced with the X character. | ### Line Items (Repeating Group) | Field | Description | | :---------- | :----------------------------------------------------------------------------------------- | | SKU | The stock-keeping unit identifier of services or items provided to the guest (if present). | | Description | The name of the purchased service or item. | | Quantity | The quantity of the service or item purchased. | | Price | The price per unit. | | Amount | The total amount in the line item. | ## Key Fields * Date * Currency * Total ## Validation Rules To fill in a field with the calculated value, click the suggestion button in the value region of the appropriate field and select one of the suggestions from the drop-down list. | Rule | Description | | :-------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | Process money fields and currency | Splits the amount and the currency in the **Total**, **Tax Total**, and **Tax Amount** fields, and copies the currency into the **Currency** field if it has not been filled in. Checks that the sum of the **Taxes** and **Tax Amount** fields is equal to the value of the **Total Tax** field. If the values are not equal, displays an error message and suggests filling in the fields with their calculated values. If a value for the **Total Tax** field was not found, fills it in with its calculated value. Displays a warning message if the **Total Tax** field value is greater than 50% of the value in the **Total** field. Checks that the value of the **Currency** field is a known ISO currency. If the currency is not known or has not been extracted, suggests currency values for the supported countries. Currency descriptions and symbols are replaced with ISO codes. | | Process Date | Normalizes the **Date** field value. Date ambiguities are resolved with the help of the **Country** value. | | Process Taxes | Suggests a value for the **Tax Amount** field based on the **Tax Rate** and the net amount of the purchase, or the other way round. This is possible only if the net amount has been detected. Removes the % sign from the **Tax Rate** field and normalizes ambiguous values. | | Process number of nights | Normalizes the **Check-in** and **Check-out** field values. Calculates the length of stay and fills the **Nights** field with the result. Date ambiguities are resolved with the help of the **Country** value. | ## Parameters The **Hotel Invoice** skill has default skill parameters that you can use to modify the field extraction process. You may want to change the values of these parameters in Vantage or Advanced Designer for certain document processing scenarios (for example, if you are only processing documents from certain countries). For more information, see [Skill parameters](/vantage/documentation/skill-designer/skill-parameters). | Parameter | Description | | :-------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | PredefinedCountries | A predefined list of countries that restricts automatic country detection for hotel invoices. By default, the value of this parameter is empty. You can specify the countries by writing in their Alpha-2 ISO country codes separated by a semi-colon. The value of this parameter will primarily affect the extraction of data from the **Country**, **Currency**, **Tax Total**, and **Taxes** fields. | | PredefinedExpenseType | A predefined list of expense types that restricts automatic expense type detection for hotel invoices. The default value of this parameter is **Hotel**. **Note:** We do not recommend changing the value of this parameter. | # Receipt - Document Skill Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/built-in-skills/receipt-skills/receipt Extract data from retail and service receipts (Receipt and Receipt CJK): vendor, items, totals, taxes, date and time for retail, restaurant, parking, and fuel. The **Receipt** and **Receipt CJK** skills extract data from receipts — the documents that confirm payment for goods or services. The skills capture the items purchased, place of purchase, date and time, totals, and taxes — covering retail, restaurant, parking, toll, fuel, and other expense categories. The Receipt and Receipt CJK skills are production skills. They have been fully trained on a large document set and provide high accuracy of data identification and extraction. The skills are ready to be used in production. Accuracy and straight-through processing (STP) rates can be further optimized in production through continuous learning from human-in-the-loop feedback. The Receipt and Receipt CJK skills cannot be trained on additional documents. The Receipt skill can recognize handwritten numbers in **Tip** and **Total** fields. This option is enabled by default. If you do not import forms containing handwritten numbers, disable the **Handwritten** option in the skill settings. The Receipt CJK skill recognizes handwritten text. This option is enabled by default. If you do not import handwritten forms, disable the **Handwritten** option in the skill settings. ## Countries and Languages ### Receipt Skill Support | Countries | Languages | | :------------- | :------------------ | | Australia | English | | Belgium | Dutch | | | French | | Brazil | Portuguese (Brazil) | | Canada | English | | | French | | Finland | Finnish | | France | French | | Germany | German | | Hungary | Hungarian | | Italy | Italian | | Ireland | English | | Luxembourg | French | | | German | | Mexico | Spanish | | Netherlands | Dutch | | New Zealand | English | | Norway | Norwegian (Bokmal) | | Panama | Spanish | | Peru | Spanish | | Poland | Polish | | Serbia | Serbian (Latin) | | Singapore | English | | Slovakia | Slovak | | Spain | Spanish | | | Catalan | | Sweden | Swedish | | Turkey | Turkish | | United Kingdom | English | | USA | English | | | Spanish | **Additional languages supported:** Estonian ### Receipt CJK Skill Support | Countries | Languages | | :---------- | :------------------ | | China | Chinese Traditional | | | English | | Japan | Japanese (Modern) | | | English | | South Korea | Korean (Hangul) | | | English | | Taiwan | Chinese Traditional | | | English | ## Extracted Fields Asterisk (`*`) indicates a required field or field group. Values cannot be empty. ### Basic Information | Field | Description | | :----------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Expense Type | The type of the expense. Possible values: Airfare (receipts for booked flights), Car Parking (receipts from parking meters), Car Rental (receipts from car rental services), Gasoline Station (receipts from gas stations), General Retail (receipts from stores, supermarkets, etc.), Restaurant (restaurant bills), Toll Road (toll receipts), Transport (receipts for public transportation fares) | | Vendor | The name of the organization that issued the receipt. | | Address | The address of the organization that issued the receipt. | | Phone | The phone number of the organization that issued the receipt. | | Date\* | The date when the payment was made. | | Country | The country where the payment was made. | | City | The city where the payment was made. | ### Payment Information | Field | Description | | :-------------- | :--------------------------------------------------------------------------------------------------------------------------------------- | | Payment Method | Payment method. Possible values: Card, Cash, Transfer, Mixed, Undefined | | Card Type | The payment processing network of the card used for payment. Possible values: Mastercard, VISA, AmericanExpress, NationalCard, Undefined | | Credit or Debit | Whether a credit or debit card was used. Possible values: Credit, Debit | | Card Number | The number of the card used for payment. The number may be partially masked by replacing some digits with the X character. | ### Financial Details | Field | Description | | :--------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | Currency\* | The currency of the payment. | | Total\* | The total amount of the receipt. | | Tip | The tip amount. | | Tax Total | The total amount of tax levied on the purchase. If the **Tax Total** field is empty, it can be filled in automatically by the **Process money fields and currency** rule. | ### Taxes | Field | Description | | :--------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Taxes | Tax details. No details will be shown if the **Tax Rate** and **Tax Amount** fields are empty. If multiple taxes have been detected, they will be displayed as multiple lines in the table. The total amount of tax will be recorded in the **Tax Total** field. | | Tax Rate | Tax rate percentage | | Tax Amount | Tax amount value | ### Line Items (Repeating Group) The list of the purchased goods or services. | Field | Description | | :---------- | :------------------------------------------------------------- | | Description | The name of the purchased product or service. | | SKU | The stock-keeping unit identifier of the product (if present). | | Quantity | The quantity of the product purchased. | | Price | The price per unit. | | Amount | The total sum in the line item. | ## Key Fields * Date * Currency * Total ## Validation Rules To fill in a field with the calculated value, click the suggestion button in the value region of the appropriate field and select one of the suggestions from the drop-down list. | Rule | Description | | :-------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | Process money fields and currency | Splits the amount and the currency in the **Total**, **Tax Total**, and **Tax Amount** fields, and copies the currency into the **Currency** field if it has not been filled in. Checks that the sum of the **Taxes** and **Tax Amount** fields is equal to the value of the **Total Tax** field. If the values are not equal, displays an error message and suggests filling in the fields with their calculated values. If a value for the **Total Tax** field was not found, fills it in with its calculated value. Displays a warning message if the **Total Tax** field value is greater than 50% of the value in the **Total** field. Checks that the value of the **Currency** field is a known ISO currency. If the currency is not known or has not been extracted, suggests currency values for the supported countries. Currency descriptions and symbols are replaced with ISO codes. | | Process Date | Normalizes the **Date** field value. Date ambiguities are resolved with the help of the **Country** value. | | Process Taxes | Suggests a value for the **Tax Amount** field based on the **Tax Rate** and the net amount of the purchase, or the other way round. This is possible only if the net amount has been detected. Removes the % sign from the **Tax Rate** field and normalizes ambiguous values. | ## Parameters The **Receipt** and **Receipt CJK** skills have default skill parameters that you can use to modify field extraction. You may want to change the values of these parameters in Vantage or Advanced Designer for certain document processing scenarios (for example, if you are only processing documents from certain countries or if all your receipts have the same general expense type). For more information, see [Skill parameters](/vantage/documentation/skill-designer/skill-parameters). | Parameter | Description | | :-------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | PredefinedCountries | A predefined list of countries that restricts automatic country detection for receipts. For the **Receipt** skill, the default value of this parameter is empty. You can specify the countries by writing in their Alpha-2 ISO country codes separated by a semi-colon. For the **Receipt CJK** skill, the default value of this parameter is **CN; HK; JP; KP; KR; MO; MY; PH; SG; TW**. You can change this value by deleting any of the unnecessary country codes. The value of this parameter will primarily affect the extraction of data from the **Country**, **Currency**, **Tax Total**, and **Taxes** fields. | | PredefinedExpenseType | A predefined list of expense types that restricts automatic expense type detection for receipts. By default, the value of this parameter is empty. You can specify the expense types that you actually intend to process separating them by a semi-colon. The possible values are: **Airfare** (receipts for booked flights), **CarParking** (receipts from parking meters), **CarRental** (receipts from car rental services), **GasolineStation** (receipts from gas stations), **GeneralRetail** (receipts from stores, supermarkets, etc.), **Hotel** (receipts from hotels), **Restaurant** (restaurant bills), **TollRoad** (toll receipts), **Transport** (receipts for public transportation fares), **Other** | # Receipt Skills Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/built-in-skills/receipt-skills/receipt-overview Vantage Receipt skills extract data from expense receipts — general retail, restaurant, parking, fuel, hotel invoices, and taxi receipts — for T&E workflows. ABBYY Vantage offers a set of built-in skills designed for extracting data from receipts. ABBYY Vantage includes the following built-in receipt skills: * [Receipt and Receipt CJK](/vantage/documentation/skill-catalog/built-in-skills/receipt-skills/receipt) for various categories of expenses, including general retail, restaurant bills, parking charges, toll payments, gasoline expenses, and other payments, such as tickets or services * [Hotel Invoice](/vantage/documentation/skill-catalog/built-in-skills/receipt-skills/hotel-invoice) for hotel invoices * [Taxi Receipt](/vantage/documentation/skill-catalog/built-in-skills/receipt-skills/taxi-receipt) for taxi receipts # Taxi Receipt - Document Skill Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/built-in-skills/receipt-skills/taxi-receipt Extract data from taxi receipts — date, time, fare, currency, start and destination addresses, and taxi service provider — for T&E and ride-hailing workflows. The **Taxi Receipt** skill extracts data from taxi receipts, typically including details such as the date, time, fare amount, currency, starting location, destination, the name of the taxi service provider, and additional information like the address of the service provider. The Taxi Receipt skill is a production skill. It has been fully trained on a large document set and provides high accuracy of data identification and extraction. The skill is ready to be used in production and does not require further training on your specific documents. The Taxi Receipt skill cannot be trained on additional documents. ## Countries and Languages | Countries | Languages | | :-------- | :-------- | | USA | English | | | French | | | German | | | Italian | | | Spanish | ## Extracted Fields Asterisk (`*`) indicates a required field or field group. Values cannot be empty. ### Trip Information | Field | Description | | :------------ | :------------------------------------------------------------ | | Date\* | The date when the receipt was issued by the service provider. | | Start Date | The date when the taxi ride started. | | End Date | The date when the taxi ride ended. | | Days | The number of days for which the taxi services were provided. | | From Location | The starting location of the taxi ride. | | To Location | The destination of the taxi ride. | ### Service Provider Details | Field | Description | | :---------- | :--------------------------------------------------------------- | | Vendor | The service provider responsible for the transportation service. | | Address | The address of the service provider. | | Street | The address of the service provider. | | City | The city component of the service provider address. | | State | The state component of the service provider address. | | Postal Code | The postal code component of the service provider address. | | Country | The country component of the service provider address. | | Phone | The phone number of the service provider. | ### Financial Information | Field | Description | | :--------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | Currency\* | The currency of the payment. | | Total\* | The total amount of the receipt. | | Tax Total | The total amount of tax levied on the purchase. If the **Tax Total** field is empty, it can be filled in automatically by the **Process money fields and currency** rule. | ### Taxes (Repeating Group) | Field | Description | | :--------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Tax Rate | Tax details. No details will be shown if the **Tax Rate** and **Tax Amount** fields are empty. If multiple taxes have been detected, they will be displayed in multiple lines in the table. The total amount of tax will be recorded in the **Tax Total** field. | | Tax Amount | Tax amount value | ### Payment Details | Field | Description | | :-------------- | :--------------------------------------------------------------------------------------------------------------------------------------- | | Payment Method | Payment method. Possible values: Card, Cash, Transfer, Mixed, Undefined | | Card Type | The payment processing network of the card used for payment. Possible values: Mastercard, VISA, AmericanExpress, NationalCard, Undefined | | Credit or Debit | Whether a credit or debit card was used. Possible values: Credit, Debit | | Card Number | The number of the card used for payment. The number may be partially masked, with some of the digits replaced with the X character. | ## Key Fields * Date * Currency * Total ## Validation Rules To fill in a field with the calculated value, click the suggestion button in the value region of the appropriate field and select one of the suggestions from the drop-down list. | Rule | Description | | :-------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | Process time interval | Normalizes the **Start Date** and **End Date** field values. Calculates the service duration and fills the **Days** field with the result. Date ambiguities are resolved with the help of the **Country** value. **Note:** Services completed within a single day are considered to be one day in length and not zero days. | | Process Taxes | Suggests a value for the **Tax Amount** field based on the **Tax Rate** and the net amount of the purchase, or the other way round. This is possible only if the net amount has been detected. Removes the % sign from the **Tax Rate** field and normalizes ambiguous values. | | Process Date | Normalizes the **Date** field value. Date ambiguities are resolved with the help of the **Country** value. | | Process money fields and currency | Splits the amount and the currency in the **Total**, **Tax Total**, and **Tax Amount** fields, and copies the currency into the **Currency** field if it has not been filled in. Checks that the sum of the **Taxes** and **Tax Amount** fields is equal to the value of the **Total Tax** field. If the values are not equal, displays an error message and suggests filling in the fields with their calculated values. If a value for the **Total Tax** field was not found, fills it in with its calculated value. Displays a warning message if the **Total Tax** field value is greater than 50% of the value in the **Total** field. Checks that the value of the **Currency** field is a known ISO currency. If the currency is not known or has not been extracted, suggests currency values for the supported countries. Currency descriptions and symbols are replaced with ISO codes. | ## Parameters The **Taxi Receipt** skill has default skill parameters that can be used to modify field extraction. You may want to change the values of these parameters in Vantage or Advanced Designer for certain document processing scenarios (for example, if you are only processing documents from certain countries). For more information, see [Skill parameters](/vantage/documentation/skill-designer/skill-parameters/skill-parameters). | Parameter | Description | | :-------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | PredefinedCountries | A predefined list of countries that restricts automatic country detection for taxi receipts. By default, the value of this parameter is empty. You can specify the countries by writing in their Alpha-2 ISO country codes separated by a semi-colon. The value of this parameter will primarily affect the extraction of data from the **Country**, **Currency**, **Tax Total**, and **Taxes** fields. | | PredefinedExpenseType | A predefined list of expense types that restricts automatic expense type detection for taxi receipts. The default value of this parameter is **Taxi**. **Note:** We do not recommend changing the value of this parameter. | # Remittance Advice - Document Skill Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/built-in-skills/remittance-advice Extract data from remittance advice notifications — invoice numbers, payment amounts, dates, and references — for accounts receivable reconciliation. The **Remittance Advice** skill extracts data from remittance advice notifications. A remittance advice is a letter sent by the client to the vendor to confirm that an invoice has been paid by the client. A remittance advice can also be accompanied by an invoice or a receipt. The Remittance Advice skill is a production skill. It has been fully trained on a large document set and provides high accuracy of data identification and extraction. The skill is ready to be used in production and does not require further training on your specific documents. Accuracy and straight-through processing (STP) rates can be further optimized in production through continuous learning from human-in-the-loop feedback. ## Countries and Languages | Countries | Languages | | :---------- | :-------- | | USA | English | | Australia | English | | New Zealand | English | ## Extracted Fields Asterisk (`*`) indicates a required field or field group. Values cannot be empty. ### Customer | Field | Description | | :--------------------- | :------------------------------------------------------------ | | Customer ID as Printed | The client/customer identifier in the document. | | Name\* | Information about the customer sending the remittance advice. | | Address | Information about the customer sending the remittance advice. | ### Vendor | Field | Description | | :------------------- | :------------------------------------------------------------ | | Vendor ID as Printed | The vendor's identifier in the document. | | Name | Information about the vendor receiving the remittance advice. | | Address | Information about the vendor receiving the remittance advice. | ### Payment Information If a receipt was received together with a remittance advice, these fields can also be extracted from the receipt. | Field | Description | | :--------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Payment Number | The payment registration or invoice number. | | Payment Date | The payment or invoice date. | | Payment Amount\* | The payment amount. Sometimes, the values of **Payment Amount** and **Total** are identical, seeing as the amount is only specified once. If there are two amounts in the document, the **Compare Total and Payment Amount** rule is used. | | Currency | The currency of the payment. | ### Financial Summary | Field | Description | | :------- | :------------------------------------------------------------------------------------------------------------------------- | | Total | The total amount paid. | | Bank Key | The bank identifier. This field is optional and may have the name of the bank as its value if no bank identifier is found. | ### Line Items (Repeating Group) | Field | Description | | :--------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Invoice Number\* | The number of the invoice. | | Invoice Date | The date on which the invoice was issued. | | Paid Amount | The total invoice amount paid. | | Invoice Amount | The total invoice amount. Usually, the values for **Amount** and **Invoice Amount** are identical, in which case the amount will only be specified once on the document. Sometimes, these values may differ. This may happen, for example, if the client is offered a discount. In this case, both amounts will be specified. | | Discount | The discount applicable to the invoice amount. | | Type | The invoice type. There are two types of invoices:
1. Debit – increases the total invoice amount
2. Credit – decreases the total invoice amount. This field is optional and may have one of the following values: - (negative) or + (positive), D (Debit) or C (Credit) if the remittance advice is in English. | | Customer ID | The client/customer identifier. | ## Key Fields * Customer/Name * Vendor/Name * Payment Number * Total * Payment Information/Currency ## Validation Rules | Rule | Description | | :------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Check payments with discounts | Checks if the total amount paid (**Line Items/Paid Amount**) is equal to the total invoice amount (**Line Items/Invoice Amount**) minus the **Discount**. | | Line Items: Invoice Number is Required | Checks if each Line Item has an Invoice Number filled out. | | Check or fill Total | If the total amount paid is not specified in the document, sets the value of **Total** to be the total invoice amount paid (**Line Items/Paid Amount**). If the total amount paid is specified, checks that it is equal to the total invoice amount paid (**Line Items/Paid Amount**). If the value of **Line Items/Type** is **Credit**, then the positive value of **Line Items/PaidAmount** is considered to be negative for that line item when calculating the total invoice amount paid. | | Compare Total and Payment Amount | Checks that the total amount paid (**Total**) is equal to the payment amount (**Payment Amount**). | | Normalize currency to 3-digits code | Normalizes the value of the **Currency** field to a three-digit currency code. | # Resume - Document Skill Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/built-in-skills/resume Extract data from resumes (CVs) — personal info, work experience, education, skills, and certifications — for HR, recruiting, and applicant tracking. The **Resume** skill extracts data from resumes (also known as curriculum vitae or CVs) — the documents people use to apply for jobs, summarizing a person's career history, qualifications, education, and skills. The Resume skill is a preview skill. It has been trained on a limited set of documents and is designed to help you quickly get started with processing resumes. For production use, you may need to uptrain the skill with your own document samples. ## Countries and Languages | Countries | Languages | | :-------- | :-------- | | USA | English | | Canada | English | | | French | ## Extracted Fields ### Personal Information | Field | Description | | :------------ | :----------------------------------- | | Full Name | The name of the candidate. | | Date of Birth | The date of birth of the candidate. | | Email | The e-mail address of the candidate. | | Phone Number | The phone number of the candidate. | ### Education (Repeating Group) | Field | Description | | :---------------------------------- | :------------------------------------------------------------------------------- | | Institution Name | The name of the candidate's educational institution. | | Degree | The degree earned at the educational institution. | | Field of Study | The obtained specialization. | | GPA | The grade point average (GPA) of the candidate. | | Education Period or Graduation Date | The period of studying at the educational institution or the date of graduation. | ### Employment (Repeating Group) | Field | Description | | :---------------- | :-------------------------------------------- | | Employer Name | The name of the employer. | | Location | The legal address of the organization. | | Position | The candidate's position in the organization. | | Employment Period | The period of employment. | ## Key Fields * Full Name * Email # Riders - Document Skill (Preview) Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/built-in-skills/riders Extract data from Riders — addenda to insurance and contract agreements that add terms and conditions or modify coverage. The Riders skill is currently available in Preview. The **Riders** skill extracts data from Riders — the addenda to insurance policies or contracts that add terms and conditions or modify the underlying agreement. The Riders skill is a preview skill. It has been trained on a limited set of documents and is designed to help you quickly get started with processing riders. The Riders skill cannot be trained on additional documents. The Riders skill recognizes handwritten text. This option is enabled by default. If you do not import handwritten forms, disable the **Handwritten** option in the skill settings. ## Countries and Languages | Countries | Languages | | :-------- | :-------- | | USA | English | ## Extracted Fields ### Borrower Information (repeating group) | Field | Description | | :------------- | :------------------------- | | Name | Name of the borrower. | | Signature | Signature of the borrower. | | Signature Date | Date of the signature. | ### Rider Information | Field | Description | | :----------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Rider’s Date | The date when the document was created. | | Planned Unit Development | The name of the planned unit development. | | All Pages Are Present | Indicates whether all numbered pages are present in the document. For example, all pages are deemed to be present if the document contains pages numbered as 1 of 5, 2 of 5, 3 of 5, 4 of 5, and 5 of 5. | ## Key Fields * Borrower info/Name * Borrower info/Signature Date ## Validation Rules | Rule | Description | | :------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Rule To Copy Borrower Name | If the **Borrower Info/Name** field is blank, Vantage copies the name from the **AuxPerSignature** field to the **Borrower Info/Name** field if certain conditions are met. | # Schedule C (Form 1040), Profit or Loss from Business Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/built-in-skills/schedule-c Extract data from IRS Schedule C (Form 1040), Profit or Loss from Business — used by sole proprietors to report business income and expenses on their return. The **Schedule C (Form 1040), Profit or Loss from Business** skill extracts data from Schedule C supplement documents to Forms 1040. A Schedule C is a document used by taxpayers to report income or loss from a business they operated or a profession they practiced as a sole proprietor. An activity qualifies as a business if: * The primary purpose for engaging in the activity is for income or profit * The reporter is involved in the activity with continuity and regularity The Schedule C (Form 1040), Profit or Loss from Business skill is a preview skill. It has been trained on a limited set of documents and is designed to help you quickly get started with processing Schedule C documents. For production use, you may need to uptrain the skill with your own document samples. This skill recognizes handwritten text. The option is enabled by default. If you do not import handwritten forms, disable the **Handwritten** option in the skill settings. ## Countries and Languages | Countries | Languages | | :-------- | :-------- | | USA | English | ## Extracted Fields ### Basic Information | Field | Description | | :--------------------------- | :------------------------------------------------------------ | | Form | The Form 1040 supplement type (for example, 1040 Schedule C). | | Year | The reporting fiscal year. | | Name of Proprietor | The name of the proprietor. | | Social Security Number (SSN) | The Social Security Number of the taxpayer. | ### Business Details | Field | Description | | :------------------------------- | :----------------------------------------------------------------------------------------------------- | | Principal Business or Profession | The principal business or profession, including product or service. | | Code from Instructions | The principal business or professional activity code. | | Business Name | The business name. | | Employer ID Number (EIN) | The employer identification number (EIN). | | Business Address | The business address (including suite or room number): city, town or post office, state, and ZIP code. | ### Accounting Method | Field | Description | | :-------------- | :--------------------------------------------------------------------- | | Cash | The accounting method - Cash basis. | | Accrual | The accounting method - Accrual basis. | | Other (Specify) | The accounting method - Other method. | | Other Method | The name of the other accounting method, if Other (Specify) is marked. | ### Business Activity | Field | Description | | :------------------------------------------------------------------------ | :------------------------------------------------------------------------------------------------------------------------------------------- | | Material Participation in the Operation of This Business during This Year | Indicates whether the business activity was not a rental activity and met any of the material participation tests. Possible values: Yes, No. | | Started or Acquired This Business during This Year | Indicates that the business was started or acquired during the current year. | ### Form 1099 Requirements | Field | Description | | :------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Any Payments during This Year | Specifies whether any payments requiring a Form 1099 to be submitted were carried out during the reporting year. Possible values: Yes, No. | | Did You or will You File Required Forms 1099 | Specifies whether the required Forms 1099 have been or will be submitted. Possible values: Yes, No. This field is filled in if the value in **Any Payments during This Year** is **Yes**. | ## Key Fields * Year * Social Security Number (SSN) ## Validation Rules | Rule | Description | | :------------------ | :------------------------------------------------------------------------------------------------------------------------------------- | | Form Fill | Sets the value of the **Form** field to "1040 Schedule C" if the corresponding string ("1040 Schedule C") is detected in the document. | | Clean\_Employer\_ID | Removes all non-numeric characters used as separators for the ID number in the **Employer ID Number (EIN)** field. | | Clean\_Code | Removes all non-numeric characters in the **Code from Instructions** field. | # Schedule E (Form 1040), Supplemental Income and Loss Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/built-in-skills/schedule-e Extract data from IRS Schedule E (Form 1040), Supplemental Income and Loss — covers rental real estate, royalties, partnerships, S corps, estates, and trusts. The **Schedule E (Form 1040), Supplemental Income and Loss** skill extracts data from a Schedule E supplement document to Forms 1040. A Schedule E is a document used by taxpayers in the United States to submit annual tax returns regarding incomes and losses from rental real estate, royalties, partnerships, S corporations, estates, trusts, and residual interests in real estate mortgage investment conduits (REMICs). The Schedule E (Form 1040), Supplemental Income and Loss documents may be submitted alongside a [Form 1040](/vantage/documentation/skill-catalog/built-in-skills/form-skills/1040) when reporting income and loss. The Schedule E (Form 1040), Supplemental Income and Loss skill is a preview skill. It has been trained on a limited set of documents and is designed to help you quickly get started with processing Schedule E documents. For production use, you may need to uptrain the skill with your own document samples. This skill recognizes handwritten text. The option is enabled by default. If you do not import handwritten forms, disable the **Handwritten** option in the skill settings. ## Countries and Languages | Countries | Languages | | :-------- | :-------- | | USA | English | ## Extracted Fields ### Basic Information | Field | Description | | :--------------------------- | :----------------------------------------------------- | | Form | The Form 1040 supplement type (e.g., 1040 Schedule E). | | Year | The reporting fiscal year. | | Name(s) Shown on Return | The name of the taxpayer. | | Social Security Number (SSN) | The Social Security Number of the taxpayer. | ### Form 1099 Requirements | Field | Description | | :------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Any Payments during This Year | Specifies whether any payments requiring a Form 1099 to be submitted were carried out during the reporting year. Possible values: Yes, No. | | Did You or will You File Required Forms 1099 | Specifies whether the required Forms 1099 have been or will be submitted. Possible values: Yes, No. This field is filled in if the value in **Any Payments during This Year** is **Yes**. | ## Key Fields * Year * Social Security Number (SSN) ## Validation Rules | Rule | Description | | :--- | :------------------------------------------------------------------------------------------------------------------------------------- | | Form | Sets the value of the **Form** field to "1040 Schedule E" if the corresponding string ("1040 Schedule E") is detected in the document. | # Schedule F (Form 1040), Profit or Loss From Farming Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/built-in-skills/schedule-f Extract data from IRS Schedule F (Form 1040), Profit or Loss From Farming — used to report annual farming income and expenses on US individual tax returns. The **Schedule F (Form 1040), Profit or Loss From Farming** extracts data from a Schedule F supplement document to Forms 1040. A Schedule F is a document used by taxpayers in the United States to submit annual tax returns regarding profits and losses from farming. The Schedule F (Form 1040), Profit or Loss From Farming documents may be submitted alongside a Form 1040 when reporting income. The Schedule F (Form 1040), Profit or Loss From Farming skill is a preview skill. It has been trained on a limited set of documents and is designed to help you quickly get started with processing Schedule F documents. For production use, you may need to uptrain the skill with your own document samples. This skill recognizes handwritten text. The option is enabled by default. If you do not import handwritten forms, disable the **Handwritten** option in the skill settings. ## Countries and Languages | Countries | Languages | | :-------- | :-------- | | USA | English | ## Extracted Fields ### Basic Information | Field | Description | | :--------------------------- | :----------------------------------------------------- | | Form | The Form 1040 supplement type (e.g., 1040 Schedule F). | | Year | The reporting fiscal year. | | Name of Proprietor | The name of the farm proprietor. | | Social Security Number (SSN) | The proprietor's Social Security Number. | ### Farming Details | Field | Description | | :------------------------- | :------------------------------------------------------------------------------------ | | Principal Crop or Activity | Principal crop or activity of the proprietor. | | Code from Part IV | The principal agricultural activity code (listed in Part IV on page 2 of Schedule F). | | Employer ID Number (EIN) | The Employer ID Number. | ### Accounting Method | Field | Description | | :------ | :----------------------------------------------------- | | Cash | Specifies that the proprietor uses cash accounting. | | Accrual | Specifies that the proprietor uses accrual accounting. | ### Business Activity | Field | Description | | :------------------------------------------------------------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Material Participation in the Operation of This Business during This Year | Specifies whether the proprietor participated materially in agricultural operations during the reporting year. Possible values: Yes, No. If **No** is specified, see the **Limit on passive losses** section in the Schedule F instructions. | ### Form 1099 Requirements | Field | Description | | :------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Any Payments during This Year | Specifies whether any payments requiring a Form 1099 to be submitted were carried out during the reporting year. Possible values: Yes, No. | | Did You or will You File Required Forms 1099 | Specifies whether the required Forms 1099 have been or will be submitted. Possible values: Yes, No. This field is filled in if the value in **Any Payments during This Year** is **Yes**. | ## Key Fields * Year * Social Security Number (SSN) ## Validation Rules | Rule | Description | | :-------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------- | | Form | Sets the value of the \*\*Form \*\*field to "1040 Schedule F" if the corresponding string ("1040 Schedule F") is detected in the document. | | Clean\_Code\_from\_Part\_IV | Removes all non-numeric characters used as separators for the code in the **Code from Part IV** field. | | Clean\_EIN | Removes all non-numeric characters used as separators for the ID number in the **Employer ID Number (EIN)** field. | # Sea Waybill - Document Skill Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/built-in-skills/sea-waybill Extract data from sea waybills — shipper, consignee, carrier, vessel, ports, and cargo details — for ocean freight where a bill of lading is not used. The **Sea Waybill** skill extracts data from sea waybills — the documents marine carriers issue to list the goods being shipped along with sender, recipient, and carrier details. The sea waybill accompanies the conveyed goods and serves as a contract between carrier and shipper, but it is not a document of title (unlike a bill of lading). The Sea Waybill skill is a preview skill. It has been trained on a limited set of documents and is designed to help you quickly get started with processing seaway bills. For production use, you may need to uptrain the skill with your own document samples. ## Supported Languages * English ## Extracted Fields ### Shipper | Field | Description | | :---------------- | :----------------------------------------------------- | | Tax ID | The shipper's international tax identification number. | | Name | The shipper's name. | | Address | The shipper's address. | | Street | The shipper's detailed address. | | City | The shipper's detailed address. | | State or Province | The shipper's detailed address. | | Postal Code | The shipper's detailed address. | | Country | The shipper's detailed address. | ### Consignee | Field | Description | | :---------------- | :------------------------------------------------------- | | Tax ID | The consignee's international tax identification number. | | Name | The consignee's name. | | Address | The consignee's address. | | Street | The consignee's detailed address. | | City | The consignee's detailed address. | | State or Province | The consignee's detailed address. | | Postal Code | The consignee's detailed address. | | Country | The consignee's detailed address. | ### Notify Party | Field | Description | | :---------------- | :----------------------------------------------------------------------------------------------------- | | Tax ID | The international tax identification number of the company to be notified of the arrival of the cargo. | | Name | The name of the company to be notified of the arrival of the cargo. | | Address | The address of the company to be notified of the arrival of the cargo. | | Street | The detailed address of the company to be notified of the arrival of the cargo. | | City | The detailed address of the company to be notified of the arrival of the cargo. | | State or Province | The detailed address of the company to be notified of the arrival of the cargo. | | Postal Code | The detailed address of the company to be notified of the arrival of the cargo. | | Country | The detailed address of the company to be notified of the arrival of the cargo. | ### Shipment Information | Field | Description | | :--------------------------- | :--------------------------------------------------------------------- | | Also Notify Party | A second party that is notified of goods coming forward for delivery. | | Carrier | The carrier's name. | | Waybill Number | The sea waybill number. | | SCAC | The Standard Carrier Alpha Code. | | ICO Number (repeating field) | The number of the ICO certificate of origin. | | Vessel Name | The name of the vessel engaged to carry the goods. | | Voyage Number | The number of the voyage carrying the goods. | | Port of Loading | The port where the goods are to be loaded. | | Port of Discharge | The port where the goods are to be discharged. | | Pre-carried by | Information about the previous carrier (if any). | | Place of Receipt | The place of receipt of the goods. | | Place of Delivery | The place of delivery of the goods. | | Bill of Lading Number | The number of the bill of lading accompanying the goods. | | Booking Number | The booking number. | | Reference | A reference to the accompanying documents in the customers' databases. | | Origin of Goods | The country where the goods were manufactured. | ### Line Items (Repeating Group) | Field | Description | | :---------------- | :----------------------------------------------------------------------- | | Marks and Numbers | The numbers of the shipping containers used for the goods. | | Quantity | The number of pieces. | | Quantity UoM | The unit of measurement used for the goods (bulk, bags, palettes, etc.). | | Description | A description of the goods. | | Gross Weight (kg) | The gross weight of the goods in kilograms. | | Gross Weight (lb) | The gross weight of the goods in pounds. | | Volume (m3) | The volume of the goods in cubic meters. | | Volume (ft3) | The volume of the goods in cubic feet. | ### Containers (Repeating Group) | Field | Description | | :---------------- | :-------------------------------------------------------------------------- | | Container Number | The unique number of the container. | | Seal Number | The unique number of the container seal. | | Container Type | The type or size of the container (for example, 20-foot, 40-foot, or 20GP). | | Quantity | The number of packages loaded into the container. | | Quantity UoM | The type of packages loaded into the container. | | Net Weight (kg) | The net weight of the container in kilograms. | | Gross Weight (kg) | The gross weight of the container in kilograms. | | Gross Weight (lb) | The gross weight of the container in pounds. | | Volume (m3) | The volume of the container in cubic meters. | | Volume (ft3) | The volume of the container in cubic feet. | ### Totals | Field | Description | | :------------------------- | :----------------------------------------------------------------------- | | Total Number of Containers | The total number of containers. | | Total Quantity | The total number of pieces. | | Total Quantity UoM | The unit of measurement used for the goods (bulk, bags, palettes, etc.). | | Total Weight (kg) | The total weight of the goods in kilograms. | | Total Net Weight (kg) | The total net weight of the goods in kilograms. | | Total Volume (m3) | The total volume of the goods in cubic meters. | ### Freight & Charges | Field | Description | | :----------------- | :----------------------------------------------- | | Total Prepaid | The total amount of prepaid charges. | | Currency (Prepaid) | The currency of the prepaid charges. | | Total Collect | The amount payable upon receipt. | | Currency (Collect) | The currency of the amount payable upon receipt. | ### Document Details | Field | Description | | :------------------------ | :------------------------------------- | | Place of Issue of Waybill | The place of issue of the sea waybill. | | Shipped on Board Date | The date of loading the cargo. | | Date of Waybill | The date of the sea waybill. | ## Key Fields * Shipper/Name * Waybill Number * SCAC * Vessel Name * Port of loading * Bill of Lading Number * Date of Waybill ## Validation Rules To fill in a field with its calculated value, click the suggestion button in the value region of the field and select one of the suggestions from the drop-down list. | Rule | Description | | :------------------------------------------ | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Process weight, volume, and quantity fields | Normalizes fields value, taking into account the typical format and order of magnitude used for sea cargo. | | Process Charges | Parses and cleans up **currency values** found in **freight and charges** fields, using contextual data from the document (like countries involved in the shipment). | | Check total gross and net weight | Checks if the value in the **Totals/Total Net Weight (kg)** field is less than the values in the **Totals/Total Weight (kg)** field. If not, displays an error. | | Copy Quantity UoM | If the **Totals/Total Quantity UoM** field is empty and only one type of packaging is used throughout the document, copies the values from the **Line Items/Quantity UoM** or **Containers/Quantity UoM** fields. Suggests a value for empty **Quantity UoM** fields in the **Line Items** and **Containers** tables based on the **Total/Total Quantity UoM** field. | | Check net weight total | Checks if the value in the **Totals/Total Net Weight (kg)** field equals the sum of the values in the **Containers/Net Weight (kg)** fields. If the values are not equal, or some of the fields are missing, suggests filling in the fields with their calculated values. | | Check quantity total | Checks if the value in the **Totals/Total Quantity** field equals the sum of the values in the **Containers/Quantity** fields. If the values are not equal, or some of the fields are missing, suggests filling in the fields with their calculated values. | | Check weight total | Checks if the value in the **Totals/Total Weight (kg)** field equals the sum of the values in the **Containers/Gross Weight (kg)** fields. If the values are not equal, or some of the fields are missing, suggests filling in the fields with their calculated values. | | Check non-metric volume (Line Items table) | Checks **volume entries** in **metric units (m³)** and **imperial units (ft³)** for **line items**, and suggests corrections when needed. | | Check non-metric weight | Checks **Gross Weight (kg)** and **Gross Weight (lb)** fields to ensure they are consistent with each other. | | Check non-metric weight (Line Items table) | Checks the**Gross Weight (kg)** and **Gross Weight (lb)** fields to ensure they are consistent with each other. | | Disambiguate Dates | Normalizes date text to date value. Ambiguous dates are assumed to be in European (date-month-year) format, as is the case on the majority of transport documents. | | Check volume total | Checks if the value in the **Totals/Total Volume (m3)** field equals the sum of the values in the **Containers/Volume (m3)** fields. If the values are not equal, or some of the fields are missing, suggests filling in the fields with their calculated values. | | Check container total | Checks if the value in the **Totals/Total Number of Containers** field equals the number of entries in the **Containers** table. If the values are not equal suggests filling in the **Totals/Total Number of Containers** field with its calculated value. | | Check quantity total (Line Items table) | Checks if the value in the **Totals/Total Quantity** field equals the sum of the values in the **Line Items/Quantity** fields. If the values are not equal, or some of the fields are missing, suggests filling in the fields with their calculated values. | | Check weight total (Line Items table) | Checks if the value in the **Totals/Total Weight (kg)** field equals the sum of the values in the **Line Items/Gross Weight (kg)** fields. If the values are not equal, or some of the fields are missing, suggests filling in the fields with their calculated values. | | Check volume total (Line Items table) | Checks if the value in the **Totals/Total Volume (m3)** field equals the sum of the values in the **Line Items/Volume (m3)** fields. If the values are not equal, or some of the fields are missing, suggests filling in the fields with their calculated values. | # Sick Note - Document Skill Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/built-in-skills/sick-note Extract data from sick notes (Germany, Belgium, Netherlands) — patient, attending physician, sick-leave dates, insurance, and work-related status. The **Sick Note** skill extracts data from sick notes issued in Germany, Belgium, and the Netherlands — the medical certificates that serve as grounds for an employee's sick leave. Each note contains information about the patient (employee), attending specialist, insurance company, sick-leave start and end dates, and whether the injury or illness is work-related. The Sick Note skill is a preview skill. It has been trained on a limited set of documents and is designed to help you quickly get started with processing sick notes. For production use, you may need to uptrain the skill with your own document samples. ## Countries and Languages | Countries | Languages | | :---------- | :-------- | | Germany | German | | Belgium | French | | | Dutch | | Netherlands | Dutch | | | English | ## Extracted Fields ### General Information | Field | Description | | :------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Date | The sick note registration date. | | Health insurer | The name of the medical insurance company. This field can only be found on German documents. The actual German designation is **Krankenkasse beziehungsweise Kostenträger**. | ### Type of Sick Note (Checkmark Group) | Field | Description | | :--------------- | :-------------------------------------------------------- | | First Occurrence | Indicates that this is a first injury/illness sick leave. | | Extension | Indicates that this is an extended sick leave. | | Relapse | Indicates that this is a sick leave due to relapse. | ### Patient | Field | Description | | :------------------ | :--------------------------------------------------------------------------------------------------------------------------------------------------- | | Insurance ID | The insurance company identifier. | | German Insurance ID | The German insurance company identifier. This field can only be found on German documents. The actual German designation is **Kostenträgerkennung**. | | Full Name | The employee's full name. | | Date of Birth | The employee's date of birth. | | Address | The employee's address. | ### Restrictions (Checkmark Group) Specifies restrictions. Multiple fields can be checked simultaneously. | Field | Description | | :------------------------- | :------------------------------------------------------------------------------------------------------------------------------------ | | Work | Restriction indicator | | Attend Classes | Restriction indicator | | Engage in Sports | Restriction indicator | | Swimming | Restriction indicator | | Perform Strenuous Activity | Restriction indicator | | Attend Workplace | Restriction indicator | | Attend Kindergarten | Restriction indicator | | Other | Restriction indicator | | Other(Clarification) | If the **Other** field in the **Restrictions** checkmark group is checked, this field describing the restriction should be filled in. | ### Duration Information | Field | Description | | :----------------------- | :---------------------------------------- | | Duration (days) | The duration of the sick leave. | | Sickness Start Date | The starting date of the sick leave. | | Presumable Recovery Date | The estimated end date of the sick leave. | | Sickness Concluded Date | The actual end date of the sick leave. | ### Cause of Absence (Checkmark Group) Indicates the type of injury/illness. | Field | Description | | :--------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------- | | Sickness | Cause indicator | | Surgery | Cause indicator | | Accident | Cause indicator | | Sickness of Dependant | Cause indicator | | Family Reasons | Cause indicator | | Hospitalization | Cause indicator | | Stay at Emergency Room | Cause indicator | | Other | Cause indicator | | Other(Clarification) | If the **Other** field in the **Cause of Absence** checkmark group is checked, this field describing the cause of absence should be filled in. | ### Additional Details | Field | Description | | :--------------- | :---------------------------------------------------- | | Date of Accident | The date of the accident. | | Work-Related | Specifies whether the injury/illness is work-related. | ### Leaving Home (Checkmark Group) | Field | Description | | :------------- | :------------------------------------------ | | Authorized | Indicates that leaving home is allowed. | | Not Authorized | Indicates that leaving home is not allowed. | ### Doctor | Field | Description | | :----------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Doctor ID | The identifier, additional information, and signature of the attending doctor. | | Doctor Information | The identifier, additional information, and signature of the attending doctor. | | Assigned to Doctor (checkmark field) | Marked if the attending doctor is a traffic and work-related accident treatment specialist. This field can only be found on German documents. The actual German designation is **Dem Durchgangsarzt zugewiesen**. | ## Key Fields * Patient/Full Name * Patient/Insurance ID * Date * Sickness Start Date ## Validation Rules | Rule | Description | | :------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Check Dates | Checks that there is at most 3 days between the sick leave start date (**Sickness Start Date**) and the sick note registration date (**Date**). If not, displays an appropriate error message. | | Type of Sick Note Checkmark | Checks that only one type of Sick Note is selected. Auto-checks **Extension** if certain conditions are met. | | Leaving Home Checkmark Check | Checks whether the constraints on the minimum and maximum number of checked checkboxes in the **Leaving Home**, **Restrictions**, and **Cause of Absence** groups are satisfied, and converts plain text values to their standardized checkbox equivalents. | | Restrictions Checkmark Check | Checks whether the constraints on the minimum and maximum number of checked checkboxes in the **Leaving Home**, **Restrictions**, and **Cause of Absence** groups are satisfied, and converts plain text values to their standardized checkbox equivalents. | | Check Document Copy | Checks that the document is a copy of the sick note intended for the employer. If the appropriate mark is not detected, displays a message saying that the uploaded copy is not the correct one. The rule is relevant for German documents only. | | Cause of Absence Checkmark Check | Checks whether the constraints on the minimum and maximum number of checked checkboxes in the **Leaving Home**, **Restrictions**, and **Cause of Absence** groups are satisfied, and converts plain text values to their standardized checkbox equivalents. | | Normalized IDs | Normalizes the doctor and patient identifier to the default national format. | # Small Residential Income Property Appraisal (FHLMC 72 / FNMA 1025) Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/built-in-skills/small-residential-income Extract data from FHLMC 72 / FNMA 1025 Small Residential Income Property Appraisal Reports — property data, market analysis, and valuation for US mortgages. The **Small Residential Income Property Appraisal Report (Form FHLMC 72 or FNMA 1025)** skill extracts data from Small Residential Income Property Appraisal (Form FHLMC 72 or FNMA 1025) reports, which are documents used to provide information about residential real estate and its estimated value. These documents are also required for mortgage loan applications and contain the information such as information about the property and its surrounding area, real estate market data, technical data, property photos, and property blueprints. The Small Residential Income Property Appraisal Report (Form FHLMC 72 or FNMA 1025) skill is a preview skill. It has been trained on a limited set of documents and is designed to help you quickly get started with processing appraisals. For production use, you may need to uptrain the skill with your own document samples. This skill recognizes handwritten text. The option is enabled by default. If you do not import handwritten forms, disable the **Handwritten** option in the skill settings. ## Countries and Languages | Countries | Languages | | :-------- | :-------- | | USA | English | ## Extracted Fields ### Property Information | Field | Description | | :---------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------- | | PUD | Specifies whether the property is part of a planned unit development. Possible values: Yes, No. | | Type | Specifies the dwelling type. Possible values: Det, Att, S-Det. | | Fannie Mae Form | The name of the Fannie Mae Form 1025 used in the appraisal. For example, Fannie Mae Form 1025 – Small Residential Income Property Appraisal Report (2- to 4-unit). | | Appraised Value of Subject Property | The appraised value of the property. | | Effective Date of Appraisal | The date on which appraisal was performed. | | State License Number | The license number of the appraiser company. | | Legal Name of Project | The legal name of the project for planned unit development. | | State Certification Number | The state certification number of the appraiser company. | ### Unit Details | Field | Description | | :----------------------- | :-------------------------------- | | Unit Number 1 Bedrooms | The number of bedrooms in Unit 1. | | Unit Number 2 Bedrooms | The number of bedrooms in Unit 2. | | Unit Number 3 Bedrooms | The number of bedrooms in Unit 3. | | Unit Number 4 Bedrooms | The number of bedrooms in Unit 4. | | Unit Number 1 Total Rent | The total rental price of Unit 1. | | Unit Number 2 Total Rent | The total rental price of Unit 2. | | Unit Number 3 Total Rent | The total rental price of Unit 3. | | Unit Number 4 Total Rent | The total rental price of Unit 4. | ## Key Fields * Appraised Value of Subject Property * Effective Date of Appraisal * State License Number * Legal Name of Project * State Certification Number # Truth in Lending Disclosure Statement - Document Skill Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/built-in-skills/truth-in-lending Extract data from Truth in Lending (TIL) Disclosure Statements — lender, borrower, interest rate, monthly payments, and settlement fees — for US mortgage loans. The **Truth in Lending Disclosure Statement** skill extracts data from Truth in Lending (TIL) disclosure statements — the reports required under the Truth in Lending Act (TILA) that summarize a mortgage loan's terms, including the lender, borrower, interest rate, monthly payments, and settlement fees (preliminary or final). The Truth in Lending Disclosure Statement skill is a preview skill. It has been trained on a limited set of documents and is designed to help you quickly get started with processing Truth-in-Lending disclosure statements. For production use, you may need to uptrain the skill with your own document samples. ## Countries and Languages | Countries | Languages | | :-------- | :-------- | | USA | English | ## Extracted Fields ### Document Type | Field | Description | | :---------- | :----------------------------------------------------------------------- | | Preliminary | Specifies that preliminary mortgage terms are evaluated in the document. | | Final | Specifies that final mortgage terms are evaluated in the document. | ### Basic Information | Field | Description | | :--------------- | :--------------------------------------- | | Date | The document registration date. | | Loan Number | The loan identifier. | | Lender Name | The name of the lending organization. | | Lender Address | The address of the lending organization. | | Borrower Name | The name of the borrower. | | Borrower Address | The address of the borrower. | | Co-Borrower Name | The name of the co-borrower. | | Property Address | The address of the financed property. | ### Financial Terms | Field | Description | | :--------------------- | :----------------------------------------------------------------------------------------------------------- | | Annual Percentage Rate | The annual interest rate. | | Finance Charge | The total cost of the mortgage loan, including the total interest and other charges. | | Amount Financed | The amount loaned to the borrower. | | Total of Payments | The total amount payable by the borrower to the lending organization (**Finance Charge + Amount Financed**). | ### Payment Schedule (Repeating Group) | Field | Description | | :----------------- | :---------------------------- | | Number of Payments | The number of payments. | | Amount of Payments | The size of a single payment. | | Payments Due | The payment due date. | ### Monthly Payment Details | Field | Description | | :-------------------------------- | :----------------------------------------------------------------- | | Interest Rate | The mortgage interest rate. | | Principal and Interest Payment | The monthly payment breakdown (into principal and interest parts). | | Escrow (est. Taxes and Insurance) | The estimated amount required to cover monthly escrow charges. | | Total est. Monthly Payment | The total estimated monthly payment. | ### Loan Features | Field | Description | | :--------------------------- | :--------------------------------------------------------------------------------------------------- | | Demand Feature | Specifies whether the lending organization is able to call the loan at any time before the due date. | | Variable Rate Applicable | Specifies whether the interest rate is a variable interest rate. | | Variable Rate Not Applicable | Specifies whether the interest rate is a variable interest rate. | | Security Property Address | The address of the security property. | ### Late Charge Information | Field | Description | | :--------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Late Charge Days | The number of days after which a late charge will be levied for an overdue payment. | | Based on Overdue Payment | Specifies whether the amount levied for a late charge is based on the size of the overdue amount. | | Based on Overdue Payment % | The percentage of the overdue amount that is charged by the lending organization if the payment is not made in full by the end of the specified late period (**Late Charge Days**). | | Based on Overdue Payment of Principal and Interest | Specifies whether the late charge is based on the monthly principal and interest payment amounts (**Principal and Interest Payment**). | | Based on Overdue Payment of Principal and Interest % | The percentage of the monthly payment (**Principal and Interest Payment**) payable by the borrower to the lending organization if the payment is not made in full by the end of the specified late period (**Late Charge Days**). | | Based on Range | Specifies whether the late charge amount has to be within a specific range. | | Based on Range Min | The minimum and maximum possible late charge amounts. | | Based on Range Max | The minimum and maximum possible late charge amounts. | ### Conditional Charge | Field | Description | | :------------ | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | The Lesser | Specifies that the late charge will be equal to the lesser amount between (**Default %**) and (**Threshold sum**). | | The Greater | Specifies that the late charge will be equal to the greater amount between (**Default %**) and (**Threshold sum**). | | Equal To | Specifies that the late charge will be a fixed amount (**Threshold sum**). | | Default % | If a different late charge amount is not specified, specifies the percentage of the unpaid amount that is payable by the borrower to the lending organization if the payment is not made in full by the end of the specified late period (**Late Charge Days**). | | Threshold sum | If a different late charge amount is not specified, specifies the fixed amount payable by the borrower to the lending organization if the payment is not made in full by the end of the specified late period (**Late Charge Days**). | ### Additional Fees and Terms | Field | Description | | :----------------------- | :------------------------------------------------- | | Filing or Recording Fees | The mortgage loan filing and registration charges. | ### Prepayment | Field | Description | | :------------------------------------ | :------------------------------------------------------------------------------------------------ | | Penalty | Specifies whether there are additional charges for early repayment. | | No Penalty | Specifies whether there are additional charges for early repayment. | | Entitled to Finance Charge Refund | Specifies whether the borrower is entitled to a finance charge refund in case of early repayment. | | Not Entitled to Finance Charge Refund | Specifies whether the borrower is entitled to a finance charge refund in case of early repayment. | ### Assumption | Field | Description | | :----------------------- | :------------------------------------------------------- | | Not Allowed to Assume | Specifies whether the mortgage is an assumable mortgage. | | May be Allowed to Assume | Specifies whether the mortgage is an assumable mortgage. | ### Property Insurance | Field | Description | | :---------------- | :------------------------------------------------------------------------- | | Not Available | Specifies that the lending organization does not offer property insurance. | | Available Through | The name of the organization providing the property insurance. | | Insurance | The property insurance payment size. | | Insurance Term | The property insurance payment term. | ## Key Fields * Date * Loan Number * Borrower Name * Co-Borrower Name * Property Address * Annual Percentage Rate * Finance Charge ## Validation Rules | Rule | Description | | :------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------ | | Demand Feature Checkmark Check | Sets the value of the **Demand Feature** checkmark depending on the text description. | | Variable Rate Applicable Checkmark Check | Sets the value of the **Variable Rate Applicable** checkmark depending on the text description. | | Variable Rate Not Applicable Checkmark Check | Sets the value of the **Variable Rate Not Applicable** checkmark: when the checkmark is missing from the form, depending on the text description. | # Uniform Residential Appraisal Report Skill Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/built-in-skills/uniform-residential-appraisal Extract data from Uniform Residential Appraisal Reports — property data, market analysis, and valuation — for US and Canadian mortgage origination. The **Uniform Residential Appraisal Report (Appraisal)** skill extracts data from US and Canadian uniform residential appraisal reports, which are documents used to provide information about residential real estate and its estimated value. These documents are also required for mortgage loan applications and contain the information such as information about the property and its surrounding area, real estate market data, technical data, property photos, and property blueprints. The Uniform Residential Appraisal Report (Appraisal) skill is a preview skill. It has been trained on a limited set of documents and is designed to help you quickly get started with processing appraisals. For production use, you may need to uptrain the skill with your own document samples. ## Countries and Languages | Countries | Languages | | :-------- | :-------- | | USA | English | ## Extracted Fields ### General Information | Field | Description | | :---------- | :--------------------------------------------------------------------------------------------------------------------------------- | | File Number | The report number/identifier used by the appraiser. This field is repeating on all pages but is extracted only from the first one. | ### Subject | Field | Description | | :------------------------ | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Property Address | The address of the appraised property. | | Property City | The address of the appraised property. | | Property State | The address of the appraised property. | | Property ZIP | The address of the appraised property. | | Borrower | The borrower's name. | | Owner of Public Record | The property owner's name. | | County | The county where the property is located. | | Legal Description | The legal description of the property. | | Assessor's Parcel Number | The identifier used to track the property in county, state, and municipal tax records. | | Tax Year | The current tax year used by the locale for the reporting period (fiscal or actual). | | R.E. Taxes USD | The sum of all real estate taxes for the reporting period (tax year). | | Neighborhood Name | The name of the neighborhood where the property is located. This field can also be called **Project Name**. | | Map Reference | The location map reference, page number, and coordinates. Must relate to location maps most commonly used in the locale. | | Census Tract | The census tract number assigned by the Census Bureau. | | Occupant | The occupancy status at the time of the appraisal (Owner, Tenant, Vacant). | | Special Assessments USD | The total dollar amount of the property's special assessment taxes charged for local infrastructure projects and off-site improvements (e.g., the construction and maintenance of roads or sewage systems). | | Property Rights Appraised | Property rights appraised for the property. Possible values: Fee Simple, Leasehold, Other (description included). | | Assignment Type | The assignment type. Possible values: Purchase Transaction, Refinance Transaction, Other (description included). | | Lender or Client | Information about the lending organization that will receive the report. | | Address | Information about the lending organization that will receive the report. | ### Contract Group | Field | Description | | :---------------------------------------- | :------------------------------------------------------------------------------------------------------------------------- | | I Did Analyze the Contract | Specifies whether the contract of sale was analyzed or not. | | I Did Not Analyze the Contract | Specifies whether the contract of sale was analyzed or not. | | Contract Price | The final, agreed upon contract price. | | Date of Contract | The date on which the contract is signed by all parties. | | Property Seller is Owner of Public Record | Specifies whether the seller is the owner of the public record. Possible values: Yes, No. | | Financial Assistance | Specifies whether there is any financial assistance paid by any party on behalf of the borrower. Possible values: Yes, No. | | Financial Assistance Total | The total amount of financial assistance paid. | ### Neighborhood #### Neighborhood Characteristics | Field | Description | | :------- | :----------------------------------------------------------------------------------------------------------------- | | Location | The type of area surrounding the property. Possible values: Urban, Suburban, Rural. | | Built-Up | The approximate percentage of built up land in the surrounding area. Possible values: Over 75%, 25-75%, Under 25%. | | Growth | The growth rate of the built-up land in the surrounding area. Possible values: Rapid, Stable, Slow. | #### One-Unit or Manufactured or Condominium Housing Trends | Field | Description | | :--------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Property Values | The current property value trend in the surrounding area. Possible values: Rapid, Stable, Slow. | | Demand or Supply | The demand/supply trend in the surrounding area. Possible values: Shortage, In Balance, Over Supply. | | Marketing Time | The average length of time required for a property in the area to remain on the market before being sold at a price near market value. Possible values: Under 3 mths, 3-6 mths, Over 6 mths. | #### One-Unit or Manufactured or Condominium Housing | Field | Description | | :------------------- | :----------------------------------------------------------------- | | Price USD (000) Low | The lowest property price for the specified area. | | Price USD (000) High | The highest property price for the specified area. | | Price USD (000) Pred | The predominant property price for the specified area. | | Age yrs Low | The age of the oldest residential property for the specified area. | | Age yrs High | The age of the newest residential property for the specified area. | | Age yrs Pred | The predominant residential property age for the specified area. | #### Present Land Use % | Field | Description | | :----------- | :----------------------------------------------------------- | | One-Unit | The percentage of land occupied by single-unit houses. | | 2-4 Unit | The percentage of land occupied by houses with 2-4 units. | | Multi-Family | The percentage of land occupied by multi-unit houses. | | Commercial | The percentage of land occupied by commercial buildings. | | Other | The percentage of land occupied by other types of buildings. | ### Site | Field | Description | | :-------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Dimensions | The dimensions of the property site. | | Area | The total area of the property site. | | Shape | The approximate shape of the site. | | View | A description of the view from the property. | | Specific Zoning Classification | The Land Development Code (LDC) land use classification (e.g., R-1, A-2, Res.200, etc.). | | Zoning Description | A description of the zoning classification. | | Zoning Compliance | Specifies whether the current land use complies with the zoning ordinances. Possible values: Legal, Legal Nonconforming, No Zoning, Illegal, Illegal Describe (including description). | | Highest and Best Use Is the Present Use | Specifies whether the current use of the property is its highest and best use. Possible values: Yes, No (including description). | #### Utilities | Field | Description | | :------------- | :------------------------------------------------------------------------------------ | | Electricity | Specifies the utilities type. Possible values: Public, Other (including description). | | Gas | Specifies the utilities type. Possible values: Public, Other (including description). | | Water | Specifies the utilities type. Possible values: Public, Other (including description). | | Sanitary Sewer | Specifies the utilities type. Possible values: Public, Other (including description). | #### Off-site Improvements | Field | Description | | :------------------------------------------ | :----------------------------------------------------------------------------------------------------------------------------------------- | | Street | Describes the street improvements in the area. | | Alley | Describes the alley improvements in the area. | | FEMA Special Flood Hazard Area | Specifies whether the property is in a FEMA-designated Special Flood Hazard Area (SFHA). Possible values: Yes, No. | | FEMA Flood Zone | The FEMA flood zone designation. | | FEMA Map Number | The FEMA map number. | | FEMA Map Date | The FEMA map date. | | Utilities Are Typical for the Market Area | Specifies whether the utilities are typical for the market area. Possible values: Yes, No (including description). | | Adverse Site Conditions or External Factors | Specifies whether there are any adverse site conditions or external factors in the area. Possible values: No, Yes (including description). | ### Improvements #### General Description | Field | Description | | :------------------ | :--------------------------------------------------------------------------------------------------- | | Units | Specifies whether there is an additional living unit. Possible values: One, One with accessory Unit. | | Number of Stories | The number of stories above grade. | | Type | Specifies the dwelling type. Possible values: Det, Att, S-Det., End Unit. | | Existing | Specifies that the property has already been constructed. | | Proposed | Specifies that the property is not under construction yet. | | Under Const | Specifies that the property is currently under construction. | | Design | A brief description of the property design. | | Year Built | The year the property was completed in. | | Effective Age (Yrs) | The effective age of the property. | #### Foundation A description of the property basement. "Y" specifies that the field is marked, and "N" specifies that it is not. | Field | Description | | :---------------------- | :------------------------------ | | Concrete Slab | Foundation type indicator | | Crawl Space | Foundation type indicator | | Full Basement | Foundation type indicator | | Partial Basement | Foundation type indicator | | Basement Area sq ft | Basement area measurement | | Basement Finish % | Percentage of finished basement | | Outside Entry or Exit | Access indicator | | Sump Pump | Equipment indicator | | Evidence of Infestation | Condition indicator | | Dampness | Condition indicator | | Settlement | Condition indicator | #### Exterior Description A description of the property exterior. "Y" specifies that the field is marked, and "N" specifies that it is not. | Field | Description | | :---------------------- | :----------------- | | Foundation Walls | Exterior component | | Exterior Walls | Exterior component | | Roof Surface | Exterior component | | Gutters & Downspouts | Exterior component | | Window Type | Exterior component | | Storm Sash or Insulated | Exterior feature | | Screens | Exterior feature | #### Interior A description of the property interior. "Y" specifies that the field is marked, and "N" specifies that it is not. | Field | Description | | :------------- | :----------------- | | Floors | Interior component | | Walls | Interior component | | Trim or Finish | Interior component | | Bath Floor | Interior component | | Bath Wainscot | Interior component | #### Attic A description of the property attic. "Y" specifies that the field is marked, and "N" specifies that it is not. | Field | Description | | :--------- | :-------------- | | None | Attic type | | Drop Stair | Attic access | | Stairs | Attic access | | Floor | Attic feature | | Scuttle | Attic access | | Finished | Attic condition | | Heated | Attic feature | #### Heating A description of the property's heating system. "Y" specifies that the field is marked, and "N" specifies that it is not. | Field | Description | | :------ | :----------- | | FWA | Heating type | | HWBB | Heating type | | Radiant | Heating type | | Other | Heating type | | Fuel | Fuel type | #### Cooling A description of the property's cooling system. "Y" specifies that the field is marked, and "N" specifies that it is not. | Field | Description | | :----------------------- | :----------- | | Central Air Conditioning | Cooling type | | Individual | Cooling type | | Other | Cooling type | #### Amenities A description of the other property amenities. "Y" specifies that the field is marked, and "N" specifies that it is not. | Field | Description | | :------------------ | :------------------ | | Woodstove(s) Number | Amenity count | | Fireplace(s) Number | Amenity count | | Fence | Amenity indicator | | Patio or Deck | Amenity indicator | | Porch | Amenity indicator | | Pool | Amenity indicator | | Other | Amenity description | #### Car Storage A description of the property car storage (garage). "Y" specifies that the field is marked, and "N" specifies that it is not. | Field | Description | | :---------------------- | :------------------ | | None | Storage type | | Driveway | Storage type | | Driveway Number of Cars | Capacity | | Driveway Surface | Surface description | | Garage | Storage type | | Garage Number of Cars | Capacity | | Carport | Storage type | | Carport Number of Cars | Capacity | | Att | Attachment type | | Dett | Attachment type | | Built-in | Attachment type | #### Appliances A description of the property household appliances. "Y" specifies that the field is marked, and "N" specifies that it is not. | Field | Description | | :-------------- | :-------------------- | | Refrigerator | Appliance indicator | | Range or Oven | Appliance indicator | | Dishwasher | Appliance indicator | | Disposal | Appliance indicator | | Microwave | Appliance indicator | | Washer or Dryer | Appliance indicator | | Other | Appliance description | #### Finished Area above Grade Contains | Field | Description | | :------------------------------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------ | | Rooms | The total number of above-grade rooms. | | Bedrooms | The total number of bedrooms. | | Baths | The total number of bathrooms. | | Square Feet of Gross Living Area | The total square footage of the GLA above grade. | | Physical Deficiencies or Adverse Conditions | Specifies whether there are any physical deficiencies or adverse conditions that affect the property. Possible values: No, Yes (including description). | | Property Conform to the Neighborhood | Specifies whether the property generally conforms to the surrounding neighborhood. Possible values: Yes, No (including description). | ## Key Fields * File Number * Borrower * Tax Year * Contract Price * Date of Contract # Utility Bill - Document Skill Source: https://docs.abbyy.com/vantage/documentation/skill-catalog/built-in-skills/utility-bill Extract data from utility bills — provider, account holder, billing period, charges, usage, and totals — for electricity, gas, water, telephone, and cable. The **Utility Bill** skill extracts data from utility bills. Utility bills are detailed invoices that are charged and paid regularly (in a payment cycle) for services like electricity, gas, water, telephone, and cable television. The Utility Bill skill is a production skill. It has been fully trained on a large document set and provides high accuracy of data identification and extraction. The skill is ready to be used in production and does not require further training on your specific documents. Accuracy and straight-through processing (STP) rates can be further optimized in production through continuous learning from human-in-the-loop feedback. ## Countries and Languages | Countries | Languages | | :-------- | :-------- | | USA | English | | Canada | English | | | French | ## Extracted Fields Asterisk (`*`) indicates a required field or field group. Values cannot be empty. ### Billing Period | Field | Description | | :----------- | :----------------------------- | | Start Date\* | The billing period start date. | | End Date\* | The billing period end date. | ### Bill Information | Field | Description | | :---------- | :---------------------------------------------------------------------- | | Bill Date | The date on which the bill was issued. | | Bill Number | The bill number. This field is also sometimes named **Invoice Number**. | ### Issuer Information about the company providing the services. | Field | Description | | :------ | :---------------------------------------------------- | | Name\* | Information about the company providing the services. | | Address | Information about the company providing the services. | ### Customer Information about the customer or the invoice recipient. The **Service Address** field is the address where the service was performed. | Field | Description | | :--------------- | :------------------------------------------------------- | | Account Number | Information about the customer or the invoice recipient. | | Name | Information about the customer or the invoice recipient. | | Customer Address | Information about the customer or the invoice recipient. | | Service Address | The address where the service was performed. | ### Remit To Information about the business unit or payment recipient. | Field | Description | | :------ | :-------------------------------------------------------- | | Name | Information about the business unit or payment recipient. | | Address | Information about the business unit or payment recipient. | ### Financial Information | Field | Description | | :-------------- | :------------------------------------------- | | Amount Due\* | The total amount due for the billing period. | | Current Charges | Charges for the current period. | | Currency\* | The currency of the amount due. | ### Line Items (Repeating Group) | Field | Description | | :------------- | :-------------------------------------------------------------------------------------------- | | Billing Number | The customer account number (for example, phone number) that is used to identify the account. | | Description | A description of the line item. | | Quantity | The number of units purchased. | | Unit Price | The price of one item. | | UoM | The unit of measurement for the line items. | | Amount | The payment amount. | ### Additional Fields | Field | Description | | :-------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------- | | Previous Balance | The balance for the previous billing period. | | Last Payment | The payment made for the previous billing period. The field value may be negative. | | Balance Forward | The balance brought forward from the previous billing period. The field value may be negative or zero. | | Due Date | The bill due date. After this date, the total amount due may change due to fines charged on unpaid amounts for the billing period. | | Amount after Due Date | The amount charged if the payment is made after the due date. | | Late Charge | Additional charges (flat or percentage) levied in addition to the amount due if the payment is made after the due date. | | Penalties | Charges levied on unpaid amounts for the billing period. | | Adjustments | Payment adjustments. If several adjustment groups have been detected in the document, they are displayed as multiple lines of a repeating group. | ## Key Fields * Issuer/Name * Customer/Name * Bill Date * Due Date * Amount Due ## Validation Rules | Rule | Description | | :-------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------- | | Check Bill Date | Verifies that the **Due Date** is later than the date on which the bill was issued (**Bill Date**). | | Separate currency from amount in money fields | Splits the amount and the currency in a field containing an amount of money, and copies the currency into the **Currency** field if it is empty. | ## Parameters | Rule | Description | | :--------------------- | :------------------------------------------------------------------------------------------------ | | Fields neural net mode | Determines how ABBYY Vantage’s neural network engine extracts key-value fields from the document. | # Analyze classification results Source: https://docs.abbyy.com/vantage/documentation/skill-designer/classification/analyze-classifier-result Review classification accuracy per class in the Result tab and fix common training-set problems that cause misclassifications. After training a Classification skill, open the **Result** tab in the Classification Skill Designer to see how accurately the classifier labels each class and to diagnose errors in the training set. Statistics are updated automatically every time the classifier is trained. If accuracy is low, jump to [Classification errors](#classification-errors) for the common causes and how to fix them. Result tab in the Classification Skill Designer, showing per-class accuracy and document counts. ## Prerequisites * A Classification skill that has been [trained](/vantage/documentation/skill-designer/classification/train-classifier) at least once. ## What the Result tab shows * **General classification accuracy** — percentage of correctly classified documents across the full set. * **Per-class accuracy** — percentage of documents classified correctly for each class. * **Per-class document counts** — number of correctly and incorrectly classified documents per class. * **Last trained** — time and date of the most recent training run. ### Results table The results table contains all non-empty user classes (excluding **No class**). Classes are sorted first by accuracy (worst to best), then by document count, and finally alphabetically by name. A scrollbar appears if all rows don't fit on screen. Clicking a row opens the corresponding class in the **Documents** tab. Renaming a class in the **Documents** tab updates the name in the **Result** tab automatically. If you delete a class after training, its name appears grayed out in the **Result** tab; the row is removed only the next time the classifier is trained. ## When to stop iterating There is no fixed accuracy threshold for a Classification skill — the right target depends on your downstream tolerance for misrouted documents and how much manual review is acceptable. As a practical guide, aim for high per-class accuracy (not just overall), iterate on the causes below while the gap is closing, and stop once a class either meets your business requirement or has clearly plateaued despite rebalanced, clean training data. If a class plateaus well below the others, treat it as indistinguishable and merge it with its nearest neighbor. Once the skill is in production, continue tracking **Document Classifier Accuracy** over time in the [Analytics Dashboard](/vantage/documentation/runtime/analytics-dashboard) and consider [Online learning](/vantage/documentation/runtime/online-learning/enable-online-learning) for continuous improvement. ## Classification errors Most cases of incorrect classification are caused by errors in the training set — for example, incorrectly assigned reference classes or an insufficient number of documents for a given class. ### Incorrectly assigned reference classes To fix this, reassign affected documents and retrain: Click **Review Prediction in Document Set** in the **Actions** pane, or click the row in the results table. Select a document that was incorrectly assigned a reference class. Click the name of the correct class in the **Actions** pane. Repeat the previous two steps for every document that was incorrectly assigned a reference class. Click the **Train** button in the **Actions** pane. ### Insufficient or imbalanced training data Insufficient classifier quality may be caused by the following: * An insufficient number of uploaded documents * A substantially uneven distribution of documents among classes * An insufficient number of samples of the most common document variants for the given class Improve classifier quality by adding the missing documents to the training set. Aim for between 100 and 1,000 documents per class, and include sample documents for the most common variants of each class in roughly a one-to-one ratio. After you have added your new documents to the training set, assign a class to each and retrain the classifier. ### Confused classes If two classes are consistently confused because they don't differ meaningfully in shape, layout, or text, merge them into a single class. Separate the documents later in the pipeline using extracted field values if the distinction still matters. For example, a class for invoices under \$10,000 and a class for invoices over \$10,000 will likely be confused, since the only difference between them is the total amount due. Merge them into one **Invoice** class, and branch on the amount downstream — after the total has been extracted. ## Related topics * [Train a classifier](/vantage/documentation/skill-designer/classification/train-classifier) * [Enable Online Learning](/vantage/documentation/runtime/online-learning/enable-online-learning) * [Analytics Dashboard](/vantage/documentation/runtime/analytics-dashboard) # Classification skill Source: https://docs.abbyy.com/vantage/documentation/skill-designer/classification/classification-skill Understand how Vantage uses Classification skills to identify document types and route files to the correct downstream process. A Classification skill determines the type of an incoming document. The document type drives how the document is processed, which fields are extracted, and which rules are checked. It also enables initial manual sorting — for example, routing documents to the correct department. A Classification skill processes one file per transaction. To classify several files containing documents of different types, use the [Classify Activity Process skill](/vantage/documentation/skill-designer/process/classify-activity). ## How it works To train a Classification skill, specify the classes you want and provide a few example documents for each. Vantage analyzes the text and visual elements of each document — including seals and signatures — so the classifier can handle low-quality images and distinguish between similar document types. ## When to use a Classification skill A Classification skill can run as part of a Process skill or on its own: * **As part of a Process skill.** The classifier sorts each incoming document by type, and the Process skill automatically routes it through the rest of the pipeline. * **On its own.** Classify documents directly through the Vantage API, or through a front-end built on it such as the [Try Any Skill portal](/vantage/documentation/skill-catalog/trying-skill#try-any-skill-portal). ### Typical use cases * Sorting mailroom intake into invoices, contracts, and correspondence * Triaging archived documents before extraction * Routing inbound requests to the correct department ## Relationship to other skills A Classification skill sits at the front of a document pipeline and decides what *type* each file is. Other Vantage skills handle what happens next: * [**Document skill**](/vantage/documentation/skill-designer/document/document-skill) — extracts field data from a document once its type is known. * [**OCR skill**](/vantage/documentation/skill-designer/ocr-skill/ocr-skill) — produces searchable text from an image or PDF. * [**Process skill**](/vantage/documentation/skill-designer/process/process-skill) — orchestrates multiple skills (classification, extraction, validation) into a single workflow. ## Common misconceptions A Classification skill labels documents by type. It does not extract field values, run validation rules, or produce searchable text. For field extraction, pair it with a Document skill. For text recognition only, use an OCR skill. ## Next steps Configure languages, Online learning, and publishing for a new Classification skill. Build a training set, assign documents to classes, and run classifier training. Review per-class accuracy in the Result tab and fix common training-set errors. # Set up a Classification skill Source: https://docs.abbyy.com/vantage/documentation/skill-designer/classification/classification-skill-setup Train, configure, and publish a Classification skill so Vantage can route each incoming document to the correct process. Set up a Classification skill to train Vantage on your document types so each incoming file can be routed to the correct downstream process. A Classification skill classifies each document separately. Every uploaded file should contain images for a single document only. ## Prerequisites * A Classification skill [created](/vantage/documentation/skill-catalog/create-skill) and opened in the Skill Designer. * Permission to train and publish skills in your tenant. ## Setup process Upload and mark your documents, and then train the classifier. See [Train a classifier](/vantage/documentation/skill-designer/classification/train-classifier). [Analyze the classification statistics](/vantage/documentation/skill-designer/classification/analyze-classifier-result) and correct any errors that might be causing a decrease in classification accuracy. Repeat steps 1 and 2 until accuracy meets your requirements. [Publish](/vantage/documentation/skill-catalog/publish-skill) the skill to the [Skill Catalog](/vantage/documentation/skill-catalog/skill-catalog). ## Set up a recognition language When processing a document, Vantage selects a processing language from a list of specified languages. When setting up a new skill, four languages are selected by default: English, French, German, and Spanish. To modify the recognition language list, click the skill settings icon to the right of the skill name in the Skill Designer. Languages in the settings dialog are sorted alphabetically, with the selected languages displayed at the top. At least one language must be selected. If the language you need isn't listed, see [languages supported by Classification skills](/vantage/documentation/tenant-admin/supported-languages). The number of selected languages can affect document processing speed. If you know exactly which languages Vantage will encounter in your documents, restrict the list to just those. You can modify a skill's recognition languages even after the skill has been trained. To apply your changes, upload the documents again and retrain the skill. ## Set up Online learning mode **Online learning** collects documents into a training set and then continues to train the skill using those documents. Enable it for skills that are producing poor classification results. For details, see [Enabling Online learning](/vantage/documentation/runtime/online-learning/enable-online-learning). Online learning can slow down processing and requires a Manual Review step in the parent Process skill. Two Online learning modes are available in **Classification Skill Settings**: * **Collect and learn** (default) — collects documents and retrains the skill automatically as they arrive. * **Collect only** — collects documents without retraining. Useful when you want to review additions to the training set before retraining. To collect documents without training, click the skill settings icon to the right of the skill name in the Skill Designer and select **Collect only** in the settings dialog. Classification Skill Settings dialog with Collect only selected ## Related topics * [Languages Supported by Classification Skills](/vantage/documentation/tenant-admin/supported-languages) * [Enable Online Learning](/vantage/documentation/runtime/online-learning/enable-online-learning) # Train a classifier Source: https://docs.abbyy.com/vantage/documentation/skill-designer/classification/train-classifier Create a training set, assign documents to classes, and train a Classification skill in the Skill Designer. To train a classifier, you will need a training set that contains documents that have already been assigned a reference class (the class you've assigned as ground truth for training). ## Prerequisites * A Classification skill [created](/vantage/documentation/skill-catalog/create-skill) and opened in the Skill Designer. * Documents to use as training samples, in a [supported file format](/vantage/documentation/tenant-admin/technical-specs/formats). ## Create a training set In the Classification Skill Designer, open the **Documents** tab. Use the **Create Class** command in the **Actions** pane, or click **Create class** above the class list on the left side of the screen. To rename an existing class, click the icon next to the class name and select **Rename class**. Select a class from the class list, and then upload documents using one of the following: * **Upload documents** in the center of the Classification Skill screen * The **Upload** button in the toolbar * **Upload Documents** in the **Actions** pane When documents are being uploaded, a progress indicator is displayed at the top of the Skill Designer, to the right of the bookmarks. The indicator tooltip contains information about the number of documents that still need to be uploaded and processed. Documents uploaded to the **No class** group are not used for classifier training and testing. If a file fails to upload — for example, because it's in an unsupported format — its name is displayed in red. ### Training set size For each class, the number of documents in that class is displayed. Aim for the following: * If your document set contains very few classes, or the classes differ significantly from each other, you can have a small number of documents per class. * If you have many classes, or the differences between classes are subtle, upload between 10 and 100 documents for each class. Fewer documents in this case may result in classification errors. * Do not upload more than 1,000 documents for a single class. * To maximize accuracy, include one sample document per common variant of each class. ### View and preview documents By default, uploaded documents are displayed as a list, which is easy to navigate if files have informative names. You can also switch to thumbnail view, which may be preferable for visually distinct documents. Use the toolbar buttons to switch between **List view** and **Thumbnail view**. If more than 50 documents are uploaded, they are displayed across multiple pages. To preview a document, click the button to the left of its name. Drag the left border of the preview window to resize it. ### Rotate document pages To rotate document pages: * Click **Rotate** in the toolbar to rotate 90° counter-clockwise. * Or pick **Rotate Left**, **Rotate Right**, or **Rotate 180°** from the drop-down list. * You can also rotate a single document from its preview window. ### Change a document's assigned class 1. Mark one or several documents by selecting the checkbox to the left of their names. 2. In the **Actions** pane, select the appropriate class and click **Assign**. If the correct class does not appear in the list, enter a new name in the **Search for class** field and click **Create**. ### Remove documents from the set You can remove documents in one of the following ways: * Mark one or several documents by selecting the checkbox to the left of their names. You can mark all documents of a specific class by selecting the checkbox next to the class name above the document list (if the class spans several pages, only documents on the current page are marked). Click the icon next to one of the marked documents and then click **Delete**. Confirm your choice in the dialog box. * Click the icon next to a class name in the class list and then click **Delete All Documents**. Confirm your choice. This deletes all documents in the selected class. Alternatively, click **Delete Class with All Documents** to delete the class itself along with its documents. You can delete a single document without marking it first — click the icon next to its name. ## Train the classifier The training set must contain at least two different non-empty classes. Until that's true, the **Train** button stays disabled. To train a classifier using a prepared training set, click the **Train** button in the **Actions** pane. Once training is complete, the **Completed** icon is displayed next to the **Train** button. The class list in the **Documents** tab also updates: in addition to the number of uploaded documents per class, it shows the number of documents whose predicted class differs from the reference class. Class list after training, showing documents counted per class and mispredictions. To stop training, click **Cancel** under the **Train** button in the **Actions** pane. ## Troubleshooting If the trained classifier produces poor results, open the **Result** tab and review the per-class accuracy. Common causes and how to fix them: * **Incorrectly assigned reference classes.** Reassign the affected documents to the correct class and retrain. * **Not enough training documents, or an uneven distribution across classes.** Add more samples — aim for 100–1,000 per class, with roughly one document per common variant. * **Confused classes** that don't differ enough in their parameters. Merge them into a single class and, if needed, separate the documents later in the pipeline based on extracted data. For the full walkthrough, see [Analyze the classification results](/vantage/documentation/skill-designer/classification/analyze-classifier-result). ## Related topics * [Analyze classification results](/vantage/documentation/skill-designer/classification/analyze-classifier-result) * [ABBYY Support walkthrough](https://support.abbyy.com/hc/en-us/articles/4404433833234-How-to-Create-and-Train-a-Classification-Skill-in-ABBYY-Vantage) # Add fields Source: https://docs.abbyy.com/vantage/documentation/skill-designer/document/adding-fields/adding-fields Mark fields on your documents in the Editor tab, manage document images, and configure field properties by type. Mark fields on your documents in the **Editor** tab of the Skill Designer. The Editor tab shows the document list, the document image, and the data form — where extracted fields, their properties, and validation rules live. Drag the separators between the document list, image, and data form to resize each panel. Hide a panel by clicking the icon in its upper-left corner. Two of the three panels can be hidden at once. ## Zoom an image | Action | How | | :---------------------- | :-------------------------------------------------- | | Scroll the image | Scroll the mouse wheel | | Zoom in or out | Hold **Ctrl** and scroll the mouse wheel | | Zoom to a specific area | Hold **Ctrl** and click the area (displays at 200%) | | Return to default zoom | Hold **Ctrl** and click the area again | ## Rotate pages Vantage automatically detects and corrects page orientation. You can also rotate pages manually from the toolbar or the document list. ### From the toolbar Click **Rotate** (rotates 90° counter-clockwise), or choose an option from the dropdown: | Option | Result | | :--------------- | :-------------------------------------- | | **Rotate Left** | Rotates the page 90° counter-clockwise. | | **Rotate Right** | Rotates the page 90° clockwise. | | **Rotate 180°** | Flips the page upside down. | ### From the document list Click the more icon next to a page or the whole document, and then select **Rotate Left**, **Rotate Right**, or **Rotate 180°**. ## Revert page images Image enhancement applied on import can sometimes degrade the original image. You can revert a single page or every page in a document. After reverting, images display without any cropping, distortion corrections, or other enhancements. ### Revert one page 1. Click **Edit document images** in the toolbar. 2. In the **Actions** pane, select **Revert Page Image to Original**. 3. Click **Save & Close**. ### Revert all pages of a document 1. In the document list, select the document. 2. Click **Edit document images** in the toolbar. 3. In the **Actions** pane, select **Revert Page Image to Original**. 4. Click **Save & Close**. ## Field types The method for adding a field and its settings depend on its type. Vantage can extract the following field types: | Field type | Use for | | :---------------------------------------------------------------------------------------------- | :-------------------------------------------------------- | | [Text](/vantage/documentation/skill-designer/document/adding-fields/text) | Plain text values, such as names or addresses. | | [Table](/vantage/documentation/skill-designer/document/adding-fields/table) | Tabular data with rows and columns. | | [Barcode](/vantage/documentation/skill-designer/document/adding-fields/barcode) | Barcode or QR code values. | | [Checkmark](/vantage/documentation/skill-designer/document/adding-fields/checkmark) | Single checkboxes or mark fields. | | [Group](/vantage/documentation/skill-designer/document/adding-fields/group) | Groups of related fields (for example, an address block). | | [Checkmark group](/vantage/documentation/skill-designer/document/adding-fields/checkmark-group) | Multi-option checkbox sets. | | [Image](/vantage/documentation/skill-designer/document/adding-fields/image) | Cropped image regions extracted from the document. | ## Set field properties Each field type has its own settings. Choosing appropriate properties affects recognition accuracy, manual review behavior, and value normalization. To edit a field's properties, click the **field settings** button next to the field in the data form. The dialog shows general properties by default. Click **Advanced** to see all available properties. ## Related topics * [Label documents in Skill Designer](/vantage/documentation/skill-designer/document/labeling-documents) * [Edit data form layout](/vantage/documentation/skill-designer/document/adding-fields/editing-data-form-layout) # Barcode field Source: https://docs.abbyy.com/vantage/documentation/skill-designer/document/adding-fields/barcode Add a Barcode field to a Document skill, configure which barcode types to recognize, and set field properties. Use a Barcode field to detect barcodes on a document and automatically convert the data they encode into alphanumeric format. ## Add a Barcode field ### Mark a barcode on the document image Click a barcode (highlighted green on hover), or drag a rectangle around it. The new field appears in the data form with an auto-assigned name and barcode type. ### Add an empty field and mark its region Click **Add Barcode** in the toolbar, and then drag a rectangle around the barcode (or click the barcode). The decoded string appears as the field value in the data form. If the auto-assigned name isn't right, double-click the name in the data form, or click the name in **Field options** to rename the field. ### Add regions to an existing Barcode field Select the field in the data form, and then click the barcode location on the document image. ### Change the detected barcode type Vantage assigns a barcode type automatically. To view or change it: 1. Click **Field options** above the field. 2. Click the barcode type name. 3. Select the appropriate options in the dialog. Change the barcode type when Vantage guessed wrong, or when a region may contain barcodes of more than one type. ## General properties | Property | Description | | :----------------------- | :------------------------------------------------------------------------------------------------------------------------------------ | | **Field name** | Unique within the skill. Cannot contain: `. , / : * ? " < > \|`. Maximum length: 90 characters. | | **Allow multiple items** | Whether the barcode repeats (for example, multiple barcodes on an invoice for several orders). | | **Required field** | If enabled and the field is empty after extraction, the document goes to manual review with a rule error. | | **Key field** | Adds the field to the skill's key fields, which can be used to search and filter documents in Skill Monitor. | | **Barcode type** | Which barcode types Vantage searches for. Excluded types are not recognized. All types are enabled by default except postal barcodes. | If you know which barcode types your documents contain, exclude the others to speed up processing. ## Related topics * [Supported Barcode Types](/vantage/documentation/tenant-admin/technical-specs/barcodes) * [Label documents in Skill Designer](/vantage/documentation/skill-designer/document/labeling-documents) * [Skill Monitor](/vantage/documentation/runtime/skill-monitor/skill-monitor) * [Add fields](/vantage/documentation/skill-designer/document/adding-fields/adding-fields) # Checkmark field Source: https://docs.abbyy.com/vantage/documentation/skill-designer/document/adding-fields/checkmark Add a Checkmark field to a Document skill, configure the checkmark type, and set field properties. A checkmark is an area on a document where a special mark (usually a check mark or an X) is placed. Checkmarks indicate a choice — for example, a multiple-choice test answer. ## Add a Checkmark field ### Mark a checkmark on the document image Click a checkmark (highlighted green on hover), or drag a rectangle around it. The new field appears in the data form with an auto-assigned name. ### Add an empty field and mark its region Click **Add Checkmark** in the toolbar, and then drag a rectangle around the checkmark or click the checkmark. If the auto-assigned name isn't right, double-click the name in the data form, or click the name in **Field options** to rename the field. ### Add regions to an existing Checkmark field Select the field in the data form, and then click the checkmark location on the document image. You can only add regions to Checkmark fields of type **Square** (checkmarks in bounded square regions). ## General properties | Property | Description | | :----------------- | :-------------------------------------------------------------------------------------------------------- | | **Field name** | Unique within the skill. Cannot contain: `. , / : * ? " < > \|`. Maximum length: 90 characters. | | **Required field** | If enabled and the field is empty after extraction, the document goes to manual review with a rule error. | ## Checkmark type Set the checkmark type based on how the mark is framed on the document: | Type | When to use | | :---------------- | :-------------------------------------------------------------- | | **Square** | Checkmarks in bounded square regions (for example, checkboxes). | | **Without frame** | Checkmarks on an unbounded white region. | ## Allow corrections Enable **Allow corrections** to treat fully colored-in checkmarks as unchecked — used when an operator corrects a mark by filling it in (filled-in mark = undone). **Allow corrections** works only for **Square** checkmarks. ## Related topics * [Checkmark group field](/vantage/documentation/skill-designer/document/adding-fields/checkmark-group) * [Label documents in Skill Designer](/vantage/documentation/skill-designer/document/labeling-documents) * [Add fields](/vantage/documentation/skill-designer/document/adding-fields/adding-fields) # Checkmark group field Source: https://docs.abbyy.com/vantage/documentation/skill-designer/document/adding-fields/checkmark-group Add a Checkmark group field to a Document skill, configure selection rules, and set field properties. A Checkmark group field contains several checkmarks — typically a multiple-choice question, optionally allowing several answers to be selected at once. A **Checkmark group** field is not the same as a [Group](/vantage/documentation/skill-designer/document/adding-fields/group) field that contains several Checkmark fields. A Checkmark group is a single field whose value is the set of selected checkmarks. ## Add a Checkmark group ### Mark a region around several checkmarks Draw a rectangle that includes several checkmarks. The new field appears in the data form with an auto-assigned name. This works only for checkmarks with a square frame. ### Add an empty field and mark its region Click **Add Checkmark Group** in the toolbar, and then draw a rectangle that contains several checkmarks. To add checkmarks one at a time instead, click **Add Checkmark** and then click each checkmark. To rename the group or any checkmark in it, double-click the name in the data form, or click the name in **Field options**. ## General properties | Property | Description | | :----------------- | :------------------------------------------------------------------------------------------------------------------------------ | | **Field name** | Unique within the skill. Cannot contain: `. , / : * ? " < > \|`. Maximum length: 90 characters. | | **Required field** | If enabled, at least one checkmark must be selected. If none are selected after extraction, the document goes to manual review. | ## Checkmark type All checkmarks in a group must share the same type. | Type | When to use | | :---------------- | :-------------------------------------------------------------- | | **Square** | Checkmarks in bounded square regions (for example, checkboxes). | | **Without frame** | Checkmarks on an unbounded white region. | ## Allow corrections Enable **Allow corrections** to treat fully colored-in checkmarks as unchecked — used when an operator corrects a mark by filling it in (filled-in mark = undone). **Allow corrections** works only for **Square** checkmarks. ## Selection rules * **Allow multiple selection** — Enable to let more than one checkmark be selected at the same time. * **Max selected allowed** — Only available when **Allow multiple selection** is enabled. Sets the maximum number of checkmarks that can be selected. If more are selected after extraction, the document goes to manual review. ## Related topics * [Checkmark field](/vantage/documentation/skill-designer/document/adding-fields/checkmark) * [Group field](/vantage/documentation/skill-designer/document/adding-fields/group) * [Label documents in Skill Designer](/vantage/documentation/skill-designer/document/labeling-documents) * [Add fields](/vantage/documentation/skill-designer/document/adding-fields/adding-fields) # Edit data form layout Source: https://docs.abbyy.com/vantage/documentation/skill-designer/document/adding-fields/editing-data-form-layout Rearrange, resize, and indent fields in the data form to customize how a Document skill's output is presented. You can change the data form appearance by dragging fields, changing the set of fields in groups, or resizing fields. ## Enable layout editing Click **Edit layout of fields** in the toolbar to enable the layout-editing tools. While layout-editing tools are enabled, some features — including creating business rules and training the skill — are unavailable. Click **Edit layout of fields** in the toolbar to disable the tools. ## Rearrange fields Drag fields in the data form to: * Reorder them. * Place them side by side in a row. * Add an existing field to a non-repeating group. * Move a field from one non-repeating group to another, or to the root of the data form. * Reorder checkmarks in a Checkmark group. Fields are arranged in a grid. When you drag a field, the insertion point is highlighted in blue. You cannot add fields to a group or move a field out of a group in these cases: * The group is repeating. * The group or field was created in Advanced Designer. * You're editing a copy of a built-in skill, and the group or field was inherited from the built-in skill. You can still **reorder** the fields in all of these cases. All instances of a repeating group share the same field order and layout. ## Resize fields ### Minimum and maximum width **Text** and **Barcode** fields display at their minimum width in the data form and expand to fit the extracted value. Set a **maximum width** to prevent a field from expanding too far — if the value doesn't fit, a horizontal scrollbar appears so users can scan it. You can set minimum and maximum widths for **Text**, **Barcode**, and **Image** fields from the **Actions** pane. To adjust only the minimum width, drag the right border of the field in the data form. ### Indentation Indentation defines the width of the margins around a field. In the screenshot below, indentation is set to **Normal** for "New Field", **None** for "New Field 2", and **Large** for "New Field 3". Three fields showing Normal, None, and Large indentation in the data form To configure indentation: Click the field in the data form. In the **Actions** pane, open the **Indentation** dropdown. Select a predefined value, or choose **Custom** to set each margin manually. ## Related topics * [Add fields](/vantage/documentation/skill-designer/document/adding-fields/adding-fields) * [Label documents in Skill Designer](/vantage/documentation/skill-designer/document/labeling-documents) # Group field Source: https://docs.abbyy.com/vantage/documentation/skill-designer/document/adding-fields/group Add a Group field to a Document skill to bundle related fields (like an address or contact block), and configure repeating groups. A Group field bundles data related to a single entity — for example, a person or a company. It can contain fields of any type. ## Add a Group To add a group, click **Add Group** in the toolbar, or press **Ctrl + G**. An empty group appears in the data form. Click the **First group item** placeholder to add the first field to the group. Empty group with a First group item placeholder ## Add fields to a Group When a group is in focus, any new field you add (via the toolbar or by drawing a region on the document) is placed inside the group. Select a field inside a group to switch focus to it. Fields inside a group use the same properties as standalone fields. See [Text field](/vantage/documentation/skill-designer/document/adding-fields/text) and the other field-type topics. ## Rename a Group Double-click the group name in the data form and type the new name. ## Expand and collapse a Group Click a group name to expand or collapse it. When a group is collapsed, the value of its first field appears beneath the group name. A group auto-expands when its fields contain low-confidence characters or rule errors, and auto-collapses otherwise. Expanded group showing all fields Collapsed group showing only the first field value ## General properties | Property | Description | | :----------------------- | :------------------------------------------------------------------------------------------------------------------------------------------ | | **Field name** | Unique within the skill. Cannot contain: `. , / : * ? " < > \|`. Maximum length: 90 characters. | | **Allow multiple items** | Whether the group can repeat (for example, multiple children or accounts). A repeating group can contain nested groups, tables, and fields. | The maximum nesting depth is 3. A level-1 repeating group can contain nested repeating or non-repeating elements. A level-2 repeating group cannot contain child repeating groups, repeating fields, or tables. ## Enable repeating Groups Click the settings button near the group. Click **Advanced**. Select **Allow multiple items**. Advanced group settings with Allow multiple items enabled If you turn off **Allow multiple items**, all instances except the first are deleted. ### Add a new item Click **Add *\[group-name]* item**, where *\[group-name]* is the name of your group. Add new item button for a repeating group ## Related topics * [Text field](/vantage/documentation/skill-designer/document/adding-fields/text) * [Table field](/vantage/documentation/skill-designer/document/adding-fields/table) * [Label documents in Skill Designer](/vantage/documentation/skill-designer/document/labeling-documents) * [Add fields](/vantage/documentation/skill-designer/document/adding-fields/adding-fields) # Image field Source: https://docs.abbyy.com/vantage/documentation/skill-designer/document/adding-fields/image Extract image regions from documents (signatures, stamps, identity photos) and configure how the images are saved on export. An Image field lets you save parts of documents as pictures — for example, identity photos, signatures, or stamps. ## Add an Image field Click **Add Image** in the toolbar. A new Image field appears in the data form. Image fields cannot be trained. For every document with an Image field, you must set the image region during [manual review](/vantage/documentation/runtime/manual-review/manual-review) or via a [Custom activity](/vantage/documentation/skill-designer/process/custom-activity) script. An Image field cannot have more than one region. To extract multiple images, enable **Allow multiple items** and add one image per instance. ## General properties | Property | Description | | :----------------------- | :------------------------------------------------------------------------------------------------------------------------------------- | | **Field name** | Unique within the skill. Cannot contain: `. , / : * ? " < > \|`. Maximum length: 90 characters. | | **Required field** | If enabled and the field is empty after extraction, the document goes to manual review with a rule error. | | **Allow multiple items** | Whether the field can have multiple instances (for example, extracting signatures from each party on an agreement as separate images). | ## Access extracted images During data export, Vantage extracts each image using its region coordinates and saves it as a JPG. You can access extracted images the same way as other extracted data: * **Vantage API** — Retrieve extracted images alongside other field values. * **Custom activity or Output activity scripts** — The [Field](/vantage/documentation/skill-designer/process/custom-activity/field) object exposes `Value` (the filename) and `Image` (the binary contents). * **Shared folder export (Output activity)** — The JSON export includes the image filename in each image field's `value` key. Image files are placed in a subfolder named after the JSON file. ### File naming During export, Vantage names each image file based on the field and its position in the skill hierarchy: | Field configuration | Filename | | :------------------------------------------------- | :----------------------------------- | | Top-level field `Signature` | `Signature.jpg` | | Multiple instances of `Signature` | `Signature_1.jpg`, `Signature_2.jpg` | | Field nested in `Group1` > `Group2` as `Signature` | `Group1_Group2_Signature.jpg` | If the resulting filename would exceed 256 characters (including separators, instance numbers, and the `.jpg` extension), Vantage falls back to `Field_{guid}.jpg`, where `{guid}` is the GUID of the image field. ## Related topics * [Custom activity](/vantage/documentation/skill-designer/process/custom-activity/custom-activity) * [Output activity](/vantage/documentation/skill-designer/process/output-activity/output-activity) * [Label documents in Skill Designer](/vantage/documentation/skill-designer/document/labeling-documents) * [Add fields](/vantage/documentation/skill-designer/document/adding-fields/adding-fields) # Table field Source: https://docs.abbyy.com/vantage/documentation/skill-designer/document/adding-fields/table Add a Table field to a Document skill, map cells to document regions, and configure column properties. A Table field extracts tabular data — rows of repeating values like line items, invoice charges, or address blocks. Each column is a single repeating field, so all cells in a column share the same data type and properties. To add a table to your document, click **Add Table** in the toolbar. A 1×1 table appears in the data form. New 1×1 table in the data form ## Open and close a table To **open** a table, click the icon under its name in the data form, or click the table's region on the document image. The icon of the open table is highlighted in blue inside a cyan circle. To **close** a table, do any of the following: * Click the icon under the table name. * Click a different field in the data form. * From a row or column dropdown menu, select **Close table**. * From the table menu (icon in the upper-left corner of the table), select **Close table**. ## Populate a table ### Add a value to a cell 1. Select the cell with the cursor. 2. Mark a region on the document image. Vantage extracts the data from the region into the selected cell. If you mark a second region immediately after, Vantage adds a new column at the end of the table and places the extracted data in the first cell of that column. ### Auto-fill the rest of the table You can auto-fill table rows after you've marked the first one (or several topmost rows): 1. Mark the top row, or several topmost rows, in the table. 2. Click the icon next to the last cell, or select **Continue table from this row** from the dropdown menu. Vantage fills the remaining rows automatically. Auto-fill processes up to 10 pages of table data at a time. For longer tables, repeat the command on the remaining rows. ### Add rows or columns manually Use the **Create column** and **Create row** buttons to add rows or columns. From a row or column dropdown menu, you can also insert a new row or column at a specific location, or delete one or more rows or columns. Adding a row or column manually does not move the cursor. Select the new cell to start entering data. ### Navigate between cells | Action | Key | | :-------------------- | :-------------- | | Move to next cell | **Tab** | | Move to previous cell | **Shift + Tab** | | Move in any direction | Arrow keys | ## Set table properties Table cells have the same [general properties](/vantage/documentation/skill-designer/document/adding-fields/text#general-properties) and [data-type-specific properties](/vantage/documentation/skill-designer/document/adding-fields/text#properties-by-data-type) as regular text fields. All cells in a column share the same properties — the column is a single repeating field. To set column properties, select **Column settings** from the column dropdown, or select a cell in the column and press **Alt + Enter**. ### Column width The default column width is 2 characters. To resize a column, drag the separator between column headings. Column widths you set are preserved in manual review. ### Rename a column or table * **Column** — Double-click the column name, or select **Rename column** from the column dropdown. * **Table** — Triple-click the table name. ## Related topics * [Text field](/vantage/documentation/skill-designer/document/adding-fields/text) * [Label documents in Skill Designer](/vantage/documentation/skill-designer/document/labeling-documents) * [Add fields](/vantage/documentation/skill-designer/document/adding-fields/adding-fields) # Text field Source: https://docs.abbyy.com/vantage/documentation/skill-designer/document/adding-fields/text Add a Text field to a Document skill, set its data type, and configure recognition properties such as fonts, regular expressions, and date/number/money rules. A Text field extracts a string value from a document — for example, a name, address, ID, or other text. The field's data type (Text, Date, Number, or Money) determines how Vantage recognizes and validates the value. ## Add a Text field You can add a Text field in two ways. ### Mark a region on the document image Click a value (highlighted green on hover), or drag a rectangle around it. The new field appears in the data form. ### Add an empty field and mark its region Click **Add Field** in the toolbar, and then drag a rectangle around the value on the image. The data inside the region becomes the field value. To rename a field, double-click the name in the data form, or click the name in the field properties. Triple-click to select the entire name. To open field properties, click **Field options**. ## Add multiple regions to one field Some values span multiple lines or pages, so a single field may need several regions. To add multiple regions to a new field: Use either method above. Hold **Shift** and click or drag additional regions for the same field. To add regions to an existing field, select the field in the data form, then click or drag its location on the image. If the value spans multiple words, select them all as a single region. Regions can span multiple pages or sit inside another region. A nested region is highlighted in a darker color; when focused, it's highlighted in yellow. ## General properties | Property | Description | | :----------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **Field name** | Unique within the skill. Cannot contain: `. , / : * ? " < > \|`. Maximum length: 90 characters. | | **Data type** | The kind of data the field contains. Affects recognition accuracy. See [Data types](#data-types) for options. | | **Allow multiple items** | Whether the field repeats (for example, multiple child names or account numbers). | | **Required field** | If enabled and the field is empty after extraction, the document goes to manual review with an error. | | **Key field** | Marks the value as searchable — used to look up documents. | | **Dimension field** | Exposes the value as a reporting dimension in Skill Monitor. Note: The value is truncated to 100 characters in the reporting database (but remains as is in the document). | ### Data types | Data type | Description | | :--------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **Text** | May contain Latin and Cyrillic letters, digits, hieroglyphics, and special characters. | | **Date** | A date and time in any format. Accepted separators: dot (`.`), space, hyphen (`-`), backslash (`\`), and forward slash (`/`). | | **Number** | May contain digits, decimal separators, and the percent character (`%`). Accepted decimal separators: dot (`.`), comma (`,`), hyphen (`-`), equals sign (`=`), space. Accepted thousands separators: dot (`.`), comma (`,`), single quotation mark (`'`), space. | | **Money** | A number value with a currency symbol. The symbol can appear before or after the amount. | The lowercase "l" (L), uppercase "I" (i), and digit "1" can look identical. In **Number** or **Money** fields, an ambiguous character is recognized as "1" because letters aren't allowed. ## Appearance settings These properties describe the appearance of characters expected in the field. * **Text origin** — Whether the field contains only printed characters, only handwritten characters, or both. If you add the field by dragging a rectangle, Vantage infers this value from the characters it finds. If you add the field with **Add Field**, the value defaults to **Printed**. See [supported languages for handwritten text recognition](/vantage/documentation/tenant-admin/technical-specs/languages#handwritten-text). * **Eliminate field background** — Improves recognition when the field has a frame, boxes for individual characters, or placeholder text. If you enable this option, upload the blank form document that serves as the background template and label the corresponding field on the blank form. The blank form appears in the Document Set, marked with an icon. * **Special fonts** — Improves recognition accuracy when the field uses a specific font. You can select more than one font. Handwritten text recognition is enabled for new Document skills by default. To toggle it, click the skill settings icon to the right of the skill name, open the **Languages** tab, and select or clear **Handwritten** in the **Text Appearance** section. ### Supported fonts | Font | Description | Font sample | | :----------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------- | | **Fax** | A font typically used by fax machines. | Fax font sample | | **Gothic** | Texts printed in Gothic type. | Gothic font sample | | **Index** | A special set of characters that includes only digits written in ZIP-code style. | Index font sample | | **Matrix printer** | Texts printed on a dot-matrix printer. | Matrix printer font sample | | **MICR CMC-7** | A special MICR barcode font (CMC-7). | MICR CMC-7 font sample | | **MICR E-13B** | Numeric characters printed with magnetic ink. MICR (Magnetic Ink Character Recognition) characters appear on a variety of documents, including personal checks. | MICR E-13B font sample | | **OCR-A** | A monospaced font designed for optical character recognition. Widely used by banks, credit card companies, and similar businesses. | OCR-A font sample | | **OCR-B** | A font designed for optical character recognition. | OCR-B font sample | | **Receipt** | For text of low quality, typically in a monospaced or normal font used on receipts. | Receipt font sample | | **Typewriter** | Typewritten texts. | Typewriter font sample | ## Properties by data type Additional properties depend on the data type. ### Text **Value** settings: * **Maximum length** — The maximum number of characters allowed. If the extracted value exceeds this length, Vantage displays an error. If the process has a manual review stage, the document goes to manual review. * **Regular expression** — A pattern that narrows the valid character set for the field, which can improve extraction accuracy. For example, you can force every character to be recognized as a digit, match a specific phone number format, or validate that a field contains a numeric weight with units. **Example 1** — Phone numbers like `1-(234)-567-8900` or `2 (987) 654 3211`: ``` /^(1|2)(\-|\s)\([\d]{3}\)(\-|\s)[\d]{3}(\-|\s)[\d]{4}$/ ``` **Example 2** — Weight values like `50lb`, `50lbs`, `50Lb`, `50Lbs`, `50 lb`, or `50 lbs`: ``` /^[\d]*(\s)?(L|l)b(s)?$/ ``` Regular expressions do not affect text recognition in PDF documents. ### Date **Value may include** settings: * **Time** — Allow a time value. If disabled, time is not extracted. * **Day of week** — Allow a day of the week in the field. If disabled, a day of the week is not extracted. * **Month by name** — Allow the month to be spelled out as a word. #### Acceptable order of components Select one or more date formats: **Day-Month-Year**, **Month-Day-Year**, or **Year-Month-Day**. If the detected format doesn't match any selected format, the document goes to manual review. #### Acceptable date Specify a valid date range as a number of months before and after the day the document was processed. Use integers. A rule checks whether the extracted date falls within the range; out-of-range dates go to manual review. ### Number **Value** settings specify what kind of number the detected value is (integer or decimal) and what number formats are accepted in the field. Values that don't meet the requirements send the document to manual review. * **Integers only** — The value must be an integer. Any separators in the detected number are treated as thousands separators. * **Fractional part may contain more than two digits** — Enable when the decimal part is expected to have more than two digits. Accepted decimal separators: dot (`.`), comma (`,`), hyphen (`-`), equals sign (`=`), space. * **May have negative values** — Allow negative values, denoted by a minus sign or brackets. * **May include '%' symbol** — Allow a percentage character before or after the value. #### Number must be within interval Set a minimum and maximum value (integers or decimals, positive or negative). A rule checks whether the value falls within the range; out-of-range values send the document to manual review. **Money** fields use the same properties as **Number**, except the percentage character is not allowed. ## Related topics * [Label documents in Skill Designer](/vantage/documentation/skill-designer/document/labeling-documents) * [Supported Recognition Languages](/vantage/documentation/tenant-admin/technical-specs/languages) # Text field normalization Source: https://docs.abbyy.com/vantage/documentation/skill-designer/document/adding-fields/text-field-normalization Standardize extracted dates, numbers, and money amounts into consistent formats using Vantage normalization. Vantage can normalize extracted data to ensure uniform representation. The following data types can be normalized: * [Date](#normalize-dates) * [Number](#normalize-numbers) * [Money](#normalize-money-amounts) To normalize data extracted from a field, specify its data type: In the data form, click the field settings button next to the field. In the **Field options** dialog, select the data type from the dropdown. For normalization to work, set the data-type-specific properties for each field so that Vantage extracts everything that needs to be normalized. Click **Advanced** in the **Field options** dialog to access these properties. See [Properties by data type](/vantage/documentation/skill-designer/document/adding-fields/text#properties-by-data-type). Normalized value shown on hover over a field ## Normalize dates When normalizing dates, Vantage converts extracted dates into [ISO 8601 format](https://www.iso.org/iso-8601-date-and-time-format.html): * `YYYY-MM-DD` for dates * `HH:MM:SS` for time For accepted separators, see [Data types](/vantage/documentation/skill-designer/document/adding-fields/text#data-types). ### Examples | Extracted data | Normalized data | | :--------------------------- | :----------------------- | | 15.06.2023 | 2023-06-15 | | 2023/06/15 22:17 | 2023-06-15 22:17:00 | | 06-15-2023 | 2023-06-15 | | 02/11/2022 | 2022-02-11 or 2022-11-02 | | Saturday, December 3rd, 2022 | 2022-12-03 | | The second of May 2022 | 2022-05-02 | If both **Day-Month-Year** and **Month-Day-Year** formats are enabled, Vantage may not be able to normalize the date unambiguously. In that case, you can choose between the two candidate dates. Dates written out in words are normalized only when they're in English and English is selected in the skill settings. Vantage may not be able to normalize a date in the following cases: * The date is incomplete — for example, `4:39 am` (time values are only normalized when extracted together with a date). * Adverbs of time are used instead of exact dates — for example, `last month`, `a few days ago`. * Extra words or characters appear next to the date or time — for example, `2016/06/15 22`. * Uncommon date representations are used — for example, `14 Jumada Al-Awwal 1445`. ## Normalize numbers Vantage can normalize numbers using Western or Indian digit grouping: * **Western** — Groups digits by threes from right to left, using commas to separate thousands, millions, and so on. * **Indian** — Groups the first three digits from the right, and then by twos for tens of thousands, lakhs, tens of lakhs, crores, and so on. Vantage parses the extracted string and converts it into a standardized format using a dot (`.`) to separate integer and fractional parts. For accepted separators, see [Data types](/vantage/documentation/skill-designer/document/adding-fields/text#data-types). ### Examples | Extracted data | Normalized data | | :--------------------------------------- | :-------------- | | 12,345,678 | 12345678 | | -12,345.678 | -12345.678 | | 12.0000 | 12 | | 1.000 | 1000 or 1 | | 12,345.678 % | 12345.678 | | 1,23,45,67,890 (Indian numbering system) | 1234567890 | | twenty-first | 21 | If the part after the dot has three digits (as in `1.000`), you need to choose between the two candidate values — whether the dot separates thousands or the integer from the fractional part. Numbers written out in words are normalized only when they're in English and English is selected in the skill settings. Vantage may not be able to normalize a number in the following cases: * Extra words or characters appear next to the number — for example, `EURO12,345.678` or `5 kilos`. * There is an irregular number of digits between the fractional and integer parts, or between the decimal and thousands parts — for example, `123,456,7890`. The fractional part must contain 3 or fewer digits. If `123,456,789` is extracted, the normalized value is `123456789`; if `123,456,78` is extracted, the normalized value is `123456.78`. * Irregular number representations are used. ## Normalize money amounts A money amount contains a number value and a currency symbol, with the symbol before or after the amount. When normalizing, Vantage outputs the currency symbol first, followed by the amount normalized as a [number](#normalize-numbers). Currency is identified by symbol or name — `€`, `EURO`, and `euros` all map to the euro. The normalized value uses the exact symbol or name found in the extracted text. ### Examples | Extracted data | Normalized data | | :-------------- | :-------------- | | 12,345.678 EURO | EURO 12345.678 | | 12,345.678 ¥ | ¥ 12345.678 | | 13,87E | E 13.87 | | 13 euro 87 | euro 13.87 | | fifty dollars | dollars 50 | | ₹1,23,455 | ₹ 123455 | Amounts written out in words are normalized only when they're in English and English is selected in the skill settings. Vantage may not be able to normalize a money amount when invalid words are used to denote a currency — for example, `12 ttt`. ## Related topics * [Text field](/vantage/documentation/skill-designer/document/adding-fields/text) * [Label documents in Skill Designer](/vantage/documentation/skill-designer/document/labeling-documents) * [Supported Recognition Languages](/vantage/documentation/tenant-admin/technical-specs/languages) # Analyze extracted data Source: https://docs.abbyy.com/vantage/documentation/skill-designer/document/analyzing-extracted-data Review field extraction statistics on the Results tab of a Document skill, investigate errors on the Result Review tab, and correct reference labeling. The **Results** tab in the Document Skill Designer contains field extraction statistics for Document skills. Use these statistics to understand how to improve extraction quality. All fields extracted by the skill appear in the **Fields** column. Fields that belong to a group are collected into a collapsed dropdown named after the group. Results tab showing per-field extraction statistics The following field extraction statistics are available: * **Accuracy** — Percentage of fields with correctly extracted values, both per-field and across all fields (the **ALL FIELDS** row). Per-field accuracy is calculated as: ``` Accuracy = Correct / (Correct + Recognition Issue + Located Incorrectly + Not Detected) ``` The **ALL FIELDS** row uses the same formula, with each term aggregated across all fields. * **Correct** — Number of field instances whose extracted value matched the reference value. * **Recognition Issue** — Number of field instances detected in the document but not recognized correctly. * **Located Incorrectly** — Number of field instances whose values differ from the predicted values because their regions were detected in locations different from those in the labeling. * **Not Detected** — Number of undetected field instances. * **Frequency in Documents** — Percentage of documents containing the given field. By default, statistics are shown for all fields. To filter, click the filter icon at the top of the **Fields** column and select the fields you want to see. For deeper quality analysis — **Precision**, **Recall**, and **F-measure** for both field values and region detection — edit your skill in **Advanced Designer**. See [Advanced Accuracy Reports](/vantage/release-notes/3-0#advanced-accuracy-reports-in-advanced-designer) for details. For these statistics to reflect production quality, your test set's document distribution should match what you see in production — for example, if 30% of your production invoices come from a particular vendor, about 30% of the test set should too. Using a **blind set** (documents not used for training or prior testing) further validates the results. ## Review fields extracted with errors To view documents that contain fields extracted with errors, click the value in the **Recognition Issue**, **Located Incorrectly**, or **Not Detected** column for the field you're investigating. Clicking the value in the **Recognition Issue** column for the **Order Date** field opens a tab showing only documents where **Order Date** had a recognition issue. ### View extraction modes The Result Review tab lets you review the extraction results, labeling errors, and recognition issues — and compare the setup-time labeling with what training produced. Documents can be viewed in three modes: * **Reference** — Shows the reference labeling created when setting up the skill (before training) and the field values extracted using it. Field values and regions can be edited in this mode. * **Predicted** — Shows the field values and regions obtained when processing documents. Not editable. * **Difference** — Shows the differences between reference and predicted labeling. Identical values and regions appear in green; differing ones appear in red. Not editable. Document skill Difference mode with identical values in green and differing values in red Switch between modes by clicking the corresponding tab on the toolbar. ### Correct reference labeling If a field was labeled incorrectly during setup but processed correctly during training, you can update the reference labeling. Switch to **Difference** mode and click the icon above the value of the mislabeled field: Recognition issues icon above a labeled field value The **Field in Reference** box shows the value extracted using the reference labeling. Click **Copy from Predicted** to replace the incorrect value with the value extracted during processing. A recognition issue means one or more characters weren't recognized correctly. To fix it, adjust the field's properties so such characters are interpreted correctly — for example, if a field contains only numbers, set its data type to **Number**. This will prevent, for example, the number "1" from being recognized as "l" (lowercase L) or "I" (uppercase i). If the **Field in Reference** box contains the correct value but the processing result is wrong, increase the number of documents in the set and retrain the skill. To go to the next document with the same error in the same field, click **Go to Next Document** in the **Actions** pane. ## Related topics * [Add fields](/vantage/documentation/skill-designer/document/adding-fields/adding-fields) * [Rule verification](/vantage/documentation/skill-designer/document/rule-verification/rule-verification) * [Label documents in Skill Designer](/vantage/documentation/skill-designer/document/labeling-documents) * [Training and testing a Document skill](/vantage/documentation/advanced-designer/document-skills/document-skills#training-and-testing-a-document-skill) # Document skill Source: https://docs.abbyy.com/vantage/documentation/skill-designer/document/document-skill Extract field values from structured and semi-structured documents of a single type using built-in training and activities. A Document skill extracts field values from structured and semi-structured documents of a single type. Documents of the same type share the same fields, [validation rules](/vantage/documentation/skill-designer/document/rule-verification/rule-verification), and structure — for example, invoices, agreements, and shipping lists are each a single document type. A Document skill processes only one file per transaction. To process multiple files in a single transaction, use the [Extract activity](/vantage/documentation/skill-designer/process/extract-activity) of a [Process skill](/vantage/documentation/skill-designer/process/process-skill). ## Structured vs. semi-structured documents | Type | Field location | Examples | Where to build | | :------------------ | :----------------------------------------------------- | :------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------- | | **Structured** | Fixed on every instance | Questionnaires, application forms, tax forms | Vantage. Use Advanced Designer when you need to combine structured-document processing with other Vantage technologies. | | **Semi-structured** | Varies in labeling, number, and placement per instance | Invoices, agreements, shipping lists | Vantage or Advanced Designer. | ## Training a Document skill To start training a Document skill, label the fields on one document. As you train, Vantage automatically suggests field locations to speed up the labeling process. ## Document type variants Documents of a single type almost always have identical fields, validation rules, and structure, but variants of the same type can differ slightly — for example, based on the year the document was issued. A single Document skill can handle any number of variants; the right training approach depends on how many variants you need to cover. ### Choosing an activity by scale For **structured forms** (up to 10 variants), use the Vantage Document skill. Treat additional variants as separate document types. For **semi-structured documents**, the recommended approach depends on the number of variants: | Variants in your document set | Recommended approach | Expected accuracy | | :----------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :----------------------------------------- | | Hundreds | [Online learning](/vantage/documentation/runtime/online-learning/online-learning) in Vantage | Near-flawless extraction | | Thousands | [Deep Learning](/vantage/documentation/advanced-designer/activities/extraction-rules/deep-learning) activity | \~80–90%, depending on document complexity | | A subset of essential variants | [Fast Learning](/vantage/documentation/advanced-designer/activities/fast-learning) and/or [Extraction Rules](/vantage/documentation/advanced-designer/activities/extraction-rules/extraction-rules) activities | High accuracy on complex documents | The Deep Learning, Fast Learning, and Extraction Rules activities are available only in Advanced Designer. To use them, open your Document skill in Advanced Designer — the skill can still be referenced from Skill Designer and Process skills once published. ### Training and testing recommendations * **Use a representative training set.** Include at least 2–3 documents per variant. Even a single sample per variant is better than none. When the set doesn't cover every variant, use the Deep Learning activity — it generalizes from image patterns, spatial structure, field contents, and surrounding labels, and can process variants it wasn't trained on. * **Test with production-like distributions.** Use a random sample drawn from your real document flow so that each variant appears in the test set at roughly the same frequency it appears in production. This keeps your accuracy estimate valid. ## Next steps Create, train, and publish a Document skill, including structured forms and Online learning. Mark fields in the Editor tab and configure field properties by type. Guidelines for labeling structured and semi-structured documents during training. Review field extraction statistics and correct reference labeling on the Result Review tab. # Label documents in Skill Designer Source: https://docs.abbyy.com/vantage/documentation/skill-designer/document/labeling-documents Guidelines for labeling structured and semi-structured documents when training a Document skill. Label a representative set of documents to train and test a Document skill. The guidelines below cover structured and semi-structured documents. For unstructured documents, see [labeling unstructured documents](/vantage/documentation/advanced-designer/labeling/labeling). ## Structured documents Structured documents always include the exact same type of information in the exact same locations. One example of structured documents is pre-formatted forms. You only need to label a few sample documents for training, because the layout doesn't vary. Use the following guidelines when labeling structured documents: * Accurately specify the region of each field — field values alone are not enough for training. * To mark out the region of a field, don't click on its value; mark out the entire placeholder instead. * If a field contains no value, mark out the empty placeholder. * If a field consists of multiple parts, hold down the **Shift** key to add the parts. All parts must be on the same page. * If a fixed form contains a table, mark out all the rows, including any empty ones. * If you add a field after labeling has already started, label the new field on every document in the training set where it occurs. ## Semi-structured documents Semi-structured documents generally contain the same or similar types of information, but the location, size, and number of fields may vary from document to document. Examples include bills, payment orders, and invoices. Use the following guidelines when labeling semi-structured documents: * Accurately specify the region of each field — field values alone are not enough for training. * To mark out the region of a field, click on its value — the word or words it contains — and the region is created automatically. * If a field contains no value, don't create a region for it. * Don't mark out parts of words — Vantage can only learn on whole words. * If a field consists of multiple parts, hold down the **Shift** key to add the parts. All parts must be on the same page. * For repeating data, analyze your documents first and choose the right structure: | If your repeating data looks like… | Use | | :------------------------------------------------------------------------ | :------------------------------------------------------- | | A table with a common header and values that don't have adjacent keywords | A **Table** field | | Less-structured data where values have keywords next to them | A **Group** with **Allow multiple items** enabled | | Different layouts across documents | Pick the option that fits the majority of your documents | * To label a table, mark out the cells in the first row one by one — Vantage auto-creates the columns. Then click **Continue table from this row**, and verify that the full table is labeled correctly. * Don't place a field region inside another field's region — whether the parent is an individual field (such as an address) or a table cell. To extract data from a large text fragment, use Advanced Designer. * If you add a field after labeling has already started, review all documents and label the new field on every document where it occurs. If tables are large and document pages look similar, you can delete the similar pages and label only the first page, the last page, and a few in between. ## Related topics * [Add fields](/vantage/documentation/skill-designer/document/adding-fields/adding-fields) * [Label documents in Advanced Designer](/vantage/documentation/advanced-designer/labeling/labeling) * [Set up a Document skill](/vantage/documentation/skill-designer/document/set-up) * [Training and testing a Document skill](/vantage/documentation/advanced-designer/document-skills/document-skills#training-and-testing-a-document-skill) # Business rules automation Source: https://docs.abbyy.com/vantage/documentation/skill-designer/document/rule-verification/business-rules-automation Add scripted rules to a Document skill using JavaScript — configure readable and writable fields, reference table columns, and return validation results. Add scripted rules to a Document skill to compare field values, validate conditions, or change field values programmatically. To add an Advanced Script Rule, click **New rule** in the field properties and choose the script rule type. This page describes how to configure the rule and write its JavaScript. ## Set up an Advanced Script Rule When setting up an **Advanced Script Rule**, specify which fields the script will reference. ### Configure fields * In the **Fields** column, specify every field the script needs to read. * In the **Changed by the rule** column, specify every field the script will edit. If your script references a field that wasn't listed for reading, or writes to a field that wasn't listed for editing, the rule returns an access error: * `Attempt to read data from inaccessible field` * `Attempt to write data to read-only field` ### Configure table columns If your script references specific table columns, select those columns individually — not the entire table — when setting up the rule. All selected columns must belong to the same table. For example, if the rule is applied to **Column 1** and **Column 2** of **New table**, select the following fields: Rule settings dialog showing Column 1 and Column 2 selected from the New table ## Write the script Switch to the script editor and write JavaScript that implements your rule. Your script can read document fields, compute values, compare values, and update fields that were marked as writable during setup. Use the quick-edit buttons at the top of the script editor to insert common code snippets. If the rule conditions aren't met, set [`Context.CheckSucceeded`](/vantage/documentation/skill-designer/document/rule-verification/context#checksucceeded) to `false`. This sends the document to manual review. ## Related topics * [Rule verification](/vantage/documentation/skill-designer/document/rule-verification/rule-verification) * [Object model](/vantage/documentation/skill-designer/document/rule-verification/object-model) * [Sample scripts](/vantage/documentation/skill-designer/document/rule-verification/sample-scripts) # Context Source: https://docs.abbyy.com/vantage/documentation/skill-designer/document/rule-verification/context The Context global object — properties and methods for accessing the document, fields, catalog records, and skill parameters during rule execution. `Context` is a global object that provides access to the document being processed, its fields, and the parameters of the enclosing transaction. Set [`CheckSucceeded`](#checksucceeded) to indicate whether the rule passed. ## Usage A rule reads fields through `Context`, checks them, and reports the result by setting [`CheckSucceeded`](#checksucceeded) and [`ErrorMessage`](#errormessage). For example, fail the rule with a custom message when the `Total` field is missing or empty: ```javascript theme={null} var field = Context.GetField("Total"); if (!field || !field.Value) { Context.CheckSucceeded = false; Context.ErrorMessage = "Total field is empty"; } ``` For more patterns — numeric comparisons, conditional requirements, and table validation — see [Sample scripts](/vantage/documentation/skill-designer/document/rule-verification/sample-scripts). ## Properties ### CheckSucceeded **Type:** `bool` — **Access:** Read-write Indicates whether the rule condition is fulfilled. Defaults to `true`. Set it to `false` if the condition is not met. In that case, the default error message shown to the operator is `Error in the rule : `. To customize the message, set the `ErrorMessage` property. An error is generated only when your script sets `CheckSucceeded` to `false`. If the script doesn't set it explicitly, no error is displayed — even if the rule conditions aren't met. ### CurrentField **Type:** [Field](/vantage/documentation/skill-designer/document/rule-verification/field) — **Access:** Read-only The field checked by the rule. For repeating fields in repeating rules, this is the specific instance being checked by the current call. Returns `null` if the rule references the document as a whole. ### Document **Type:** [Document](/vantage/documentation/skill-designer/document/rule-verification/document) — **Access:** Read-only The document for which the rule runs. ### ErrorMessage **Type:** `string` — **Access:** Read-write Custom message displayed when the script sets `CheckSucceeded` to `false`. If unset, the default message is `Error in the rule : `. ### Transaction **Type:** [Transaction](/vantage/documentation/skill-designer/document/rule-verification/transaction) — **Access:** Read-only The current transaction. ## Methods A script can only read fields listed for reading and write fields listed as editable when the rule is set up. Referencing any other field fails the rule with an access error (`Attempt to read data from inaccessible field` or `Attempt to write data to read-only field`). See [Business rules automation](/vantage/documentation/skill-designer/document/rule-verification/business-rules-automation). ### GetField ```javascript theme={null} Field GetField(string fieldName); ``` Gets a [`Field`](/vantage/documentation/skill-designer/document/rule-verification/field) by name or identifier. Returns `null` if no field with that name exists. Use the [full path](/vantage/documentation/skill-designer/document/rule-verification/field#fullname) to address fields inside a group — for example, `BusinessUnit/Address`. When used in a repeating rule, `GetField` sequentially returns each processed field instance. Otherwise, it returns the first instance of a repeating field. Pass the field name as a string literal, not a variable. The script preprocessor replaces the literal name with the field's identifier before execution — variables aren't processed. ### GetFields ```javascript theme={null} Field[] GetFields(string fieldName); ``` Returns all [`Field`](/vantage/documentation/skill-designer/document/rule-verification/field) objects with the specified name — useful for iterating over every instance of a repeating field, including every cell in a table column. Returns `null` if no field with that name exists. Same preprocessor constraint as `GetField`: pass a string literal, not a variable. ### GetCatalogRecord ```javascript theme={null} Record GetCatalogRecord(string catalogId, string externalId); ``` Gets a [`Record`](/vantage/documentation/skill-designer/document/rule-verification/record) from a data catalog (external database). Use this method to compare document field values against catalog field values. Available only if the catalog has a record identifier configured (for example, a vendor identifier). ### SkillParameter ```javascript theme={null} SkillParameter SkillParameter(string ParameterName); ``` Gets a [`SkillParameter`](/vantage/documentation/skill-designer/document/rule-verification/skill-parameter) by name. Read its value from the returned object's `Value` property — for example, `Context.SkillParameter("Threshold").Value`. Available only if the Document skill has at least one parameter. ## Related topics * [Object model](/vantage/documentation/skill-designer/document/rule-verification/object-model) * [Business rules automation](/vantage/documentation/skill-designer/document/rule-verification/business-rules-automation) * [Field](/vantage/documentation/skill-designer/document/rule-verification/field) * [Sample scripts](/vantage/documentation/skill-designer/document/rule-verification/sample-scripts) # DataType Source: https://docs.abbyy.com/vantage/documentation/skill-designer/document/rule-verification/data-type DataType enumeration — the kind of data a field can contain. Also includes the AmountOfMoney class used for currency values. `DataType` enumerates the kinds of data a field can contain. ## Constants | Constant | Supported [field types](/vantage/documentation/skill-designer/document/rule-verification/field-type) | Description | | :---------- | :--------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------- | | **Amount** | Text | A sum of money. `Field.Value` is an instance of [`AmountOfMoney`](#amountofmoney). | | **Binary** | Picture | A binary value. Cannot be accessed directly via `Field.Value`. | | **Boolean** | Checkmark | A boolean value describing the state of a checkmark (marked, not marked). | | **Choice** | CheckmarkGroup | Describes the state of checkmarks in a checkmark group. Cannot be accessed directly via `Field.Value`. | | **Date** | Text | Stores a date and time. `Field.Value` is a JavaScript `Date` object. | | **Number** | Text | A numeric type supporting integers and floating-point numbers. | | **None** | Table, Enum, Group | Indicates the absence of a value. | | **Text** | Text | A text (string) data type. Can contain alphanumeric and special characters. | ## AmountOfMoney Stores a currency amount and its symbol. ### Properties | Name | Type | Access level | Description | | :--------------- | :------ | :----------- | :----------------------------------------------------------------------- | | **Amount** | decimal | Read-only | The numeric value of the amount. | | **CurrencySign** | string | Read-only | The currency symbol or name in text format (for example, `€` or `EURO`). | ## Related topics * [Object model](/vantage/documentation/skill-designer/document/rule-verification/object-model) * [Field](/vantage/documentation/skill-designer/document/rule-verification/field) * [FieldType](/vantage/documentation/skill-designer/document/rule-verification/field-type) # Document Source: https://docs.abbyy.com/vantage/documentation/skill-designer/document/rule-verification/document The Document object — access the document being processed, its pages, source files, and the skill applied to it. `Document` provides access to the document being processed — its pages, source files, and the skill applied to it. ## Properties | Name | Type | Access level | Description | | :-------------------- | :-------------------------------------------------------------------------------------------- | :----------- | :---------------------------------------------- | | **DocumentId** | string | Read-only | The document identifier. | | **DocumentSkillId** | string | Read-only | The identifier of the Document skill applied. | | **DocumentSkillName** | string | Read-only | The name of the Document skill applied. | | **Pages** | [Page](/vantage/documentation/skill-designer/document/rule-verification/page)\[] | Read-only | The collection of pages in the document. | | **SourceFiles** | [SourceFile](/vantage/documentation/skill-designer/document/rule-verification/source-file)\[] | Read-only | The source files the document was created from. | ## Related topics * [Context](/vantage/documentation/skill-designer/document/rule-verification/context) * [Page](/vantage/documentation/skill-designer/document/rule-verification/page) * [SourceFile](/vantage/documentation/skill-designer/document/rule-verification/source-file) * [Object model](/vantage/documentation/skill-designer/document/rule-verification/object-model) # Field Source: https://docs.abbyy.com/vantage/documentation/skill-designer/document/rule-verification/field The Field object — properties and methods for inspecting and modifying a document field during rule execution. `Field` provides access to a document field — its value, parameters, and structure. From a script, you can modify a field's value or add suggested values that are shown to manual review operators. ## Properties ### Children **Type:** `Field[]` — **Access:** Read-only The child field array. Valid only for group fields. ### DataType **Type:** [DataType](/vantage/documentation/skill-designer/document/rule-verification/data-type) — **Access:** Read-only The type of data in the field. ### FieldType **Type:** [FieldType](/vantage/documentation/skill-designer/document/rule-verification/field-type) — **Access:** Read-only The type of field — for example, text, checkmark, or a table (containing cells that represent other fields). ### FullName **Type:** `string` — **Access:** Read-only The full path to the field from the document root. Uses a forward slash (`/`) as a separator — for example, `Vendor/Address/Street`. ### HasRegion **Type:** `bool` — **Access:** Read-write `true` if the field has been found on the document (a region exists for it on the image). `false` means no corresponding region was found. ### HasSuspiciousSymbols **Type:** `bool` — **Access:** Read-only `true` if the field value contains characters recognized with low confidence. ### Id **Type:** `string` — **Access:** Read-only The field identifier, unique within the document. ### ImageRegions **Type:** [ImageRegionList](/vantage/documentation/skill-designer/document/rule-verification/image-region-list) — **Access:** Read-write An array of field regions on the image. ### InstanceIndex **Type:** `int` — **Access:** Read-only The index of the current instance of a repeating field. Set to `-1` for non-repeating fields. ### Instances **Type:** `Field[]` — **Access:** Read-only The array of all instances of this field (repeating fields only). Use `Instances` to access repeating field instances in a container obtained via [`GetField`](/vantage/documentation/skill-designer/document/rule-verification/context#getfield). ### IsConfirmed **Type:** `bool` — **Access:** Read-write `true` if the field has been verified by an operator or by a validation rule. ### IsRepeatable **Type:** `bool` — **Access:** Read-only `true` if the field is a repeating field. ### IsSuspicious **Type:** `bool` — **Access:** Read-only `true` if any characters in the field value were recognized with low confidence. Such fields should be reviewed manually or checked by a rule. ### IsValid **Type:** `bool` — **Access:** Read-only `true` if the recognized text in `Text` was successfully converted into a value of the specified type in `Value`. ### IsVisible **Type:** `bool` — **Access:** Read-only `true` if the field is visible on the document. ### Name **Type:** `string` — **Access:** Read-only The field name, unique within its group. ### Parent **Type:** `Field` — **Access:** Read-only The parent field. ### ReadOnly **Type:** `bool` — **Access:** Read-only `true` if the field is read-only and cannot be edited during manual review. ### Symbols **Type:** [Symbol](/vantage/documentation/skill-designer/document/rule-verification/symbol)`[]` — **Access:** Read-only An array of characters that form the original value of the field in text format. ### Text **Type:** `string` — **Access:** Read-only The original value of the field in text format (generated when the document is recognized). ### Value **Type:** `object` — **Access:** Read-write The value of the field in the specified format (generated when converting recognized text). Unlike `Text`, the `Value` property stores the normalized value. If a script modifies `Value` to a different normalized value, `Text` is updated with the new normalized form. If `Value` is unchanged after the script runs, `Text` is not updated. ## Methods ### AddSuggestion ```javascript theme={null} void AddSuggestion(string value); ``` Adds a suggested value for the field. During manual review, operators can pick from the list of suggested values. Not supported on field groups or repeating field containers. ### CopyTo ```javascript theme={null} void CopyTo(Field field); ``` Copies `Text`, `Value`, `ImageRegions`, and `Symbols` from the argument field to the current field. Returns an error if the two fields have different data types. ### GetChild ```javascript theme={null} Field GetChild(string fieldName); ``` Returns the child field with the specified name. Use `GetChild` to access elements within a list — for example, different cells in the same row. Pass the field name as a string literal, not a variable. The script preprocessor replaces the literal name with the field's identifier before execution — variables aren't processed. ## Related topics * [Object model](/vantage/documentation/skill-designer/document/rule-verification/object-model) * [Context](/vantage/documentation/skill-designer/document/rule-verification/context) * [FieldType](/vantage/documentation/skill-designer/document/rule-verification/field-type) * [DataType](/vantage/documentation/skill-designer/document/rule-verification/data-type) # FieldType Source: https://docs.abbyy.com/vantage/documentation/skill-designer/document/rule-verification/field-type FieldType enumeration — the possible field types and the data types each supports in a Document skill. `FieldType` enumerates the possible types a field can have, along with the data types each supports. ## Constants | Constant | Supported [data types](/vantage/documentation/skill-designer/document/rule-verification/data-type) | Description | | :----------------- | :------------------------------------------------------------------------------------------------- | :------------------------------------------------------- | | **Barcode** | Text | A barcode field. | | **Checkmark** | Boolean | A checkmark field. | | **CheckmarkGroup** | Choice | A group of several checkmarks. | | **Enum** | None | A field that can only store values from a specified set. | | **Group** | None | A group of fields. Child fields can be of any type. | | **Picture** | Binary | An image. | | **Table** | None | A table — contains cells that represent other fields. | | **Text** | Text, Amount, Date, Number | A text field. | ## Related topics * [Object model](/vantage/documentation/skill-designer/document/rule-verification/object-model) * [Field](/vantage/documentation/skill-designer/document/rule-verification/field) * [DataType](/vantage/documentation/skill-designer/document/rule-verification/data-type) # ImageRegion Source: https://docs.abbyy.com/vantage/documentation/skill-designer/document/rule-verification/image-region Provides access to field regions. Field regions may consist of several different rectangular areas on the image. `ImageRegion` represents a field region on a document image. A region can consist of multiple rectangular areas. ## Properties | Name | Type | Access level | Description | | :----------------------- | :----------------------------------------------------------------------------------------------- | :----------- | :------------------------------------------------------------------------ | | **Field** | [Field](/vantage/documentation/skill-designer/document/rule-verification/field) | Read-only | The field that the region belongs to. | | **Page** | [Page](/vantage/documentation/skill-designer/document/rule-verification/page) | Read-only | The page the region is on. | | **Rectangles** | [RectangleList](/vantage/documentation/skill-designer/document/rule-verification/rectangle-list) | Read-write | A list of all rectangular areas on the image that the region consists of. | | **SurroundingRectangle** | [Rectangle](/vantage/documentation/skill-designer/document/rule-verification/rectangle) | Read-only | A single rectangle that encloses the entire region. | ## Related topics * [ImageRegionList](/vantage/documentation/skill-designer/document/rule-verification/image-region-list) * [Rectangle](/vantage/documentation/skill-designer/document/rule-verification/rectangle) * [RectangleList](/vantage/documentation/skill-designer/document/rule-verification/rectangle-list) * [Page](/vantage/documentation/skill-designer/document/rule-verification/page) * [Object model](/vantage/documentation/skill-designer/document/rule-verification/object-model) # ImageRegionList Source: https://docs.abbyy.com/vantage/documentation/skill-designer/document/rule-verification/image-region-list Provides access to region lists on an image. `ImageRegionList` is a collection of image regions on a document. Use it to add, remove, or clear regions on a field. ## Methods ### Add ```javascript theme={null} ImageRegion Add(ImageRegion imageRegion); ImageRegion Add(Rectangle rectangle, Page page); ImageRegion Add(Rectangle[] rectangles, Page page); ImageRegion Add(int left, int top, int right, int bottom, Page page); ``` Adds a region to the list. Returns the added region. * The first overload adds an existing region. * The other overloads create a new region on the specified page — from a rectangle, an array of rectangles, or boundary coordinates. ### Remove ```javascript theme={null} bool Remove(ImageRegion imageRegion); bool Remove(int imageRegionIndex); ``` Removes a region from the list. Returns `true` if the region was removed, `false` otherwise. ### Clear ```javascript theme={null} void Clear(); ``` Removes all regions from the list. ## Related topics * [ImageRegion](/vantage/documentation/skill-designer/document/rule-verification/image-region) * [Rectangle](/vantage/documentation/skill-designer/document/rule-verification/rectangle) * [RectangleList](/vantage/documentation/skill-designer/document/rule-verification/rectangle-list) * [Page](/vantage/documentation/skill-designer/document/rule-verification/page) * [Object model](/vantage/documentation/skill-designer/document/rule-verification/object-model) # Object model Source: https://docs.abbyy.com/vantage/documentation/skill-designer/document/rule-verification/object-model JavaScript object reference for writing Advanced Script Rules in Vantage — Context, Field, Document, and related types. When writing Advanced Script Rules, you have access to a set of JavaScript objects representing the document, its fields, the execution context, image regions, and Vantage's data catalogs. The Vantage JavaScript interpreter supports ECMAScript 5.1 and selected later features. For more information, see the [ECMAScript repository](https://github.com/sebastienros/jint#supported-features). ## Data access Scripts can define custom functions and access Vantage data catalogs through the `Context` object. Scripts cannot: * Send requests to databases other than Vantage data catalogs. * Send requests to external services. * Use third-party libraries such as jQuery. ## Object reference Use these objects when writing Advanced Script Rules. ### Execution context | Object | Description | | :---------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------- | | [Context](/vantage/documentation/skill-designer/document/rule-verification/context) | Access the document, fields, catalog records, and skill parameters from inside a rule. | | [Parameter](/vantage/documentation/skill-designer/document/rule-verification/parameter) | A parameter value. | | [SkillParameter](/vantage/documentation/skill-designer/document/rule-verification/skill-parameter) | A skill parameter value. | | [SkillParameterType](/vantage/documentation/skill-designer/document/rule-verification/skill-parameter-type) | Enumeration of the possible skill parameter types. | ### Document structure | Object | Description | | :--------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------- | | [Document](/vantage/documentation/skill-designer/document/rule-verification/document) | The document being processed, including its pages, source files, and the skill applied to it. | | [Page](/vantage/documentation/skill-designer/document/rule-verification/page) | A single document page. | | [Field](/vantage/documentation/skill-designer/document/rule-verification/field) | A document field, with properties and methods for inspecting and modifying it during rule execution. | | [FieldType](/vantage/documentation/skill-designer/document/rule-verification/field-type) | Enumeration of available field types and the data types each supports. | | [DataType](/vantage/documentation/skill-designer/document/rule-verification/data-type) | Enumeration of data types a field can contain. Includes the `AmountOfMoney` class for currency values. | ### Image regions | Object | Description | | :---------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------- | | [ImageRegionList](/vantage/documentation/skill-designer/document/rule-verification/image-region-list) | A list of field regions on an image. | | [ImageRegion](/vantage/documentation/skill-designer/document/rule-verification/image-region) | A single field region, which may consist of multiple rectangles. | | [RectangleList](/vantage/documentation/skill-designer/document/rule-verification/rectangle-list) | A list of rectangle areas on an image. | | [Rectangle](/vantage/documentation/skill-designer/document/rule-verification/rectangle) | A rectangular area on an image. Coordinates are in pixels. | | [Symbol](/vantage/documentation/skill-designer/document/rule-verification/symbol) | A character within the initial text value of a field. | ### Data and transactions | Object | Description | | :------------------------------------------------------------------------------------------ | :------------------------------------------------------------------------ | | [Record](/vantage/documentation/skill-designer/document/rule-verification/record) | A single row from a data catalog, returned by `Context.GetCatalogRecord`. | | [Transaction](/vantage/documentation/skill-designer/document/rule-verification/transaction) | Transaction parameters for the current run. | | [SourceFile](/vantage/documentation/skill-designer/document/rule-verification/source-file) | A source file used as input. | ## Related topics * [Business rules automation](/vantage/documentation/skill-designer/document/rule-verification/business-rules-automation) * [Rule verification](/vantage/documentation/skill-designer/document/rule-verification/rule-verification) * [Sample scripts](/vantage/documentation/skill-designer/document/rule-verification/sample-scripts) # Page Source: https://docs.abbyy.com/vantage/documentation/skill-designer/document/rule-verification/page Information about a single document page — image dimensions, page index, and source file. `Page` represents a single page of a document, including its image dimensions and source file. ## Properties | Name | Type | Access level | Description | | :-------------- | :----------------------------------------------------------------------------------------- | :----------- | :----------------------------------------------------- | | **Id** | string | Read-only | The page identifier. | | **ImageHeight** | uint | Read-only | The height of the page image in pixels. | | **ImageWidth** | uint | Read-only | The width of the page image in pixels. | | **Index** | int | Read-only | The page number in the document. Indexing starts at 0. | | **SourceFile** | [SourceFile](/vantage/documentation/skill-designer/document/rule-verification/source-file) | Read-only | The source file this page was extracted from. | ## Related topics * [Document](/vantage/documentation/skill-designer/document/rule-verification/document) * [SourceFile](/vantage/documentation/skill-designer/document/rule-verification/source-file) * [ImageRegion](/vantage/documentation/skill-designer/document/rule-verification/image-region) * [Object model](/vantage/documentation/skill-designer/document/rule-verification/object-model) # Parameter Source: https://docs.abbyy.com/vantage/documentation/skill-designer/document/rule-verification/parameter Provides access to parameter values. `Parameter` represents a single transaction parameter — its name, value, and whether it can be modified. ## Properties | Name | Type | Access level | Description | | :------------- | :----- | :----------- | :------------------------------------ | | **IsReadOnly** | bool | Read-write | `true` if the parameter is read-only. | | **Name** | string | Read-only | The name of the parameter. | | **Value** | string | Read-write | The value of the parameter. | Writing to a parameter whose `IsReadOnly` is `true` interrupts rule execution with an error. ## Related topics * [Transaction](/vantage/documentation/skill-designer/document/rule-verification/transaction) * [SkillParameter](/vantage/documentation/skill-designer/document/rule-verification/skill-parameter) * [Object model](/vantage/documentation/skill-designer/document/rule-verification/object-model) # Record Source: https://docs.abbyy.com/vantage/documentation/skill-designer/document/rule-verification/record The Record object — a single row from a data catalog, returned by Context.GetCatalogRecord. `Record` represents a single row from a data catalog. Use [`Context.GetCatalogRecord`](/vantage/documentation/skill-designer/document/rule-verification/context#getcatalogrecord) to fetch a record by its identifier. Importing a skill creates a catalog with the structure defined by the skill. Populate the catalog with your business data via the Vantage API. ## Properties | Name | Type | Access level | Description | | :------------- | :------------------------- | :----------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | **ExternalId** | string | Read-only | The identifier of the record in the catalog. | | **Fields** | `Record` | Read-only | Returns a dictionary with the catalog columns as keys and lists of all cell values in each column as dictionary values. The **ExternalId** identifier is used to search for specific cell values. | ## Related topics * [Context](/vantage/documentation/skill-designer/document/rule-verification/context) * [Object model](/vantage/documentation/skill-designer/document/rule-verification/object-model) * [Using data catalogs](/vantage/documentation/skill-designer/document/using-data-catalogs/use) # Rectangle Source: https://docs.abbyy.com/vantage/documentation/skill-designer/document/rule-verification/rectangle Provides access to rectangular areas on an image. Coordinates are specified in pixels. `Rectangle` represents a rectangular area on an image. Coordinates are specified in pixels relative to the page's top-left corner. ## Properties | Name | Type | Access level | Description | | :--------- | :--- | :----------- | :--------------------------------------- | | **Left** | int | Read-write | The x-coordinate of the left boundary. | | **Top** | int | Read-write | The y-coordinate of the top boundary. | | **Right** | int | Read-write | The x-coordinate of the right boundary. | | **Bottom** | int | Read-write | The y-coordinate of the bottom boundary. | ## Related topics * [ImageRegion](/vantage/documentation/skill-designer/document/rule-verification/image-region) * [RectangleList](/vantage/documentation/skill-designer/document/rule-verification/rectangle-list) * [ImageRegionList](/vantage/documentation/skill-designer/document/rule-verification/image-region-list) * [Object model](/vantage/documentation/skill-designer/document/rule-verification/object-model) # RectangleList Source: https://docs.abbyy.com/vantage/documentation/skill-designer/document/rule-verification/rectangle-list Provides access to lists of rectangle areas on an image. `RectangleList` is a collection of rectangular areas on an image. Use it to add, remove, or clear rectangles in a region. ## Methods ### Add ```javascript theme={null} Rectangle Add(int left, int top, int right, int bottom); Rectangle Add(Rectangle rectangle); ``` Adds a rectangle to the list. Returns the added rectangle. * The first overload creates a new rectangle from boundary coordinates. * The second overload adds an existing rectangle. ### Remove ```javascript theme={null} bool Remove(Rectangle rectangle); bool Remove(int rectangleIndex); ``` Removes a rectangle from the list. Returns `true` if the rectangle was removed, `false` otherwise. ### Clear ```javascript theme={null} void Clear(); ``` Removes all rectangles from the list. ## Related topics * [Rectangle](/vantage/documentation/skill-designer/document/rule-verification/rectangle) * [ImageRegion](/vantage/documentation/skill-designer/document/rule-verification/image-region) * [ImageRegionList](/vantage/documentation/skill-designer/document/rule-verification/image-region-list) * [Object model](/vantage/documentation/skill-designer/document/rule-verification/object-model) # Rule verification Source: https://docs.abbyy.com/vantage/documentation/skill-designer/document/rule-verification/rule-verification Use rules to validate, modify, or compute field values in a Document skill. Covers built-in rules, execution order, and using rules with tables. Rules let you automatically verify extracted data against conditions you define, modify field values (for example, sum several fields), and route failing documents to manual review. ## How rules work A rule that references only repeating fields from the same group (such as a table) becomes a **repeating rule** — it runs once per instance (first instance, then second, and so on). This is how rules process table rows. Documents with fields that fail one or more rules are sent to manual review. If an operator changes a field value during review, the applicable rules run again. When only one instance of a repeating field changes (for example, a single table cell), the repeating rule re-runs only for the modified instance. ### Execution order Vantage runs rules in a predefined order: * Rules that **read** a field run after rules that **write** that field. * Chained dependencies run sequentially — if rule A writes field X (which rule B reads) and rule B writes field Y, A runs before B. * When multiple rules write to the same field, they run in creation order. * Circular dependencies — where rule A reads X and writes Y while rule B reads Y and writes X — cause an error. ## Create a rule To add a field verification rule: In the field properties, click **New rule**. In the dialog, give the rule a name and select the fields it should check from the dropdown. To create a custom rule using a script, see [Business rules automation](/vantage/documentation/skill-designer/document/rule-verification/business-rules-automation). ## Built-in rules | Rule | What it does | Applies to | | :---------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :------------ | | **Check Sum** | Adds the values of several fields and compares the result to another field. | Number, Money | | **Check Product** | Multiplies the values of several fields and compares the result to another field. | Number, Money | | **Compare** | Compares the values of several fields. | Any | | **Merge** | Merges the values of several fields into a target field (the target field must already exist). You can add separators from the provided list. | Any | | **Data Catalog Lookup** | Checks field values against records in a data catalog. See [Create data catalog lookup rules](/vantage/documentation/skill-designer/document/rule-verification/setting-lookup-rules). | Any | ## Use rules with tables All built-in and custom rules can be applied to table cells by specifying a column as a field. The rule then runs against every cell in that column. A single rule can reference both table columns and fields outside the table. The **Check Sum** and **Check Product** rules support three common table patterns: ### Compare a column total with an external field Sum (or multiply) every cell across one or more columns and compare the result to a single field outside the table. * In **Add Up Fields** or **Fields to Multiply**, choose the columns. You can mix columns from different tables. A single column also works. * In **Compare Sum with** or **Compare Product with**, choose the external field. All cells in the selected columns are combined once and compared to that field. ### Compare two columns row-by-row When both the input and comparison fields are columns from the same table, the rule becomes a repeating rule that runs once per row. For example, multiply the unit price column by the units-ordered column and compare to the line-total column to verify each row's math. ### Compare a column with another column plus a constant external field Pass a table column and a field outside the table as inputs, and a column from the same table as the comparison. The rule runs once per row, using the external field as a constant in every row. ## Related topics * [Business rules automation](/vantage/documentation/skill-designer/document/rule-verification/business-rules-automation) * [Create data catalog lookup rules](/vantage/documentation/skill-designer/document/rule-verification/setting-lookup-rules) * [Add fields](/vantage/documentation/skill-designer/document/adding-fields/adding-fields) # Sample scripts Source: https://docs.abbyy.com/vantage/documentation/skill-designer/document/rule-verification/sample-scripts JavaScript samples for common Advanced Script Rule scenarios — field presence, numeric comparisons, conditional requirements, and table validation. The following JavaScript samples illustrate common patterns for Advanced Script Rules — checking field presence, comparing numeric values, applying conditional validation, and validating table data. Copy and adapt them to your own field names and business rules. ## Check that a field is present For example, check that the `MyField` field is found and filled in: ```javascript theme={null} var field = Context.GetField("MyField"); if (!field) { Context.CheckSucceeded = false; Context.ErrorMessage = 'MyField field not found'; } else if (!field.Value) { Context.CheckSucceeded = false; Context.ErrorMessage = 'MyField field empty'; } ``` ## Compare floating-point numbers Comparing floating-point numbers directly can yield unpredictable results. Use methods from the built-in `Math` object to compare numbers — especially money values — reliably. ```javascript theme={null} // compare two floating-point numbers var floatField1 = Context.GetField("Number Field 1"); var floatField2 = Context.GetField("Number Field 2"); var floatVal1 = floatField1.Value; var floatVal2 = floatField2.Value; if (Math.round(floatVal1) === Math.round(floatVal2)) { return; } else { Context.CheckSucceeded = false; Context.ErrorMessage = 'The values are different'; } // compare two money values var moneyField1 = Context.GetField("Money Field 1"); var moneyField2 = Context.GetField("Money Field 2"); var value1 = moneyField1.Value.Amount; var value2 = moneyField2.Value.Amount; if (Math.abs(value1 - value2) <= 0.0001) { return; } else { Context.CheckSucceeded = false; Context.ErrorMessage = 'The values are different'; } ``` ## Require a non-empty value depending on another field An optional field can become required based on another field's value. For example, if `MaritalStatus` is `Married`, the spouse name fields should be filled in. This script rule verifies that when `MaritalStatus` is `Married`, both `SpouseFirstName` and `SpouseLastName` are filled in: ```javascript theme={null} function checkFieldValuePresence(field) { if (!field.Value) { Context.ErrorMessage = 'Value of ' + field.Name + ' field should not be empty'; return false; } return true; } var conditionField = Context.GetField("MaritalStatus"); if (conditionField === null) { Context.CheckSucceeded = false; Context.ErrorMessage = 'MaritalStatus field not found'; } else if (checkFieldValuePresence(conditionField)) { var lastName = Context.GetField("SpouseLastName"); var firstName = Context.GetField("SpouseFirstName"); if (conditionField.Text === "Married") { if (lastName === null || firstName === null) { Context.CheckSucceeded = false; Context.ErrorMessage = 'Spouse name field not found'; } else if (!checkFieldValuePresence(lastName) || !checkFieldValuePresence(firstName)) { Context.CheckSucceeded = false; } } } else { // marital status not filled in, check failed Context.CheckSucceeded = false; } ``` ## Check that a field is located on the document Rules can also fill in field values, even if the value isn't printed on the document. For example, if several taxes apply, the total tax can be calculated automatically. However, some countries require the total tax amount to be printed on the document. This script rule checks that for receipts from Germany the total tax is present on the image. For other countries, no additional check is needed because the **Required field** flag is turned on for the total tax field: ```javascript theme={null} function checkFieldRegion(field) { if (!field || !field.HasRegion) { Context.ErrorMessage = 'The (' + field.Name + ') field is not present on the document image'; return false; } return true; } var conditionField = Context.GetField("CountryOfOrigin"); if (!conditionField.Value) { Context.ErrorMessage = 'Country of origin unknown, cannot check taxes'; Context.CheckSucceeded = false; } else { var totalTaxField = Context.GetField("TotalTax"); if (conditionField.Text === "DE" && !checkFieldRegion(totalTaxField)) { Context.CheckSucceeded = false; } } ``` ## Validate the data in particular cases Checking that the total tax equals the sum of all taxes can be done with a predefined rule (**Check Sum**). But if one of the taxes can have a negative value in certain countries, only a script rule can handle both cases — adding all taxes, or adding and subtracting a return tax, depending on the country of origin. This script checks that the sum of two taxes equals the total tax, except for receipts from Spain, where either the sum or the difference of the two can equal the total tax: ```javascript theme={null} var conditionField = Context.GetField("CountryOfOrigin"); var totalTaxField = Context.GetField("TotalTax"); var tax1Field = Context.GetField("Tax1"); var tax2Field = Context.GetField("Tax2"); if (!conditionField.Value || !totalTaxField.Value || !tax1Field.Value || !tax2Field.Value) { Context.ErrorMessage = 'Cannot check taxes'; Context.CheckSucceeded = false; } else { if (conditionField.Text === "ES") { Context.CheckSucceeded = ((Math.round(tax1Field.Value - tax2Field.Value) === Math.round(totalTaxField.Value)) || (Math.round(tax1Field.Value + tax2Field.Value) === Math.round(totalTaxField.Value))); } else { Context.CheckSucceeded = (Math.round(tax1Field.Value + tax2Field.Value) === Math.round(totalTaxField.Value)); } } ``` ## Compare a column sum to an external field Scripts can reference table values, not just regular fields. To speed up rule checks, save tables as variables and reference the variables instead of re-fetching the table. If a variable holds an entire table, use the [`Instances`](/vantage/documentation/skill-designer/document/rule-verification/field#instances) property to access rows, then use [`GetChild`](/vantage/documentation/skill-designer/document/rule-verification/field#getchild) to get a specific cell in a row. The sample below sums all values in the `Total Price` column and compares the result to the `Total` field: ```javascript theme={null} var totalField = Context.GetField("Total"); var tableField = Context.GetField("MyTable"); if (!totalField) { Context.CheckSucceeded = false; Context.ErrorMessage = "Total field is not found"; return; } if (!tableField) { Context.CheckSucceeded = false; Context.ErrorMessage = "MyTable field is not found"; return; } var sum = 0; for (var i = 0; i < tableField.Instances.length; i++) { var tableTotalField = tableField.Instances[i].GetChild("MyTable/Total Price"); sum += tableTotalField.Value.Amount; } if (Math.abs(sum - totalField.Value.Amount) > 0.02) { Context.CheckSucceeded = false; Context.ErrorMessage = "The sum of Total Price in the table doesn't match Total"; } ``` ## Compare column cells to an external field and list failing rows Reference table columns with [`Context.GetFields`](/vantage/documentation/skill-designer/document/rule-verification/context#getfields) to get every cell in the column, which is useful for looping. The sample below compares each row's tax rate to the overall tax rate. When values don't match, the script continues instead of failing immediately, collecting the row numbers with mismatches and reporting them in the error message: ```javascript theme={null} var taxRateFields = Context.GetFields("MyTable/TaxRate"); var taxRateField = Context.GetField("TaxRate"); if (!taxRateFields || !taxRateField) return; var taxRate = taxRateField.Value ? taxRateField.Value : 0; var wrongLines = []; for (var i = 0; i < taxRateFields.length; i++) { if (taxRateFields[i].Value != taxRate) wrongLines.push(i + 1); } if (wrongLines.length > 0) { Context.CheckSucceeded = false; Context.ErrorMessage = "Wrong tax rate in lines: " + wrongLines.join(", "); } ``` ## Compare the product of row values to another row value You can perform operations on different columns in a table row-by-row without using explicit loops — reference each column using [`Context.GetField`](/vantage/documentation/skill-designer/document/rule-verification/context#getfield). This creates a repeating rule that runs automatically for each row. All columns referenced this way must belong to the same table. The sample below multiplies unit quantity by unit price for each row and compares the result to the line item's total price: ```javascript theme={null} var quantityField = Context.GetField("MyTable/Quantity"); var unitPriceField = Context.GetField("MyTable/Unit Price"); var totalField = Context.GetField("MyTable/Total Price"); if (!quantityField || !unitPriceField || !totalField) return; var quantity = quantityField.Value ? quantityField.Value : 0; var unitPrice = unitPriceField.Value?.Amount ? unitPriceField.Value.Amount : 0; var total = totalField.Value?.Amount ? totalField.Value.Amount : 0; var result = quantity * unitPrice; if (Math.abs(result - total) > 0.01) { Context.CheckSucceeded = false; Context.ErrorMessage = "Quantity * Unit price is not equal to Total"; } ``` ## Related topics * [Business rules automation](/vantage/documentation/skill-designer/document/rule-verification/business-rules-automation) * [Object model](/vantage/documentation/skill-designer/document/rule-verification/object-model) * [Context](/vantage/documentation/skill-designer/document/rule-verification/context) * [Field](/vantage/documentation/skill-designer/document/rule-verification/field) # Create data catalog lookup rules Source: https://docs.abbyy.com/vantage/documentation/skill-designer/document/rule-verification/setting-lookup-rules Verify extracted document fields against data catalog records — configure exact and fuzzy comparisons, auto-populate fields, and handle lookup errors. When processing documents, you may need to verify the data extracted from them against records stored in data catalogs. **Data Catalog Lookup rules** automate this. With these rules, you can: * Compare invoices and orders against vendor and consignee databases. * Automatically fill in missing document fields using matching catalog records, such as: * Order numbers and amounts * Company details * Names and descriptions of goods and services For more information on data catalogs for Document skills, see [Using data catalogs](/vantage/documentation/skill-designer/document/using-data-catalogs/use). ## Create a rule Click **New rule** in the field properties. Choose **Data Catalog Lookup** as the rule type, and then click **Next**. From the **Data Catalog for Lookup** dropdown, select the catalog to validate against. To compare values against multiple data catalogs, create a separate rule for each. A table appears listing the columns from the selected catalog in the **Catalog Column** column. Data Catalog Lookup configuration showing Catalog Column, Skill Field, and Action columns In the **Skill Field** column, map each catalog column to the corresponding extracted document field using the dropdowns. Leave a cell blank if you don't need to search that column or if it isn't present in your documents. A single rule can reference fields from only one repeating group. To search values across multiple repeating groups, create a separate rule for each group. In the **Action** column, set how each field pair is processed: * **Exact Comparison** — For unique values such as tax IDs or product identifiers. * **Fuzzy Comparison** — For values that may differ slightly, such as street names or organization addresses. The threshold is 30% — at least 70% of the value must match. Fuzzy Comparison is not case sensitive. * **Get Value from Data Catalog** — Copies the catalog value into the corresponding document field. Available only if at least one field pair in the rule uses Exact or Fuzzy Comparison. Edit the **Rule Name**, and then click **Save**. ## After you create a rule * A link to the skill appears under the catalog in the **Data Catalogs** section. * The rule runs automatically for all document fields mapped during setup. * Lookup rules run during field extraction. If a user edits a field value manually, the rule does not re-run automatically. * Fields that feed a lookup rule can be populated by extraction, scripts, activities (such as Script or NLP), business rules, or manual entry. To trigger the rules again, upload a new file to the skill's document set, or send the document to manual review. If a field value changes during manual review, the data catalog lookup rule re-runs. If a matching record is found, Vantage copies the catalog values into the mapped fields and those fields become read-only. ## Matching behavior and errors Data catalog lookup rules work reliably only if the comparison (exact or fuzzy) returns **no more than one matching record**. Otherwise, one of these errors occurs: * **No records found** — No catalog records matched. * **Too many records found** — More than one catalog record matched. To avoid these errors, make sure at least one mapped field uses a value that's either unique or can't match multiple catalog records. ## Manually search a data catalog You can search for a data catalog record that matches the prefix of any word in the field value, not just the first word. Click the **Search** button to the right of the field value box for which a rule is configured. In the search bar, enter the value you want to find — full or partial, at least 3 characters. The system searches across all fields in the selected data catalog. Click a result to select it. The selected catalog value is copied into all document fields linked to that catalog column during rule setup. After a document field is filled from a catalog record, manual editing is disabled. If the value is incorrect, repeat the lookup and select a different record — the document fields update to match the new catalog values, and the rule runs again. If the required value isn't in the data catalog, click **Clear Document Fields** or press **Ctrl + Del** to restore the field values extracted from the document, without applying any catalog values. ## Related topics * [Rule verification](/vantage/documentation/skill-designer/document/rule-verification/rule-verification) * [Using data catalogs](/vantage/documentation/skill-designer/document/using-data-catalogs/use) * [Manual Review Client](/vantage/documentation/runtime/manual-review/manual-review) # SkillParameter Source: https://docs.abbyy.com/vantage/documentation/skill-designer/document/rule-verification/skill-parameter Provides access to skill parameter values. `SkillParameter` represents a single skill parameter — its name, type, value, and whether it can be modified. ## Properties | Name | Type | Access level | Description | | :------------- | :---------------------------------------------------------------------------------------------------------- | :----------- | :------------------------------------ | | **IsReadOnly** | bool | Read-write | `true` if the parameter is read-only. | | **Name** | string | Read-only | The name of the skill parameter. | | **Type** | [SkillParameterType](/vantage/documentation/skill-designer/document/rule-verification/skill-parameter-type) | Read-only | The type of the skill parameter. | | **Value** | string | Read-write | The value of the skill parameter. | Writing to a parameter whose `IsReadOnly` is `true` interrupts rule execution with an error. ## Related topics * [Context](/vantage/documentation/skill-designer/document/rule-verification/context) * [SkillParameterType](/vantage/documentation/skill-designer/document/rule-verification/skill-parameter-type) * [Parameter](/vantage/documentation/skill-designer/document/rule-verification/parameter) * [Object model](/vantage/documentation/skill-designer/document/rule-verification/object-model) # SkillParameterType Source: https://docs.abbyy.com/vantage/documentation/skill-designer/document/rule-verification/skill-parameter-type SkillParameterType enumeration — the possible types a skill parameter can have. `SkillParameterType` enumerates the possible types a skill parameter can have. ## Constants | Constant | Supported [data types](/vantage/documentation/skill-designer/document/rule-verification/data-type) | Description | | :--------------- | :------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------- | | **Data Catalog** | Catalog | A connection string to a data catalog on the server that you are connected to. | | **Text** | String | A string value. | | **Boolean** | Boolean | A Boolean value. | ## Related topics * [SkillParameter](/vantage/documentation/skill-designer/document/rule-verification/skill-parameter) * [DataType](/vantage/documentation/skill-designer/document/rule-verification/data-type) * [Object model](/vantage/documentation/skill-designer/document/rule-verification/object-model) # SourceFile Source: https://docs.abbyy.com/vantage/documentation/skill-designer/document/rule-verification/source-file A source file used as input to the document — name and parameters. `SourceFile` represents a single file used as input to the document being processed. Use it to access the file's name and any associated parameters. ## Properties | Name | Type | Access level | Description | | :------------- | :------------------------------------------------------------------------------------------------------- | :----------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------- | | **Name** | string | Read-only | The name of the source file. | | **Parameters** | Record\ | Read-only | A dictionary mapping source file parameter names to their [`Parameter`](/vantage/documentation/skill-designer/document/rule-verification/parameter) values. | ## Related topics * [Document](/vantage/documentation/skill-designer/document/rule-verification/document) * [Parameter](/vantage/documentation/skill-designer/document/rule-verification/parameter) * [Object model](/vantage/documentation/skill-designer/document/rule-verification/object-model) # Symbol Source: https://docs.abbyy.com/vantage/documentation/skill-designer/document/rule-verification/symbol Provides access to characters that form the initial value of a field in text format. `Symbol` represents a single recognized character in a field's text value. ## Properties | Name | Type | Access level | Description | | :--------------- | :--- | :----------- | :---------------------------------------------------------- | | **Symbol** | char | Read-only | The character value. | | **IsSuspicious** | bool | Read-only | `true` if the character was recognized with low confidence. | ## Related topics * [Field](/vantage/documentation/skill-designer/document/rule-verification/field) * [Object model](/vantage/documentation/skill-designer/document/rule-verification/object-model) # Transaction Source: https://docs.abbyy.com/vantage/documentation/skill-designer/document/rule-verification/transaction Provides access to transaction parameters. `Transaction` provides access to the parameters of the transaction in which the document is being processed. ## Properties | Name | Type | Access level | Description | | :------------- | :------------------------------------------------------------------------------------------------------- | :----------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------- | | **Parameters** | Record\ | Read-only | A dictionary mapping transaction parameter names to their [`Parameter`](/vantage/documentation/skill-designer/document/rule-verification/parameter) values. | ## Related topics * [Context](/vantage/documentation/skill-designer/document/rule-verification/context) * [Parameter](/vantage/documentation/skill-designer/document/rule-verification/parameter) * [Object model](/vantage/documentation/skill-designer/document/rule-verification/object-model) # Set up a Document skill Source: https://docs.abbyy.com/vantage/documentation/skill-designer/document/set-up Create, train, and publish a Document skill — including structured (fixed-form) skills, recognition languages, and Online learning. After you create a Document skill, follow these steps to train and publish it. To open Document skill settings, click the settings icon to the right of the skill name in the Skill Designer. Navigate to the **Documents** tab in the Skill Designer and click **Upload documents** — in the center of the designer, on the toolbar, or in the **Actions** pane. Each file must contain a single document image. While documents are uploading, a progress indicator appears at the top of the Skill Designer (to the right of the bookmarks). To preview a document, click the icon to the left of its name; drag the preview window's left border to resize it up to 80% of the browser width. Navigate to the **Editor** tab — either by clicking the tab name, or by selecting one or more documents from the list and clicking **Label Fields and Create Business Rules** in the **Actions** pane. Label every field you want to extract. You can also add validation rules and skill parameters here. Click **Train** in the **Actions** pane. When training finishes, the **Train** button shows **Completed**. To stop training, click **Cancel** under the **Train** button. Review extraction accuracy and correct any errors. Repeat the previous steps until you are satisfied with the results. Publish your skill to the Skill Catalog to make it available for use. You can derive new skills from your published skill. Derived skills inherit all rules and fields from their base skill and can be seamlessly updated to the latest base version while preserving your changes. ## Process structured documents ABBYY Vantage offers a machine learning mode for processing structured documents — documents where field locations are the same on every instance. Examples include questionnaires, application forms, and tax return forms. This mode handles forms that have multiple variants, such as IRS Form 1040 for different years, where the set and location of fields differ slightly between variants. Each variant is a separate structured document, and you must upload a blank form for each. Create a new Document skill and turn on the **Fixed-form documents** toggle. Fixed-form documents toggle in Document skill settings Navigate to the **Blank Form** tab and click **Upload Blank Form** — in the center of the designer, on the toolbar, or in the **Actions** pane. If you don't have a blank form, upload a completed form and mark it as a blank form. One skill can handle up to 10 variants of one form (for example, IRS Form 1040 for different years). Label the fields you want to extract. In the field settings, enable **Eliminate field background** for fields whose background may affect recognition. In the **Actions** pane, click **Train**. Click the **Test Set** tab and upload completed test documents. Confirm that all fields are labeled correctly on each document. If any field locations don't match an uploaded blank form, add a blank form for that variant. In the **Actions** pane, test your skill. When the operation completes, review the results. If you are not satisfied, adjust the labeling and train again. Publish your skill to the Skill Catalog to make it available for use. Tabs in the Skill Designer for a fixed-form skill If you edit your skill in Advanced Designer and combine the Forms activity with other activities, the **Fixed-form documents** toggle is disabled in Vantage and the skill can no longer be edited outside of Advanced Designer. ### Switch between structured and semi-structured If you later decide your documents are better treated as semi-structured: 1. Open Document skill settings. 2. Turn off the **Fixed-form documents** toggle. All labeled fields are preserved. 3. Retrain the skill. ### Work with tables and repeating groups When processing structured documents, Vantage can handle tables and repeating groups if: * The maximum number of table rows or group instances is known in advance. * The boundaries of the table or group are fixed. Label every row that may appear across all variants of the form. Only rows with data appear in processing results; empty rows are ignored. Only tables with text values are supported. If your table has columns with checkboxes or barcodes, use a repeating group instead. If the number of rows or instances in a group is not known in advance, use another Vantage technology — see [Process structured documents in Advanced Designer](/vantage/documentation/advanced-designer/use-cases/process-structured). ## Configure recognition languages When processing a document, Vantage selects a processing language from the list of languages enabled on the skill. By default, new skills have English, French, German, and Spanish enabled. To modify the list: 1. Open Document skill settings. 2. Select the languages you need. The list is sorted alphabetically, with the currently selected languages pinned to the top. At least one language must be selected. 3. Click **Save** to keep your changes, or **Cancel** to discard them. The number of selected languages may affect document processing speed. Restrict the list to the languages you actually expect in your documents. You can change the recognition languages after a skill has been trained. To apply the change, upload the documents again and retrain the skill. ## Configure Online learning Online learning collects processed documents into a training set and continues training the skill using those documents. It is available for Document skills and Classification skills. Document skills support two Online learning modes: | Mode | Behavior | | :-------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------- | | **Collect and learn** | Default. Documents are collected and the skill is retrained automatically. | | **Collect only** | Documents are collected but the skill is not retrained. Use this mode to review documents added to the training set before retraining manually. | To use **Collect only**, open Document skill settings and select the mode. Collect only mode in Document skill settings To turn Online learning on or off for a skill, see [Enable Online learning](/vantage/documentation/runtime/online-learning/enable-online-learning). ## Related topics * [Enable Online Learning](/vantage/documentation/runtime/online-learning/enable-online-learning) * [Label documents in Skill Designer](/vantage/documentation/skill-designer/document/labeling-documents) * [Create a skill](/vantage/documentation/skill-catalog/create-skill) * [Process structured documents in Advanced Designer](/vantage/documentation/advanced-designer/use-cases/process-structured) * [Supported Recognition Languages](/vantage/documentation/tenant-admin/technical-specs/languages) # Create data catalogs Source: https://docs.abbyy.com/vantage/documentation/skill-designer/document/using-data-catalogs/create Create a data catalog from a CSV file or by entering columns manually. You can create a data catalog in two ways: * **From a CSV file** — Upload the CSV and Vantage verifies the file name and data. If no catalog with the same name exists, a new one is created; otherwise Vantage updates the existing catalog. * **Manually** — Create columns and data types by hand. ## Create a data catalog from a CSV file Review these guidelines: * The imported CSV can't exceed 100 MB. * Columns must be separated by commas. * No spaces are allowed between a column name and its comma separator. * Values containing commas that should be treated as literals must be enclosed in double quotation marks. * Quotation marks inside string values must be duplicated. The entire string value must also be wrapped in double quotation marks. For sample CSV file fragments, see [Update data catalogs](/vantage/documentation/skill-designer/document/using-data-catalogs/update). On the **Data Catalogs** tab, drag the CSV onto the page, or click **Browse** at the top of the screen to select it. If needed, modify the data catalog name and enter a description. Click **Next**. Specify a data type for each column. Click **Create**. A confirmation message appears; you can close it safely. The new data catalog appears in the list immediately, and the record count updates as Vantage finishes importing the CSV. Large uploads may take time before the catalog is ready for use. ## Create a data catalog manually In the pane above the data catalog list, click **Create Catalog**. Enter a name and (optionally) a description. Choose a type from the options described below. Click **Next**. Click **Add Column** to create columns. Set each column's name and data type. To reorder a column, drag it by its left edge. To delete a column, hover over it and click **Delete**. For **Document Issuer Companies** and **Document Receiver Companies** catalog types, you can't reorder, edit properties of, or delete the predefined columns. Click **Create**. The new data catalog appears in the list. ### Catalog types | Catalog type | When to use | | :------------------------------ | :--------------------------------------------------------------- | | **User-defined** | Empty catalog, no predefined columns. Use for non-standard sets. | | **Document Issuer Companies** | Company searches — predefined columns (see below). | | **Document Receiver Companies** | Company searches — predefined columns (see below). | For company searches, use **Document Issuer Companies** or **Document Receiver Companies**. Use **User-defined** for catalogs with non-standard column sets. #### Document Issuer Companies columns * **Issuer Company ID** (Text, required) * **Name** (Text) * **City** (Text) * **Street** (Text) * **State or Province** (Text) * **Country** (Alphanumeric Code, required) * **Postal Code** (Alphanumeric Code) * **Tax ID** (Text) * **National Tax ID** (Text) * **Bank Account** (Alphanumeric Code) * **Bank Code** (Alphanumeric Code) * **IBAN** (Alphanumeric Code) * **Company Correlation ID** (Text) #### Document Receiver Companies columns * **Receiver Company ID** (Text, required) * **Name** (Text) * **City** (Text) * **Street** (Text) * **State or Province** (Text) * **Country** (Alphanumeric Code, required) * **Postal Code** (Alphanumeric Code) * **Tax ID** (Text) ## Related topics * [Using data catalogs](/vantage/documentation/skill-designer/document/using-data-catalogs/use) * [Update data catalogs](/vantage/documentation/skill-designer/document/using-data-catalogs/update) * [Create data catalog lookup rules](/vantage/documentation/skill-designer/document/rule-verification/setting-lookup-rules) # Update data catalogs Source: https://docs.abbyy.com/vantage/documentation/skill-designer/document/using-data-catalogs/update Update a data catalog by uploading a CSV file through the UI or via an SFTP shared folder. Update an existing data catalog by uploading a new CSV file — either through the Vantage UI or by placing the file in a shared folder connected via SFTP. ## CSV format Follow these rules when preparing a CSV for upload: * Columns must be separated by commas. * No spaces are allowed between a column name and its comma separator. * Values containing commas that should be treated as literals must be enclosed in double quotation marks. * Quotation marks inside string values must be duplicated, and the entire string value must also be wrapped in double quotation marks. You can use Microsoft Excel to edit the CSV file. The CSV file must not be larger than 100 MB. When updating a **Document Issuer Companies** or **Document Receiver Companies** data catalog, the **Company ID** and **Country** columns must be filled in. Empty values in these columns cause the update to fail. ### Sample: value with a comma ```csv theme={null} Id,VATID,BusinessUnitId,IBAN,BankAccount,BankCode,Name,ZIP,Street,City,State,CountryCode "999,9",GB_fake01,01,123456678,PPPCCC,CB3 AAA,CAMBRIDGESHIRE COUNTY COUNCIL,PO Box 123456,str1,Cambridge,East,GB "0,1",GB_fake02,01,123487654,CCCPPP,AAA BB3,Random Company Inc.,PO Box 45678,str2,Oxford,South East England,GB ``` ### Sample: value with quotation marks ```csv theme={null} Id,VATID,Name,ZIP,Street,City,State,CountryCode 1,GB_fake01,"CAMBRIDGESHIRE ""COUNTY COUNCIL""",22313,str1,Cambridge,East,GB 2,GB_fake02,Random Company Inc.,22314,str2,Oxford,South East England,GB ``` ## Update via the UI On the **Data Catalogs** tab, select the catalog from the list and click **Update** in the pane above the list. Drag the CSV file onto the page, or click **Browse** at the top of the screen. The CSV file name must match the data catalog name. Otherwise, Vantage creates a new catalog instead. If Vantage detects new columns in the CSV, choose: * **Add** — adds the new columns and updates the data catalog. * **Skip** — ignores the new columns but updates the data catalog. You can only edit column properties for new columns. Once the update succeeds, a dialog shows the number of updated records and any added or removed columns. ## Update via a shared folder First, connect to the shared folder using SFTP. Install and launch any SFTP client (such as FileZilla or WinSCP). On the **Data Catalogs** tab, select the catalog and open its **Settings** dialog. Copy the path from the **Folder to upload CSV** field. Data catalog settings dialog with the Folder to upload CSV path highlighted Paste the path into the **Host** field in your SFTP client and click **Connect**. FileZilla SFTP client with Host field populated from the data catalog settings In the confirmation dialog, click **OK** to trust the host. The **Catalogs** folder appears in the SFTP client's remote folder pane. To update a data catalog, give the CSV file the same name as the data catalog and place it in the **Catalogs** folder. Vantage checks the **Catalogs** folder every 20 seconds and updates any data catalog whose name matches a CSV file in the folder. When a data catalog is updated via the shared folder, existing records are replaced with the new ones. ### Update outcomes | File state | Result | | :-------------------------------------------------------- | :--------------------------------------------------------------------------------------------- | | All records valid | Catalog is updated; file is deleted from **Catalogs**. | | Some records are empty | Empty records are ignored; valid records are imported; file is deleted from **Catalogs**. | | Some columns are missing | Missing columns are ignored; existing columns are imported; file is deleted from **Catalogs**. | | File contains new columns | New columns are added to the catalog; file is deleted from **Catalogs**. | | Records are in the wrong format | Catalog is not updated; file is moved to **Catalogs-exception**. | | File can't be opened, or the name doesn't match a catalog | Catalog is not updated; file is moved to **Catalogs-exception**. | ## Related topics * [Using data catalogs](/vantage/documentation/skill-designer/document/using-data-catalogs/use) * [Create data catalogs](/vantage/documentation/skill-designer/document/using-data-catalogs/create) * [Data catalogs and the Vantage API](/vantage/documentation/skill-designer/document/using-data-catalogs/use-with-api) * [Create data catalog lookup rules](/vantage/documentation/skill-designer/document/rule-verification/setting-lookup-rules) # Using data catalogs Source: https://docs.abbyy.com/vantage/documentation/skill-designer/document/using-data-catalogs/use Use data catalogs to validate and auto-populate extracted data from a Document skill — including ERP data, currency lists, and custom lookups. Data catalogs contain information that facilitates document recognition. This information can include data from a customer's ERP system (for example, vendor and purchase order data) or any other relevant data, such as information about the currency used, a list of airports for a specific country, or a list of an organization's holidays. You can use data catalogs in your Document skills to: * Improve the accuracy of data extraction. * Verify extracted data. * Allow the user to select a record from the dropdown during manual review to automatically populate the other fields with the data from the selected record. A data catalog is a table of data — you must populate it before it can be used. To match document fields against catalog records, set up [data catalog lookup rules](/vantage/documentation/skill-designer/document/rule-verification/setting-lookup-rules). When Vantage processes a document, it searches for the catalog record that has the most field values matching the document. If a match is found, Vantage populates the matching document fields from that record. If no record matches, or if multiple records match, the rule generates an error and the operator can pick a record manually during review. A data catalog can hold up to **500,000 records**. Each field value can be up to **256 characters** long. In ABBYY Vantage, data catalogs are created for built-in Document skills. For example: * For an Invoice skill, data catalogs named **Vendors**, **BusinessUnits**, **PurchaseOrders**, and **PurchaseOrderItems** are created. * For a Purchase Order skill, data catalogs named **Buyers** and **Suppliers** are created. Predefined data catalogs have a fixed structure and normalization types that must not be modified. To open the list of data catalogs, click **Data Catalogs** in the menu on the left. **Role requirement:** Creating and updating data catalogs depends on the user's role. See [Role-based access control](/vantage/documentation/tenant-admin/tenant-management/role-based-access). ## Create data catalogs You can create a data catalog when editing or importing a Document skill derived from a built-in. Built-in skills can't be edited directly — duplicate the skill first, and Vantage creates the data catalog automatically. You can create a data catalog in one of two ways: * From a CSV file. * By entering columns manually. For more information, see [Creating data catalogs](/vantage/documentation/skill-designer/document/using-data-catalogs/create). ## Update data catalogs You can add data to a data catalog in the following ways: * Upload a CSV file via the UI. * Upload a CSV file via shared folders. * Use the Vantage API for data in JSON format. Updated data catalogs are available to all skills in the tenant, but only for **documents uploaded after the update**. For documents uploaded before the update, the pre-update data is used. ## Related topics * [Create data catalogs](/vantage/documentation/skill-designer/document/using-data-catalogs/create) * [Update data catalogs](/vantage/documentation/skill-designer/document/using-data-catalogs/update) * [Data catalogs and the Vantage API](/vantage/documentation/skill-designer/document/using-data-catalogs/use-with-api) * [Create data catalog lookup rules](/vantage/documentation/skill-designer/document/rule-verification/setting-lookup-rules) * [Role-based access control](/vantage/documentation/tenant-admin/tenant-management/role-based-access) # Data catalogs and the Vantage API Source: https://docs.abbyy.com/vantage/documentation/skill-designer/document/using-data-catalogs/use-with-api List, inspect, update, reindex, and delete data catalog records via the Vantage API. Manage data catalogs programmatically using the Vantage API: list catalogs, inspect their structure, add records, reindex after changes, and delete records. ## List and inspect data catalogs * List all available data catalogs ([reference](/api-reference/catalogs/lists-all-available-catalogs)): ``` GET https://vantage-us.abbyy.com/api/publicapi/v1/catalogs ``` * Get detailed information about a specific data catalog, including its column structure ([reference](/api-reference/catalogs/gets-detailed-information-about-the-catalog)): ``` GET https://vantage-us.abbyy.com/api/publicapi/v1/catalogs/{catalogId} ``` ## Update a data catalog Use the following endpoints to update a data catalog with JSON records. Send a **POST** request to the **records** resource ([reference](/api-reference/catalogrecords/adds-records-to-the-specified-catalog)): ``` POST https://vantage-us.abbyy.com/api/publicapi/v1/catalogs/{catalogId}/records ``` Once updates are complete, reindex the catalog so new data becomes searchable ([reference](/api-reference/catalogs/starts-a-catalog-reindex-operation)): ``` POST https://vantage-us.abbyy.com/api/publicapi/v1/catalogs/{catalogId}/reindex ``` Without this reindex request, searches return data from the outdated version of the data catalog. Send a **GET** request with the operation ID returned from the reindex request, and poll until the operation completes ([reference](/api-reference/catalogs/gets-detailed-information-of-reindex-operation)): ``` GET https://vantage-us.abbyy.com/api/publicapi/v1/catalogs/{catalogId}/reindex/{reindexOperationId} ``` After indexing completes, the catalog is ready for use by Document skills. ## Delete records * Delete specific records (up to 5000 per request) by passing their identifiers in the request body ([reference](/api-reference/catalogrecords/deletes-the-specified-records-from-the-catalog)): ``` POST https://vantage-us.abbyy.com/api/publicapi/v1/catalogs/{catalogId}/records/delete ``` * Delete every record from a data catalog while keeping the catalog and its column structure ([reference](/api-reference/catalogs/deletes-all-records-from-the-catalog)): ``` POST https://vantage-us.abbyy.com/api/publicapi/v1/catalogs/{catalogId}/clear ``` Deletions cannot be undone. After deleting records, reindex the catalog so that skills stop matching against the removed data. ## API reference For request and response details of every catalog endpoint, see the **Catalogs** and **CatalogRecords** sections of the [Vantage API reference](/api-reference/catalogs/lists-all-available-catalogs). ## Related topics * [Using data catalogs](/vantage/documentation/skill-designer/document/using-data-catalogs/use) * [Create data catalogs](/vantage/documentation/skill-designer/document/using-data-catalogs/create) * [Update data catalogs](/vantage/documentation/skill-designer/document/using-data-catalogs/update) * [Create data catalog lookup rules](/vantage/documentation/skill-designer/document/rule-verification/setting-lookup-rules) # Assemble activity Source: https://docs.abbyy.com/vantage/documentation/skill-designer/process/assemble-activity Detect pages in multipage files and assemble them into documents. The **Assemble** activity detects pages in multipage files and groups them into documents. Vantage supports three input patterns: * One file per document (no assembly needed). * A single multipage file containing one or more documents (assembly needed). * Multiple single-page files (assembly needed). ## Assembly types Select the assembly type in the **Actions** pane after adding the activity: | Assembly type | Behavior | | :----------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------- | | **By files** (default) | Each source file becomes a single document. | | **One document** | All files are assembled into a single document. | | **By classification** | Pages are grouped into documents based on class assignments from a Classification skill. | | **By Document Splitter Skill** | Documents are split according to rules defined in a [Document Splitter skill](/vantage/documentation/advanced-designer/document-splitter/splitter). | ## Assemble by classification The **By classification** assembly type uses classes assigned to pages by a Classification skill. Vantage assigns each page a class and merges consecutive pages of the same class into a single document. Click **Settings** under the assembly type name. Pick an appropriate Classification skill. Assemble activity Settings dialog with a Classification skill selected Map classes to document types, and mark any classes that should be treated as first pages. Class-to-document-type mapping dialog in the Assemble activity If some classes aren't mapped to document types, the Assemble activity groups pages of those classes into a separate document per class. Click **Save** to apply the settings. ### Assembly rules * Consecutive pages of the same class are grouped into one document. * A page of a different class than the previous one starts a new document. * Unclassified pages are added to the document currently being assembled, and they don't break a chain of same-class pages. * Pages classified as **first pages** always start a new document, even when the new and previous documents are the same class. ## Assemble by Document Splitter skill [Document Splitter skills](/vantage/documentation/advanced-designer/document-splitter/splitter) split files containing multiple documents into separate documents, and can assign a type to each one to determine how it's processed. Document Splitter skills are created and edited only in Advanced Designer, not Skill Designer. After a skill is published, you can reference it from the Assemble activity's **By Document Splitter Skill** option. Click **Select Skill** under the assembly type name and pick the Document Splitter skill you need. Click a skill to preview it. The preview window shows the skill's classes. If no Document Splitter skill is configured, you're prompted to select one from the **Skill Catalog**. After you select a skill, the Assemble activity is configured and the selected skill appears in the **Actions** pane. Configure data extraction in the [Extract activity](/vantage/documentation/skill-designer/process/extract-activity). This lets the skill extract documents of several types in one pass, based on the class assigned to each document. If your workflow includes a [Manual Review](/vantage/documentation/skill-designer/process/manual-review) activity, verify the assembled workflow in the Manual Review client. ## Related topics * [Set up a Process skill](/vantage/documentation/skill-designer/process/set-up) * [Classify activity](/vantage/documentation/skill-designer/process/classify-activity) * [Extract activity](/vantage/documentation/skill-designer/process/extract-activity) * [Manual Review activity](/vantage/documentation/skill-designer/process/manual-review) * [Document Splitter skills in Advanced Designer](/vantage/documentation/advanced-designer/document-splitter/splitter) # Classify activity Source: https://docs.abbyy.com/vantage/documentation/skill-designer/process/classify-activity Determine the type of document received by ABBYY Vantage for processing. Use the **Classify** activity to determine the type of a document, using a [Classification skill](/vantage/documentation/skill-designer/classification/classification-skill) from the **Skill Catalog**. ## Select a Classification skill Use the **Actions** pane to specify which Classification skill from the **Skill Catalog** to use. Only published skills appear in the list of available Classification skills. After you pick a Classification skill, the **Actions** pane lists its classes. By default all classes are selected. Deselect any you don't want to process. Each selected class must be connected to a Document skill. Deselecting classes is useful when your Classification skill covers more document types than you want to process, and retraining the skill isn't practical. Documents of excluded classes are not processed. ## Create a new Classification skill Click **Create New Skill** at the bottom of the **Actions** pane. 1. Enter a name for the skill. 2. Fill out the list of required skills. Click **Done**. The new skill is automatically selected as this activity's Classification skill and added to the **Skill Catalog**. After creating the skill, train and publish it. For more information, see [Publish a skill](/vantage/documentation/skill-catalog/publish-skill) and [Set up a Classification skill](/vantage/documentation/skill-designer/classification/classification-skill-setup). ## Enable Online learning If the Process skill includes a verification step, you can enable Online learning for your Classification skill from the **Actions** pane. Online learning uses manual review results to continuously improve the skill's precision. For more information, see [Online learning](/vantage/documentation/runtime/online-learning/online-learning). ## Related topics * [Set up a Process skill](/vantage/documentation/skill-designer/process/set-up) * [Classification skill](/vantage/documentation/skill-designer/classification/classification-skill) * [Set up a Classification skill](/vantage/documentation/skill-designer/classification/classification-skill-setup) * [Extract activity](/vantage/documentation/skill-designer/process/extract-activity) * [Publish a skill](/vantage/documentation/skill-catalog/publish-skill) # Context Source: https://docs.abbyy.com/vantage/documentation/skill-designer/process/custom-activity/context The Context global object provides properties and methods for accessing transaction data, sending HTTP requests, and retrieving secrets. `Context` is a global object that exposes transaction data to your Custom activity script, lets you send HTTP requests, log custom messages, and retrieve tenant secrets. ## Properties | Name | Type | Access | Description | | :--------------- | :--------------------------------------------------------------------------------------- | :--------- | :------------------------------------------------------------------------------------------- | | **Transaction** | [Transaction](/vantage/documentation/skill-designer/process/custom-activity/transaction) | Read-only | The `Transaction` object, providing access to the current transaction and all its documents. | | **ErrorMessage** | string | Read-write | Custom error message. The text appears in the Transaction Event Log in Skill Monitor. | Assigning a value to `ErrorMessage` interrupts the transaction. ### Deprecated properties The `InputData` and `OutputData` properties are deprecated. Use [`Transaction.Documents`](/vantage/documentation/skill-designer/process/custom-activity/transaction#documents) instead. | Name | Type | Access | Description | | :------------- | :----------------------------------------------------------------------------------------------------------- | :-------- | :--------------------------------------------------------- | | **InputData** | [Transaction.Documents](/vantage/documentation/skill-designer/process/custom-activity/transaction#documents) | Read-only | Document data during skill execution. | | **OutputData** | [Transaction.Documents](/vantage/documentation/skill-designer/process/custom-activity/transaction#documents) | Read-only | Modified document data. Not available for External Export. | ## Methods ### CreateMultipartFormDataRequest ```javascript theme={null} MultipartFormDataRequest CreateMultipartFormDataRequest(); ``` Returns a [`MultipartFormDataRequest`](/vantage/documentation/skill-designer/process/custom-activity/multi-part-form-data-request) object for sending data as a form containing strings and files (`multipart/form-data`). ### CreateHttpRequest ```javascript theme={null} HttpRequest CreateHttpRequest(); ``` Returns an [`HttpRequest`](/vantage/documentation/skill-designer/process/custom-activity/http-request) object for sending a string, file, source image, or a simple URL-form-encoded form. This form cannot contain files. ### LogMessage ```javascript theme={null} void LogMessage(string msg); ``` Writes a custom message to the Transaction Event Log. ### GetSecret ```javascript theme={null} string GetSecret(string secretName); ``` Returns the value of a tenant environment variable of type **secret**. Use this method to pass tokens to third-party services without hardcoding them in your script. To list secrets available in your tenant, start typing `Context.GetSecret(` in the script editor and press **Ctrl + Space** while your cursor is inside the parentheses. If the variable name contains reserved characters (`"` or `,`), escape them with a backslash in the method call. Only users with the **Tenant Administrator** role can create, edit, or delete environment variables. For more information, see [Manage environment variables](/vantage/documentation/tenant-admin/tenant-management/manage-environment-variables). ## Related topics * [Custom activity](/vantage/documentation/skill-designer/process/custom-activity/custom-activity) * [Object model](/vantage/documentation/skill-designer/process/custom-activity/object-model) * [Transaction](/vantage/documentation/skill-designer/process/custom-activity/transaction) * [Manage environment variables](/vantage/documentation/tenant-admin/tenant-management/manage-environment-variables) * [Sample scripts](/vantage/documentation/skill-designer/process/custom-activity/sample-scripts) # Custom activity Source: https://docs.abbyy.com/vantage/documentation/skill-designer/process/custom-activity/custom-activity The Custom activity lets you use third-party tools not available in Vantage and perform additional actions on documents received during skill processing. A **Custom** activity collects information about documents in a transaction and sends it to an external system via an HTTP request. The response is processed and saved back to the transaction data. You can pass one or all of the transaction's documents in a single request. To process each document separately, place the Custom activity inside a [For Each Document](/vantage/documentation/skill-designer/process/for-each) activity, which passes one document at a time. The Custom activity requires a [security level 2](https://www.openssl.org/docs/man1.1.1/man3/SSL_CTX_set_security_level.html#DEFAULT-CALLBACK-BEHAVIOUR) SSL certificate to verify a secure connection. If your server uses a lower security level, the Custom activity can't send requests to it. ## Set up a Custom activity In the Process skill designer, add a **Custom** activity block to the document processing workflow. In the **Actions** pane, click **Edit Activity**. On the **Available Files** tab, select the formats for text, document fields, and images to send to the external system. You must select at least one format for each type. On the **Activity Script** tab, configure your script and click **Save**. For a detailed description of objects you can use in scripts, see [Object model](/vantage/documentation/skill-designer/process/custom-activity/object-model). For examples, see [Sample scripts](/vantage/documentation/skill-designer/process/custom-activity/sample-scripts). ## Verify the Custom activity Click the **Publish** tab, enter a name, description, and description of changes, and then click **Publish Skill**. Process documents through the workflow that uses the Custom activity. Review the skill's results in Skill Monitor. If the script errored, the transaction is interrupted and the error appears in the **Transaction Event Log**. If you used [`LogMessage`](/vantage/documentation/skill-designer/process/custom-activity/context) to add custom log entries, they also appear in the Transaction Event Log. ## Deprecated interfaces The Custom activity has been updated. Obsolete scripts continue to work and have access to all documents in a transaction, but the deprecated interfaces in the following table only have access to the first document in a transaction. | Deprecated object | Replacement | | :---------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------- | | [InputData](/vantage/documentation/skill-designer/process/custom-activity/input-data) | [Transaction.Documents](/vantage/documentation/skill-designer/process/custom-activity/transaction) | | [OutputData](/vantage/documentation/skill-designer/process/custom-activity/output-data) | [Transaction.Documents](/vantage/documentation/skill-designer/process/custom-activity/transaction) | | [ExtractedData](/vantage/documentation/skill-designer/process/custom-activity/extracted-data) | [Document](/vantage/documentation/skill-designer/process/custom-activity/document) | | [ExtractedField](/vantage/documentation/skill-designer/process/custom-activity/extracted-field) | [Field](/vantage/documentation/skill-designer/process/custom-activity/field) | | [FieldType](/vantage/documentation/skill-designer/process/custom-activity/field-type) | [FieldOcrType](/vantage/documentation/skill-designer/process/custom-activity/field-ocr-type) | ## Related topics * [Object model](/vantage/documentation/skill-designer/process/custom-activity/object-model) * [Sample scripts](/vantage/documentation/skill-designer/process/custom-activity/sample-scripts) * [For Each Document activity](/vantage/documentation/skill-designer/process/for-each) * [Set up a Process skill](/vantage/documentation/skill-designer/process/set-up) * [Skill Monitor transactions](/vantage/documentation/runtime/skill-monitor/transactions) # InputData (deprecated) Source: https://docs.abbyy.com/vantage/documentation/skill-designer/process/custom-activity/input-data Deprecated InputData interface providing access to the first document's data during Custom activity script execution. This interface is deprecated. It provides access only to the first document of the transaction. Provides access to data of the processed document while the processing skill is being run. ## Properties | Name | Type | Description | | :-------------- | :------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | ExtractedData | [Document](/vantage/documentation/skill-designer/process/custom-activity/document), read-only | Returns a [Document](/vantage/documentation/skill-designer/process/custom-activity/document) object and provides access to data extracted from the processed document. | | DocumentExports | [DocumentExportResult](/vantage/documentation/skill-designer/process/custom-activity/document-export-result)\[], read-only | Returns a collection of files exported by the skill and made available by the script. | ## Related topics * [Transaction](/vantage/documentation/skill-designer/process/custom-activity/transaction) * [Document](/vantage/documentation/skill-designer/process/custom-activity/document) * [DocumentExportResult](/vantage/documentation/skill-designer/process/custom-activity/document-export-result) * [Object model](/vantage/documentation/skill-designer/process/custom-activity/object-model) # Object model Source: https://docs.abbyy.com/vantage/documentation/skill-designer/process/custom-activity/object-model Script restrictions and object model for Custom activity scripting in ABBYY Vantage. Custom activity scripts run in Vantage's JavaScript environment. The following sections cover the script restrictions and the available objects and enumerators. ## Script restrictions Vantage's JavaScript interpreter supports ECMAScript 5.1 and selected later features. For more information, see the [Jint ECMAScript features](https://github.com/sebastienros/jint#supported-features). Scripts can define custom functions, access Vantage data catalogs through the `Context` interface, and send requests to external services through the `Context` interface. Scripts cannot: * Send requests to databases other than Vantage data catalogs. * Use third-party libraries such as jQuery. Custom scripts are subject to memory, runtime, command-count, and recursion-depth limits to prevent runaway scripts. If a script exceeds any limit, processing is interrupted with an error. Defaults are set by your server administrator. The current defaults are: | Restriction | Default limit | | :---------------------- | :------------------------------------------------------------ | | Memory | 500 MB | | Script runtime | 600 seconds × total number of document pages in a transaction | | Expressions | 1,000,000 × total number of document pages in a transaction | | Maximum recursion depth | 100 | | Maximum array size | 50,000 | | Maximum HTTP requests | 200 × total number of document pages in a transaction | ## Error handling * If a syntax error is detected in the script, the Custom activity transaction is interrupted. The error is visible in **Skill Monitor**. * If an exception is thrown while the script runs, both the script and the transaction are interrupted. The error is visible in **Skill Monitor**. * If a program exception is caught with `try`/`catch`, error handling is whatever your script does. Errors caused by exceeding script restrictions are not intercepted. In these cases, both the script and the transaction are interrupted. ## Object reference ### Execution context * [Context](/vantage/documentation/skill-designer/process/custom-activity/context) * [Transaction](/vantage/documentation/skill-designer/process/custom-activity/transaction) * [Parameter](/vantage/documentation/skill-designer/process/custom-activity/parameter) ### Documents and fields * [Document](/vantage/documentation/skill-designer/process/custom-activity/document) * [Field](/vantage/documentation/skill-designer/process/custom-activity/field) * [Page](/vantage/documentation/skill-designer/process/custom-activity/page) * [Region](/vantage/documentation/skill-designer/process/custom-activity/region) * [Rectangle](/vantage/documentation/skill-designer/process/custom-activity/rectangle) * [BinaryFile](/vantage/documentation/skill-designer/process/custom-activity/binary-file) * [DocumentExportResult](/vantage/documentation/skill-designer/process/custom-activity/document-export-result) ### Classification and validation * [ClassConfidenceModel](/vantage/documentation/skill-designer/process/custom-activity/class-confidence-model) * [RuleError](/vantage/documentation/skill-designer/process/custom-activity/rule-error) ### HTTP * [HttpRequest](/vantage/documentation/skill-designer/process/custom-activity/http-request) * [MultipartFormDataRequest](/vantage/documentation/skill-designer/process/custom-activity/multi-part-form-data-request) ### Enumerators * [DataType](/vantage/documentation/skill-designer/process/custom-activity/data-type) * [FieldOcrType](/vantage/documentation/skill-designer/process/custom-activity/field-ocr-type) * [ExportFormat](/vantage/documentation/skill-designer/process/custom-activity/export-format) * [ContentEncoding](/vantage/documentation/skill-designer/process/custom-activity/content-encoding) ### Deprecated interfaces and enumerators | Deprecated | Replacement | | :---------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------- | | [InputData](/vantage/documentation/skill-designer/process/custom-activity/input-data) | [Transaction.Documents](/vantage/documentation/skill-designer/process/custom-activity/transaction) | | [OutputData](/vantage/documentation/skill-designer/process/custom-activity/output-data) | [Transaction.Documents](/vantage/documentation/skill-designer/process/custom-activity/transaction) | | [ExtractedData](/vantage/documentation/skill-designer/process/custom-activity/extracted-data) | [Document](/vantage/documentation/skill-designer/process/custom-activity/document) | | [ExtractedField](/vantage/documentation/skill-designer/process/custom-activity/extracted-field) | [Field](/vantage/documentation/skill-designer/process/custom-activity/field) | | [FieldType](/vantage/documentation/skill-designer/process/custom-activity/field-type) | [FieldOcrType](/vantage/documentation/skill-designer/process/custom-activity/field-ocr-type) | ## Related topics * [Custom activity](/vantage/documentation/skill-designer/process/custom-activity/custom-activity) * [Sample scripts](/vantage/documentation/skill-designer/process/custom-activity/sample-scripts) * [Context](/vantage/documentation/skill-designer/process/custom-activity/context) # Extract activity Source: https://docs.abbyy.com/vantage/documentation/skill-designer/process/extract-activity Extract data from documents using Document skills, and map each class from a preceding Classify activity to the appropriate Document skill. Use the **Extract** activity to extract data from documents using a Document skill. To extract from multiple document types in one workflow, place a [Classify activity](/vantage/documentation/skill-designer/process/classify-activity) before the Extract activity and map each class to a Document skill in the **Actions** pane. ## Set up Document skills In the **Actions** pane, click **Add Skill** and select the skills you need from the **Skill Catalog**. Only published skills appear in the list. If you can't find a suitable skill in the **Skill Catalog**: 1. Click **Create New Skill** at the bottom of the **Actions** pane. 2. In the form that appears, enter a name, a short description, and a list of required skills. 3. Click **Done**. 4. Train the new skill and publish it to the **Skill Catalog**. To view demo documents for a skill, click the icon to the left of the skill's name. If the skill has no demo documents, an error message appears. This does not affect your setup. ## Map Document skills to classes Map each Document skill to the matching class from the preceding Classification skill. Use one of two methods: * **Per-skill mapping** – In the **Actions** pane, click the properties icon next to the Document skill name. In the dialog, select the class that corresponds to the document type the skill processes, and then click **Save**. * **Bulk mapping** – Click **Edit Mapping** at the bottom of the **Actions** pane. In the dialog, connect each class to a skill from your list, and then click **Save**. ## Enable Online learning If the Process skill includes a verification stage, enable **Online learning** for Document skills from the Preview window. Online learning uses verification results to continuously improve each skill's precision. For more information, see [Online learning](/vantage/documentation/runtime/online-learning/online-learning). ## Skill parameters The Extract activity inherits skill parameters from the Document skill it uses. View or modify these values by clicking the skill-settings icon next to the Document skill name. For more information, see [Skill parameters](/vantage/documentation/skill-designer/skill-parameters/skill-parameters). ## Related topics * [Classify activity](/vantage/documentation/skill-designer/process/classify-activity) * [Document skill](/vantage/documentation/skill-designer/document/document-skill) * [Set up a Process skill](/vantage/documentation/skill-designer/process/set-up) * [Skill parameters](/vantage/documentation/skill-designer/skill-parameters/skill-parameters) * [Online Learning](/vantage/documentation/runtime/online-learning/online-learning) * [Publish a skill](/vantage/documentation/skill-catalog/publish-skill) # Import documents from an email service Source: https://docs.abbyy.com/vantage/documentation/skill-designer/process/input-activity/import-email-service Import email attachments (and optionally the email body) from a Microsoft account or other IMAP mailbox into Vantage. You can import email attachments from your mailbox into ABBYY Vantage, and optionally include the email body. The Input activity accesses a single email folder per skill. After the skill is published, Vantage checks the specified email folder once per minute. Each new email is processed as follows: * If the email contains attachments, a new transaction is created for all attachments in the email. * If email-body import is enabled, the email body is converted to HTML and appended to the same transaction. Vantage also processes first-level embedded emails and their attachments. Vantage imports at most 50 emails per check. If there are more than 50 new emails, Vantage imports the 50 oldest and picks up the rest on subsequent checks. If throughput becomes a bottleneck, split the work across two skills (each with its own mail folder) so two agents pick up emails in parallel. ## Transaction registration parameters The following data is saved to the transaction registration parameters: | Parameter name | Description | | :----------------------- | :-------------------------------------------------------------------------------------------------- | | **EmailSubject** | The email subject. | | **EmailDate** | Date and time when the email was sent, including time zone. Format: `MM/DD/YYYY HH:MM:SS +/-HH:MM`. | | **EmailSender**\* | The sender's email address. | | **EmailAddressee**\* | The addressees' email addresses, separated by commas with no spaces. | | **EmailCopyAddressee**\* | The copy addressees' email addresses, separated by commas with no spaces. | *\* Only email addresses are stored. The sender's and addressees' names are not saved.* Vantage doesn't create parameters with empty values. For example, if an email has no subject, the transaction won't have an `EmailSubject` registration parameter. The source type (`MailImport`) and source file name are saved to the **SourceType** and **SourceFileName** document registration parameters. You can access document and transaction registration parameters by adding the corresponding columns in the **Transactions** section of **Skill Monitor**. They're also exported to the output JSON file (configurable in the **Exported Data** section of the Output activity), and the transaction registration parameters are available via the Vantage API. The following characters are not allowed in file names and are replaced with underscores upon upload: `/ : ? # [ ] @ ! $ & ' ( ) * + , ; = \`. The original file names are saved to the document registration parameters. Retrieve them using a [Custom activity sample script](/vantage/documentation/skill-designer/process/custom-activity/sample-scripts). ## Import results If an attachment's format is unsupported, the transaction fails and processing stops for all other documents in it. See the specific error in the **Error log** section of Skill Monitor. If an email has no attachments and body import is disabled, no transaction is created, but the email is still marked as processed. Processed emails are either permanently deleted or moved to a folder you specify when configuring the mailbox connection. Emails that can't be imported are moved to a user-specified exceptions folder. If an email imports successfully but the transaction fails, the email is placed in the `Processed` folder. If Vantage can't access the import folder, it generates an error you can view in the **Error log** section of Skill Monitor. ## Set up email import Click the **Input** activity block in your document processing flow. If one isn't in the Skill Designer yet, add it from the **Activities** pane. In the **Actions** pane, check **Select additional source** and choose **Email**. Input activity Actions pane with the Email option selected Click **Settings**. In the dialog, select an account type (Microsoft or other) and click **Continue**. Log in using one of the following methods. See [Connect to a Microsoft account](#connect-to-a-microsoft-account) or [Connect to other email accounts](#connect-to-other-email-accounts). Specify the folder from which Vantage imports emails, plus a folder for emails that can't be processed. After you publish the skill, Vantage creates a `VantageProcessing` folder inside the specified import folder. Emails move to this service folder first, and then are processed per your configuration. Don't select the same import folder used by another Process skill in your tenant. If multiple skills share an import folder, you can't control which skill processes a given email. Processed emails can be permanently deleted (default) or moved to a folder. If you select **Delete**, specify a folder to store deleted emails. Action-for-imported-emails section of the Input Settings: Email dialog Enable email-body import if needed. Click **Save** to save the settings and close the dialog. The email address connected to the activity appears in the **Actions** pane when the Input block is selected. Click **Settings** under the email address to view or change the current mail import settings, or to log out of the email account. Changes to settings take effect only after the skill is published. Logging out of the email account resets all settings. ### Connect to a Microsoft account In the Microsoft account login dialog, select your current account (if already signed in) or use a different one. After authentication succeeds, the login dialog closes. On first login with a Microsoft account, Vantage asks for permission to: * Sign in to the app using a work or school account. * Access the primary email address and basic user profile data. * Access and update user details, even when the user isn't using the app. * Access, update, create, and delete (but not send) emails in the user's mailboxes. If you use an Exchange hybrid configuration, move the mailbox from on-premises to Exchange Online. See [Microsoft's mailbox migration guide](https://learn.microsoft.com/en-us/exchange/hybrid-deployment/move-mailboxes). ### Connect to other email accounts Specify your email address and password, the IMAP server address, and the IMAP port (default 993, usually no change needed). Click **Sign in**. If Vantage can't connect to the server, the account login dialog stays open and an error icon appears next to the input fields. Input Settings: Email dialog showing connection error icons If all details are correct, the connection error is likely caused by one of these: * **The email server blocked a suspicious login attempt.** \ Check your email. If you received a notice about a blocked login attempt, confirm that the attempt was yours. * **For Google accounts without two-factor authentication: restricted access to less secure apps.** \ Allow access for less secure applications and confirm the Vantage access attempt if prompted. * **The server requires an application-specific password.** \ Some services (Yahoo, Google with 2FA) require app-specific passwords for third-party applications. Generate one per the service's instructions and use it in the Input activity settings. After authentication succeeds, the connected email address appears in the **Input Settings: Email** dialog. ## Disable imports Administrators can disable document import from [Skill Monitor](/vantage/documentation/runtime/skill-monitor/skill-monitor). Disabling email import does not affect document import via the API. ## Cleanup on skill deletion When a skill is deleted, Vantage stops checking the specified email folder. ## Related topics * [Input activity](/vantage/documentation/skill-designer/process/input-activity/input-activity) * [Import documents from a shared folder](/vantage/documentation/skill-designer/process/input-activity/import-shared-folder) * [Skill Monitor](/vantage/documentation/runtime/skill-monitor/skill-monitor) * [Supported File Formats](/vantage/documentation/tenant-admin/technical-specs/formats) # Import documents from a shared folder Source: https://docs.abbyy.com/vantage/documentation/skill-designer/process/input-activity/import-shared-folder Upload documents from an SFTP-accessible shared folder on the Vantage server, optionally grouping them into a transaction or importing ZIP/TAR.GZ archives. ABBYY Vantage lets you upload documents from shared folders hosted on the Vantage server. Access is provided via SFTP. The access details for the folder (links to the import and exceptions folders, plus login and password) are shown in the **Input Settings: Shared Folder** dialog. To upload files into the input shared folder, use **binary transfer mode** in the SFTP client. ## User access permissions ### Import folder * View the list of files and directories * Upload files to the folder * Rename files and directories * Overwrite existing files when uploading * Delete files ### Exceptions folder * View the list of files and directories * Download files from the folder * Rename files and directories * Delete files ## Document processing After the skill is published, Vantage checks the shared folder for new files every 20 seconds. The import agent picks up at most 30 files at a time. If SFTP upload becomes a bottleneck, split the work across two skills (each with its own SFTP folder) so two agents pick up files in parallel. ### Document registration parameters The source type (`FolderImport`) and source file name are saved to the **SourceType** and **SourceFileName** document registration parameters. You can access these values by adding the corresponding columns in the **Transactions** section of **Skill Monitor**. They are also exported to the output JSON file (configured in the **Exported Data** section of the Output activity). The following characters are not allowed in file names and are replaced with underscores upon upload: `/ : ? # [ ] @ ! $ & ' ( ) * + , ; = \`. The original file names are saved to the document registration parameters. Retrieve them using a [Custom activity sample script](/vantage/documentation/skill-designer/process/custom-activity/sample-scripts). ### Import results If a file is imported successfully, a transaction is created for it and the file is deleted from the import folder. If a file fails to import, it is moved to the exceptions folder named `-exception`. The exceptions folder path is shown in the **Input Settings: Shared Folder** dialog. Files in the exceptions folder are retained for 2 weeks by default (controlled by the retention policy). If a file is no longer in the import folder but no processing results exist, the transaction may have completed with an error. For more information, see [Skill Monitor transactions](/vantage/documentation/runtime/skill-monitor/transactions). ## Import archives Vantage can import archives from the top-level directory of the shared folder. Supported types: * ZIP files created in Windows * TAR GZ files created with `tar czvf` in Linux Archives can only be imported when the **Single file** import method is selected. Each archive is limited to 3 GB, and each file inside an archive to 100 MB. A new transaction is created for each archive. All files in the archive become documents in that transaction. The archive name is saved to the **SourceArchiveName** document registration parameter. If the archive type is not supported, or if it contains unsupported file types or nested archives, the transaction fails. If file size limits are exceeded, or if the archive contains subfolders, the archive is moved to the exceptions folder and no transaction is created. The corresponding error appears in the **Error log**. ## Import several files into a single transaction By default, Vantage creates a separate transaction per file. To group files, set the **Import method** to **From subfolder**. In this mode, Vantage scans the shared folder for subfolders whose names match the configured naming scheme. When a matching subfolder is found, all its files (including files in nested folders) are imported as documents of a single transaction. The subfolder name is saved to each document's **SourceFolderName** registration parameter. If a file is imported from a nested folder, **SourceFolderName** contains the name of the root subfolder. If a subfolder can't be imported, it is moved to the exceptions folder. Vantage won't create a transaction for it and logs an error in the **Error log** of Skill Monitor. If a subfolder contains files in an unsupported format, the transaction for that subfolder fails. Importing archives from subfolders is not supported. An empty subfolder whose name matches the scheme is deleted from the shared folder. No transaction is created, and Vantage logs a warning in the **Error log**. ### Subfolder naming scheme A subfolder is imported only if its name matches the **Subfolder naming scheme**. The default value `*` matches any string. Configure the mask using `*` as a placeholder for any number of characters. The `?` character is not supported as a placeholder for a single character. The mask is case-insensitive. For example, `subfolder` and `SUBFOLDER` both match `subfolder`. The maximum mask length is 64 characters. To avoid file access conflicts, first copy files into the subfolder and then rename the subfolder to match the scheme. ## Set up shared-folder import Click the **Input** activity block in your document processing flow. If one isn't in the Skill Designer yet, add it from the **Activities** pane. In the **Actions** pane, check **Select additional source** and choose **Shared folder**. Input activity Actions pane with the Shared folder option selected Click **Settings** to open a dialog with access details for the shared folder. The suggested import folder name can be modified here. Input Settings: Shared Folder dialog showing access credentials To group files into transactions, set the **Import method** to **From subfolder** and adjust the **Subfolder naming scheme** as needed. Set up file upload via an SFTP client using the login details in the **Input Settings: Shared Folder** dialog. Click the copy icon in each field to copy values to the clipboard. The folder link contains all connection data. Pasting it into the SFTP client auto-fills the other parameters. Click **Save** to keep your changes, or **Cancel** to discard them. Changes to these settings take effect only after the skill is published. ### Folder naming requirements A folder name must: * Be unique across the skill (can't match the name of a shared folder in the Output activity). * Begin with a number or a letter. * Not contain special characters `: * ? " < > / | \` or control characters (for example, newline, tab). * Not end with a dot. * Not be empty. * Not exceed 64 characters. ## Disable imports Administrators can disable document import from [Skill Monitor](/vantage/documentation/runtime/skill-monitor/skill-monitor). Disabling shared-folder import does not affect document import via the API. ## Cleanup on skill deletion When a skill is deleted, the shared import folder is deleted from the server. ## Related topics * [Input activity](/vantage/documentation/skill-designer/process/input-activity/input-activity) * [Import documents from an email service](/vantage/documentation/skill-designer/process/input-activity/import-email-service) * [Skill Monitor](/vantage/documentation/runtime/skill-monitor/skill-monitor) * [Skill Monitor transactions](/vantage/documentation/runtime/skill-monitor/transactions) * [Supported File Formats](/vantage/documentation/tenant-admin/technical-specs/formats) # Input activity Source: https://docs.abbyy.com/vantage/documentation/skill-designer/process/input-activity/input-activity Import documents to Vantage from email services, shared folders, and third-party applications via the Vantage API. The **Input** activity imports documents into Vantage from email services, shared folders, or any third-party application via the Vantage API. Every Process skill must include an **Input** activity. Vantage creates transactions for files of any format, but a transaction containing any unsupported files completes with errors. For a transaction to succeed, every file in it must be a supported format. By default, the **Input** activity imports documents only via the Vantage API. To enable additional sources, see: * [Import from a shared folder](/vantage/documentation/skill-designer/process/input-activity/import-shared-folder) * [Import from an email service](/vantage/documentation/skill-designer/process/input-activity/import-email-service) Additional sources can be disabled per skill in [Skill Monitor](/vantage/documentation/runtime/skill-monitor/skill-monitor). ## Related topics * [Import documents from a shared folder](/vantage/documentation/skill-designer/process/input-activity/import-shared-folder) * [Import documents from an email service](/vantage/documentation/skill-designer/process/input-activity/import-email-service) * [Set up a Process skill](/vantage/documentation/skill-designer/process/set-up) * [Supported File Formats](/vantage/documentation/tenant-admin/technical-specs/formats) * [Skill Monitor](/vantage/documentation/runtime/skill-monitor/skill-monitor) # Manual Review activity Source: https://docs.abbyy.com/vantage/documentation/skill-designer/process/manual-review Send documents for verification in your processing workflow. The **Manual Review** activity lets operators verify documents in your processing workflow. ## Verification modes Choose a verification mode in the **Actions** pane: * **All** – All documents must be verified. * **With rule errors, uncertain fields, or unknown type** – Only verify documents that have rule errors, fields with low-confidence characters, or unknown document types. * **None** – No documents are sent to review. ## Manual Review client Operators verify data extraction and document classification results in the Manual Review client. For more information, see [Manual Review client](/vantage/documentation/runtime/manual-review/manual-review). ## Scenarios The **Manual Review** activity supports three common scenarios: * [Review data extraction results](#review-data-extraction-results) * [Review document classification and data extraction results](#review-document-classification-and-data-extraction-results) * [Review document classification results](#review-document-classification-results) ### Review data extraction results Use this scenario when you have a single document type and want operators to verify the accuracy of extracted data. No classification is required. Process skill workflow with Extract and Manual Review activities For more information, see the [Extract activity](/vantage/documentation/skill-designer/process/extract-activity). ### Review document classification and data extraction results Use this scenario when you have multiple document types that need both classification and accurate data extraction. Operators verify both the class assigned by the **Classify** activity and the data extracted by the **Extract** activity. Process skill workflow with Classify, Extract, and Manual Review activities For more information, see the [Classify activity](/vantage/documentation/skill-designer/process/classify-activity) and the [Extract activity](/vantage/documentation/skill-designer/process/extract-activity). ### Review document classification results Use this scenario when you have multiple document types that need to be classified (for example, to route documents to specific company departments) but don't need data extraction. Operators verify only the classification results. Each **Manual Review** activity must be preceded by an **Extract** activity, even if no data extraction is required. Otherwise, the Process skill can't be published. Process skill workflow with Classify, Extract (placeholder), and Manual Review activities #### Set up a placeholder Extract activity In the **Extract** activity, create as many empty Document skills as you have document classes. Extract activity with empty Document skills for each class Map each Document skill to its corresponding class from the **Classify** activity. For more information, see the [Extract activity](/vantage/documentation/skill-designer/process/extract-activity). ## Related topics * [Set up a Process skill](/vantage/documentation/skill-designer/process/set-up) * [Classify activity](/vantage/documentation/skill-designer/process/classify-activity) * [Extract activity](/vantage/documentation/skill-designer/process/extract-activity) * [Manual Review Client](/vantage/documentation/runtime/manual-review/manual-review) * [Online Learning](/vantage/documentation/runtime/online-learning/online-learning) # OCR activity Source: https://docs.abbyy.com/vantage/documentation/skill-designer/process/ocr-activity Specify general pre-recognition options and carry out full-text recognition. Use the **OCR** activity to specify general pre-recognition options and carry out full-text recognition. Other activities and skills can reuse its recognition results for faster processing. ## How recognition results are reused Subsequent activities or skills reuse the recognition results from the OCR activity when all of the following conditions are met: * The set of languages in a subsequent activity or skill is the same as the set of languages in the OCR activity or includes the languages of the OCR activity. * The text type settings (for example, **Printed** or **Handwritten** recognition options) in a subsequent activity or skill are the same as the text type settings in the OCR activity. * The set of barcode types in a subsequent activity or skill is the same as the set of barcode types in the OCR activity or includes the barcode types of the OCR activity. If no barcode types are enabled in subsequent activities, the barcode type settings in the OCR activity will be ignored. If any of these conditions are not met, Vantage recognizes the document text. The **PDF Processing Mode** set in the OCR activity also applies when subsequent activities reuse the recognition results, keeping processing consistent across the workflow. ## Set up the OCR activity Add an **OCR** activity block to your workflow and select it by left-clicking. In the **Actions** pane, enter a name for your activity (if required). In the **Actions** pane, click **OCR Settings**. The OCR Settings dialog box opens. On the **General** tab, under **Image Processing**, select a **PDF Processing Mode** to control how Vantage processes PDF documents in this activity: * **Default** (Recommended) – Uses the embedded PDF text layer when available and supplements with OCR as needed. * **Use Text Layer Only** – Extracts text from the embedded PDF text layer, and falls back to OCR if no text layer exists. * **Use OCR Only** – Ignores any embedded text layer and performs full OCR. On the **Languages** tab: * In the **Allowed Languages** section, select one or several document recognition languages. During processing, the document language will be automatically chosen from the languages specified during setup. Note that the number of selected languages may affect recognition speed and quality. * If the document contains handwritten text, enable the **Handwritten** option in the **Text Appearance** section. See the [supported languages for handwritten text recognition](/vantage/documentation/tenant-admin/technical-specs/languages#handwritten-text). On the **Barcodes** tab, enable the barcode types that may appear on your documents. The number of selected barcode types can affect recognition speed. If you don't need to recognize any barcodes, click the button with the number of selected options in the header of the **Barcode Types** table and click **Deselect all**. The number of selected languages and barcode types may affect recognition speed. Try to select only those languages and barcode types that are required to process your documents. Click **Save**. ## Related topics * [OCR skill](/vantage/documentation/skill-designer/ocr-skill/ocr-skill) * [Set up a Process skill](/vantage/documentation/skill-designer/process/set-up) * [Supported Recognition Languages](/vantage/documentation/tenant-admin/technical-specs/languages) * [Supported Barcode Types](/vantage/documentation/tenant-admin/technical-specs/barcodes) * [Extract activity](/vantage/documentation/skill-designer/process/extract-activity) * [Classify activity](/vantage/documentation/skill-designer/process/classify-activity) # Export results to an external system Source: https://docs.abbyy.com/vantage/documentation/skill-designer/process/output-activity/export-external-system Export transaction results to a third-party system via a custom script in the Output activity. Exporting to an external system requires a custom script. Vantage executes the script specified in the activity's settings. The script can read the transaction's data (including extracted field values and the documents available for export) and send an HTTP request to the external system's API. The script in an Output activity cannot modify document data (for example, fill in fields). To modify data, use a [Custom activity](/vantage/documentation/skill-designer/process/custom-activity/custom-activity) instead. ## Add a custom script Select the **Output** activity, and then check **Select additional destination** in the **Actions** pane. Select **External system** and click **Settings** to open the script editor. Configure your script and click **Save**. For a detailed description of objects you can use in the script, see [Object model](/vantage/documentation/skill-designer/process/custom-activity/object-model). ## Related topics * [Output activity](/vantage/documentation/skill-designer/process/output-activity/output-activity) * [Custom activity](/vantage/documentation/skill-designer/process/custom-activity/custom-activity) * [Object model](/vantage/documentation/skill-designer/process/custom-activity/object-model) * [Export results to a shared folder](/vantage/documentation/skill-designer/process/output-activity/export-shared-folder) * [Data export formats](/vantage/documentation/skill-designer/process/output-activity/export-formats) # Data export formats Source: https://docs.abbyy.com/vantage/documentation/skill-designer/process/output-activity/export-formats Reference for export formats and options on the Output activity, covering field values, document text, document images, and error output. Vantage provides export options for document fields, text, and images. ## Export field values (Fields tab) | Format | Export Option | Description | File Name | | :------- | :---------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------- | :--------------------------------- | | **JSON** | **Values, metadata, and field structure for each document** | Full data extraction results. See [JSON Schema](/vantage/developer/output/json/json-schema) for the output structure. | `.json` | | **JSON** | **Values only** | Field values and rule errors. See [JSON Schema](/vantage/developer/output/json/json-schema) for the output structure. | `_fields.json` | | **CSV** | **Values only** | Field values. | `.csv` | ### CSV output for repeating objects If a document contains repeating objects (repeating fields, repeating groups of fields, tables), Vantage exports them as separate files. The naming scheme is: * Parent CSV file: `.csv` * Child CSV files for repeating objects: `_.csv` * If the child CSV filename would exceed 250 characters, the alternate scheme is used: `_.csv` If a repeating structure is nested within a group, its name appears as `New Group/New Table`. In the child filename, the slash is replaced with an underscore (for example, `New Group_New Table_055fe8c.csv`). ### CSV file format * The field names are written into the first row. * Columns are comma-separated. * Encoding is UTF-8 with BOM. * Empty instances of repeating fields or groups, and empty table rows, are not exported, so the resulting CSV has no empty rows. * Values of **image fields** are empty in the CSV file. ### CSV output in a shared folder When exporting to a shared folder, the parent CSV file is saved in the transaction folder. If the transaction contains multiple documents of the same type, Vantage generates a separate CSV file for each: * A numeric postfix starting from 2 is added to the CSV filename. * A subfolder is created in the transaction folder for child CSV files, named `_` or `_fields_` (if the JSON **Values only** export option is enabled), where N is the sequential document number in the transaction (starting from 2 when there's more than one document). * For repeating objects, the name of the child CSV file is specified in the parent CSV file's field value. ## Export document text (Text tab) | Format | Export Option | Description | File Name | | :---------- | :------------------------------ | :----------------------------------------------------------------------------------------------- | :------------------------------- | | **JSON** | **Text only** | A JSON file containing only recognized text; document layout is not preserved. | `_text.json` | | **JSON** | **Preserve document structure** | A JSON file containing recognized text with the document layout preserved. | `_text.json` | | **XML** | **Text only** | An XML file containing only recognized text; document layout is not preserved. | `.xml` | | **XML** | **Preserve document structure** | An XML file containing recognized text with the document layout preserved. | `.xml` | | **ALTOXML** | **Text only** | An ALTO XML file (schema 4.2) containing only recognized text; document layout is not preserved. | `.xml` | | **ALTOXML** | **Preserve document structure** | An ALTO XML file (schema 4.2) containing recognized text with the document layout preserved. | `.xml` | | **TXT** | | A plain text document. The original document structure is preserved using whitespace. | `.txt` | | **DOCX** | **Editable** | An editable Word document which may not look exactly like the original. | `.docx` | | **DOCX** | **Exact** | A non-editable Word document. The original document structure is fully preserved. | `.docx` | | **XLSX** | | An editable Excel document. The original document structure is preserved. | `.xlsx` | | **PPTX** | | An editable PowerPoint document. The original document structure is preserved. | `.pptx` | | **HTML** | | An HTML document that preserves the original document structure. | `.html` | Selecting **Text only** for JSON, XML, or ALTOXML makes export to DOCX, XLSX, and PPTX unavailable. The **Text only** and **Preserve document structure** options cannot differ across JSON, XML, and ALTOXML. Setting one updates the same option for the others. Exported text reflects any field-value changes made by the Manual Review operator during manual review. ### Text output in a shared folder When exporting to a shared folder, all files are saved in the transaction folder. Numeric postfixes starting from 2 are added to filenames when there's more than one document of the same type in the transaction. ## Export document images (Image tab) | Format | Export Option | Description | File Name | | :------- | :-------------------- | :------------------------------------------------------------------------------------ | :-------------------------- | | **PDF** | **PDF/A-3a** | A PDF file with a text layer over the document image. Reflects Manual Review changes. | `.pdf` | | **PDF** | **PDF/A-3b** | A PDF file with a text layer over the document image. Reflects Manual Review changes. | `.pdf` | | **PDF** | **Image-only** | A non-editable PDF in PDF/A-3b standard without a text layer. | `.pdf` | | **TIFF** | | An enhanced image in TIFF format. | `.tiff` | | **JPEG** | **Maximum quality** | An enhanced JPEG image at 95% quality. | `pages/page_.jpg` | | **JPEG** | **Smaller file size** | An enhanced JPEG image at 75% quality, readable while reducing file size. | `pages/page_.jpg` | For each PDF export option, you can choose between **Smaller file size** (default) and **Maximum quality**. Smaller file size uses Mixed Raster Content (MRC) compression, which picks optimal compression separately for text, pictures, and background. ### Image output in a shared folder When exporting to a shared folder, a subfolder is created for each document in the transaction: * The subfolder name is `_`, or `_fields_` if the JSON **Values only** export option is enabled. N is the sequential number of the document in the transaction (starting from 2 when there's more than one document). * Within the subfolder, a `Pages` subfolder stores the JPG files, named `page_.jpg`, where N is the page number. * PDF and TIFF files are saved in the transaction folder. * Numeric postfixes starting from 2 are added to filenames when there's more than one document of the same type. ## General naming scheme Most exported files contain `` in their names, which is one of: * The name of the last **Document** skill applied to the document. * The name of the last **Classification** skill applied, if no Document skill was applied. * `Unknown` if no Document or Classification skills were applied, even though at least one exists in the Process skill flow. If there are multiple output files and export to a shared folder is configured, incrementing numbers are appended to filenames to keep each name unique. ## Error output If a transaction does not complete successfully, Vantage generates an `Error.json` file containing: * Transaction identifier * Transaction status (`Failed`) * Error message * Array of all source file identifiers and names in the transaction Exported data is stored for 2 weeks by default, per the retention policy. ## Related topics * [Output activity](/vantage/documentation/skill-designer/process/output-activity/output-activity) * [Export results to a shared folder](/vantage/documentation/skill-designer/process/output-activity/export-shared-folder) * [Export results to an external system](/vantage/documentation/skill-designer/process/output-activity/export-external-system) * [JSON Schema](/vantage/developer/output/json/json-schema) * [XML Schema](/vantage/developer/output/xml/xml-schema) # Export results to a shared folder Source: https://docs.abbyy.com/vantage/documentation/skill-designer/process/output-activity/export-shared-folder Send processing results to an SFTP-accessible shared folder on the Vantage server. Place processing results into a shared folder accessible via SFTP. The access details for the folder (link, login, and password) are shown in the **Output Settings: Shared Folder** dialog. ## User access permissions * View the list of files and directories * Download files from the folder * Rename files and directories * Delete files ## Set up a shared folder Select the **Output** activity that you added to the document processing flow. In the **Actions** pane, check **Select additional destination** and choose **Shared folder**. Adjust the suggested shared folder name if needed. Set up file export from the created folder using any SFTP client with the login details from the **Output Settings: Shared Folder** dialog. ### Folder naming requirements A folder name must: * Be unique across the skill (can't match the name of a shared folder in the Input activity). * Begin with a number or a letter. * Not contain special characters `: * ? " < > / | \` or control characters (for example, newline or tab). * Not end with a dot. * Not be empty. * Not exceed 64 characters. ## Export folder structure During document processing, Vantage creates a subfolder inside the export folder for each transaction. The subfolder name combines the first source file name and the transaction ID, for example `111_invoiceUS.pdf-30225030-1FDA-4E58-B243-0EB2F16B0C72`. All processing results for the transaction are stored in that subfolder. By default, processing results are provided as a JSON file containing the document structure, extracted field values, rule errors, and additional information about the document fields and the document itself. For more information, see [JSON Schema](/vantage/developer/output/json/json-schema). ## Related topics * [Output activity](/vantage/documentation/skill-designer/process/output-activity/output-activity) * [Export results to an external system](/vantage/documentation/skill-designer/process/output-activity/export-external-system) * [Data export formats](/vantage/documentation/skill-designer/process/output-activity/export-formats) * [JSON Schema](/vantage/developer/output/json/json-schema) * [Set up a Process skill](/vantage/documentation/skill-designer/process/set-up) # Output activity Source: https://docs.abbyy.com/vantage/documentation/skill-designer/process/output-activity/output-activity Export recognized document text and extracted data to external systems in various formats, and optionally redact sensitive fields before export. The **Output** activity exports processing results (recognized document text and extracted data) to external systems in various formats. For more information, see [Data export formats](/vantage/documentation/skill-designer/process/output-activity/export-formats). To set up an **Output** activity, add it to your document processing workflow and choose the required data export formats by clicking **Settings** in the **Exported Data** section of the **Actions** pane. At least one export format must be enabled. You cannot place an **Output** activity inside a **For Each Document** activity. By default, processing results are available via the [Vantage API](/vantage/developer/api-introduction). To also save results elsewhere, use the **Select additional destination** option in the **Actions** pane: * **Shared folder** – Save results to an SFTP-accessible folder. For more information, see [Export results to a shared folder](/vantage/documentation/skill-designer/process/output-activity/export-shared-folder). * **External system** – Send results to a third-party system via a custom script. For more information, see [Export results to an external system](/vantage/documentation/skill-designer/process/output-activity/export-external-system). ## Redact fields before export You can select fields to redact before exporting processed images, so sensitive and confidential data is permanently removed. Redacted fields appear as blacked-out areas on exported images, letting you store or archive the images while protecting the underlying data. Output activity settings with redaction fields selected Redacted data cannot be recovered or copied from the text layer of a PDF. After a file is exported with redactions applied, the original values are gone from the exported copy. ## Related topics * [Data export formats](/vantage/documentation/skill-designer/process/output-activity/export-formats) * [Export results to a shared folder](/vantage/documentation/skill-designer/process/output-activity/export-shared-folder) * [Export results to an external system](/vantage/documentation/skill-designer/process/output-activity/export-external-system) * [Set up a Process skill](/vantage/documentation/skill-designer/process/set-up) * [API Introduction](/vantage/developer/api-introduction) # Process skill Source: https://docs.abbyy.com/vantage/documentation/skill-designer/process/process-skill Orchestrate document processing workflows by chaining activities and skills from the Skill Catalog. A **Process skill** orchestrates how documents move through your workflow, from input through recognition, extraction, review, and export. It combines other skills (OCR, Classification, Document, Document Splitter) and activities into a single pipeline. You can use skills from the **Skill Catalog** and additional activities to set up the flow of documents in your organization. Document Splitter skills are authored only in [Advanced Designer](/vantage/documentation/advanced-designer/document-splitter/splitter). Skill Designer can reference a published Document Splitter skill (for example, in an Assemble activity), but can't create or edit one. ## Use cases The following scenarios require a Process skill: * Processing documents of different types in a single workflow * Processing documents that require manual result verification * Unattended document processing with import and export connectors * Routing different document types through different workflows, including exception handling Vantage ships with preset Process-skill workflows that cover most of these scenarios. You can start from a preset and customize it, or build a workflow from scratch. For more information, see [Set up a Process skill](/vantage/documentation/skill-designer/process/set-up). ## Related topics * [Set up a Process skill](/vantage/documentation/skill-designer/process/set-up) * [OCR skill](/vantage/documentation/skill-designer/ocr-skill/ocr-skill) * [Document skill](/vantage/documentation/skill-designer/document/document-skill) * [Classification skill](/vantage/documentation/skill-designer/classification/classification-skill) * [Skill Catalog](/vantage/documentation/skill-catalog/skill-catalog) # Set up a Process skill Source: https://docs.abbyy.com/vantage/documentation/skill-designer/process/set-up Build a Process skill by selecting a preset workflow or creating a custom workflow from activities, and then configure each activity. A Process skill is a directed flow of document and classification activities, along with any additional activities that import and export documents, check rules, and send documents to manual review. All Document skills used in a Process skill must use the same Technology Core version. Activities connect to each other with directional arrows. Process skill workflow diagram ## Build and publish a skill Either set up a custom workflow manually, or select one of the preset workflows. Set the required parameters for each activity in the workflow. Publish the skill to make it usable. The **Try** option for launching a transaction is not available for Process skills. ## Preset workflows Preset workflows are available in the **Actions** pane of the Skill Designer. Vantage includes the following presets. ### Simple Document skill workflow For processing documents of a single type. Imports documents, extracts fields, and uploads results. ### Multiple Document skills after Classification For processing various document types in one workflow. Imports documents, classifies them, routes each type to the right Document skill, and uploads results. ### Multiple Document skills after Classification with manual review Same as above, plus a **Manual Review** step that verifies only documents that fail specific business rules defined by the workflow designer. ## Modify a workflow ### Add an activity Click the block after which you want to add the activity. In the menu that appears to the right, select an activity. Connect the new activity to the existing blocks using directional arrows. Process skill editor showing the activity menu to the right of a selected block ### Remove an activity Click the block to select it. In the menu that appears, click **Delete**. Connect the remaining blocks using directional arrows as needed. ## Create a custom workflow Select an activity in the **Activities** pane and drag it into the Skill Designer window. Click the block and select the required activity from the menu that appears. Click the block again to close the menu. After adding all processing steps, click each activity and configure it in the **Actions** pane on the right. ## Available activities You can use the following activities in a custom Process skill workflow: * [Input](/vantage/documentation/skill-designer/process/input-activity/input-activity) * [Output](/vantage/documentation/skill-designer/process/output-activity/output-activity) * [Classify](/vantage/documentation/skill-designer/process/classify-activity) * [Extract](/vantage/documentation/skill-designer/process/extract-activity) * [OCR](/vantage/documentation/skill-designer/process/ocr-activity) * [Assemble](/vantage/documentation/skill-designer/process/assemble-activity) * [Review](/vantage/documentation/skill-designer/process/manual-review) * [Custom](/vantage/documentation/skill-designer/process/custom-activity/custom-activity) * [Condition](/vantage/documentation/skill-designer/process/condition-activity/condition-activity) * [For Each Document](/vantage/documentation/skill-designer/process/for-each) Most activities can access all documents in a transaction at once. Skill-based activities (**Classify**, **Extract**, **OCR**) process each document separately. You can branch the workflow implicitly by mapping Document skills in an **Extract** activity to classes assigned by a **Classify** activity. Use **For Each Document** to apply **Custom** or **Condition** activities to one document at a time. ## Related topics * [Process skill](/vantage/documentation/skill-designer/process/process-skill) * [Input activity](/vantage/documentation/skill-designer/process/input-activity/input-activity) * [Output activity](/vantage/documentation/skill-designer/process/output-activity/output-activity) * [Classify activity](/vantage/documentation/skill-designer/process/classify-activity) * [Extract activity](/vantage/documentation/skill-designer/process/extract-activity) * [Skill Catalog](/vantage/documentation/skill-catalog/skill-catalog) # Skill Designer overview Source: https://docs.abbyy.com/vantage/documentation/skill-designer/skill-designer Use the ABBYY Vantage Skill Designer to create, train, and deploy Classification, Document, OCR, and Process skills for document processing. The **Skill Designer** is the cloud-based core of ABBYY Vantage for creating, training, and deploying document processing skills. Use it to build extraction rules, classify documents, and assemble multi-step processing workflows directly from your browser. Skill Designer is the right tool for most skills. For [Document Splitter skills](/vantage/documentation/advanced-designer/document-splitter/splitter), or for Document skills that need custom activities, scripting, or many varying layouts, use the desktop [Advanced Designer](/vantage/documentation/advanced-designer/introduction) instead. ## Types of skills The Skill Designer supports four types of skills: | Skill type | Description | | ------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | | [Classification skill](/vantage/documentation/skill-designer/classification/classification-skill) | Identifies which type of document you have and routes it to the correct handler. | | [Document skill](/vantage/documentation/skill-designer/document/document-skill) | Defines document type layouts and extraction rules for pulling structured data from documents. | | [OCR skill](/vantage/documentation/skill-designer/ocr-skill/ocr-skill) | Controls text recognition settings such as languages, PDF processing mode, and output format. | | [Process skill](/vantage/documentation/skill-designer/process/process-skill) | Combines Classification skills, Document skills, and business rules into multi-step processing workflows. | ## How it works The order below is typical for a Document skill. The exact steps vary by skill type — OCR and Process skills, for example, do not require labeling or model training. Gather representative documents of the types you want to process — structured, semi-structured, or unstructured. If you have multiple document types, build a Classification skill to automatically route each document to the right Document skill or extraction step. Define which pieces of data you want extracted by marking fields on your sample documents. Use ABBYY's training pipeline (fast learning or deep learning) to train the extraction model. Use human review to catch low-confidence extractions. Adjust labeling and business rules to improve accuracy. Publish the skill so it can be used within business workflows and called via APIs. Track performance metrics and feed new samples to retrain or adjust the skill over time. ## What's next Configure a Classification skill from scratch to route documents by type. Set up a Document skill and define extraction fields for structured data. Configure an OCR skill for languages, PDF mode, and output format. Chain Classification, Document, and OCR skills into a workflow. # Skill versions Source: https://docs.abbyy.com/vantage/documentation/skill-versions Manage skill versions in ABBYY Vantage: view, edit, copy, import, export, and delete versions, control retention, and revert to previous releases. Each time you publish a skill, Vantage assigns a new version number. Versioning lets you keep multiple variants of one skill rather than creating new skills for each change. The **Version** column shows each skill's version number. Click the version number to open a dialog box with information about the existing versions of the skill. Skill Versions dialog box listing existing versions of a skill Before publishing a new version of a skill, check its extraction statistics. If the new version performs worse than the previous version, you may prefer not to publish it. To revert, go to the **Skill Catalog**, select the skill, and click **Discard changes** on the toolbar. If you have already published, you can roll back to the previous version of the Technology Core. For more information, see [Revert to a previous version of the Technology Core](/vantage/documentation/technology-core-versions#revert-to-a-previous-version-of-the-technology-core). ## Version retention Vantage increments the version number each time you publish the skill. By default, the last three versions of the skill are always stored — all older versions not being used in other skills and transactions are automatically deleted. To change this behavior, turn off the **Keep 3 latest and all versions currently in use** toggle. When this option is disabled, no skill versions are deleted automatically. ## Edit a skill version When editing a skill, its editable version appears in the **Skill Versions** dialog box. A skill can only have one editable version at a time. Skill Versions dialog with the Edit skill option highlighted in the more options menu By default, the latest version of the skill is selected for editing. To edit a different version, click the more options icon next to the version number and select **Edit skill**. ## Copy a skill version To create a new skill from an existing version instead of a new version of the current skill, select **Duplicate skill** from the more options menu. Skill Versions dialog with the Duplicate skill option highlighted Duplicating a skill copies its latest version by default. To copy a different version, click the copy icon or **Duplicate skill** next to the version number. ## Import and export skill versions When importing a skill that already exists in the tenant, you can either import it as a new skill or create a new version of the existing skill. The new version number continues from the highest version that has ever been assigned to that skill, even if some have been deleted. A skill from another tenant is always imported with its own version number. When exporting a skill, its latest version is exported by default. To export a different version, you must first duplicate the required version (by clicking either the copy icon or **Duplicate skill** next to the version number) and export it. ## Skill versions in the Vantage API and online learning When processing a document via the Vantage API, the latest version of a skill is always used. For a Process skill, you must specify the version of each skill used in Classify and Extract activities. If **Online learning** is enabled for those activities, the specified versions are what get trained. ## Delete skill versions You can delete any version of a skill that is not used by other skills or transactions. To delete a skill version, click the delete icon next to the version number. When you delete a skill, all of its versions are deleted. Deleted versions cannot be restored. Vantage retains deleted version numbers so they're never reused. For example, if version 3 (the latest) is deleted, the next published version will be version 4. ## Related topics * [Skill Catalog](/vantage/documentation/skill-catalog/skill-catalog) * [Publish a skill](/vantage/documentation/skill-catalog/publish-skill) * [Edit a skill](/vantage/documentation/skill-catalog/edit-skill) * [Duplicate a skill](/vantage/documentation/skill-catalog/duplicate-skill) * [Delete a skill](/vantage/documentation/skill-catalog/delete-skill) * [Technology Core versions](/vantage/documentation/technology-core-versions) # Technology Core versions Source: https://docs.abbyy.com/vantage/documentation/technology-core-versions Understand the ABBYY Vantage Technology Core: how OCR and extraction engine versions are tied to skills, and how to update or revert the core a skill uses. The Technology Core is a set of technology-related workers for document processing, OCR, classification, data extraction, and other features. All skills in Vantage use a specific version of the Technology Core. You can find the Technology Core version used by a particular skill version in the **Version** column in the **Skill Versions** dialog box: Skill Versions dialog box showing the Technology Core version for each skill version Each version of a skill uses one version of the Technology Core. Different versions of the same skill can use different Technology Core versions. We recommend using the latest Technology Core version (currently 3.0) for all skills unless you have a specific need for an earlier version. All Document skills used in a Process skill **must** use the same Technology Core version. If your Process skill already includes Document skills built on Technology Core 2.4 or 2.0, select the corresponding version from the drop-down when creating any new Document skills. New versions of the Technology Core may be introduced in future Vantage releases, bringing new technology features. ## Update the Technology Core When a new version of the Technology Core becomes available, an arrow icon appears next to the name and version number of the skill: Skill row with an arrow icon indicating a Technology Core update is available You can click this icon to update the skill directly. A new version of the skill appears in the list, using the new Technology Core. ### Update requirements by skill type | Skill type | How to update | | :------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------ | | Document skill, Classification skill, or OCR skill | Edit, train, and publish the skill. | | Process skill | Ensure all skills used in the Process skill flow have been updated to the same new Technology Core version first. | | Skills created in Advanced Designer | Update in Advanced Designer only. See [Upgrading to a new version of the Technology Core](/vantage/documentation/advanced-designer/upgrading-to-new-version). | ### Update via Skill Settings Open your skill for editing. On the **Skill Designer** page, click the skill settings icon next to the name of the skill. In the dialog box that opens, select a Technology Core version from the drop-down list. Skill settings dialog box with the Technology Core version drop-down Save, train, and publish the skill. The updated skill appears in the list, using the new Technology Core version. Before publishing a skill with an updated Technology Core, check its extraction statistics. If the new version performs worse than the previous version, you may prefer not to publish. To revert, go to the **Skill Catalog**, select the skill, and click **Discard changes** on the toolbar. ## Revert to a previous version of the Technology Core To revert a skill to an earlier Technology Core version, you have two options: * **Republish an earlier version:** Open the earlier version of the skill and republish it to restore its associated Technology Core version. Note that the skill's version number will be updated. * **Delete the current version:** Delete the current version of the skill, which automatically reverts to the previous version that uses the earlier Technology Core. ## Import Technology Core versions Skills imported with an unsupported Technology Core version must be retrained and republished to be usable. ## Related topics * [Skill Catalog](/vantage/documentation/skill-catalog/skill-catalog) * [Skill versions](/vantage/documentation/skill-versions) * [Publish a skill](/vantage/documentation/skill-catalog/publish-skill) * [Edit a skill](/vantage/documentation/skill-catalog/edit-skill) * [Upgrade Advanced Designer Skill Technology Core](/vantage/documentation/advanced-designer/upgrading-to-new-version) # Activities in Advanced Designer Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/activities Choose and configure the activities that make up a document processing flow in Advanced Designer (classification, extraction, NLP, and customization). The **Activities** tab in Advanced Designer is where you build a document processing flow. Each activity is a step in the flow that performs a specific action, such as classifying documents, extracting fields, parsing addresses, splitting pages, or running custom logic. For end-to-end examples, see [Advanced Designer use cases](/vantage/documentation/advanced-designer/use-cases/use-cases). ## Edit skills created in Vantage When you open a skill created in Vantage, the **Activities** tab shows a flow with a single Fast Learning activity that extracts fields using Vantage machine learning. To extend the skill, add new activities for the fields you want to handle differently. ## Create skills in Advanced Designer When you build a skill in Advanced Designer, drop activities into the flow between **Start** and **Finish**. They run in the order you place them. To branch the flow on a condition, use the IF activity. To fork on a field value, create a workflow item with several Extraction Rules activities and map them to the values of that field. ## Choose an activity | Use case | Activities | | :------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | Route documents by layout or content | [Classify By Text and Image](/vantage/documentation/advanced-designer/activities/classify-by-text-and-image), [Classify By Company](/vantage/documentation/advanced-designer/activities/classify-by-company) | | Extract from semi-structured documents | [Fast Learning](/vantage/documentation/advanced-designer/activities/fast-learning), [Deep Learning](/vantage/documentation/advanced-designer/activities/deep-learning-semi-structured), [Hypothesis Filtering](/vantage/documentation/advanced-designer/activities/hypothesis-filtering), [Extraction Rules](/vantage/documentation/advanced-designer/activities/extraction-rules) | | Extract from structured forms | [Forms](/vantage/documentation/advanced-designer/activities/forms) | | Extract from text (NLP) | [Prompt-based](/vantage/documentation/skills/prompt-extraction), [Segmentation](/vantage/documentation/advanced-designer/activities/segmentation), [Deep Learning for NLP](/vantage/documentation/advanced-designer/activities/deep-learning-nlp), [Named Entities (NER)](/vantage/documentation/advanced-designer/activities/ner), [Address Parsing](/vantage/documentation/advanced-designer/activities/address-parsing), [Extraction Rules for NLP](/vantage/documentation/advanced-designer/activities/nlp-extraction-rules/extraction-rules) | | Add custom logic or branching | [Script](/vantage/documentation/advanced-designer/activities/nlp-extraction-rules/script-activity), [IF](/vantage/documentation/advanced-designer/activities/nlp-extraction-rules/if-activity) | | Build a Document Splitter skill | [Splitter Script](/vantage/documentation/advanced-designer/activities/splitter-script) | A document processing flow can contain only one [Fast Learning](/vantage/documentation/advanced-designer/activities/fast-learning) activity. Other activity types can be used multiple times. NLP activities support Dutch, English, French, German, Italian, Japanese, Portuguese (Standard), Russian, and Spanish. ## Related topics * [Advanced Designer use cases](/vantage/documentation/advanced-designer/use-cases/use-cases) * [Advanced Designer tutorial](/vantage/documentation/advanced-designer/tutorial/tutorial) * [Document skills in Advanced Designer](/vantage/documentation/advanced-designer/document-skills/document-skills) * [LLMs in ABBYY Vantage](/vantage/documentation/llms/llms) # Classify By Company activity Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/classify-by-company Classify documents by issuer and receiver companies using data catalogs to drive company-specific extraction in Advanced Designer. Documents from some companies may have uniquely complex structures. To extract data from such documents correctly, you need to set up company-specific extraction activities. This can be done within a single Document skill by using a Classify By Company activity. This activity classifies documents by companies using data catalogs. ## Use data catalogs A data catalog is a set of data that contains specific information. For example, this can be company-related information like company names, addresses, bank account numbers, etc. Data catalogs can be used to look for any companies on the document, such as vendors, consignees, banks, shipping companies, etc. A data catalog can be populated with data from a CSV file with a structure identical to that of the data catalog. For more information about using data catalogs, see the Using data catalogs section in the Skill Designer Guide. When documents are processed using a Classify By Company activity, specific company data is searched for in the connected data catalog. The result is a unique company identifier that is recorded in the corresponding field in the skill. This company identifier is then used to set up a company-specific document processing algorithm. The company identifier is the only field that is required for a Classify By Company activity to work; however, you can fill out more fields using information about the company stored in the data catalog to avoid setting up additional extraction activities for those fields. To do so, you need to map data catalog columns to the appropriate fields in the skill. A Classify By Company activity uses data catalogs of type Document Issuer Companies, available on the Vantage server to which you are connected. In some cases, you may want to search the document for a pair of related companies (for example, a supplier and a purchaser of goods). To do this, add a second, optional, data catalog of type Document Receiver Companies. If you need to find two unconnected companies, you may either use this option or add two Classify By Company activities. ## Look for a pair of companies Each of your company's business units may have its own database of suppliers. If a supplier works with several business units, it will have multiple entries with different IDs. In this case, you will need to find the exact entry for the supplier that corresponds to the business unit. To achieve this, fill in the Company Correlation ID column in the Document Issuer Companies data catalog. The search will then look for pairs of companies where the correlation ID for the document issuer matches the document receiver ID. If some correlation IDs are missing, pairs with matched correlation IDs will have priority. When searching for pairs of companies, hypotheses are generated using the correlation between a supplier and a business unit. A Classify By Company activity selects five document receiver company records that most reliably match the field values on the document image. Then, for each record, the activity selects five document issuer company records where the Company Correlation ID is identical to the Receiver Company ID. If the data catalog does not contain any records where the Company Correlation ID is identical to the Receiver Company ID, records with an empty Company Correlation ID are selected instead. To find valid pairs, you must fill in the right Company Correlation IDs for all records. As a result, the best matching issuer–receiver pair is selected. For more information about company detection, see [How company detection works](/vantage/documentation/advanced-designer/activities/company-detection-algorithm). If your document issuer companies may work with any of the document receivers, you don't need to fill in the Company Correlation ID column in your Document Issuer Companies data catalog, and the search will consider all the possible company pairs. ## Data catalog types ### The Document Issuer Companies data catalog | Name | Description | | :--------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Issuer Company ID | Obtained by detecting the document issuer. Identifies the document issuer in an external information system.

**Note:** This is the unique identifier of the entry in the data catalog if all of the company's business units use the same customer database. Otherwise, the entry in the data catalog is uniquely identified by a combination of **Issuer Company ID** and **Company Correlation ID**. | | Company Correlation ID | The identifier of the company's business unit.

**Note:** If the company's business units use different customer databases, this data catalog column must be filled in, as the unique key of the entry in the data catalog will be a combination of **Issuer Company ID** and **Company Correlation ID**. For more information, see [Look for a pair of companies](#look-for-a-pair-of-companies). | | Tax ID | These columns can be used in a unique company identifier search. | | National Tax ID | These columns can be used in a unique company identifier search. | | IBAN | These columns can be used in a unique company identifier search. | | Name | These columns can be used in a company name and address search. | | Postal Code | These columns can be used in a company name and address search. | | Street | These columns can be used in a company name and address search. | | City | These columns can be used in a company name and address search. | | State or Province | These columns are not used in the company detection process. They can only be used to fill in the document fields. | | Country | These columns are not used in the company detection process. They can only be used to fill in the document fields. | | Bank Account | These columns are not used in the company detection process. They can only be used to fill in the document fields. | | Bank Code | These columns are not used in the company detection process. They can only be used to fill in the document fields. | ### The Document Receiver Companies data catalog | Name | Description | | :------------------ | :---------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Receiver Company ID | Obtained by detecting the document receiver. Identifies the document receiver in an external information system. The unique key of the entry in the data catalog. | | Tax ID | This column can be used in a unique company identifier search. | | Name | These columns can be used in a company name and address search. | | Postal Code | These columns can be used in a company name and address search. | | Street | These columns can be used in a company name and address search. | | City | These columns can be used in a company name and address search. | | State or Province | These columns are not used in the company detection process. They can only be used to fill in the document fields. | | Country | These columns are not used in the company detection process. They can only be used to fill in the document fields. | # Classify By Text and Image activity Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/classify-by-text-and-image Sort documents into classes with the Classify By Text and Image activity in Advanced Designer, and then run class-specific extraction for higher accuracy. It may be difficult to specify field extraction properties for cases where a single Document skill needs to process documents that vary significantly with regards to their field placement (despite being of the same type). For example, the same skill can be used to process invoices from different vendors, where the same fields may be placed in locations that differ from vendor to vendor. To improve the extraction quality for such skills, you can choose to classify its documents into classes, which are document subgroups (with common properties) for a single document type, and set up separate extraction activities for each one. Classifying documents into classes may also be required when you need to improve extraction quality for one of the classes. For example, a single skill may be used to process bank statements compiled by different banks. One statement type may have a lower extraction quality compared to the rest. To improve the extraction quality for that skill, you can sort the statements into classes and set up an Extraction Rules activity for the class that has an unsatisfactory extraction quality. The Classify By Text and Image activity is designed to sort a skill's documents into classes that require their own extraction activities to be created and set up. ## Setup overview Add a Classify By Text and Image activity to the document processing flow. Upload images, create classes, and assign expected classes to documents. Train the activity and analyze the training results. Modify properties if the classification results need to be improved. ## Create and set up the activity in the Activities tab Create a Classify By Text and Image activity in the workflow. When it is created, a field to record the classification results will be created in the skill structure. The value of this field will be used to classify documents. This field will be displayed in the skill field structure, however, it will be marked as hidden and will not be editable. A Classify By Text and Image activity does not return a confidence value for a class. It only returns its name. To navigate to the Activity Editor, click **Activity Editor** or double-click the activity block. ## Set up the activity in the Activity Editor ### Step 1: Upload documents Upload documents that will be used to set the activity up by clicking **Upload** in the toolbar and selecting an upload method: * **Upload Documents...** Use the dialog box that will open to select the appropriate documents. The selected documents will be displayed in the **No Class** list. * **Upload Folder Like Classes...** Use the dialog box that will open to select a folder that contains subfolders with images. Each subfolder should contain images of a single class. Uploading documents this way will automatically create classes that correspond to subfolders, with documents in those respective subfolders classified to be of that class. As such, you will not need to manually create classes in the Activity Editor. ### Step 2: Create classes Create classes that correspond to the different types of documents being processed by clicking either **Create Class** in the toolbar or **Create** in the **Assign class** pane. If your documents were uploaded using Upload folder like classes, make sure that all required classes have been created. ### Step 3: Classify documents Classify your documents using one of the following methods: * Select all documents of a single class in the list and click an appropriate class name in the **Assign class** pane. * If an appropriate class has not been created yet, select all appropriate documents in the list and create a class by clicking either **Create Class** in the toolbar or **Create** in the **Assign class** pane. * Select all documents of a single class and drag them to the list that corresponds to that class. ### Additional options If required, you can change the orientation of document pages using the **Rotate** drop-down menu on the toolbar. You can select one of the following options: **Rotate All Pages Left**, **Rotate All Pages Right**, or **Rotate All Pages 180º**. To switch view modes, use the following buttons in the toolbar: * List view. Displays documents as a list * Thumbnail view. Displays documents as thumbnails To view the full image for a document displayed in thumbnail view, use the preview button. ## Train a classifier and view classification results Once documents have been classified, train your activity using the **Train Activity** button. After training has finished, statistics regarding the classification results will be displayed on the **Results** tab. Analyzing these statistics helps identify problem classes and evaluate the general quality of the classifier. ### General statistics The top pane displays general statistics for all documents and classes of the activity. These statistics help evaluate the general quality of your classifier: * **accuracy**. The percentage of documents the expected class of which matched the class assigned by the program. * **F-Measure**. Use to evaluate classification precision and completeness. * **Recall**. The ratio of documents correctly classified as a specific class to all documents of that class. * **Precision**. The ratio of documents correctly classified as a specific class to all documents classified as that class (both correctly and incorrectly). ### Class-specific statistics On the Classes pane, you can view statistics for each class. For each class, the percentage of documents with the expected class matching the class assigned by the program is displayed, as well as the number of documents with correctly and incorrectly assigned classes. To view documents with incorrectly assigned classes, select an appropriate class in the Classes pane and expand the incorrectly assigned document list (displayed in red). Analyzing these documents should help you understand why the program assigned a specific document a class that is different from the expected class. This can often happen if the expected class was assigned incorrectly to begin with, e.g. when documents of different classes are overly similar. ## Fix classification errors ### Incorrect expected classes One possible cause of incorrect classification is incorrectly assigned expected classes. To fix this type of error, simply assign the correct expected class to a document. On the **Results** tab, select a class that was incorrectly assigned to a document. Expand the list of documents with incorrectly assigned classes, select all documents of that class, and assign the correct expected class to them from the list in the **Assign class** pane. ### Similar documents in different classes Another possible reason for classification errors is having very similar documents divided into different classes. If the classifier confuses classes for two similar document variants, most likely these variants need to be in the same single class with a single extraction activity. In this case, review the number of classes and unite the confused classes into one. Their differences should then be described using rules in an Extraction Rules activity. ### Insufficient training data Yet another possible reason for classification errors can be a lack of documents in a class set. In this case, you can improve the classifier quality by adding more documents to the set. After adding new documents or changing classes, you will need to retrain your classifier. # Set up a Classify By Company activity Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/classify-company-setup Configure data catalogs, regular expressions, and field mappings to classify documents by issuer and receiver companies in Advanced Designer. Add a Classify By Company activity to the document processing flow in the **Activities** tab. Navigate to the **Activity Properties** pane and select an available data catalog from the **Issuer Company** drop-down list. If you search for a related pair of companies, also select a data catalog from the **Receiver Company (optional)** drop-down list. You can do one of the following: * Select a data catalog by its name. This will automatically create a data catalog parameter named after the selected data catalog. The parameters can then be viewed in the **Parameters** tab in the skill settings. * Select a data catalog parameter that exists in the skill. A parameter will only be displayed in the list if the type of data catalog it refers to is supported by the Classify By Company activity. The name of the data catalog to which the parameter refers is specified in parentheses. * Select **Manage Skill Parameters...** to open skill settings and create a new data catalog parameter. For more information, see [Using parameters](/vantage/documentation/advanced-designer/document-skills/skill-params). You can create additional data catalogs in ABBYY Vantage. For more information, see [Creating Data Catalogs](/vantage/documentation/skill-designer/document/using-data-catalogs/create). If necessary, update the selected data catalog using a CSV file: click the more options button next to the data catalog list, then click **Update from CSV**, and in the dialog box that opens, select a CSV file. You can also use the Vantage API and shared folders to update a data catalog. For more information, see Skill Designer Guide, Using data catalogs. For more accurate company data searches, you can specify regular expressions and keywords for company identifiers that may occur in your documents (such as Tax ID, National Tax ID, and IBAN). Regular expressions will set a specific search algorithm, while keywords will narrow down the search area on the document. We recommend using regular expressions along with keywords to speed up document processing, as regular expressions will be applied only to the words in the search area where the keywords have been found. To specify regular expressions and keywords, click **Activity Settings**. In the dialog box that opens, for the column you want: 1. Write a regular expression directly in the field or click the edit icon and write a regular expression in the Regular Expression Editor. You can also set a regular expression as a skill parameter value and select this parameter from the drop-down list. 2. Type a keyword directly in the field. You can also set a keyword as a skill parameter value and select this parameter from the drop-down list. 3. Click **Next**. Map the data catalog columns to the appropriate fields in the skill. The only required field when extracting data is the company identifier field, while all other fields are optional. Once you have mapped all appropriate fields, click **Save**. A Classify By Company activity can only connect to one data catalog of each type. If you need to look up data in multiple catalogs, you can add multiple Classify By Company activities to the document processing flow and connect them to different data catalogs. ## Use classification results After you have set up your Classify By Company activity, use the company data found on the document. You may simply extract the data and go on to the next processing step. If the processing flow differs significantly depending on the issuer company, you can also use company data to branch the flow using an Extraction Rules activity or an IF activity. # How company detection works Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/company-detection-algorithm How the Classify By Company activity detects issuer and receiver companies — unique-identifier search, name and address matching, and hypothesis ranking. The detail and quality of data catalog records significantly affects the accuracy of company detection. The closer a document issuer and receiver records match the text extracted from a document image, the more accurately the document issuer and receiver companies are detected. ## Best practices for accurate detection To ensure that the detection results are as accurate as possible, make sure that: * **Unique company identifiers are filled in**. Filling in unique value columns (Tax ID, National Tax ID, IBAN) will significantly improve the probability of correct detection, since these values are unique for all companies. * **There are no duplicate company records**. The absence of duplicate records will increase the probability of correctly detecting the company. * **There are no unrelated records**. Outdated or invalid records in the data catalog may cause the company to be detected incorrectly because of coincidental similarities between various field values. * **All fields are filled in for each company record**. Specify as much accurate information about companies as possible. The more accurate the information, the higher the probability of correctly detecting the companies. ## Company detection process Company detection includes the following steps: ### Step 1: Unique identifier search The values of the following fields are considered to be unique company identifiers: * Tax ID * National Tax ID * IBAN A Classify By Company activity searches the document image for the values of the fields listed above using keywords and regular expressions. If none are specified, this step is skipped. The Tax ID, National Tax ID, and IBAN values detected on a document image are used to query the data catalog. Next, the Tax ID, National Tax ID, and IBAN values received from the data catalog are matched against the values detected on the image (exact matching is used). For matching purposes, values are normalized as follows: * letters are changed to upper case * spaces and the following characters are removed: "**.**", "**,**", "**—**", "**/**", "\*\*\*\*" ### Step 2: Company name and address search The entire text detected on the document image is used to query the data catalog. Next, the Name, Street, Postal code, and City values received from the data catalog are matched against the values detected on the image (exact matching is used). To get the best possible search results, make sure that the corresponding columns in the data catalog are filled in. Company name and address information is especially important in cases where the company cannot be identified using a Tax ID, National Tax ID, or IBAN. ### Step 3: Generate hypotheses Based on the companies found in steps 1 and 2, a set of hypotheses is generated. A Classify By Company activity evaluates these hypotheses and selects five document issuer and five document receiver company records that most reliably match the field values detected on the document image. These records are then used to form 25 pairs, with each pair treated as a separate hypothesis. A trained model then rates the hypotheses by reliability, selecting the best matching issuer–receiver pair. Even if the number of document receiver companies is very small (for example, if there is only one document receiver company), using a Document Receiver Companies data catalog is still recommended, as it will prevent a document receiver company from being incorrectly detected as a document issuer company. If the Document Issuer Companies data catalog specifies that the Issuer Company ID depends on the Receiver Company ID, hypotheses are generated based on this correlation (see [Looking for a pair of companies](/vantage/documentation/advanced-designer/activities/classify-by-company#look-for-a-pair-of-companies)). ## Results of detecting document issuer and receiver companies As a result of detecting issuer and receiver companies on a document the following identifiers will be found: * The issuer company identifier in the Document Issuer Companies data catalog * The receiver company identifier in the Document Receiver Companies data catalog If the Document Issuer Companies data catalog specifies that the Issuer Company ID depends on the Receiver Company ID, the result of document issuer detection will contain the Issuer Company ID that corresponds to the Receiver Company ID. For more information, see [Looking for a pair of companies](/vantage/documentation/advanced-designer/activities/classify-by-company#look-for-a-pair-of-companies). # Deep Learning activity for semi-structured documents Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/deep-learning-semi-structured Train neural networks (CNN + RNN + NLP) to extract fields from semi-structured documents in Advanced Designer — generalizes to layouts the model hasn't seen. The Deep Learning activity for semi-structured documents is designed to build cognitive skills of a production-level quality to extract fields from semi-structured documents using neural networks. This activity can't extract complex structures (for example, nested tables, which are repeating structures inside other tables) and fields of type other than Text. To extract such structures, use the Extraction Rules activity. ## Use cases Add this activity to your document processing flow when: * Your skill will be used to process multiple variants of a certain document type. * You are planning to process document variants on which your skill has not yet been trained. For example, you may have a Document skill with a Fast Learning activity which has been trained to extract fields from loan agreements (with different field structures) coming from several different banks. If you decide to use this existing skill to process loan agreements from a new bank yet unknown to the skill, the extraction quality may be below par. To improve extraction quality, you can use a Deep Learning activity instead of a Fast Learning activity. ## How it works Deep Learning combines Convolutional Neural Networks (CNNs), Recurrent Neural Networks (RNNs), and Natural Language Processing (NLP) tokens. Through this combination, Deep Learning understands image patterns, the structure of documents, field contents, and surrounding labels. It requires a large number of documents to train, but it generalizes to new document layouts it has not encountered yet, providing a true templateless approach to extraction, which is the only way to deal with documents for which no exhaustive set of layouts is available at the training stage. ### Training requirements For best results, it is essential to correctly label as many documents as possible. The number of sample documents used for training significantly affects the quality of field extraction. The recommended number of sample documents is as follows: * For high-variability documents: At least 200-300 sample documents (2-3 sample documents per variant) are required. * For low-variability documents: Minimum 10 sample documents are required (2-3 sample documents per variant). The minimum requirement is 10, but it is recommended to have more than 500 labeled documents, making sure that your training set contains approximately equal numbers of all the document variants you intend to process (ideally, at least a few samples of each variants). You do not need to provide all the possible variants, but the technology needs to see enough varied documents to derive patterns and generalize to variants it has not encountered yet. For example, in the case of invoices, the technology is expected to generalize well to new suppliers when the training set has 500 to 1,000 different suppliers, with two to three sample documents from each in the training set. While Deep Learning tends to generalize, it is beneficial to include the most popular variants of the document in the training set, for example, the suppliers providing the largest number of invoices. ### Training characteristics Unlike the Fast Learning activity, which is trained on a smaller number of documents and intended for more streamlined document sets, training the Deep Learning activity takes a lot longer. Training the neural network is an iterative process. Each iteration is called an epoch. At the beginning of an epoch, the document set is divided into a training subset and a validation subset. During an epoch, all documents from the training subset are passed through a training algorithm. Then, the neural network performance is evaluated using the validation subset, and the metrics for each field and the entire document set are updated. For more information, see [Setting up a Deep Learning activity](/vantage/documentation/advanced-designer/activities/deep-learning-setup). # Set up a Deep Learning activity Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/deep-learning-setup Add a Deep Learning activity, select fields, label documents, and train it on a semi-structured document set in Advanced Designer. You can use a separate document set to train your Deep Learning activity. To do so, select the Deep Learning activity from the drop-down list next to the skill name. Then, in the drop-down list to the left of the **Upload** button, select the necessary document set or click **Create Set...** to create a new one. You can upload, delete, and rotate documents on this tab as described in [Documents](/vantage/documentation/advanced-designer/document-skills/documents). On the **Activities** tab, add a Deep Learning activity for semi-structured documents to your document processing flow. In the **Activity Properties** pane, select the fields to be trained using this activity. You can select one of the following: * Up to 50 fields of type **Text**, regardless of their nesting level. * One table with up to 32 columns. If you need to train more fields, you can add more Deep Learning activities and use them to select additional fields. For example, if you need to train several text fields and a table, create two Deep Learning activities. The following fields cannot be trained: * Fields of type other than **Text** * Groups with multiple items, tables, or text fields with multiple items nested in a group with multiple items * Tables with more than 32 columns You will need to set up extraction of such fields using other activities, e.g. an Extraction Rules activity. Click **Activity Editor** and go to the **Fields** tab to label your documents. The labeling process in the Activity Editor is identical to the regular document labeling process. Use the following guidelines to determine the size of the document set: * If the training set contains only the minimum 10 documents, you can start the deep learning training, but uploading additional documents is recommended to achieve higher accuracy. * If your training set includes only 10 documents, you can still begin training your model. However, Advanced Designer will display a warning recommending that you add more than 500 labeled documents for optimal training results. * If your training set contains between 500 and 10,000 documents, you can begin training your activity immediately. This is the recommended number of documents to have in your training set. * If the training set contains more than 10,000 documents, Advanced Designer will display a warning saying that the skill may become unstable. Once you have uploaded and labeled your documents, click **Train Activity**. Go to the **Results** tab to evaluate the training progress. If necessary, adjust the training length or stop the training. For more information, see [Monitoring and adjusting activity training](/vantage/documentation/advanced-designer/activities/deep-learning-monitoring). ## Post-training steps Once the activity has been trained, activity testing will start automatically. If you stop the training, you will be prompted to start testing the activity manually. When the testing is complete, analyze the field extraction results in the **Activity Test Results** section of the **Results** tab. Statistics for this activity are identical to the general statistics for the skill displayed on the [Results](/vantage/documentation/advanced-designer/document-skills/results) tab. If you are not satisfied with the quality of field extraction, you have the following options: * Add more documents to the training set and resume the training process. The training results obtained so far will be preserved and the neural network will be additionally trained using the updated document set. * Adjust the labeling and restart training. The training results obtained so far will be discarded and the neural network will be trained from scratch. * Create a Hypothesis Filtering container with an Extraction Rules activity, which will allow you to set conditions for the output of the Deep Learning activity. The activity can only be trained and tested using documents with confirmed labeling. Documents have unconfirmed labeling if the reference labeling was generated automatically based on the predicted labeling, unless you copy predicted labeling to reference using the corresponding option in the document context menu. You can check the labeling status for each document on the **Documents** tab. To confirm labeling for a document, you should review it on the **Fields** tab. Beginning with Advanced Designer v. 2.3.1, the field limitations for the Deep Learning activity have changed. If your skill uses a trained Deep Learning activity that extracts more than 50 fields, you can continue processing documents with that skill. However, when you open such a skill for editing, the existing Deep Learning activity will be split into several Deep Learning activities, which you may need to retrain. You will also have to route the activities in the document processing workflow. # Fast Learning activity Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/fast-learning Use clustering-based machine learning to extract fields from structured and semi-structured documents and benefit from Online Learning at runtime. The Fast Learning activity is used to extract fields from structured and semi-structured documents. It also allows training the fields selected as output fields for this activity while documents are being processed in Vantage. For more information, see Vantage Runtime Guide, Online Learning. You can explicitly disable field training by deselecting it on the **Activity Properties** pane. If you do not add the Fast Learning activity to your document processing flow, it will not be possible to train fields once you have created and published your skill. If you are editing a skill created in Vantage, the skill may contain a pre-trained Fast Learning activity. You can add other activities and combine them with the pre-trained one. For more information, see [Editing a skill created and trained in Vantage](/vantage/documentation/advanced-designer/use-cases/editing-skill). The Fast Learning activity can't extract complex structures (e.g. nested tables, which are repeating structures inside other tables) and fields of type Image. To extract such structures, use [Extraction Rules activity](/vantage/documentation/advanced-designer/activities/extraction-rules). ## Use cases Add this activity to your document processing flow in the following cases: * When the document set includes several document layout variants, and you are able to provide samples for each variant during training. For example, if you want to train extraction from bank statements from several different banks, and you have samples from each bank at your disposal. * When you are planning to process document variants on which your skill has not yet been trained, and you want to benefit from Online Learning. For example, when processing invoices, each supplier likely has their own invoice layout, moreover, new suppliers can appear daily. In this case, you will use other activities to extract data from the documents, but you can also add the Fast Learning activity to the processing flow, and it will be trained during runtime using Online Learning feedback from the manual review loop. * When you want to train fields while documents are being processed in Vantage. ## How it works Fast Learning is based on a clustering technology that groups similar-looking document layouts together and internally trains a field extraction model for each cluster. The Fast Learning activity can learn thousands of different document variants. As opposed to the Deep Learning activity, the Fast Learning activity tends to memorize what it has "seen" rather than learn image patterns. Fast Learning will not be able to generalize to new document variants it has not yet encountered. When a Fast Learning activity faces a new document during runtime, it establishes which cluster the document is most similar to, and then applies the corresponding internal model. This activity does not require a large training set—one document is enough to start training. If you have several variants of the same document (for example, documents that are essentially identical but look somewhat different), we recommend including documents representing each different variant in the training set. For more information, see [Setting up a Fast Learning activity](/vantage/documentation/advanced-designer/activities/fast-learning-setup). # Set up a Fast Learning activity Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/fast-learning-setup Add a Fast Learning activity, select fields, train it, and review extraction results for structured and semi-structured documents in Advanced Designer. You can use a separate document set to train an activity. To do so, select the Fast Learning activity from the drop-down list next to the skill name. Then, in the drop-down list to the left of the **Upload** button, select the necessary document set or click **Create Set...** to create a new one. You can upload, delete, and rotate documents on this tab as described in [Documents](/vantage/documentation/advanced-designer/document-skills/documents). To train this activity in Advanced Designer, indicate the location of all fields on your documents, and click **Train Activity**. Fields in the Fast Learning activity editor are labeled the same way as on the Fields tab. On the **Activities** tab, add a Fast Learning activity to the document processing flow. Unlike all other activities, the Fast Learning activity can be added only once. In the **Activity Properties** pane, select the fields that should be extracted by the activity. By default, all fields are trainable, including those that may be added later, for example, during Vantage design time. You can deselect fields which should not be trained (for example, if you set up an extraction rule for a repeating group of fields, you may choose to not train it during processing). Click **Activity Editor**. Make further modifications to the document labeling on the **Fields** tab if required. Click **Train Activity** to train the activity. Once the activity has been trained, activity testing will start automatically. After testing has completed, navigate to the **Results** tab and analyze the field extraction results for your activity. Statistics displayed on the **Results** tab are identical to the general statistics for the skill displayed on the Results tab. If required, make any necessary changes to your labeling and train the activity again. The activity can only be trained and tested using documents with confirmed labeling. Documents have unconfirmed labeling if the reference labeling was generated automatically based on the predicted labeling, unless you copy predicted labeling to reference using the corresponding option in the document context menu. You can check the labeling status for each document on the **Documents** tab. To confirm labeling for a document, you should review it on the **Fields** tab. # Advanced Designer installation options Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/additional-install Customize ABBYY Vantage Advanced Designer installation with command-line options — PerMachine, InstallFolder, InstallRuntime — for administrator deployments. Pass command-line options to the Advanced Designer installer to customize a deployment. These options require administrator permissions and apply to the standard installer described in [Install and run Advanced Designer](/vantage/documentation/advanced-designer/install-and-run). To use any of the options below, open a command prompt, change to the folder that contains `Vantage.Advanced.Designer.exe`, and run the installer with the option appended. Multiple options can be combined in a single command. | Option | Purpose | | :------------------------------------------------------------- | :---------------------------------------------- | | [`PerMachine`](#permachine-install-for-all-users) | Install for all users of the machine. | | [`InstallFolder`](#installfolder-custom-installation-path) | Choose a custom installation folder. | | [`InstallRuntime`](#installruntime-skip-the-c-redistributable) | Skip the bundled C++ Redistributable component. | ## PerMachine — install for all users Controls whether Advanced Designer is available to every user on the machine (`1`) or only the current user (`0`, the default). To install for all users, run: ```bat theme={null} Vantage.Advanced.Designer.exe PerMachine=1 ``` This installs Advanced Designer to `C:\Program Files\ABBYY\Vantage` instead of the default per-user location (`C:\Users\\AppData\Local\Programs\ABBYY\Vantage`). ## InstallFolder — custom installation path Specifies a custom installation path. The folder is created if it does not exist. ```bat theme={null} Vantage.Advanced.Designer.exe InstallFolder="" PerMachine=1 ``` `InstallFolder` can only be used together with `PerMachine=1`. ## InstallRuntime — skip the C++ Redistributable Controls whether the bundled C++ Redistributable component is installed (`1`, the default) or skipped (`0`). To skip it: ```bat theme={null} Vantage.Advanced.Designer.exe InstallRuntime=0 ``` If you skip the C++ Redistributable component, Advanced Designer falls back to whatever version is already on the machine — which may make Advanced Designer unstable. If a non-administrator runs `InstallRuntime=0`, the option is silently ignored and the C++ Redistributable component is installed anyway. No diagnostic message appears. ## Related topics * [Install and run Advanced Designer](/vantage/documentation/advanced-designer/install-and-run) * [Advanced Designer system requirements](/vantage/documentation/advanced-designer/system-reqs) * [Upgrade Advanced Designer Skill Technology Core](/vantage/documentation/advanced-designer/upgrading-to-new-version) # Activities tab Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/document-skills/activities Set up document processing flows by adding and configuring activities for your Document skills in Advanced Designer. On the **Activities** tab, you build the document processing flow for a Document skill — adding activities and linking them to set the order in which operations run. An activity is a document processing step that performs a specific action contributing to extraction of a skill's fields. Which activities you use depends on the documents being processed. For worked scenarios, see [Use cases](/vantage/documentation/advanced-designer/use-cases/use-cases). ## Edit skills created in Vantage If you are editing a skill created in Vantage, the **Activities** tab displays a processing flow consisting of the Fast Learning activity, which extracts a skill's fields using Vantage machine learning. Add new activities to the flow as needed for the changes you're making. ## Create skills in Advanced Designer If you are creating a skill in Advanced Designer, add activities to the flow by placing them between **Start** and **Finish**. Activities run in the order they appear in the flow. The IF activity can be used to specify conditions for branches in the flow. You can also implicitly fork the processing flow by creating a workflow item that contains several Extraction Rules activities and mapping these activities to the values of some field. ## Available activities You can add the following activities to your Document skill processing flow: * [Classify activities](/vantage/documentation/advanced-designer/activities/activities#choose-an-activity) * [Semi-structured extraction activities](/vantage/documentation/advanced-designer/activities/activities#choose-an-activity) * [NLP activities for unstructured documents](/vantage/documentation/advanced-designer/activities/activities#choose-an-activity) * [Customize activities](/vantage/documentation/advanced-designer/activities/activities#choose-an-activity) A processing flow can contain only one Fast Learning activity. Other activity types can appear multiple times. ## Related topics * [Activities in Advanced Designer](/vantage/documentation/advanced-designer/activities/activities) * [Advanced Designer use cases](/vantage/documentation/advanced-designer/use-cases/use-cases) * [Fields tab](/vantage/documentation/advanced-designer/document-skills/fields) # Derived skills in Advanced Designer Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/document-skills/derived Create derived skills in Advanced Designer that inherit fields and rules from a base skill while preserving updates and customizations. Vantage built-in skills and read-only skills published by third-party developers cannot be edited directly. To work around this, derive a new skill from a built-in or read-only skill and edit the derived skill instead. Derived skills inherit all the rules and fields from their base skill. They can also be updated to the latest base-skill version while preserving every change you've made. You can derive skills from any other skill too, including ones you have created yourself. ## Vantage vs. Advanced Designer for derived skills You can create derived skills in either Vantage or Advanced Designer. Use Advanced Designer for advanced customization — such as adding new activities for processing specific documents. If you've made significant changes to a derived skill's document processing flow, continue editing it in Advanced Designer. ## Related topics * [Create a derived skill in Advanced Designer](/vantage/documentation/advanced-designer/document-skills/derived-create) * [Configure a derived skill in Advanced Designer](/vantage/documentation/advanced-designer/document-skills/derived-configure) * [Update a derived skill in Advanced Designer](/vantage/documentation/advanced-designer/document-skills/derived-update) # Configure a derived skill in Advanced Designer Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/document-skills/derived-configure Customize a derived skill in Advanced Designer — disable inherited fields, add custom fields, configure rules, and adjust text recognition. After creating a [derived skill](/vantage/documentation/advanced-designer/document-skills/derived), you can customize its inherited fields and rules, add new ones, and adjust text recognition. All configuration happens in the skill settings dialog and on the **Fields** tab. ## Inherited and custom fields You can disable inherited fields that are not required for document processing, or add custom fields to extract additional data. If you disable a field, all its associated rules are also disabled. If you re-enable a previously disabled field, you'll need to re-enable any rules that you want to use. ### Disabling an inherited field Click the settings button next to the name of the skill to open its settings. On the **Fields** tab, turn off the toggle in the row with the field properties. Click **Save**. You can always re-enable a previously disabled field. Disabling an inherited field also removes it from every activity in the derived skill. ### Adding a custom field To add a custom field, do one of the following: * Click the **Fields** tab, click **Reference**, and then click **Add Field** on the toolbar. * Click the settings button next to the name of the skill to open the skill settings dialog box, click the **Fields** tab, and then click the add field button on the toolbar. To delete a previously added custom field, click the delete button on the **Fields** tab of the skill settings dialog box. The custom field is deleted together with all the rules that use this field. Before you click **Save**, you can restore the deleted custom field by clicking **Restore**. ### Setting up field properties Most settings of an inherited field can be edited in the field settings dialog box. To open it, click the settings button next to the field's name in the data form. ## Inherited and custom rules A derived skill inherits all the validation rules of its base skill. Inherited rules cannot be edited directly. However, you can copy them and modify their copies. You can disable inherited rules that are not required for document processing, or add new rules to validate extracted data. ### Disabling an inherited rule Click the settings button next to the name of the skill to open its settings. On the **Rules** tab, turn off the toggle next to the rule name. Click **Save**. You can always re-enable a previously disabled rule. ### Adding a custom rule You can create a new rule in a derived skill. For information on how to create a rule, refer to [Validation rules](/vantage/documentation/advanced-designer/document-skills/fields#validation-rules). Any rules you create in a derived skill are not included in its base skill. To delete a previously created rule, click the delete button on the **Rules** tab of the skill settings dialog box. Before you click **Save**, you can restore the deleted rule by clicking **Restore**. ## Configure text recognition A derived skill inherits all the recognition settings of its base skill. You can disable any languages that won't be used in your documents — this speeds up the processing and, in some cases, prevents recognition errors. However, you cannot add new languages to a derived skill, as its base skill was designed to process documents only in specific languages. You can also disable the handwritten recognition option if your documents do not contain any handwritten text. You cannot enable the handwritten recognition option in a derived skill if it's disabled in its base skill. ## Restore data form layout If you modify the layout of the data form of a derived skill, you can always restore it to the layout of the base skill. To do this, click **Restore Layout from Base Skill**. The layout is restored, and any custom fields you added to the derived skill are listed at the bottom of the data form. If custom fields were added to a group, these are listed at the bottom of the group. ## Related topics * [Derived skills in Advanced Designer](/vantage/documentation/advanced-designer/document-skills/derived) * [Create a derived skill in Advanced Designer](/vantage/documentation/advanced-designer/document-skills/derived-create) * [Update a derived skill in Advanced Designer](/vantage/documentation/advanced-designer/document-skills/derived-update) # Create a derived skill in Advanced Designer Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/document-skills/derived-create Create a derived skill in Advanced Designer to inherit fields and rules from a base skill while allowing customization. You can create a [derived skill](/vantage/documentation/advanced-designer/document-skills/derived) from any skill in the **Skill Catalog**, including built-in and read-only skills. To create a derived skill, do one of the following: * Select a skill in the **Skill Catalog** and click the derive skill icon. * Double-click the name of a skill in the **Skill Catalog** and in the dialog box that opens, click **Create and Edit Derived Skill**. To see the base skill of a derived skill, click the settings button next to the name of the derived skill. ## Base skill activity When a derived skill is created, an activity referencing its base skill is added at the beginning of the document processing flow. This activity is named `Base: ` and cannot be edited or deleted. To test other activities in isolation, exclude the `Base: ` activity from the document processing flow by redirecting its incoming arrow to a different activity. If you're not satisfied with the derived skill after testing, consider creating a custom skill from scratch. ## Fast Learning activity A Fast Learning activity is also added immediately after the `Base: ` activity. You can modify this activity as follows: enable or disable fields, add new fields, or train the activity. If needed, you can delete this activity; in this case, the skill will no longer be trainable. For more information about the Fast Learning activity, see [Setting up a Fast Learning activity](/vantage/documentation/advanced-designer/activities/fast-learning-setup). When updating a derived skill to the new version of its base skill, the Fast Learning activity does not change. This preserves the training results on custom examples in the derived skill. ## Add activities You can also add other activities to the document processing flow at any position before or after the `Base: ` activity. For example, you can add an Address Parsing activity to break down full addresses extracted by the base skill. ## Related topics * [Derived skills in Advanced Designer](/vantage/documentation/advanced-designer/document-skills/derived) * [Configure a derived skill in Advanced Designer](/vantage/documentation/advanced-designer/document-skills/derived-configure) * [Update a derived skill in Advanced Designer](/vantage/documentation/advanced-designer/document-skills/derived-update) # Update a derived skill in Advanced Designer Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/document-skills/derived-update Update a derived skill in Advanced Designer to a new base-skill version while preserving custom fields, rules, and training. A derived skill can be updated if a new version of its base skill becomes available. When you update a derived skill, all the changes previously made to the derived skill are preserved. ## Update notification When an update becomes available, an update icon appears next to the version number of the derived skill in the **Skill Catalog**, and its settings icon shows an alert indicator. ## How to update a derived skill If the base skill has an older Technology Core version, update the base skill first — then update the derived skill. Open the derived skill in Advanced Designer. Click the settings icon with the alert indicator to open its settings. Choose the latest version of the base skill. Click **Save**. If the base skill upgraded to a new Technology Core version, retrain all its trainable activities on that version. Test the updated skill and make any necessary adjustments. [Publish](/vantage/documentation/advanced-designer/document-skills/publish) the updated skill to make it available in Vantage. ## Revert to previous versions Advanced Designer does not have a dedicated feature for downgrading a derived skill. If you need to revert to an old version, choose the path that matches your current state: | Situation | Action | | :---------------- | :------------------------------------------------------------------------------------------------------------------- | | Not yet published | Discard the changes — they're never persisted. | | Already published | Delete the latest version. This removes every change in the last published version, including the base-skill update. | ## What changes when you update An updated derived skill receives: * New activities added to the base skill * Fields and rules updated to match the base skill * Any custom fields and rules you added are preserved For more details on the changes that occur, see [Update a derived skill](/vantage/documentation/skill-catalog/derived-skills/update) in the Skill Catalog. A new base-skill version may offer the same functionality you obtained by customizing the derived skill. Try removing your customizations to see if the new version performs better without them — you can always revert if it doesn't. ## Related topics * [Derived skills in Advanced Designer](/vantage/documentation/advanced-designer/document-skills/derived) * [Create a derived skill in Advanced Designer](/vantage/documentation/advanced-designer/document-skills/derived-create) * [Configure a derived skill in Advanced Designer](/vantage/documentation/advanced-designer/document-skills/derived-configure) # Document skills in Advanced Designer Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/document-skills/document-skills Build Document skills in Advanced Designer for structured, semi-structured, and unstructured documents — with notes on variants and training data. A **Document skill** extracts field values from one type of document. You can build Document skills in either ABBYY Vantage (cloud) or Advanced Designer (Windows desktop). Use Advanced Designer when you need to combine multiple Vantage technologies, add NLP, or branch the processing flow on document type — see [Use cases](/vantage/documentation/advanced-designer/use-cases/use-cases) for typical scenarios. For background on document categories, see [Extract data from documents in Advanced Designer](/vantage/documentation/advanced-designer/use-cases/extracting-from-docs). ## Document type variants Documents of the same type usually share the same fields, validation rules, and structure, but variants differ in small ways — for example, by the year a tax form was issued. One Document skill can be trained on multiple variants. The technology you choose depends on how many variants you need to handle: | Variants | Best fit | | :----------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Up to \~10 (fixed forms) | [Forms activity](/vantage/documentation/advanced-designer/activities/forms/forms-activity) — see [Process structured documents in Advanced Designer](/vantage/documentation/advanced-designer/use-cases/process-structured). | | Most essential variants | [Fast Learning](/vantage/documentation/advanced-designer/activities/fast-learning) and/or [Extraction Rules](/vantage/documentation/advanced-designer/activities/extraction-rules/extraction-rules) activities. | | Hundreds | [Online Learning](/vantage/documentation/runtime/online-learning/online-learning) in Vantage refines the skill from manual-review feedback. | | Thousands | [Deep Learning activity](/vantage/documentation/advanced-designer/activities/deep-learning-semi-structured) extracts with \~80–90% accuracy depending on document complexity. | If a fixed form has many more than \~10 variants, treat each as a separate document type. ## Training and testing a Document skill For best results, train and test the skill with three different document sets: * **Training set** — used to train the skill. * **Test set** — used to measure accuracy during development. * **Blind set** — an additional test set the skill has never seen, used to evaluate true generalization. Use different documents in each set. Reusing training documents in the test set inflates accuracy estimates. ### Training set Aim for a representative set with 2–3 documents per variant. If you can't cover every variant, the [Deep Learning activity](/vantage/documentation/advanced-designer/activities/deep-learning-semi-structured) generalizes from image patterns and surrounding labels, so it can process variants it wasn't explicitly trained on. Recommended document counts depend on the activities you use: | Activity | High-variability documents | Low-variability documents | | :------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------- | :---------------------------------------- | | [Deep Learning for semi-structured documents](/vantage/documentation/advanced-designer/activities/deep-learning-semi-structured) | At least 200–300 (2–3 per variant) | At least 10 (2–3 per variant) | | [Segmentation](/vantage/documentation/advanced-designer/activities/segmentation/segmentation-activity) | At least 100 | At least 20 | | [Deep Learning for NLP](/vantage/documentation/advanced-designer/activities/deep-learning-nlp) | At least 150 (2–3 per variant) | Can start with 1; aim for 2–3 per variant | Even if you can't hit the recommended counts, one document per variant is better than none. ### Test set Match the test-set distribution to your production document flow so the accuracy estimate is meaningful. For example, if invoices from one vendor make up 30% of production traffic, the test set should contain about 30% of that vendor's invoices. The simplest way to hit this ratio is to test against random samples of production documents. ### Blind set Use documents the skill has never seen during training or testing. The blind-set results are your best estimate of real-world quality. ## Configuring a Document skill After you create a Document skill on the start page, configure it in this order: Click the settings button next to the skill name to view and adjust [skill settings](/vantage/documentation/advanced-designer/document-skills/skill-settings). On the **Documents** tab, [upload the documents](/vantage/documentation/advanced-designer/document-skills/documents) the skill will work with. On the **Fields** tab, [create the fields](/vantage/documentation/advanced-designer/document-skills/fields) you want to extract and label their locations on sample documents. On the **Activities** tab, [build the document processing flow](/vantage/documentation/advanced-designer/document-skills/activities). On the **Results** tab, [test the skill](/vantage/documentation/advanced-designer/document-skills/results) on sample documents and review extraction quality. On the **Publish** tab, [publish the skill](/vantage/documentation/advanced-designer/document-skills/publish) to make it available in the [Skill Catalog](/vantage/documentation/skill-catalog/skill-catalog) in ABBYY Vantage. After publishing, your skill appears alongside built-in skills, read-only skills, and any [derived skills](/vantage/documentation/advanced-designer/document-skills/derived) in the Skill Catalog. ## Next steps Configure recognition, training, and processing options. Choose and combine activities for the processing flow. Build a new skill on top of a built-in or read-only Vantage skill. See worked scenarios for common document types. # Documents tab in Document skills Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/document-skills/documents Upload, organize, and manage document sets to train and test Document skills in Advanced Designer. The **Documents** tab shows every document used to set up, train, and test a [Document skill](/vantage/documentation/advanced-designer/document-skills/document-skills) and its activities. When the **Documents** tab loads, a notification appears: **"*N* documents being copied…"** When copying finishes, the message updates to **"*N* documents copied"** and shows how long the operation took. The same message also appears in the notifications panel. *N* counts every document being copied — including demo documents added on the [**Publish** tab](/vantage/documentation/advanced-designer/document-skills/publish) — so it can be larger than the total across all document sets. ## Document sets Documents are organized into sets. Each skill has an **All Documents** set, created by default, that contains every uploaded document. You can also create custom sets to use in individual activities or to test a skill. A custom set is always a subset of **All Documents**, and a single document can belong to multiple custom sets. When a new activity is created, it uses **All Documents** by default. Custom sets are useful when a skill needs different extraction rules for different document variants — see [Classify By Text and Image activity](/vantage/documentation/advanced-designer/activities/classify-by-text-and-image). The tab name reflects the active set. With **All Documents** selected, it reads **All Documents**. With a custom set selected, it reads `Documents: `. ### Create a custom document set On the skill, switch to the **Documents** tab. Click the add button in the list of document sets. Provide a name for the custom set. Add the documents you want the set to contain. The new set appears alongside **All Documents** and can be edited at any time. ## Test sets You can create a document set used only for testing — for example, a balanced set of documents from one client. A test set isn't linked to any activity. ### Create a test set On the **Documents** tab, click the add button in the list of document sets. If the documents you want are already uploaded, select them and choose **Create Set from Selection** on the shortcut menu. Provide a name that identifies the set's purpose. Select the set, and then choose **Test Skill Using This Set** on the shortcut menu. To test against an ad-hoc selection instead, choose **Test Skill** on the shortcut menu of one or more selected documents. Test sets are also selectable when labeling documents and when reviewing test results. When you edit a skill that was created in Vantage, its document set also appears on the **Documents** tab. ## Upload and process documents You can upload documents at any point by returning to the **Documents** tab. If the skill has a processing flow on the [Activities](/vantage/documentation/advanced-designer/document-skills/activities) tab, new uploads are processed automatically. Once processing completes, predicted labeling appears on the [Fields](/vantage/documentation/advanced-designer/document-skills/fields) tab, and reference labeling is generated from the predicted values. Uploads inside an activity editor also trigger processing. Auto-generated reference labeling is **unconfirmed** until you copy predicted labeling to reference using the corresponding option on the documents' shortcut menu. Documents with unconfirmed labeling can't be used for training and are excluded from test results. To confirm labeling, review it on the **Fields** tab. ## View options * **List View** — shows documents as a list with the upload date, the sets each document belongs to, and labeling status (in the **Reference Fields** column). For more on labeling, see [Fields](/vantage/documentation/advanced-designer/document-skills/fields). * **Thumbnail View** — shows documents as thumbnails. To preview a thumbnail at full size, use the preview button. Rotate the page from the preview window using the more options menu. ## Toolbar commands Use the toolbar to edit the active document set. | Command | What it does | | :--------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **Upload** | Upload documents to the selected set. Each upload is also added to **All Documents**. You can also drag documents in from File Explorer. | | **Import Labeled Documents From Folder** (in the **Upload** drop-down) | Upload labeled documents to **All Documents**. Source folders can be exported from a training set, from manually reviewed processing results, or from ABBYY FlexiCapture — see [Importing labeled documents from a folder](/vantage/documentation/advanced-designer/labeling/labeling). | | **Divide Set** | Split one set into two by ratio, producing separate training and testing collections. Each activity can then point at a specific set. | | **Add from Set** | Add to the current set every document from another set that isn't already in the current set. | | **Add to Set** | Add the selected documents to a different set. Disabled when the skill has only one set. | | **Delete** | Delete the selected documents from the current set, or from every set. From **All Documents**, deletion always applies to every set. | | **Rotate** | Change the orientation of the selected pages: **Rotate All Pages Left**, **Rotate All Pages Right**, or **Rotate All Pages 180°**. | Sets that have fewer than 10 documents cannot be divided. ## Limits Don't upload more than 10,000 documents to a single skill — beyond that, the skill may become unstable. ## Related topics * [Fields tab](/vantage/documentation/advanced-designer/document-skills/fields) * [Activities tab](/vantage/documentation/advanced-designer/document-skills/activities) * [Results tab](/vantage/documentation/advanced-designer/document-skills/results) * [Label documents in Advanced Designer](/vantage/documentation/advanced-designer/labeling/labeling) # Fields tab Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/document-skills/fields Create skill fields, label documents, view predicted labeling, and configure validation rules on the Fields tab in Advanced Designer. On the **Fields** tab, you create skill fields and label documents for a [Document skill](/vantage/documentation/advanced-designer/document-skills/document-skills). The tab has two sections: **Reference**, where you label the correct fields and their locations, and **Predicted**, where the skill's own labeling appears after it runs. Trainable activities like Segmentation and Deep Learning need labeled documents to train. Advanced Designer also compares reference labeling to extraction results when measuring skill quality, so labeling drives both training and testing. ## Edit skills created in Vantage When you edit a skill that was created and labeled in Vantage, its final field structure and labeling appear unchanged in the **Fields** tab. You can refine that labeling, add fields, or change the data form here without losing the work done in Vantage. ## Create skills in Advanced Designer For a skill you build in Advanced Designer, label your documents after uploading them: define every field to extract and mark its location on the image in the **Reference** section. To add a field, click **Add Field** on the toolbar; the field appears on the data form, ready for you to mark its location on the document image. Follow the [labeling guidelines](/vantage/documentation/advanced-designer/labeling/labeling). You can rearrange and resize fields on the data form at any time — see [Editing data form layout](/vantage/documentation/skill-designer/document/adding-fields/editing-data-form-layout). Switch document sets from the drop-down next to the set name. The shortcut menu lets you modify the active set. ## Predicted labeling After a skill runs, the **Predicted** section shows its labeling output. To turn predictions into reference labeling, select the documents and choose **Copy Predicted Labeling to Reference** on the shortcut menu. The same command is available in the activity editors and on the [**Documents**](/vantage/documentation/advanced-designer/document-skills/documents) tab. ## Validation rules Add business-logic rules that compare field values, trigger on field changes, or update other fields. Rules behave the same as in Vantage — see [Rule verification](/vantage/documentation/skill-designer/document/rule-verification/rule-verification). Configure them in the **Reference** section of the **Fields** tab. ### Add a rule Click the **New Rule** button. The dialog that opens lists every existing Vantage rule. Choose the rule type and the fields it should check. To edit or delete a rule, click the more options button next to it. Rules created in Advanced Designer and Vantage are kept in sync. If a skill has local-folder synchronization enabled, rules sync there too. Rules apply to both predicted and reference labeling. ## Related topics * [Label documents in Advanced Designer](/vantage/documentation/advanced-designer/labeling/labeling) * [Documents tab in Document skills](/vantage/documentation/advanced-designer/document-skills/documents) * [Activities tab](/vantage/documentation/advanced-designer/document-skills/activities) # Publish tab Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/document-skills/publish Publish a Document skill to the Skill Catalog and control derived-skill training from the Publish tab in Advanced Designer. To publish a Document skill, use its **Publish** tab. Once published, the skill is immediately available in ABBYY Vantage and receives a version number. You can also publish a skill from the **Skill Catalog** on the start page. For the broader publishing workflow shared with the Skill Catalog, see [Publish a skill](/vantage/documentation/skill-catalog/publish-skill). ## Publishing options When publishing a skill, you are asked whether additional training is allowed for [derived skills](/vantage/documentation/advanced-designer/document-skills/derived) created from this skill. Turn off the **Allow training of derived skills** toggle if you don't want to allow additional training for derived skills. ## Best practices * If you used a large document set for training, delete the documents before publishing. * Confirm labeling on the [**Fields**](/vantage/documentation/advanced-designer/document-skills/fields) tab and review extraction quality on the [**Results**](/vantage/documentation/advanced-designer/document-skills/results) tab before publishing — published skills should reflect verified labeling and acceptable accuracy. ## Related topics * [Documents tab in Document skills](/vantage/documentation/advanced-designer/document-skills/documents) * [Publish a skill](/vantage/documentation/skill-catalog/publish-skill) * [Derived skills in Advanced Designer](/vantage/documentation/advanced-designer/document-skills/derived) # Results tab Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/document-skills/results View field extraction statistics, accuracy metrics, and per-activity results to evaluate and improve your Document skill quality. The **Results** tab shows field extraction statistics for a skill. Analyzing these statistics helps you understand where extraction quality can be improved. Before publishing a skill, check the field extraction quality to confirm the skill is set up correctly. To test a skill, click **Test Skill** — Advanced Designer compares the reference labeling with the extraction results. The **Fields** column lists every field the skill extracts. Fields belonging to a group appear under a collapsed drop-down named after the group. Documents with unconfirmed labeling are excluded from test results. Reference labeling generated automatically from predicted labeling is unconfirmed until you copy predicted labeling to reference using the **Copy Predicted Labeling to Reference** shortcut menu command. Check the labeling status on the **Documents** tab; confirm labeling on the **Fields** tab. Results tab showing field extraction statistics for a Document skill ## Field extraction statistics The following statistics are available per field and aggregated in the **ALL FIELDS** row: | Column | Description | | :------------------------- | :----------------------------------------------------------------------------------------------------------------- | | **Accuracy** | Percentage of correctly extracted values. | | **Correct** | Number of field instances whose extracted value matched the reference value. | | **Recognition Issues** | Number of field instances detected in the document but not recognized correctly. | | **Located Incorrectly** | Number of field instances whose regions were detected in locations different from those specified in the labeling. | | **Not Detected** | Number of undetected field instances. | | **Frequency in Documents** | Percentage of documents containing the field. | Accuracy is calculated as: ``` Accuracy = Correct / (Correct + Recognition Issues + Located Incorrectly + Not Detected) ``` For the **ALL FIELDS** row, the denominator aggregates across all fields. By default, these statistics display for all fields. To hide fields and view statistics for a subset only, click the filter icon at the top of the **Fields** column and select the fields you want. ## Comparison mode Click any value in the **Correct**, **Recognition Issues**, **Located Incorrectly**, or **Not Detected** column to switch to comparison mode, which displays the reference and predicted labeling side by side on the document image. This helps you spot errors in reference labeling and identify problem fields that may need the activity reconfigured. ## Activity-specific statistics Field extraction statistics are also available for individual activities on the **Results** tab in the Activity Editor. Activity statistics cover only the fields extracted by that activity. Use them to evaluate whether each activity is set up correctly and improve overall extraction quality. ## Related topics * [Documents tab in Document skills](/vantage/documentation/advanced-designer/document-skills/documents) * [Fields tab](/vantage/documentation/advanced-designer/document-skills/fields) * [Activities tab](/vantage/documentation/advanced-designer/document-skills/activities) # Configure Document skill parameters Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/document-skills/skill-params Configure Document skill parameters in Advanced Designer to connect data catalogs, set text values, or toggle Boolean flags without retraining. Skill parameters let you adjust a Document skill's behavior — connect data catalogs, supply text values for regular expressions, or toggle Boolean flags — **without retraining and republishing the skill**. You can use parameters in: * [Classify By Company](/vantage/documentation/advanced-designer/activities/classify-by-company) activities, for accessing data catalogs, writing regular expressions, and supplying keywords to improve search accuracy. * [Extraction Rules](/vantage/documentation/advanced-designer/activities/extraction-rules/extraction-rules) activities, for the same data catalog, regular expression, and other in-activity options. Parameters can be created and edited in either Advanced Designer or Vantage. Their values can also be overridden per transaction via the Vantage API. For broader background, see [Skill parameters](/vantage/documentation/skill-designer/skill-parameters/skill-parameters). ## Use cases The examples below use built-in Document skills. ### Process invoices from different customers using each customer's data catalog To run the same built-in [Invoice skill](/vantage/documentation/skill-catalog/built-in-skills/invoice-skills/invoice-overview) against multiple customers, route the right data catalog into each transaction with a parameter. Built-in skills like Invoice ship with **default parameters** that point at the data catalogs they use — pass a different catalog per transaction via the Vantage API. ### Restrict country and expense-type detection in the Receipt skill To process retail receipts from one country only, use the [Receipt skill](/vantage/documentation/skill-catalog/built-in-skills/receipt-skills/receipt-overview) default parameters. For example, set country to `DE` and expense type to `GeneralRetail` to process German receipts only — the **Country** and **Expense Type** fields are pinned, and processing runs faster. ## Skill parameter types | Type | Description | | :--------------- | :------------------------------------------------------------------------------- | | **Data Catalog** | A connection string to a data catalog on the Vantage server you're connected to. | | **Text** | A string value (raw or a regular expression). | | **Boolean** | `Yes` or `No`. | ## Edit or create a parameter Click the settings button next to the skill's name. Switch to the **Parameters** tab. To edit a parameter, select it and change its value. To add a new parameter, click **Add Parameter** and: * Choose a parameter type. * Provide a name (or accept the default). Names must be 256 characters or fewer. * Set a value: * **Data Catalog** — pick a data catalog from the drop-down. * **Text** — enter a string or a regular expression. * **Boolean** — choose **Yes** or **No**. * Optionally add a description. Click **Save**. The parameter is now usable in any compatible activity. A skill can have up to 100 parameters. ## Related topics * [Document skill settings in Advanced Designer](/vantage/documentation/advanced-designer/document-skills/skill-settings) * [Activities tab](/vantage/documentation/advanced-designer/document-skills/activities) * [Skill parameters](/vantage/documentation/skill-designer/skill-parameters/skill-parameters) # Document skill settings in Advanced Designer Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/document-skills/skill-settings Configure a Document skill's General, OCR, Fields, Rules, and Parameters tabs in Advanced Designer — including Technology Core and derived skills. To open a Document skill's settings, click the settings button next to the skill name. The dialog has five tabs. ## General * Skill name and description. * [Technology Core](/vantage/documentation/advanced-designer/upgrading-to-new-version) version. * Base skill name and version (for [derived skills](/vantage/documentation/advanced-designer/document-skills/derived)). ## OCR Languages * **Recognition languages** — the default set is English, French, German, and Spanish. Languages enabled here apply only to documents uploaded after the change. * **Handwritten text recognition** — enabled by default. Available for the languages listed in the product specifications. For skills built on FlexiLayouts, the option is also limited to the languages declared when the FlexiLayout was created, and one of those languages must be active in the recognition list. In a derived skill, you cannot add new recognition languages or enable handwritten text recognition if either is disabled on the base skill. See [Configure text recognition](/vantage/documentation/advanced-designer/document-skills/derived-configure#configure-text-recognition). ## Fields A list of every field used in the skill, including inherited and custom fields. The hierarchy mirrors the data form. Use this tab to confirm which fields the skill exposes before configuring extraction. ## Rules A list of every rule used in the skill, including inherited and custom rules. Use this tab to review the validation logic that runs against extracted values. ## Parameters Skill parameters expose tuning knobs that adjust skill behavior without retraining — see [Configure Document skill parameters](/vantage/documentation/advanced-designer/document-skills/skill-params). # Document Splitter skills in Advanced Designer Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/document-splitter/splitter Build Document Splitter skills in Advanced Designer to split page streams into separate documents using Splitter Script with Classify and Extraction Rules. A **Document Splitter skill** splits a PDF (or a stream of pages from multiple files) into separate documents. The skill's [Splitter Script activity](/vantage/documentation/advanced-designer/activities/splitter-script/splitter-script) decides whether each page is the first page of a new document, based on the type and the data the page carries. Unlike [Document skills](/vantage/documentation/advanced-designer/document-skills/document-skills), Document Splitter skills can only be created and edited in Advanced Designer. ## When to use a Document Splitter skill Use a Document Splitter skill to: * Assemble pages into documents. * Separate annexes from primary documents. * Determine each document's type while splitting. * Reorder pages and remove blank or garbage pages. For worked scenarios, see [Split pages into separate documents in Advanced Designer](/vantage/documentation/advanced-designer/use-cases/splitting-pages). ## Configure a Document Splitter skill After you create a Document Splitter skill on the start page, configure it in this order: Click the settings button next to the skill name to view and adjust [Document Splitter skill settings](/vantage/documentation/advanced-designer/document-splitter/splitter-setup). On the **Documents** tab, [upload the documents](/vantage/documentation/advanced-designer/document-splitter/splitter-documents) the skill will work with. On the **Activities** tab, [build the document processing flow](/vantage/documentation/advanced-designer/document-splitter/splitter-activities), ending with a Splitter Script activity. Define the rules that turn the flow of pages into a set of documents — including which page numbers belong to each document. See [Splitter Script activity](/vantage/documentation/advanced-designer/activities/splitter-script/splitter-script). On the **Documents** tab, choose **Test Skill** for selected documents, or **Test Skill Using This Set** for a [test set](/vantage/documentation/advanced-designer/document-splitter/splitter-documents), and check how the skill splits and labels the page stream before you publish. On the **Publish** tab, [publish the skill](/vantage/documentation/advanced-designer/document-splitter/splitter-publish) to make it available in the [Skill Catalog](/vantage/documentation/skill-catalog/skill-catalog) in ABBYY Vantage. To adjust the skill's behavior without retraining and republishing — connect data catalogs, supply values for regular expressions, or toggle Boolean flags — configure [skill parameters](/vantage/documentation/advanced-designer/document-splitter/splitter-params). ## Use a Document Splitter skill A published Document Splitter skill is consumed by the [Assemble activity](/vantage/documentation/skill-designer/process/assemble-activity) of a [Process skill](/vantage/documentation/skill-designer/process/process-skill) in ABBYY Vantage. In the Process skill flow, the **Assemble** activity invokes the published splitter to break the incoming page stream into separate documents before downstream activities run. ## Next steps Worked scenarios for the four splitter patterns. Reference for the script that defines document boundaries. Configure the upstream classification and extraction activities. Plug a published Document Splitter skill into a Process skill. # Document Splitter activities Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/document-splitter/splitter-activities Build a Document Splitter skill's processing flow — chain Classify, Extraction Rules, NLP, and Customize activities ending with a Splitter Script activity. The **Activities** tab is where you build the document processing flow for a Document Splitter skill. Chain activities to determine the order of operations on each page. ## Splitter Script activity (required) Every Document Splitter skill ends with a mandatory [Splitter Script activity](/vantage/documentation/advanced-designer/activities/splitter-script/splitter-script). The script decides which pages start a new document, based on data extracted by upstream activities. ## Available upstream activities Add any of the following between **Start** and the Splitter Script activity: * [Classify activities](/vantage/documentation/advanced-designer/activities/activities#classify) * [Extract from semi-structured](/vantage/documentation/advanced-designer/activities/activities#extract-from-semi-structured) * [Extract from text (NLP)](/vantage/documentation/advanced-designer/activities/activities#extract-from-text-nlp) * [Customize activities](/vantage/documentation/advanced-designer/activities/activities#customize) ## Conditional branching The IF activity lets you branch the flow based on a condition. You can also implicitly fork the flow by creating a workflow item that contains several [Extraction Rules activities](/vantage/documentation/advanced-designer/activities/extraction-rules/extraction-rules) and mapping each to a value of a chosen field. ## Related topics * [Splitter Script activity](/vantage/documentation/advanced-designer/activities/splitter-script/splitter-script) * [Activities in Advanced Designer](/vantage/documentation/advanced-designer/activities/activities) * [Documents tab in Document Splitter skills](/vantage/documentation/advanced-designer/document-splitter/splitter-documents) # Documents tab in Document Splitter skills Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/document-splitter/splitter-documents Manage documents in a Document Splitter skill — upload, organize into sets, label, and configure documents for training and testing. The **Documents** tab lists every document a Document Splitter skill uses for setup, training, and testing. From here you can upload files, organize them into sets, label them, and run tests against specific subsets. ## Document sets Documents are organized into **document sets**. Every skill has an **All Documents** set (created automatically) that contains every uploaded document. You can also create custom sets — each is a subset of **All Documents**, and a single document can belong to multiple custom sets. When you create a new activity, it uses **All Documents** by default. Custom sets are useful when one skill applies different rules to different document variants — see the [Classify By Text and Image activity](/vantage/documentation/advanced-designer/activities/classify-by-text-and-image). The **Documents** tab title reflects the current selection: it reads **All Documents** for the default set, or `Documents: ` for a custom set. ### Create a custom document set On the skill, switch to the **Documents** tab. Click the add button in the list of document sets. Provide a name for the custom set. Add the documents you want the set to contain. The new set appears alongside **All Documents** and can be edited at any time. ## Test sets You can also create a custom set strictly for testing — for example, a balanced set of documents from a specific client. A test set isn't linked to any activity. ### Create a test set On the **Documents** tab, click the add button in the list of document sets. If the documents you want are already uploaded, select them and choose **Create Set from Selection** on the shortcut menu. Provide a name that identifies the set's purpose. Select the set, and then choose **Test Skill Using This Set** on the shortcut menu. To test against an ad-hoc selection instead, choose **Test Skill** on the shortcut menu of one or more selected documents. When editing a skill that was created in Vantage, that skill's document set also appears here. ## Document processing You can upload documents at any point. Any new upload is processed immediately by the current flow on the [Activities](/vantage/documentation/advanced-designer/document-splitter/splitter-activities) tab. After processing, the predicted labeling appears on the **Fields** tab, and reference labeling is generated automatically from it. Reference labeling generated this way is **unconfirmed** until you copy predicted labeling to reference (shortcut menu on the document). Documents with unconfirmed labeling cannot be used for training and are excluded from test results. To confirm labeling, review the document on the **Fields** tab. ## View options * **List view** — shows documents as a list with upload date, the sets each document is in, and a **Reference Fields** column showing whether the document is labeled. * **Thumbnail view** — shows documents as thumbnails. Use the preview button for the full image; rotate from the more menu. ## Toolbar commands | Command | What it does | | :--------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | **Upload** | Upload documents to the selected set. Each upload is also added to **All Documents**. You can also drag files in from File Explorer. | | **Import Labeled Documents From Folder** (in the **Upload** drop-down) | Upload pre-labeled documents to **All Documents**. The source folder can come from a skill's training set, manually reviewed transactions, or ABBYY FlexiCapture. For details, see [Importing labeled documents from a folder](/vantage/documentation/advanced-designer/labeling/labeling). | | **Divide Set** | Split one set into two by ratio — for example, to create separate training and testing collections. | | **Add from Set** | Add to the current set every document from another set that isn't already in the current set. | | **Add to Set** | Add the selected documents to a different set. Disabled when the skill has only one set. | | **Delete** | Delete the selected documents from the current set, or from every set. From within **All Documents**, deletion always removes from every set. | | **Rotate** | Change the orientation of the selected pages: rotate 90° left, 90° right, or 180°. | A set with fewer than 10 documents cannot be divided. ## Limits Don't upload more than 10,000 documents to a single skill — beyond that, the skill may become unstable. ## Related topics * [Document Splitter activities](/vantage/documentation/advanced-designer/document-splitter/splitter-activities) * [Label documents in Advanced Designer](/vantage/documentation/advanced-designer/labeling/labeling) * [Document Splitter skill settings in Advanced Designer](/vantage/documentation/advanced-designer/document-splitter/splitter-setup) # Configure Document Splitter skill parameters Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/document-splitter/splitter-params Configure Document Splitter skill parameters to connect data catalogs, set text values, or toggle Boolean flags without retraining. Skill parameters let you adjust a Document Splitter skill's behavior — connect data catalogs, supply text values for regular expressions, or toggle Boolean flags — **without retraining and republishing the skill**. You can use parameters in: * [Classify By Company](/vantage/documentation/advanced-designer/activities/classify-by-company) activities, for accessing data catalogs, writing regular expressions, and supplying keywords to improve search accuracy. * [Extraction Rules](/vantage/documentation/advanced-designer/activities/extraction-rules/extraction-rules) activities, for the same data catalog, regular expression, and other in-activity options. Parameters can be created and edited in either Advanced Designer or Vantage. Their values can also be overridden per transaction via the Vantage API. For broader background, see [Skill parameters](/vantage/documentation/skill-designer/skill-parameters/skill-parameters). ## Use cases The examples below use built-in Document skills, but the mechanics apply equally to Document Splitter skills. ### Process invoices from different customers using each customer's data catalog To run the same built-in [Invoice skill](/vantage/documentation/skill-catalog/built-in-skills/invoice-skills/invoice) against multiple customers, route the right data catalog into each transaction with a parameter. Built-in skills like Invoice ship with **default parameters** that point at the data catalogs they use — pass a different catalog per transaction via the Vantage API. ### Restrict country and expense-type detection in the Receipt skill To process retail receipts from one country only, use the [Receipt skill](/vantage/documentation/skill-catalog/built-in-skills/receipt-skills/receipt) default parameters. For example, set country to `DE` and expense type to `GeneralRetail` to process German receipts only — the **Country** and **Expense Type** fields are pinned, and processing runs faster. ## Skill parameter types | Type | Description | | :--------------- | :------------------------------------------------------------------------------- | | **Data Catalog** | A connection string to a data catalog on the Vantage server you're connected to. | | **Text** | A string value (raw or a regular expression). | | **Boolean** | `Yes` or `No`. | ## Edit or create a parameter Click the settings button next to the skill's name. Switch to the **Parameters** tab. To edit a parameter, select it and change its value. To add a new parameter, click **Add Parameter** and: * Choose a parameter type. * Provide a name (or accept the default). Names must be 256 characters or fewer. * Set a value: * **Data Catalog** — pick a data catalog from the drop-down. * **Text** — enter a string or a regular expression. * **Boolean** — choose **Yes** or **No**. * Optionally add a description. Click **Save**. The parameter is now usable in any compatible activity. A skill can have up to 100 parameters. ## Related topics * [Document Splitter skill settings in Advanced Designer](/vantage/documentation/advanced-designer/document-splitter/splitter-setup) * [Document Splitter activities](/vantage/documentation/advanced-designer/document-splitter/splitter-activities) * [Skill parameters](/vantage/documentation/skill-designer/skill-parameters/skill-parameters) # Publish a Document Splitter skill Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/document-splitter/splitter-publish Publish a Document Splitter skill from the Publish tab or the Skill Catalog so it can be used by the Assemble activity of a Process skill in ABBYY Vantage. To publish a Document Splitter skill, open the skill's **Publish** tab — or, on the start page, select the skill in the [Skill Catalog](/vantage/documentation/skill-catalog/skill-catalog) and publish from there. Once published, the skill is immediately available in ABBYY Vantage and can be consumed by the [Assemble activity](/vantage/documentation/skill-designer/process/assemble-activity) of a [Process skill](/vantage/documentation/skill-designer/process/process-skill). ## Allow or disallow derived-skill training When you publish, you'll be asked whether additional training is allowed for [derived skills](/vantage/documentation/advanced-designer/document-skills/derived) created from this skill. Turn off **Allow training of derived skills** to disallow it. If you trained the skill with a large document set, delete those documents before publishing — published skills don't need the training set, and dropping it keeps the published artifact lean. ## Related topics * [Manage skill versions in Advanced Designer](/vantage/documentation/advanced-designer/skill-versions) * [Assemble activity](/vantage/documentation/skill-designer/process/assemble-activity) * [Document Splitter skills in Advanced Designer](/vantage/documentation/advanced-designer/document-splitter/splitter) # Document Splitter skill settings in Advanced Designer Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/document-splitter/splitter-setup Configure a Document Splitter skill's General, OCR, Fields, Rules, and Parameters tabs in Advanced Designer — including Technology Core and derived skills. To open a Document Splitter skill's settings, click the settings button next to the skill name. The dialog has five tabs. ## General * Skill name and description. * [Technology Core](/vantage/documentation/advanced-designer/upgrading-to-new-version) version. * Base skill name and version (for [derived skills](/vantage/documentation/advanced-designer/document-skills/derived)). ## OCR Languages * **Recognition languages** — the default set is English, French, German, and Spanish. Languages enabled here apply only to documents uploaded after the change. * **Handwritten text recognition** — enabled by default. Available for the languages listed in the product specifications. For skills built on FlexiLayouts, the option is also limited to the languages declared when the FlexiLayout was created, and one of those languages must be active in the recognition list. In a derived skill, you cannot add new recognition languages or enable handwritten text recognition if either is disabled on the base skill. See [Configure text recognition](/vantage/documentation/advanced-designer/document-skills/derived-configure#configure-text-recognition). ## Fields A list of every field used in the skill, including inherited and custom fields. The hierarchy mirrors the data form. Use this tab to confirm which fields the splitter exposes before configuring the [Splitter Script activity](/vantage/documentation/advanced-designer/activities/splitter-script/splitter-script). ## Rules A list of every rule used in the skill, including inherited and custom rules. Use this tab to review the validation logic that runs against the splitter's extracted values. ## Parameters Skill parameters expose tuning knobs that adjust splitter behavior without retraining — see [Configure Document Splitter skill parameters](/vantage/documentation/advanced-designer/document-splitter/splitter-params). ## Related topics * [Configure Document Splitter skill parameters](/vantage/documentation/advanced-designer/document-splitter/splitter-params) * [Document Splitter activities](/vantage/documentation/advanced-designer/document-splitter/splitter-activities) * [Upgrade Advanced Designer Skill Technology Core](/vantage/documentation/advanced-designer/upgrading-to-new-version) # Getting started with Advanced Designer Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/getting-started First steps after installing ABBYY Vantage Advanced Designer — connect to a Vantage server, create or open a skill, and start the tutorial. After you install and launch ABBYY Vantage Advanced Designer, the **start page** opens. From here you connect to a Vantage server, create a new skill, or open an existing skill from the **Skill Catalog**. New to Advanced Designer? Walk through the [tutorial](/vantage/documentation/advanced-designer/tutorial/tutorial) to build your first Document skill end to end. ## First-launch flow The Skill Catalog you see depends on the server you connect to. See [Install and run Advanced Designer](/vantage/documentation/advanced-designer/install-and-run) for sign-in steps. Use one of the **Create...** buttons on the start page, or double-click an existing skill in the **Skill Catalog** or **Recent Skills**. ## Create a new skill The start page provides four ways to create a skill. The same options are available from the main menu. | Button | What it does | | :------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------ | | **Create Document Skill** | Create a new Document skill from scratch. | | **Create Document Splitter Skill** | Create a new Document Splitter skill. Document Splitter skills can only be created in Advanced Designer. | | **Create Skill from Local Folder** | Create a Document skill or Document Splitter skill from a [locally stored skill](/vantage/documentation/advanced-designer/storing-locally). | | **Create Document Skill from ABBYY FlexiLayout Project** | Build a Document skill on top of an existing FlexiLayout project. | The new skill appears immediately in the **Skill Catalog**. It becomes usable in Vantage once you [publish](/vantage/documentation/advanced-designer/document-skills/publish) it. ## Open an existing skill To open an existing skill, double-click it in the **Skill Catalog** or **Recent Skills**. * **Skill Catalog** — every Document and Document Splitter skill on the Vantage server you're currently connected to. * **Recent Skills** — recently edited skills, including those on other Vantage servers. Selecting a skill from a different server prompts you to sign in. To remove an entry, right-click and choose **Remove from Recent**; this does not delete the skill from the **Skill Catalog**. Both lists show name, version, description, current editor, server (Recent Skills only), and last-modified date. A skill receives a version number only after it has been published. ## Editable copies Unpublished changes are stored in an **editable copy** of the skill. An editable copy exists from the moment you create or first open a skill for editing until you publish it; once published, the editable copy is deleted. Each skill can have only one editable copy. While Advanced Designer is copying documents from the published version into a new editable copy, training, testing, and publishing are temporarily unavailable. Copy progress appears on the [**Documents** tab](/vantage/documentation/advanced-designer/document-skills/documents). ## Manage skills from the start page You can import, export, duplicate, delete, publish, and discard pending changes for a skill directly from the **Skill Catalog** on the start page. These actions use the same workflows as the Vantage Skill Catalog. * [Import a skill](/vantage/documentation/skill-catalog/import-skill) * [Export a skill](/vantage/documentation/skill-catalog/export-skill) * [Duplicate a skill](/vantage/documentation/skill-catalog/duplicate-skill) * [Publish a skill](/vantage/documentation/skill-catalog/publish-skill) * [Delete a skill](/vantage/documentation/skill-catalog/delete-skill) Skills exported from Advanced Designer can be imported into Vantage, and vice versa. When you import an Advanced Designer skill into Vantage, only the data form is editable; the rest of the skill data is preserved and becomes available again if you re-import the skill into Advanced Designer. ## Return to the start page Select **Go to Start Page** from the main menu at any time. **Close Skill** also returns you to the start page and closes any open skill — you can reopen it from **Recent Skills**. ## Related topics * [Advanced Designer tutorial](/vantage/documentation/advanced-designer/tutorial/tutorial) * [Document skills in Advanced Designer](/vantage/documentation/advanced-designer/document-skills/document-skills) * [Document Splitter skills in Advanced Designer](/vantage/documentation/advanced-designer/document-splitter/splitter) * [Manage skill versions in Advanced Designer](/vantage/documentation/advanced-designer/skill-versions) # Install and run Advanced Designer Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/install-and-run Download, install, log in, manage connections, and update ABBYY Vantage Advanced Designer on Windows — including running multiple versions side by side. Install Advanced Designer on a Windows machine, and then connect it to your ABBYY Vantage tenant. Any user can install Advanced Designer; some [additional installation options](/vantage/documentation/advanced-designer/additional-install) require administrative permissions. For hardware and OS requirements, see [System requirements](/vantage/documentation/advanced-designer/system-reqs). ## Install Advanced Designer Download the latest version of Advanced Designer from [the Vantage download page](https://vantage-us.abbyy.com/ad/latest), which also lists the version, build number, and release date. Open the downloaded file and follow the prompts to complete the installation. Open Advanced Designer and sign in with the same login and password you use for ABBYY Vantage. ## Manage connections | Task | How | | :-------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------- | | Connect to a new Vantage instance | Choose **New Connection** from the **Show user profile** menu, and then enter the URL, login, and password in the authentication dialog. | | Switch between active connections | Select the URL from the **Show user profile** menu. | | Close active connections | Choose **Log Out**. | If you try to connect to a Vantage instance with an incompatible Advanced Designer version, Advanced Designer displays a link inviting you to install a compatible version. ## Language settings To change the interface language, choose **Interface Language** from the **Show user profile** menu. Restart Advanced Designer for the change to take effect. **Supported languages:** English, German, French, Spanish, Japanese, Korean, Chinese (Simplified). ## Update Advanced Designer Advanced Designer checks for updates each time it launches. If a newer version is available, you'll see a notification with a link to the download page. After the application update, [upgrade existing skills to the newer Technology Core version](/vantage/documentation/advanced-designer/upgrading-to-new-version) to gain access to features added in later releases. Only one version of Advanced Designer can be installed on a machine by default. Installing a newer version uninstalls the existing version, even if you choose a different installation directory. ### Run two versions side by side To keep an older version (for example, 2.7) installed alongside a newer version (for example, 3.0): Before installing the new version, navigate to the existing installation folder — by default `C:\Users\\AppData\Local\Programs\ABBYY\Vantage\AdvancedDesigner` — and rename `AdvancedDesigner` to include the version (for example, `AdvancedDesigner_2_7`). Run the new installer. Because the original folder was renamed, the installer creates a fresh `AdvancedDesigner` folder rather than overwriting the older install. Create a Windows shortcut pointing to the executable inside the renamed (older-version) folder so you can launch either version on demand. ## Related topics * [Advanced Designer system requirements](/vantage/documentation/advanced-designer/system-reqs) * [Advanced Designer installation options](/vantage/documentation/advanced-designer/additional-install) * [Upgrade Advanced Designer Skill Technology Core](/vantage/documentation/advanced-designer/upgrading-to-new-version) * [Getting started with Advanced Designer](/vantage/documentation/advanced-designer/getting-started) # Advanced Designer overview Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/introduction Build ABBYY Vantage Document and Document Splitter skills on Windows with custom activities, scripting, and complex document layouts. **ABBYY Vantage Advanced Designer** is a Windows desktop application for building Document skills and Document Splitter skills that use custom activities, scripting, or complex document layouts. Skills built in Advanced Designer are then published to ABBYY Vantage for production use. Advanced Designer runs on Windows only (Windows 10 x64 or Windows Server 2016). See [System requirements](/vantage/documentation/advanced-designer/system-reqs). ## When to use Advanced Designer Use Advanced Designer (rather than the cloud-based Skill Designer) when you need: * **Document Splitter skills** — these can only be created in Advanced Designer. * **Documents with significantly varying layouts** or fully unstructured documents. * **Custom activities or scripting** that go beyond what Skill Designer offers. For typical structured Document skills, the cloud [Skill Designer](/vantage/documentation/skill-designer/skill-designer) is faster to use and requires no local install. ## Next steps Download, install, and configure on Windows. Tour the interface after first launch. Extract field values from documents. Split a continuous flow of pages into separate documents. See end-to-end scenarios for Advanced Designer. # Advanced Designer system requirements Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/system-reqs Hardware and operating system requirements for ABBYY Vantage Advanced Designer — Windows 10 x64 or Windows Server 2016, 2 GB RAM, 1 GB disk. Confirm your machine meets the minimum requirements before [installing Advanced Designer](/vantage/documentation/advanced-designer/install-and-run). Advanced Designer is a Windows-only desktop application. ## Minimum requirements | Requirement | Specification | | :--------------- | :------------------------------------ | | Operating system | Windows 10 x64 or Windows Server 2016 | | CPU | 1 GHz | | RAM | 2 GB | | Free disk space | 1 GB | ## Related topics * [Install and run Advanced Designer](/vantage/documentation/advanced-designer/install-and-run) * [Advanced Designer installation options](/vantage/documentation/advanced-designer/additional-install) * [Upgrade Advanced Designer Skill Technology Core](/vantage/documentation/advanced-designer/upgrading-to-new-version) # Edit a Vantage skill in Advanced Designer Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/use-cases/editing-skill Open a skill from Vantage's Skill Catalog in Advanced Designer to add custom activities, refine extraction, or build on a derived skill. Open a skill from the Vantage **Skill Catalog** in Advanced Designer to add custom activities or refine extraction. The two starting points below cover the most common edits. ## Edit a derived skill Vantage built-in skills and read-only skills published by third-party developers cannot be edited directly. Instead, create a [derived skill](/vantage/documentation/advanced-designer/document-skills/derived) from the base skill and edit the derived skill. Derived skills inherit all rules and fields from their base skill and can be updated to new versions of the base while preserving your changes. Once the derived skill exists, edit it using the same procedure as **Edit a custom skill** below. ## Edit a custom skill If a custom skill's extraction quality isn't good enough, add or reconfigure activities — for example, an [Extraction Rules activity](/vantage/documentation/advanced-designer/activities/extraction-rules/extraction-rules) to fine-tune specific fields, or an [Address Parsing activity](/vantage/documentation/advanced-designer/activities/address-parsing) to break down a full address extracted by the existing flow. Advanced Designer skill processing flow with a Fast Learning activity followed by an Extraction Rules activity On the start page, select the skill in the **Skill Catalog**. The document set appears on the **Documents** tab — add more images if needed. The field structure and labeling appear on the **Fields** tab. On the **Activities** tab, find the existing [Fast Learning activity](/vantage/documentation/advanced-designer/activities/fast-learning), which uses Vantage machine learning to extract fields. Add an [Extraction Rules activity](/vantage/documentation/advanced-designer/activities/extraction-rules/extraction-rules) to set up custom object search conditions. To target only specific fields, list them under the **Activities** tab of the Properties pane on the new activity. Click **Activity Editor**. Use sample documents to set up the extraction rules so that every targeted element is detected correctly. Close the **Activity Editor** and click **Test Skill Using Selected Documents** to evaluate the results. When the results are good enough, [publish the skill](/vantage/documentation/advanced-designer/document-skills/publish). ## Related activities * [Derived skills in Advanced Designer](/vantage/documentation/advanced-designer/document-skills/derived) * [Extraction Rules activity for semi-structured documents](/vantage/documentation/advanced-designer/activities/extraction-rules/extraction-rules) * [Address Parsing activity](/vantage/documentation/advanced-designer/activities/address-parsing) * [Fast Learning activity](/vantage/documentation/advanced-designer/activities/fast-learning) # Extract data from documents in Advanced Designer Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/use-cases/extracting-from-docs Choose the right Advanced Designer scenario based on document structure — structured, semi-structured, unstructured, or mixed. To extract data from documents in Advanced Designer, create a [Document skill](/vantage/documentation/advanced-designer/document-skills/document-skills). The activities you use depend on the structure of your documents — Vantage groups documents into four broad categories. ## Document types ### Structured documents **Structured documents** (also known as fixed forms) always carry the same fields in the same layout, or in a very small number of layouts. Examples: forms, questionnaires, surveys. Sample structured document — a form with consistent field positions ### Semi-structured documents **Semi-structured documents** carry similar information across documents, but field locations, sizes, and counts vary. Vantage uses spatial and logical relationships between elements to locate the data. Examples: invoices, payment orders, bills of lading. Sample semi-structured document — an invoice with varying field positions ### Unstructured documents **Unstructured documents** are freeform text in paragraphs and sentences, where the fields you need may span pages. Examples: contracts, emails, research articles. Sample unstructured document — paragraphs of freeform text ### Mixed document sets A **mixed document set** contains documents of different types — for example, semi-structured and unstructured together, or single documents that mix the two (paragraphs of plain text alternating with tables). ## Pick a scenario Once you've identified your document type, follow the matching scenario. Build skills for forms with fixed or limited layouts. Build skills for invoices, bills of lading, and similar varying-layout documents. Build skills for contracts, emails, and other freeform text. Handle document sets that combine multiple structure types. # Process mixed document sets in Advanced Designer Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/use-cases/process-mixed Build Document skills for mixed document sets — semi-structured + unstructured combos, table cells with embedded fields, or unstructured docs with inserts. A ["mixed" document set](/vantage/documentation/advanced-designer/use-cases/extracting-from-docs#mixed-document-sets) can mean two things in Advanced Designer: * A single set that contains both **semi-structured and unstructured documents** (different document types). * A single document that contains **mixed structure** — for example, an unstructured contract with embedded tables, titles, headers, or footers. ## Pick a scenario | Scenario | When to use | Key activities | | :------------------------------------------------------- | :--------------------------------------------------------------------------- | :------------------------------------------------------------------- | | Semi-structured + unstructured in one set | Both belong to one logical type with shared output fields | Classify + IF + Fast Learning + Segmentation + Deep Learning for NLP | | Table cells with embedded fields | Extract values from inside table cells (e.g., names in a Closing Disclosure) | Fast Learning + NER (+ Address Parsing) | | Unstructured with embedded tables/titles/headers/footers | Mostly unstructured documents with semi-structured fragments | Segmentation + Extraction Rules | Each scenario below shares a common pattern; only the activities you add to the processing flow differ. ## Common workflow Open Advanced Designer and click **Create Document Skill** on the start page. On the **Documents** tab, upload the documents you'll use to set up the skill. On the **Fields** tab, create and configure the fields the skill will extract. Label documents in the **Reference** section. On the **Activities** tab, add the activities for your scenario (described below). Open each activity in the **Activity Editor** to configure and train it. Click **Test Skill Using Selected Documents** to evaluate results. When the results are good enough, [publish the skill](/vantage/documentation/advanced-designer/document-skills/publish). ## Semi-structured and unstructured documents in one set Use this scenario when one Document skill must process both [semi-structured](/vantage/documentation/advanced-designer/use-cases/process-semi-structured) and [unstructured](/vantage/documentation/advanced-designer/use-cases/process-unstructured) documents — both belong to the same logical type and share the same set of output fields. Classify each document with a [Classify By Text and Image activity](/vantage/documentation/advanced-designer/activities/classify-by-text-and-image), which combines text and geometry to handle low-quality images and documents that differ only by graphic features (signatures, seals). For best results, upload a roughly equal number of documents for each variant so the classifier has balanced training data. Then branch the flow with an IF activity: * Process semi-structured documents with a [Fast Learning activity](/vantage/documentation/advanced-designer/activities/fast-learning). * Process unstructured documents with a [Segmentation activity](/vantage/documentation/advanced-designer/activities/segmentation/segmentation-activity) followed by a [Deep Learning for NLP activity](/vantage/documentation/advanced-designer/activities/deep-learning-nlp). Document processing flow with Classify and IF branching into Fast Learning and Segmentation + Deep Learning for NLP ## Table cells with fields embedded in cell text Use this scenario when you need to extract specific values from inside table cells in semi-structured documents — for example, a borrower's name and partial address embedded in a Closing Disclosure cell. Extract the cell as one block of text with a [Fast Learning activity](/vantage/documentation/advanced-designer/activities/fast-learning), and then run NLP activities on that block to pull out the embedded fields: * [Named Entities (NER) activity](/vantage/documentation/advanced-designer/activities/ner) for entities like names and organizations. * [Address Parsing activity](/vantage/documentation/advanced-designer/activities/address-parsing) to break addresses into components. Document processing flow with Fast Learning feeding Named Entities (NER) and Address Parsing activities ## Unstructured documents with tables, titles, headers, or footers Use this scenario for documents that are mostly unstructured (for example, contracts) but contain embedded semi-structured fragments such as tables, titles, headers, or footers. Detect plain-text paragraphs with a [Segmentation activity](/vantage/documentation/advanced-designer/activities/segmentation/segmentation-activity) and detect the semi-structured fragments with an [Extraction Rules activity](/vantage/documentation/advanced-designer/activities/extraction-rules/extraction-rules). Once each fragment is isolated, use the appropriate activity to extract its fields. Sample document with paragraphs of unstructured text alongside a semi-structured table ## Related activities * [Classify By Text and Image activity](/vantage/documentation/advanced-designer/activities/classify-by-text-and-image) * [Fast Learning activity](/vantage/documentation/advanced-designer/activities/fast-learning) * [Segmentation activity](/vantage/documentation/advanced-designer/activities/segmentation/segmentation-activity) * [Deep Learning activity for NLP](/vantage/documentation/advanced-designer/activities/deep-learning-nlp) * [Named Entities (NER) activity](/vantage/documentation/advanced-designer/activities/ner) * [Extraction Rules activity for semi-structured documents](/vantage/documentation/advanced-designer/activities/extraction-rules/extraction-rules) # Process semi-structured documents in Advanced Designer Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/use-cases/process-semi-structured Advanced Designer scenarios for semi-structured documents — Deep Learning + Fast Learning, classification with rule fallback, or Classify + Extraction Rules. Use Advanced Designer for [semi-structured document sets](/vantage/documentation/advanced-designer/use-cases/extracting-from-docs#semi-structured-documents) that are too complex for the cloud [Skill Designer](/vantage/documentation/skill-designer/skill-designer) alone — for example, sets with many varying layouts, outliers that need rule-based extraction, or insufficient training data for machine learning. ## Pick a scenario | Scenario | When to use | Key activities | | :----------------------------- | :----------------------------------------------- | :----------------------------------------------- | | Many varying document variants | New templates keep appearing | Deep Learning + Fast Learning | | Outliers needing rules | Most variants work with ML, but a few need rules | Classify + IF + Deep Learning + Extraction Rules | | Limited training data | Not enough documents to train Deep Learning | Classify + Extraction Rules per variant | Each scenario below follows the same pattern; only the activities you add to the processing flow differ. ## Common workflow Open Advanced Designer and click **Create Document Skill** on the start page. On the **Documents** tab, upload the documents you'll use to set up the skill. For scenarios that include classification, add a roughly equal number of documents for each variant so the classifier has balanced training data. On the **Fields** tab, create and configure the fields the skill will extract. Label documents in the **Reference** section. On the **Activities** tab, add the activities for your scenario (described below). Open each activity in the **Activity Editor** to configure and train it. Click **Test Skill Using Selected Documents** to evaluate results. When the results are good enough, [publish the skill](/vantage/documentation/advanced-designer/document-skills/publish). ## Many varying document variants Use this scenario when documents share a type but layouts vary widely — for example, invoices from many suppliers where new templates will keep appearing. Pair a [Deep Learning activity](/vantage/documentation/advanced-designer/activities/deep-learning-semi-structured) with a [Fast Learning activity](/vantage/documentation/advanced-designer/activities/fast-learning): * **Deep Learning** generalizes to unforeseen variants. Training requires at least 100 labeled documents. * **Fast Learning** sharpens accuracy on the specific templates you've seen. It can also be trained continuously via the [Online Learning](/vantage/documentation/runtime/online-learning/online-learning) feedback loop from manual review. Document processing flow with Deep Learning followed by Fast Learning ## Outliers that need rule-based extraction Use this scenario when most variants work with Deep Learning + Fast Learning, but a few documents have nested tables or other features that machine learning won't capture cleanly. Separate the outliers with a Classify activity, then branch the flow with an IF activity: * Use [Classify By Company](/vantage/documentation/advanced-designer/activities/classify-by-company) when the variants come from different companies whose name or address appears on the document — for example, bank statements from multiple banks. * Use [Classify By Text and Image](/vantage/documentation/advanced-designer/activities/classify-by-text-and-image) in all other cases. This multimodal classifier uses text, layout, and image patterns to distinguish variants. After branching, send outlier documents through an [Extraction Rules activity](/vantage/documentation/advanced-designer/activities/extraction-rules/extraction-rules) tailored to those documents. Document processing flow with Classify, IF, Deep Learning, and Extraction Rules activities ## Limited training data Use this scenario when you don't have enough documents to train a Deep Learning activity, but you have enough domain knowledge to describe the extraction rules — for example, tax forms that vary by year. Split the documents with a Classify activity ([Classify By Company](/vantage/documentation/advanced-designer/activities/classify-by-company) or [Classify By Text and Image](/vantage/documentation/advanced-designer/activities/classify-by-text-and-image)), and then route each variant through its own [Extraction Rules activity](/vantage/documentation/advanced-designer/activities/extraction-rules/extraction-rules). Optionally add a [Fast Learning activity](/vantage/documentation/advanced-designer/activities/fast-learning) so Vantage can refine the skill over time. Document processing flow with a Classify activity branching into multiple Extraction Rules activities ## Related activities * [Deep Learning activity for semi-structured documents](/vantage/documentation/advanced-designer/activities/deep-learning-semi-structured) * [Fast Learning activity](/vantage/documentation/advanced-designer/activities/fast-learning) * [Extraction Rules activity for semi-structured documents](/vantage/documentation/advanced-designer/activities/extraction-rules/extraction-rules) * [Classify By Text and Image activity](/vantage/documentation/advanced-designer/activities/classify-by-text-and-image) # Process structured documents in Advanced Designer Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/use-cases/process-structured Build Document skills for structured documents — Skill Designer handles the basic case; Advanced Designer combines Forms with other activities. A **structured document** has a fixed layout — fields appear in the same place on every instance. Common examples are questionnaires, application forms, and tax return forms. Some structured documents have a small number of variants with minor field-position differences. For background, see [Extract data from documents in Advanced Designer](/vantage/documentation/advanced-designer/use-cases/extracting-from-docs#structured-documents). IRS Form 1040 (2020) — example of a structured document ## Where to build the skill You can create skills for structured documents in either Skill Designer or Advanced Designer; you can only **edit** them in Advanced Designer. * **Skill Designer (cloud)** — turn on the **Fixed-form documents** toggle on the skill, then upload and label some blank forms. See [Setting up a Document skill for processing structured documents](/vantage/documentation/skill-designer/document/set-up). The resulting skill includes a [Forms activity](/vantage/documentation/advanced-designer/activities/forms/forms-activity), visible if you later open it in Advanced Designer. * **Advanced Designer (Windows desktop)** — use this when you need to combine the Forms activity with other Vantage activities (the scenarios below). If you do not enable the **Fixed-form documents** toggle in Skill Designer, the skill's processing flow contains only a Fast Learning activity. Once a skill's flow includes a Forms activity together with other activities, or contains multiple Forms activities, you can only change skill properties from Vantage — training and deeper edits must happen in Advanced Designer. ## Pick a scenario | Scenario | When to use | Key activities | | :------------------------------------- | :------------------------------------------------------------- | :------------------------------------ | | Forms with unstructured elements | Forms also include barcodes, stamps, or variable-length tables | Forms + Extraction Rules | | Mixed forms and unstructured documents | Same data arrives as either forms or freeform text | Classify + IF + Forms + Fast Learning | ## Forms with unstructured elements Some structured documents include unstructured elements such as barcodes or stamps placed anywhere on the page, or have variable-length tables alongside the fixed layout. To process them, pair a [Forms activity](/vantage/documentation/advanced-designer/activities/forms/forms-activity) with an [Extraction Rules activity](/vantage/documentation/advanced-designer/activities/extraction-rules/extraction-rules) — Forms handles the structured fields, Extraction Rules handles the unstructured elements (for example, barcodes). Open Advanced Designer and click **Create Document Skill** on the start page. On the **Activities** tab, add a [Forms activity](/vantage/documentation/advanced-designer/activities/forms/forms-activity). In the **Activity Editor**, on the **Blank Form** tab, upload one sample blank form per variant (no more than ten variants recommended) and label the fields you want to extract. See [labeling guidelines](/vantage/documentation/advanced-designer/labeling/guidelines). Click **Train Activity**. Open the **Test Set** tab, upload completed test documents, verify that fields are labeled correctly, and click **Test Activity**. Review the results. Back on the **Activities** tab, add an [Extraction Rules activity](/vantage/documentation/advanced-designer/activities/extraction-rules/extraction-rules) and configure it in the **Activity Editor**. Click **Test Skill Using Selected Documents**. If the results are acceptable, [publish the skill](/vantage/documentation/advanced-designer/document-skills/publish). Otherwise, adjust the labeling, retrain, and test again. **Tables and repeating groups.** Forms activities can extract tables and repeating groups only when the maximum row count or instance count is known in advance and the boundaries are fixed. Label every row that may appear across all form variants — only rows with data are returned in results. Currently, Forms tables support text values only; for columns containing checkboxes or barcodes, use a repeating group instead. If row count is unknown in advance, use a different Vantage technology. ## Mixed forms and unstructured documents Some workflows receive the same information on either a printed form or a freeform document — for example, questionnaires returned as both filled forms and unstructured prose. Combine a [Forms activity](/vantage/documentation/advanced-designer/activities/forms/forms-activity) with a [Fast Learning](/vantage/documentation/advanced-designer/activities/fast-learning) (or [Extraction Rules](/vantage/documentation/advanced-designer/activities/extraction-rules/extraction-rules)) activity, and route documents to the right path with a Classify activity and an IF activity. Open Advanced Designer and click **Create Document Skill** on the start page. On the **Activities** tab, add a [Forms activity](/vantage/documentation/advanced-designer/activities/forms/forms-activity). In the **Activity Editor**, on the **Blank Form** tab, upload a sample blank form and label its fields. See [labeling guidelines](/vantage/documentation/advanced-designer/labeling/guidelines). Click **Train Activity**. Open the **Test Set** tab, upload completed test documents, verify field labeling, and click **Test Activity**. Review the results. On the **Activities** tab, add a [Fast Learning activity](/vantage/documentation/advanced-designer/activities/fast-learning) and configure and train it in the **Activity Editor**. Add a Classify activity ([Classify By Company](/vantage/documentation/advanced-designer/activities/classify-by-company) or [Classify By Text and Image](/vantage/documentation/advanced-designer/activities/classify-by-text-and-image)) at the beginning of the flow. In the **Activity Editor**, create a class for each document variant, assign classes to your training documents, and train the activity. Add an IF activity, then connect its branches to the Forms and Fast Learning activities so each document type is routed to the correct extraction path. Click **Test Skill Using Selected Documents**. If the results are acceptable, [publish the skill](/vantage/documentation/advanced-designer/document-skills/publish). Otherwise, adjust the labeling and retrain. ## Related activities * [Forms activity](/vantage/documentation/advanced-designer/activities/forms/forms-activity) * [Extraction Rules activity for semi-structured documents](/vantage/documentation/advanced-designer/activities/extraction-rules/extraction-rules) * [Fast Learning activity](/vantage/documentation/advanced-designer/activities/fast-learning) * [Classify By Text and Image activity](/vantage/documentation/advanced-designer/activities/classify-by-text-and-image) # Process unstructured documents in Advanced Designer Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/use-cases/process-unstructured Use Advanced Designer NLP activities — Segmentation, NER, Address Parsing, Deep Learning for NLP — to extract data from contracts, emails, and freeform text. Skills for processing [unstructured documents](/vantage/documentation/advanced-designer/use-cases/extracting-from-docs#unstructured-documents) can only be built in Advanced Designer; the cloud-based [Skill Designer](/vantage/documentation/skill-designer/skill-designer) does not support these scenarios. They use four core NLP activities to identify entities, segment text, and extract fields from freeform content like contracts, letters, and emails: * [Segmentation activity](/vantage/documentation/advanced-designer/activities/segmentation/segmentation-activity) * [Deep Learning for NLP activity](/vantage/documentation/advanced-designer/activities/deep-learning-nlp) * [Named Entities (NER) activity](/vantage/documentation/advanced-designer/activities/ner) * [Address Parsing activity](/vantage/documentation/advanced-designer/activities/address-parsing) Each of these activities supports a limited set of languages. See the activity's reference page for the language list. ## Pick a scenario | Scenario | When to use | Key activities | | :----------------------------------------------- | :---------------------------------------------------------------- | :-------------------------------------- | | Pre-trained named entities (whole document) | Entities can appear anywhere — minimal configuration needed | NER (+ Address Parsing) | | Pre-trained named entities (specific paragraphs) | The entity always sits in a known paragraph | Segmentation + NER (or Address Parsing) | | Custom named entities (Deep Learning for NLP) | Pre-trained can't disambiguate, or your entity type isn't covered | Segmentation + Deep Learning for NLP | Each scenario below shares a common pattern; only the activities you add to the processing flow differ. ## Common workflow Open Advanced Designer and click **Create Document Skill** on the start page. On the **Documents** tab, upload the documents you'll use to set up the skill. On the **Fields** tab, create and configure the fields the skill will extract. Label documents in the **Reference** section. On the **Activities** tab, add the activities for your scenario (described below). Open each activity in the **Activity Editor** to configure and train it. Click **Test Skill Using Selected Documents** to evaluate [results](/vantage/documentation/advanced-designer/document-skills/results). When the results are good enough, [publish the skill](/vantage/documentation/advanced-designer/document-skills/publish). ## Pre-trained named entities (whole document) Use this scenario when the entities you need can appear anywhere in the document — for example, company names and addresses in a letter. Add a [Named Entities (NER) activity](/vantage/documentation/advanced-designer/activities/ner) and map each named entity to a field. If you also need to break an address into components (street, city, state, country, postal code), add an [Address Parsing activity](/vantage/documentation/advanced-designer/activities/address-parsing) and map the components to fields. Document processing flow with a Named Entities (NER) activity ## Pre-trained named entities (specific paragraphs) Use this scenario when the entity always sits in the same paragraph — for example, a purchase amount in the price clause of a sales agreement. First isolate the paragraph with a [Segmentation activity](/vantage/documentation/advanced-designer/activities/segmentation/segmentation-activity), and then run a [Named Entities (NER)](/vantage/documentation/advanced-designer/activities/ner) or [Address Parsing](/vantage/documentation/advanced-designer/activities/address-parsing) activity on the segmented field. You can also isolate the paragraph with a [Fast Learning](/vantage/documentation/advanced-designer/activities/fast-learning) or [NLP Extraction Rules](/vantage/documentation/advanced-designer/activities/nlp-extraction-rules/extraction-rules) activity instead of Segmentation, and then run NER or Address Parsing on the result. Pre-trained activities are easy to configure and need no training, but a neural network trained on your documents may extract more accurately. If you have a large document set, also try the [custom named entities](#custom-named-entities-deep-learning-for-nlp) scenario below and pick whichever performs better. Document processing flow with Segmentation feeding Named Entities (NER) and Address Parsing ## Custom named entities (Deep Learning for NLP) Use this scenario when pre-trained activities can't disambiguate the entities you need — for example, extracting only one organization's name from a paragraph that lists both parties to an agreement, or extracting an entity type that NER doesn't cover (such as an email address). Pair a [Segmentation activity](/vantage/documentation/advanced-designer/activities/segmentation/segmentation-activity) with a [Deep Learning for NLP activity](/vantage/documentation/advanced-designer/activities/deep-learning-nlp): Segmentation isolates the paragraph and Deep Learning extracts the targeted fields. Training a Deep Learning for NLP activity requires at least 50 documents (150 recommended). For best results, also try the pre-trained [Named Entities (NER)](/vantage/documentation/advanced-designer/activities/ner) activity and pick whichever extracts more accurately on your documents. Document processing flow with Segmentation feeding a Deep Learning for NLP activity ## Related activities * [Named Entities (NER) activity](/vantage/documentation/advanced-designer/activities/ner) * [Address Parsing activity](/vantage/documentation/advanced-designer/activities/address-parsing) * [Segmentation activity](/vantage/documentation/advanced-designer/activities/segmentation/segmentation-activity) * [Deep Learning activity for NLP](/vantage/documentation/advanced-designer/activities/deep-learning-nlp) # Split pages into separate documents in Advanced Designer Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/use-cases/splitting-pages Build Document Splitter skills in Advanced Designer to separate multi-document files — by type, by annex, by identifier, or to reorder and clean pages. To split a stream of pages from a multi-document file into separate documents ready for processing, build a [Document Splitter skill](/vantage/documentation/advanced-designer/document-splitter/splitter). Document Splitter skills can only be created in Advanced Designer. The scenarios below combine [Classify](/vantage/documentation/advanced-designer/activities/classify-by-text-and-image), [Extraction Rules](/vantage/documentation/advanced-designer/activities/extraction-rules/extraction-rules), and [Splitter Script](/vantage/documentation/advanced-designer/activities/splitter-script/splitter-script) activities to find document boundaries. ## Pick a scenario | Scenario | When to use | Key activities | | :------------------------------------------ | :--------------------------------------------------------------------------- | :---------------------------------------------- | | Same-type documents in one stream | Multiple invoices in one file | Extraction Rules + Splitter Script (+ Classify) | | Separate documents and store annexes | Documents have explanatory annex pages to retain | Classify + Splitter Script (+ Extraction Rules) | | Separate documents and determine their type | Stream contains documents of different types (e.g., loan application packet) | Classify + Extraction Rules + Splitter Script | | Reorder and clean up pages | Pages arrive out of order, with blank or garbage pages | Extraction Rules + Splitter Script | ## Same-type documents in one stream Use this scenario when a file contains multiple documents of the same type — for example, a stack of invoices from one vendor for a billing period. Each invoice has its own number and may carry page numbers; use that data to find boundaries. * Add an [Extraction Rules activity](/vantage/documentation/advanced-designer/activities/extraction-rules/extraction-rules) to extract invoice numbers and page numbers. * Add a [Classify activity](/vantage/documentation/advanced-designer/activities/classify-by-text-and-image) if the first page of each document differs visually from the others. * Use the [Splitter Script activity](/vantage/documentation/advanced-designer/activities/splitter-script/splitter-script) to compare extracted values across pages and decide where each new document starts. ## Separate documents and store annexes Use this scenario when documents are accompanied by explanatory pages (annexes) that must be retained but not extracted from. * Use a [Classify activity](/vantage/documentation/advanced-designer/activities/classify-by-text-and-image) to label each page as a primary-document page or an annex. * Optionally add an [Extraction Rules activity](/vantage/documentation/advanced-designer/activities/extraction-rules/extraction-rules) to flag pages with no extractable data — those are likely annexes. * Use the [Splitter Script activity](/vantage/documentation/advanced-designer/activities/splitter-script/splitter-script) to attach each annex to its parent document or output it as a separate document. ## Separate documents and determine their type Use this scenario when the stream contains documents of different types — for example, a loan application packet with identity documents, income statements, bank statements, and utility bills. * Use a [Classify activity](/vantage/documentation/advanced-designer/activities/classify-by-text-and-image) to label each page with its document type. * Add an [Extraction Rules activity](/vantage/documentation/advanced-designer/activities/extraction-rules/extraction-rules) to extract any data that signals the start of a new document. * Use the [Splitter Script activity](/vantage/documentation/advanced-designer/activities/splitter-script/splitter-script) to define rules for both segmenting and labeling each output document. ## Reorder and clean up pages Use this scenario when pages arrive out of order or include blank or garbage pages from a haphazard scan. Reordering is only possible if the pages carry an ordering signal — for example, printed page numbers. * Add a field to extract page numbers (or any ordering signal). * Add a field that detects whether the page contains any text — pages with none can be treated as blank or garbage. * Use the [Splitter Script activity](/vantage/documentation/advanced-designer/activities/splitter-script/splitter-script) to reorder the pages and route blank/garbage pages into a separate output document. ## Build the Document Splitter skill Document Splitter skill processing flow with Classify, Extraction Rules, and Splitter Script activities Open Advanced Designer and click **Create Splitter Skill** on the start page. On the **Documents** tab, upload your files. Each document set should contain the files for a single business transaction. The source files are converted into separate pages — every activity except the Splitter Script activity processes each page individually. Configure the processing flow to extract the data needed to identify document boundaries and types. Add a [Classify activity](/vantage/documentation/advanced-designer/activities/classify-by-text-and-image) when the stream contains multiple document types, or when first pages differ visually from the rest. Add fields and other activities as needed to capture data that helps separate documents of the same type or label document classes. Add document types on the **Splitter Script Properties** pane, and then write the script that turns the flow of pages into a set of documents. The script has access to every page in the transaction and can read data produced by other activities to decide which pages start a new document. Click **Test Skill Using Selected Documents** to evaluate the results. When the results are good enough, [publish the skill](/vantage/documentation/advanced-designer/document-splitter/splitter-publish). ## Related activities * [Splitter Script activity](/vantage/documentation/advanced-designer/activities/splitter-script/splitter-script) * [Classify By Text and Image activity](/vantage/documentation/advanced-designer/activities/classify-by-text-and-image) * [Extraction Rules activity for semi-structured documents](/vantage/documentation/advanced-designer/activities/extraction-rules/extraction-rules) * [Document Splitter skills in Advanced Designer](/vantage/documentation/advanced-designer/document-splitter/splitter) # Advanced Designer use cases Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/use-cases/use-cases Scenarios for building Document and Document Splitter skills in Advanced Designer — extraction, splitting, and improving Vantage-built skills. The use cases below are starting points for building your own skills in Advanced Designer, or for improving skills you started in ABBYY Vantage. Each one walks through the activities and configuration choices for a common scenario. If you have existing FlexiLayouts from ABBYY FlexiLayout Studio, you can reuse them when creating a new Document skill — see [Create Document Skill from ABBYY FlexiLayout Project](/vantage/documentation/advanced-designer/getting-started#create-a-new-skill). ## Pick a use case Pick a scenario based on your input and where the skill comes from. | Scenario | When to use | | :--------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------- | | **[Extract data from documents](/vantage/documentation/advanced-designer/use-cases/extracting-from-docs)** | Each input is already a discrete document and you need fields out of it. | | **[Split a flow of pages](/vantage/documentation/advanced-designer/use-cases/splitting-pages)** | Your input is a continuous page stream (for example, a scanned batch) that needs to be separated before extraction. | | **[Edit a skill from Vantage](/vantage/documentation/advanced-designer/use-cases/editing-skill)** | You started a skill in the cloud Skill Designer and need Advanced Designer's extra capabilities — custom activities, scripting, or complex layouts. | # Convert FlexiCapture projects Source: https://docs.abbyy.com/vantage/documentation/skill-designer/converting-flexi-capture Guide for FlexiCapture users switching to Vantage, including reusing components and migration strategies. This article is intended for FlexiCapture users who are about to switch to Vantage. Vantage allows you to reuse various components of your FlexiCapture projects, including FlexiLayouts. It also allows you to benefit from new powerful machine learning technology which you can easily train on your existing labeled documents. We recommend that you check out the built-in skills available in Vantage first. In most cases, they will be at least as efficient as your FlexiCapture projects. The training efficiency offered by Advanced Designer and Vantage may also free you from having to reuse FlexiLayouts created in FlexiLayout Studio. More than 50 built-in skills are available in the Skill Catalog. Among others, Vantage offers skills for processing invoices, purchase orders, receipts and commercial invoices which can successfully replace **ABBYY FlexiCapture for Invoices**. ## Key concepts In Vantage, documents are processed in transactions. As opposed to batches, transactions are not assigned a type. The processing flow and OCR settings for a transaction are defined by the skill that handles the transaction. Generally, you will need to replace Document Definitions with built-in or manually configured Document skills, create a Process skill, and set up its processing flow to route documents to appropriate Document skills and other processing stages. ### Key concepts mapping | Concept in FlexiCapture | Equivalent in Vantage | | :--------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------- | | FlexiCapture project | A Process skill that references other skills developed in Vantage and Advanced Designer: OCR, Classification, Document, Document Splitter | | Batch | Transaction (partial equivalent) | | Batch type, project properties | Document processing workflow configured in the Process skill, skill settings and activity settings | | Classification batches | Document set of a Classification skill | | Training batches | Document sets in Document skills (partial equivalent) | | Test batches | Test document sets in a Document skill in Advanced Designer | | Document Definition | Document skill | | Workflow | Document processing workflow in a Process skill | | Auto-learning for field extraction | [Online learning](/vantage/documentation/skill-designer/document/set-up) for Document skills | | NLP models | Activities for unstructured documents in a Document skill in Advanced Designer | ### Import of documents FlexiCapture 12 Scanning Stations can be fully replaced with ABBYY Vantage Scanning Stations. Import from a hot folder (which is referred to as shared folder in Vantage) or from emails can be configured in the Input activity of a Process skill. The source type, source file name and information about the email are all saved to the registration parameters automatically. You can also import documents and set custom registration parameters via the Vantage API, or use [connectors](https://marketplace.abbyy.com/catalog/?features_hash=3-3_7-4) to import documents from a variety of third-party applications. ### Workflow setup To recreate the batch processing workflow, configure a Process skill. In Vantage, Process skill activities act as the equivalent for processing stages. A document set is referred to as a collection of documents within a transaction. ### Workflow stages mapping | Workflow stage in FlexiCapture | Equivalent in Vantage | | :--------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Scanning | ABBYY Vantage Scanning Station (not integrated into Process skill activities) | | Rescanning | Not supported | | Recognition | A workflow combining OCR, Classify, Extract, and Assemble activities. The OCR activity sets pre-recognition options for all documents; Classify routes documents to Extract activities where data is extracted. | | Document assembly check | Verifying the integrity of a collection of documents is not supported. To assemble documents, you can use Assemble activity of a Process skill. | | Batch integrity check | Scanning Stations perform automatic batch integrity checks before the documents are sent to Vantage. An operator can also run a manual check on the Scanning Station. | | Data verification, verification, export confirmation | Manual Review activity of a Process skill. | | Export | Output activity or Custom activity of a Process skill. | | Processed, Exceptions | Transaction statuses which are assigned automatically by Vantage. You can view the transaction statuses in the Transactions section of the Skill Monitor. | | User type | Condition activity or Custom activity of a Process skill. | Workflows in Vantage require interaction with a human operator only if the workflow contains Manual Review activities. ### PDF Processing Mode In FlexiCapture 12, PDF processing mode is configured at the batch type level and controls whether FlexiCapture uses an embedded PDF text layer or performs OCR. ABBYY Vantage provides equivalent control through the **PDF Processing Mode** setting, which is available on OCR skills and OCR activities within Process skills. Use the following table to map your existing FlexiCapture settings to their Vantage equivalents: | FlexiCapture 12 | Vantage | Notes | | :--------------------------------- | :---------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Auto | **Default** (Recommended) — partial match | FlexiCapture Auto dynamically selects based on text layer quality. Vantage Default uses a fixed combination approach and is not fully equivalent. A true Auto equivalent is planned for a future Vantage release. | | Prefer PDF text layer if available | **Use Text Layer Only** | Close match. Both prioritize the embedded text layer and fall back to OCR when no text layer is present. | | Use OCR only | **Use OCR Only** | Direct match. Both ignore any embedded text layer and force OCR on all pages. | #### Migration guidance: choose your starting point If you are unsure which Vantage mode to use, the following guidance maps common FlexiCapture configurations to a recommended starting point in Vantage: * **You used Auto in FlexiCapture:** Start with **Default** (Recommended) and monitor your extraction results. If accuracy is lower than expected, switch to **Use Text Layer Only** (if your PDFs have reliable text layers) or **Use OCR Only** (if they do not). * **You used "Prefer PDF text layer if available" in FlexiCapture:** Use **Use Text Layer Only** in Vantage. Review a sample of results to confirm the text layers in your documents are of sufficient quality. * **You used "Use OCR only" in FlexiCapture:** Use **Use OCR Only** in Vantage. This is a direct equivalent. A true equivalent of FlexiCapture's Auto mode — where Vantage dynamically evaluates text layer quality before choosing a processing method — is planned for a future Vantage release. Until then, **Default** (Recommended) is the closest available option for mixed document sets. Unlike FlexiCapture, where the setting is configured once at the batch type level, Vantage allows you to set a different PDF Processing Mode on each skill or activity. This gives you more granular control when processing different document types within the same workflow. For full documentation of the PDF Processing Mode setting, including when to use each option, see [PDF Processing Mode](/vantage/documentation/skill-designer/ocr-skill/pdf-processing-mode). ### User roles Vantage supports creating several Manual Review activities in a Process skill. A Manual Review Operator can have restricted access to specific manual review stages. To create users and edit their permissions, navigate to the Users tab in Vantage. ### Roles mapping | Role in FlexiCapture | Role in Vantage | | :--------------------------- | :-------------------------------------------------------------------------------------------------------------- | | Scanning Operator | **Skill User** | | Data Verification Operator | **Manual Review Operator** (with the possibility to restrict access to certain skills and manual review stages) | | Verification Operator | **Manual Review Operator** (with the possibility to restrict access to certain skills and manual review stages) | | Senior Verification Operator | **Processing Supervisor** | | Project Settings Editor | **Skill Designer** | | Monitoring Operator | **Processing Supervisor** (also has access to manual review) | | Administrator | **Tenant Administrator** | | Web Capture Operator | **Skill User** + **Manual Review Operator** | | Operators Manager | **Tenant Administrator** (this is the only role that allows managing user permissions) | ## Classification Classification models can't be reused in Vantage directly. For identifying documents of **different types**, create a Classification skill. To that skill, you can upload documents used to train the classification model in FlexiCapture, create identical classes, and train the skill in Vantage. You can further use this skill in a Classify activity of a Process skill and map the classes to Extract activities. Each Extract activity will use a Document skill that can be regarded as an equivalent of a Document Definition section. Clustering is always enabled in Vantage, so **different variants** of documents of the same type may be identified automatically. However, if the layouts vary significantly, consider creating a Document skill in Advanced Designer, adding a Classify activity to its workflow, and training it accordingly. You can set up an Extraction Rules activity (which is more or less an equivalent of a FlexiLayout) to be selected automatically based on the document variant by placing a set of Extraction Rules activities after the Classify activity. For **separating documents in a stream of input pages**, add an Assemble activity to a Process skill. You may also need to create and configure a Document Splitter skill in Advanced Designer. ## Document definitions Generally, you will need to replace Document Definitions for different types of documents with appropriate Document skills. Document Definitions for different variants of documents of the same type must be replaced with separate [activities](/vantage/documentation/advanced-designer/document-skills/activities) in a single Document skill. If a Document Definition contains several sections, each section must be replaced with an appropriate Document skill. OCR settings and handwritten text recognition are configured in the scope of a Document skill. If you use a Process skill to route documents to different Document skills, you can also configure general pre-recognition settings (languages, handwritten text recognition, and barcodes) in an OCR activity. Note that handwritten text recognition is enabled by default in Document skill settings and disabled by default in the OCR activity. **PDF text layer processing:** In ABBYY FlexiCapture, you could configure PDF text layer vs. OCR behavior as part of a Document Definition. In Vantage, the equivalent **PDF Processing Mode** setting is **not configured on Document skills** — it is configured on OCR skills and on the OCR activity of a Process skill. For details, see [PDF Processing Mode](/vantage/documentation/skill-designer/ocr-skill/pdf-processing-mode). The data extraction technology in Vantage has been substantially changed and improved compared to FlexiCapture. The way Extraction Rules and other activities available in Vantage function differs from that of their FlexiCapture equivalents, meaning that in some cases the results may differ. Make sure you are satisfied with the extraction results after replacing your Document Definitions with Document skills. Expand the case that matches your FlexiCapture project: Document Definitions for forms can't be reused directly in Vantage. If none of the built-in skills suit your needs, export the corresponding batch of labeled documents from FlexiCapture and import them into a newly created Document skill in Advanced Designer. Then you have two options: * Add a Fast Learning activity to the processing flow of the Document skill and train it using the uploaded documents. This activity doesn't require a large set of documents to be trained. To start training the activity using the technology for forms, you only need to add three documents that can be identified as instances of the same form. * Add a Forms activity to the processing flow of the Document skill and upload an image of a blank form. Label the fields on the blank form and train the activity. Test the results on the uploaded documents. If you do not need to combine fixed forms processing with any other activities, you can create a simple Document skill for forms in Vantage, without using Advanced Designer. In many cases, you can easily replace an existing Document Definition with a built-in skill or train a new skill in Vantage or Advanced Designer using your labeled documents. However, there is also a quick option to create in Advanced Designer an equivalent of an existing FlexiLayout. You can import a FlexiLayout into a Document skill in Advanced Designer. You can either create a new Document skill based on the FlexiLayout project or import a Flexilayout to an Extraction Rules activity. OCR language settings are inherited from the FlexiLayout settings, but we recommend that you check the OCR settings of a skill after importing. Training results can't be transferred to Advanced Designer, but you can import the labeled documents from a training batch and use them to retrain the activity in Advanced Designer. Trained models can't be imported to Advanced Designer. However, you can choose one of the NLP models available in Advanced Designer as skill activities, upload sample documents, and train the activity. To train your own NLP model, use a Segmentation and/or Deep Learning activity in a Document skill in Advanced Designer. Extraction scripts can't be reused in Advanced Designer or in Vantage. Rules can be recreated either in Vantage or Advanced Designer. Script rules must be rewritten to be compatible with the Vantage JavaScript interpreter. Use an Assemble activity of a Process skill. To add a document assembly script, create and configure a Document Splitter skill in Advanced Designer. The script must be rewritten in order to be compatible with the JavaScript interpreter. You can export processing results via the Vantage API or use [connectors](https://marketplace.abbyy.com/catalog/?features_hash=3-3_7-4) to export processing results to a variety of third-party applications. Export to a shared folder can be configured in the Output activity of a Process skill. Use the same activity to configure export formats. You can configure export with the help of a script in an Output activity or Custom activity of a Process skill. The script must be rewritten in order to be compatible with the Vantage JavaScript interpreter. Vantage supports storing credentials for third-party services in environment variables. These variables can be accessed from these scripts. The field structure is automatically recreated when you import labeled documents or FlexiLayouts to Advanced Designer. You can then use Vantage or Advanced Designer to edit the data form layout. ## ABBYY FlexiCapture for Invoices ### Replace with built-in skills Vantage offers a large number of built-in skills for processing various types of documents including invoices, receipts, purchase orders, and commercial invoices. These work out of the box and can replace projects created in **ABBYY FlexiCapture for Invoices**. We recommend that you test built-in skills on your documents first. If you are not satisfied with the extraction results, read on for advice on creating or customizing the skills. Datasets used in the project can be uploaded to data catalogs in CSV format. The necessary data catalogs with a set of columns equivalent to that of datasets are automatically created for the Invoice, Commercial Invoice, and Purchase Order skills. ### Customize with FlexiLayouts If you were using a FlexiCapture for Invoices project that was trained on your documents, but had no manually customized settings or custom fields, you won't need to configure any additional settings in Vantage. Simply derive a skill from the appropriate built-in invoice skill, import the labeled documents, and train the derived skill on the resulting document set. If you were using a custom FlexiLayout, we recommend that you derive a skill from the appropriate built-in invoice skill and create an Extraction Rules activity by importing the custom FlexiLayout. Add the Extraction Rules activity you created after the `Base: ` activity. This method can be used, for example, to capture additional invoice fields. If you have multiple FlexiLayouts, you can add several Extraction Rules activities. For example, if you had a dedicated FlexiLayout for each vendor, import each of the FlexiLayouts as an Extraction Rules activity and map the vendor ID values (extracted by the base invoice skill) to the corresponding activities. The FlexiLayouts you were using in FlexiCapture may have included many additional settings, such as currency formatting, regional settings, or tax rates. These settings are usually not needed in Vantage, because its built-in skills already include all the relevant information. ## Monitoring and reporting You can monitor productivity and processing data in Skill Monitor. Information about processing events and errors is available in Transactions and Error Log sections of the Skill Monitor. To generate business processing reports, you can use Business Processing Reporting Warehouse included in Vantage. Information about activities not related to business transaction processing is available in the Security Log. ## List of features not supported in Vantage The following FlexiCapture features are not supported in Vantage: * SLA control * Batch priority * Rescanning * Document assembly check * User attachments for imported images * Description files for batches from a hot folder * Double verification * Distributed verification * Processing interface events * Skin settings (you can only remove the Vantage logo when integrating Manual Review client in your own system) * Custom recognition script * Service fields * Links to existing fields (field values of all documents in a transaction can be accessed via script) * Dictionaries for OCR languages * Rule chains (can only be set up using an Advanced Script rule) * Redacting sensitive data when exporting documents * Localization of data form, rules names, and script messages ## Related topics * [PDF Processing Mode](/vantage/documentation/skill-designer/ocr-skill/pdf-processing-mode) * [Skill Catalog](/vantage/documentation/skill-catalog/skill-catalog) * [Set up a Process skill](/vantage/documentation/skill-designer/process/set-up) * [Set up a Document skill](/vantage/documentation/skill-designer/document/set-up) * [Skill versions](/vantage/documentation/skill-versions) # OCR skill Source: https://docs.abbyy.com/vantage/documentation/skill-designer/ocr-skill/ocr-skill Extract text from document images and export processing results to various file formats. OCR skills in ABBYY Vantage let you extract text from document images and export processing results to files of various formats. Photos of documents, scanned digital copies of documents, PDF files up to 3000 pages, and others can be used as source images. Once your documents have been processed, you will be able to use full-text search to find information, as well as edit the text and formatting (for some export formats). To optimize the speed and quality of text extraction, each OCR skill can be set up according to a specific user's needs. You can do the following: * Specify a custom name and description for your OCR skill * Select specific recognition languages * Enable handwritten text recognition if needed * Set up preprocessing for source files, for example, to crop document borders or correct their orientation * Configure the PDF Processing Mode to control whether Vantage uses an embedded PDF text layer or performs OCR * Extract barcodes that appear on your documents * Specify export file formats for processing results in ABBYY Vantage ## Related topics * [Set up an OCR skill](/vantage/documentation/skill-designer/ocr-skill/set-up-ocr) * [PDF Processing Mode](/vantage/documentation/skill-designer/ocr-skill/pdf-processing-mode) * [OCR activity](/vantage/documentation/skill-designer/process/ocr-activity) * [Technology Core versions](/vantage/documentation/technology-core-versions) * [Skill Catalog](/vantage/documentation/skill-catalog/skill-catalog) # PDF Processing Mode Source: https://docs.abbyy.com/vantage/documentation/skill-designer/ocr-skill/pdf-processing-mode Control how ABBYY Vantage extracts text from PDF documents — using the embedded text layer, OCR, or a combination of both. When ABBYY Vantage processes a PDF document, it needs to decide how to extract the text. PDFs can contain an embedded text layer (searchable text written directly into the file) or they may be image-only files that require optical character recognition (OCR) to extract text. The **PDF Processing Mode** setting gives you explicit control over which method Vantage uses. This is especially useful when: * You are working in regulated industries where reproducibility and auditability of extraction results are required. * Your document set contains PDFs with low-quality or unreliable embedded text layers that would produce better results with OCR. * You are migrating from ABBYY FlexiCapture and need to replicate the processing behavior of your existing workflows. * You need consistent, predictable processing behavior across all documents regardless of their content. ## Available modes | Mode | Description | When to use | | ------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **Default** (Recommended) | Uses the embedded PDF text layer when available and supplements it with OCR as needed. This is the standard Vantage processing behavior. | General use. Recommended for most document sets with a mix of text-layer and image-only PDFs. | | **Use Text Layer Only** | Extracts text exclusively from the embedded PDF text layer. If no text layer exists, Vantage falls back to OCR automatically. | Use when you have high-quality, trusted text layers and want faster extraction without full OCR. Useful for regulated environments where the existing text layer is the authoritative source. | | **Use OCR Only** | Ignores any embedded PDF text layer and performs full OCR on every page of the document. | Use when PDF text layers are known to be unreliable or corrupt, or when you need consistent OCR-based extraction across all documents regardless of their structure. | ## Example scenarios The following examples show typical situations where each mode is the best choice. Your organization processes digitally-born PDF invoices exported from a vendor's ERP system. The embedded text layer is accurate and machine-generated. Using **Use Text Layer Only** delivers fast, reliable extraction without running unnecessary OCR. You process a high-volume mix of scanned paper documents and digitally-born PDFs in the same workflow. Some files have clean text layers; others don't. **Default (Recommended)** handles both automatically without any per-document configuration. Your document set consists of PDFs produced by a legacy scanning system that embeds a low-quality text layer during scanning. That embedded layer contains recognition errors that degrade field extraction. **Use OCR Only** bypasses it entirely and extracts clean text directly from the page image. You work in a regulated industry (such as financial services or healthcare) where extraction results must be fully reproducible and auditable. Locking the mode to either **Use Text Layer Only** or **Use OCR Only** ensures the same processing path is always used, regardless of how documents arrive. ## Where to configure The PDF Processing Mode setting is available in the following locations: * **OCR Skill settings** — General tab, under Image Processing * **OCR activity settings** within a Process skill — General tab, under Image Processing ## Supported Technology Core versions PDF Processing Mode is supported for skills using **Technology Core 3**. It is not available for earlier Technology Core versions. ## Related topics * [OCR skill](/vantage/documentation/skill-designer/ocr-skill/ocr-skill) * [Set up an OCR skill](/vantage/documentation/skill-designer/ocr-skill/set-up-ocr) * [OCR activity](/vantage/documentation/skill-designer/process/ocr-activity) * [Technology Core versions](/vantage/documentation/technology-core-versions) * [Skill Catalog](/vantage/documentation/skill-catalog/skill-catalog) # Set up an OCR skill Source: https://docs.abbyy.com/vantage/documentation/skill-designer/ocr-skill/set-up-ocr How to create and configure OCR skills for text extraction and document export. To create an OCR skill, follow these steps: In the **Skill Catalog**, click the **Create** button in the toolbar. Select the **OCR Skill** skill type. The **Create OCR Skill** dialog box opens. On the **General** tab: * Enter a name and description for the new skill. * Select the Technology Core version. We recommend selecting the latest version. **Image Processing** Under **Image Processing**, open the **PDF Processing Mode** dropdown and select the processing mode for PDF documents: * **Default** (Recommended) — Uses the embedded PDF text layer when available and supplements with OCR as needed. This is the default setting. * **Use Text Layer Only** — Extracts text from the embedded PDF text layer. If no text layer exists, Vantage falls back to OCR automatically. * **Use OCR Only** — Ignores any embedded PDF text layer and performs full OCR on the document. For more information about each mode and guidance on which to choose, see [PDF Processing Mode](/vantage/documentation/skill-designer/ocr-skill/pdf-processing-mode). On the **Languages** tab: * In the **Allowed Languages** section, select one or several document recognition languages. During processing, the document language will be automatically chosen from the languages specified during setup. Note that the number of selected languages may affect recognition speed and quality. * If the document contains handwritten text, enable the **Handwritten** option in the **Text Appearance** section. On the **Image Enhancements** tab, **Crop Image** and **Correct Page Orientation** are enabled by default. Optionally, turn off these features if your documents do not require them. * **Crop Image** crops the image to the edges of the original document. * **Correct Page Orientation** automatically rotates the image to restore its original orientation. On the **Barcodes** tab, enable the barcode types that may appear on your documents. The number of selected barcode types can affect recognition speed.  If you don't need to recognize any barcodes, click the button with the number of selected options in the header of the **Barcode Types** table and click **Deselect all**. If you are processing several document files using an OCR skill as part of a single transaction, all files will be merged into one. As a result, the number of output files will be identical to the specified number of export formats. On the **Export** tab, select one or several document export formats. ## Available export formats * **JSON** (default format): * **Text only** (default option). The exported JSON file will only contain recognized text without preserving the document layout. If you select **Text only**, you cannot export to DOCX, XLSX, and PPTX. * **Preserve document structure.** The exported JSON file will contain recognized text and the document layout will be preserved as well. * **XML**: * **Text only**. The exported XML file will only contain recognized text. The document layout will not be preserved. If you select **Text only**, you cannot export to DOCX, XLSX, and PPTX. * **Preserve document structure**. The exported XML file will contain recognized text and the document layout will be preserved. * **ALTOXML**: * **Text only**. The exported ALTO XML file will only contain recognized text; the document layout will not be preserved. If you select **Text only**, you cannot export to DOCX, XLSX, and PPTX. * **Preserve document structure**. The exported ALTO XML file will contain recognized text and the document layout will be preserved. Export options (**Text only** and **Preserve document structure**) for JSON, XML, and ALTOXML cannot be different. If you specify another export option for one of these formats, this option will be applied for the other formats. * **PDF**: * PDF/A-3a (the default PDF export format) * PDF/A-3b * Image-only. Non-editable PDF in PDF/A-3b standard For each PDF export option, choose between "smaller file size" (default option) and "maximum quality". Smaller file size is achieved by using Mixed Raster Content (MRC) compression, which determines optimal compression rates separately for the text, the pictures, and the background. * **TXT** * **DOCX** (Microsoft Word): * **Editable**. The exported DOCX file preserves the original format and text flow but at the same time allows for easy editing. The output document may differ from the original image. * **Exact**. The exported DOCX file maintains the formatting of the original document. This may limit the changes that can be made to the text and formatting of the output document. * **XLSX** (Microsoft Excel) * **TIFF** * **JPEG**: * **Maximum quality**. The exported file contains a JPEG with a compression level of 95%. * **Reduced size**. The exported file contains a JPEG with a compression level of 75%. * **PPTX** (Microsoft PowerPoint) * **HTML** ## Related topics * [OCR skill](/vantage/documentation/skill-designer/ocr-skill/ocr-skill) * [PDF Processing Mode](/vantage/documentation/skill-designer/ocr-skill/pdf-processing-mode) * [OCR activity](/vantage/documentation/skill-designer/process/ocr-activity) * [Data export formats](/vantage/documentation/skill-designer/process/output-activity/export-formats) * [Technology Core versions](/vantage/documentation/technology-core-versions) # ClassConfidence Source: https://docs.abbyy.com/vantage/documentation/skill-designer/process/condition-activity/class-confidence ClassConfidence — a single class-confidence pair returned by Document.ClassConfidences after a Classification skill runs. `ClassConfidence` represents a single class and its confidence — an estimate of the probability that the document was classified correctly. ## Properties | Name | Type | Access | Description | | :------------- | :----- | :-------- | :----------------------------------------------------------- | | **Class** | string | Read-only | The name of the class. | | **Confidence** | int | Read-only | The confidence value (higher means a more confident result). | ## Related topics * [Document](/vantage/documentation/skill-designer/process/condition-activity/document) * [Object model](/vantage/documentation/skill-designer/process/condition-activity/object-model) * [Classify activity](/vantage/documentation/skill-designer/process/classify-activity) # Condition activity Source: https://docs.abbyy.com/vantage/documentation/skill-designer/process/condition-activity/condition-activity Use the Condition activity to split document processing workflow based on custom conditions. The Condition activity lets you use a single skill to split a document processing workflow. The Condition block contains a check for one or more conditions. Depending on whether a condition has been satisfied, the transaction documents will be sent along the appropriate workflow branch for further processing. For example, the Condition activity can be used to separately process documents containing recognition or validation rule errors. ## Adding switches To set up checks for a Condition activity, start by using the directional arrows to connect it to all other activities that the flow may be switched to. The conditions will be checked in the order in which the workflow branches are connected to the condition block. To change their order, you will have to remove all connections and then reconnect them. A list of **Case conditions** and **ELSE condition** will appear in the **Actions** pane. In the drop-down list under **ELSE condition**, select the block that will be used for cases when all other conditions are not satisfied. ## Adding switch rules Click the **Set up** hyperlink for each condition in the **Case conditions** list. Condition activity script editor for defining a case condition The editor window opens where you can input the JavaScript code that will be used to check that specific condition. Your code can reference all Condition activity input data, and should return a boolean value representing the check results. Your script returns the most recently calculated value. If you need to set up more complex checks, create a custom check function and call it in the last line of your script. For a detailed description of objects that can be used in your script, see [Object Model](/vantage/documentation/skill-designer/process/condition-activity/object-model). For sample scripts that can be used in Vantage, see [Sample scripts](/vantage/documentation/skill-designer/process/condition-activity/sample-scripts). When a transaction reaches a Condition activity, the conditions are checked sequentially. As soon as a condition is satisfied, the transaction is sent down the matching branch and the remaining conditions aren't evaluated. If no conditions are set up in the **Case conditions** list, all transactions are sent down the **Else** branch. ## Related topics * [Object model](/vantage/documentation/skill-designer/process/condition-activity/object-model) * [Sample scripts](/vantage/documentation/skill-designer/process/condition-activity/sample-scripts) * [Set up a Process skill](/vantage/documentation/skill-designer/process/set-up) * [Custom activity](/vantage/documentation/skill-designer/process/custom-activity/custom-activity) # Context Source: https://docs.abbyy.com/vantage/documentation/skill-designer/process/condition-activity/context The Context global object — provides access to the current transaction, its documents, and processing information in Condition activity scripts. `Context` is a global object that gives your Condition activity script access to document processing data. ## Properties | Name | Type | Access | Description | | :-------------- | :------------------------------------------------------------------------------------------ | :-------- | :-------------------------------------------------------------------------------------------------------- | | **Processing** | [Processing](/vantage/documentation/skill-designer/process/condition-activity/processing) | Read-only | Processing information. Use it to reference the previous processing stage and check whether it succeeded. | | **Transaction** | [Transaction](/vantage/documentation/skill-designer/process/condition-activity/transaction) | Read-only | The current transaction containing all documents being processed. | ### Deprecated properties The `CurrentDocument` property is deprecated — it always points to the first document in a transaction. Use [`Context.Transaction.Documents`](/vantage/documentation/skill-designer/process/condition-activity/transaction) instead. | Name | Type | Access | Description | | :------------------ | :------------------------------------------------------------------------------------ | :-------- | :-------------------------------------- | | **CurrentDocument** | [Document](/vantage/documentation/skill-designer/process/condition-activity/document) | Read-only | The document currently being processed. | ## Related topics * [Condition activity](/vantage/documentation/skill-designer/process/condition-activity/condition-activity) * [Object model](/vantage/documentation/skill-designer/process/condition-activity/object-model) * [Transaction](/vantage/documentation/skill-designer/process/condition-activity/transaction) * [Document](/vantage/documentation/skill-designer/process/condition-activity/document) * [Processing](/vantage/documentation/skill-designer/process/condition-activity/processing) # DataType Source: https://docs.abbyy.com/vantage/documentation/skill-designer/process/condition-activity/data-type DataType enumerator — the possible data types a field can contain in a Condition activity script. `DataType` enumerates the possible data types a field can contain. ## Constants | Name | Description | | :---------- | :------------------------------------------------------------------------------------ | | **Text** | Text of any type. | | **Date** | Calendar date. | | **Amount** | Amount of currency, 2 decimal places. | | **Number** | Floating point number. | | **Choice** | Data type represented by the "checkmark group" field type. | | **Boolean** | Boolean value, represented by fields like "checkmark" type (has two possible values). | ## Related topics * [Field](/vantage/documentation/skill-designer/process/condition-activity/field) * [FieldType](/vantage/documentation/skill-designer/process/condition-activity/field-type) * [Object model](/vantage/documentation/skill-designer/process/condition-activity/object-model) # Document Source: https://docs.abbyy.com/vantage/documentation/skill-designer/process/condition-activity/document The Document object — properties of the document being processed in a Condition activity, including fields, pages, classification results, and source files. `Document` represents the document currently being processed in a Condition activity. Depending on which processing stages have completed, some properties may return empty values. For example, only `DocumentId` and `SourceFiles` are populated before any skill is applied. `ResultClass` is populated after a Classification skill runs. `Fields` is populated after extraction. ## Properties | Name | Type | Access | Description | | :------------------------- | :--------------------------------------------------------------------------------------------------- | :-------- | :------------------------------------------------------------------------------------------------------------------------ | | **ClassConfidences** | [ClassConfidence](/vantage/documentation/skill-designer/process/condition-activity/class-confidence) | Read-only | The confidence values for each class. `null` if the document wasn't classified. | | **DocumentId** | string | Read-only | The unique document identifier. | | **DocumentSkillId** | string | Read-only | The identifier of the skill applied to the document. If several stages have run, this is the most recently applied skill. | | **DocumentSkillName** | string | Read-only | The name of the skill applied to the document. If several stages have run, this is the most recently applied skill. | | **Fields** | [Field](/vantage/documentation/skill-designer/process/condition-activity/field)\[] | Read-only | Fields detected on the document. Populated only after a Document skill runs. | | **HasSuspiciousSymbols** | bool | Read-only | `true` if the document contains at least one field with characters recognized with low confidence. | | **IsResultClassConfident** | bool | Read-only | `true` if the document's class was determined with confidence. | | **IsUnknownSkill** | bool | Read-only | Whether the document class (and therefore the Document skill) has been determined. | | **Pages** | [Page](/vantage/documentation/skill-designer/process/condition-activity/page)\[] | Read-only | The pages of the document. | | **ResultClass** | string | Read-only | The class assigned by the Classification skill. `null` if the document wasn't classified. | | **ResultClassId** | string | Read-only | The identifier of the class assigned by the Classification skill. `null` if not classified. | | **RuleErrors** | [RuleError](/vantage/documentation/skill-designer/process/condition-activity/rule-error)\[] | Read-only | Field extraction validation rule errors. | | **SourceFiles** | [SourceFile](/vantage/documentation/skill-designer/process/condition-activity/source-file)\[] | Read-only | Document source files. | `ClassConfidences` and `IsResultClassConfident` are populated only when a Classification skill has been applied. ## Related topics * [Transaction](/vantage/documentation/skill-designer/process/condition-activity/transaction) * [Field](/vantage/documentation/skill-designer/process/condition-activity/field) * [Page](/vantage/documentation/skill-designer/process/condition-activity/page) * [SourceFile](/vantage/documentation/skill-designer/process/condition-activity/source-file) * [ClassConfidence](/vantage/documentation/skill-designer/process/condition-activity/class-confidence) * [Object model](/vantage/documentation/skill-designer/process/condition-activity/object-model) # Field Source: https://docs.abbyy.com/vantage/documentation/skill-designer/process/condition-activity/field The Field interface — properties for reading a document field's value, type, structure, and OCR metadata in a Condition activity script. `Field` provides read-only access to a document field's value, type, structure, and OCR metadata in a Condition activity script. ## Properties | Name | Type | Access | Description | | :----------------------- | :--------------------------------------------------------------------------------------- | :-------- | :------------------------------------------------------------------------------------------------------------------- | | **Children** | Field\[] | Read-only | Child fields. | | **DataType** | [DataType](/vantage/documentation/skill-designer/process/condition-activity/data-type) | Read-only | The field data type. | | **FieldType** | [FieldType](/vantage/documentation/skill-designer/process/condition-activity/field-type) | Read-only | The field type (for example, text, barcode, or image). | | **FullName** | string | Read-only | The full path from the document root. Parent field names are separated by `/` — for example, `Vendor/Address`. | | **HasSuspiciousSymbols** | bool | Read-only | `true` if the field value contains characters recognized with low confidence. | | **Id** | string | Read-only | The field identifier. May be identical across instances of a repeating field. | | **InstanceIndex** | int | Read-only | The index of the current instance among all repeating fields of the same type. Only meaningful for repeating fields. | | **Instances** | Field\[] | Read-only | All instances of this field. Only meaningful for repeating fields. | | **IsConfirmed** | bool | Read-only | `true` if the value was confirmed by an operator during verification. | | **IsRepeatable** | bool | Read-only | `true` if the field is repeating. | | **IsSuspicious** | bool | Read-only | `true` if recognition wasn't confident for the field. Review manually. | | **IsValid** | bool | Read-only | `true` if `Text` converted successfully to a `Value` of the correct type; otherwise `false`. | | **IsVisible** | bool | Read-only | `true` if the field is visible to operators; `false` if hidden during verification. | | **Name** | string | Read-only | The field name. | | **Parent** | Field | Read-only | The parent field. | | **Regions** | [Region](/vantage/documentation/skill-designer/process/condition-activity/region)\[] | Read-only | Regions on the image where the field is located. | | **Symbols** | [Symbol](/vantage/documentation/skill-designer/process/condition-activity/symbol)\[] | Read-only | An array of characters that form the original value of the field in text format. | | **Text** | string | Read-only | The field text as detected on the document. | | **Value** | object | Read-only | The field value converted to the appropriate data type (for example, date or float). | ### Access fields in the Document.Fields array The `Document.Fields` array contains only top-level fields. To access fields nested within a field group, walk the `Children` property recursively. For example, to read the `Address` field of the `Vendor` group: ```javascript theme={null} var docs = Context.Transaction.Documents; for (var d = 0; d < docs.length; d++) { if (docs[d].ResultClass == "Invoice") { var fields = docs[d].Fields; // Find the "Vendor" field group for (var f = 0; f < fields.length; f++) { if (fields[f].Name == "Vendor" && fields[f].Children) { // Look for "Address" within Vendor's children for (var c = 0; c < fields[f].Children.length; c++) { if (fields[f].Children[c].Name == "Address") { var address = fields[f].Children[c].Value; // Use the address value return address != ""; } } } } } } return false; ``` ## Related topics * [Document](/vantage/documentation/skill-designer/process/condition-activity/document) * [DataType](/vantage/documentation/skill-designer/process/condition-activity/data-type) * [FieldType](/vantage/documentation/skill-designer/process/condition-activity/field-type) * [Region](/vantage/documentation/skill-designer/process/condition-activity/region) * [Symbol](/vantage/documentation/skill-designer/process/condition-activity/symbol) * [Object model](/vantage/documentation/skill-designer/process/condition-activity/object-model) # FieldType Source: https://docs.abbyy.com/vantage/documentation/skill-designer/process/condition-activity/field-type FieldType enumerator — the possible types a field can have in a Condition activity script. `FieldType` enumerates the possible types a field can have. ## Constants | Name | Description | | :----------------- | :------------------------------------------ | | **Barcode** | Barcode. | | **Checkmark** | Checkmark. | | **CheckmarkGroup** | Checkmark group. | | **Group** | Field group. | | **Table** | Table. Each table cell is a separate field. | | **Text** | Text. | ## Related topics * [Field](/vantage/documentation/skill-designer/process/condition-activity/field) * [DataType](/vantage/documentation/skill-designer/process/condition-activity/data-type) * [Object model](/vantage/documentation/skill-designer/process/condition-activity/object-model) # Object model Source: https://docs.abbyy.com/vantage/documentation/skill-designer/process/condition-activity/object-model Script restrictions and object model for Condition activity scripting in ABBYY Vantage. This page describes restrictions on Condition activity scripts and lists the objects and enumerators available in Vantage's JavaScript environment. The Vantage JavaScript interpreter supports ECMAScript 5.1 and selected later features. For more information, see the [Jint ECMAScript features](https://github.com/sebastienros/jint#supported-features). ## Data access Scripts can define custom functions and access Vantage data catalogs through the [`Context`](/vantage/documentation/skill-designer/process/condition-activity/context) interface. Scripts cannot: * Send requests to databases other than Vantage data catalogs. * Send requests to external services. * Use third-party libraries such as jQuery. The Condition activity merely redirects transaction documents to the matching workflow branch — it doesn't modify them. All data your script accesses is provided in read-only mode. ## Limits on system resource use Condition scripts are subject to memory, runtime, command-count, and recursion-depth limits to prevent runaway scripts. If a script exceeds any limit, processing is interrupted and an error is displayed. Defaults are set by your server administrator — current defaults: | Restriction | Default limit | | :---------------------- | :------------ | | Memory | 10 MB | | Timeout threshold | 60 seconds | | Command limit | None | | Maximum recursion depth | 100 | ## Object reference ### Execution context and workflow * [Context](/vantage/documentation/skill-designer/process/condition-activity/context) * [Transaction](/vantage/documentation/skill-designer/process/condition-activity/transaction) * [Processing](/vantage/documentation/skill-designer/process/condition-activity/processing) * [Step](/vantage/documentation/skill-designer/process/condition-activity/step) ### Documents and fields * [Document](/vantage/documentation/skill-designer/process/condition-activity/document) * [Page](/vantage/documentation/skill-designer/process/condition-activity/page) * [SourceFile](/vantage/documentation/skill-designer/process/condition-activity/source-file) * [Field](/vantage/documentation/skill-designer/process/condition-activity/field) ### Classification and validation * [ClassConfidence](/vantage/documentation/skill-designer/process/condition-activity/class-confidence) * [RuleError](/vantage/documentation/skill-designer/process/condition-activity/rule-error) ### Image regions * [Region](/vantage/documentation/skill-designer/process/condition-activity/region) * [Rectangle](/vantage/documentation/skill-designer/process/condition-activity/rectangle) * [Symbol](/vantage/documentation/skill-designer/process/condition-activity/symbol) ### Enumerators * [FieldType](/vantage/documentation/skill-designer/process/condition-activity/field-type) * [DataType](/vantage/documentation/skill-designer/process/condition-activity/data-type) * [ProcessingStatus](/vantage/documentation/skill-designer/process/condition-activity/processing-status) ## Related topics * [Condition activity](/vantage/documentation/skill-designer/process/condition-activity/condition-activity) * [Sample scripts](/vantage/documentation/skill-designer/process/condition-activity/sample-scripts) * [Context](/vantage/documentation/skill-designer/process/condition-activity/context) # Page Source: https://docs.abbyy.com/vantage/documentation/skill-designer/process/condition-activity/page The Page object — properties of a single document page in a Condition activity script. `Page` represents a single page of the document being processed in a Condition activity. ## Properties | Name | Type | Access | Description | | :-------------- | :----- | :-------- | :----------------------------------------------- | | **Id** | string | Read-only | The unique identifier of the page. | | **ImageHeight** | uint | Read-only | The height of the page image in pixels. | | **ImageWidth** | uint | Read-only | The width of the page image in pixels. | | **Index** | int | Read-only | The page number in the document (starting at 0). | ## Related topics * [Document](/vantage/documentation/skill-designer/process/condition-activity/document) * [SourceFile](/vantage/documentation/skill-designer/process/condition-activity/source-file) * [Object model](/vantage/documentation/skill-designer/process/condition-activity/object-model) # Processing Source: https://docs.abbyy.com/vantage/documentation/skill-designer/process/condition-activity/processing The Processing object provides information about transaction document processing and lets you reference the previous processing stage in a Condition activity. Object that provides information about the processing of transaction documents. Can be used to reference the previous processing stage in order to find out whether it succeeded or not. ## Properties | Name | Type | Description | | :----------- | :---------------------------------------------------------------------------- | :----------------------------- | | PreviousStep | [Step](/vantage/documentation/skill-designer/process/condition-activity/step) | The previous processing stage. | ## Related topics * [Step](/vantage/documentation/skill-designer/process/condition-activity/step) * [ProcessingStatus](/vantage/documentation/skill-designer/process/condition-activity/processing-status) * [Object model](/vantage/documentation/skill-designer/process/condition-activity/object-model) # ProcessingStatus Source: https://docs.abbyy.com/vantage/documentation/skill-designer/process/condition-activity/processing-status ProcessingStatus enumerator — the possible statuses of a processing step in a Condition activity script. `ProcessingStatus` enumerates the possible statuses of a processing step. It is returned by [`Step.Status`](/vantage/documentation/skill-designer/process/condition-activity/step) and lets a condition branch on the outcome of the previous stage. ## Constants | Name | Description | | :---------------------- | :------------------------------- | | **New** | Not started yet. | | **Active** | Currently being processed. | | **Completed** | Completed successfully. | | **Failed** | Completed unsuccessfully. | | **Canceled** | The step was canceled. | | **CancellationPending** | Cancellation has been requested. | ## Related topics * [Step](/vantage/documentation/skill-designer/process/condition-activity/step) * [Processing](/vantage/documentation/skill-designer/process/condition-activity/processing) * [Object model](/vantage/documentation/skill-designer/process/condition-activity/object-model) # Rectangle Source: https://docs.abbyy.com/vantage/documentation/skill-designer/process/condition-activity/rectangle The Rectangle object — top-left and bottom-right coordinates of a rectangular area on a page image in a Condition activity script. `Rectangle` represents a single rectangular area on a page image, defined by its top-left and bottom-right corners. ## Properties | Name | Type | Access | Description | | :--------------- | :--- | :-------- | :--------------------------------------- | | **BottomRightX** | uint | Read-only | X-coordinate of the bottom-right corner. | | **BottomRightY** | uint | Read-only | Y-coordinate of the bottom-right corner. | | **TopLeftX** | uint | Read-only | X-coordinate of the top-left corner. | | **TopLeftY** | uint | Read-only | Y-coordinate of the top-left corner. | ## Related topics * [Region](/vantage/documentation/skill-designer/process/condition-activity/region) * [Field](/vantage/documentation/skill-designer/process/condition-activity/field) * [Object model](/vantage/documentation/skill-designer/process/condition-activity/object-model) # Region Source: https://docs.abbyy.com/vantage/documentation/skill-designer/process/condition-activity/region The Region object — an area on a page image that contains the text for a specific field, built from one or more rectangles. `Region` represents a field region on a document image. A region is built from one or more rectangles. ## Properties | Name | Type | Access | Description | | :------------- | :----------------------------------------------------------------------------------------- | :-------- | :----------------------------------------------- | | **PageId** | string | Read-only | Identifier of the page that contains the region. | | **Rectangles** | [Rectangle](/vantage/documentation/skill-designer/process/condition-activity/rectangle)\[] | Read-only | The rectangle set used to make the region. | ## Related topics * [Rectangle](/vantage/documentation/skill-designer/process/condition-activity/rectangle) * [Field](/vantage/documentation/skill-designer/process/condition-activity/field) * [Object model](/vantage/documentation/skill-designer/process/condition-activity/object-model) # RuleError Source: https://docs.abbyy.com/vantage/documentation/skill-designer/process/condition-activity/rule-error The RuleError object — a single Document skill validation rule error in a Condition activity script. `RuleError` describes a single Document skill validation rule error returned by [`Document.RuleErrors`](/vantage/documentation/skill-designer/process/condition-activity/document) in a Condition activity. ## Properties | Name | Type | Access | Description | | :------------------ | :----- | :-------- | :------------------------------------------------------------------------------------------------------------------ | | **CurrentFieldId** | string | Read-only | The document field identifier of the field that caused the rule error. | | **CustomMessage** | string | Read-only | An error message from a custom skill. Returns an empty string for built-in rules, or when no custom message is set. | | **ErrorParameters** | object | Read-only | The error parameters. Returned only for built-in rules. | | **ErrorType** | string | Read-only | The error type. Returned only for built-in rules. | | **RuleId** | string | Read-only | The identifier of the rule that generated the error. | ## Related topics * [Document](/vantage/documentation/skill-designer/process/condition-activity/document) * [Object model](/vantage/documentation/skill-designer/process/condition-activity/object-model) # Sample scripts Source: https://docs.abbyy.com/vantage/documentation/skill-designer/process/condition-activity/sample-scripts Sample Condition activity scripts — common patterns for checking rule errors and routing documents to manual review. Common patterns for writing a Condition activity script. Each sample reads from [`Context.Transaction.Documents`](/vantage/documentation/skill-designer/process/condition-activity/transaction) and returns a boolean. ## Checking for rule errors in a document The script below returns `true` if at least one transaction document has rule errors, an undetermined document class, or suspicious symbols. Otherwise it returns `false`. ```javascript theme={null} function hasRuleErrors() { for (var i = 0; i < Context.Transaction.Documents.length; i++) { var document = Context.Transaction.Documents[i]; if (document.RuleErrors.length > 0 || document.IsUnknownSkill === true || document.HasSuspiciousSymbols === true) return true; } return false; } hasRuleErrors(); ``` ## Checking whether manual review is required The following script returns `true` — routing documents to manual review — if at least one transaction document has any of: * Rule errors * An uncertain document type * Suspicious fields or field characters (including nested children and repeating instances) Otherwise it returns `false` and the documents continue to the export step. ```javascript theme={null} function needManualReview() { for (var i = 0; i < Context.Transaction.Documents.length; i++) { var document = Context.Transaction.Documents[i]; if (needManualReviewForDocument(document)) return true; } return false; } function needManualReviewForDocument(document) { // Rule errors exist if (document.RuleErrors.length > 0) return true; // Document type is not confident if (!document.IsResultClassConfident) return true; // Some fields are suspicious for (var i = 0; i < document.Fields.length; i++) { var field = document.Fields[i]; if (field.IsSuspicious || containSuspiciousFields(field)) return true; } return false; } function containSuspiciousFields(field) { // Check all children for suspicious field if (field.Children) { for (var i = 0; i < field.Children.length; i++) { var childField = field.Children[i]; if (childField.IsSuspicious || containSuspiciousFields(childField)) return true; } } // Check all instances for suspicious field if (field.Instances) { for (var i = 0; i < field.Instances.length; i++) { var instanceField = field.Instances[i]; if (instanceField.IsSuspicious || containSuspiciousFields(instanceField)) return true; } } return false; } needManualReview(); ``` ## Related topics * [Context](/vantage/documentation/skill-designer/process/condition-activity/context) * [Transaction](/vantage/documentation/skill-designer/process/condition-activity/transaction) * [Document](/vantage/documentation/skill-designer/process/condition-activity/document) * [Field](/vantage/documentation/skill-designer/process/condition-activity/field) * [RuleError](/vantage/documentation/skill-designer/process/condition-activity/rule-error) * [Object model](/vantage/documentation/skill-designer/process/condition-activity/object-model) # SourceFile Source: https://docs.abbyy.com/vantage/documentation/skill-designer/process/condition-activity/source-file The SourceFile object — represents a source file of the document being processed in a Condition activity. `SourceFile` represents a source file of the document (or a part of it) being processed in a Condition activity. ## Properties | Name | Type | Access | Description | | :------- | :----- | :-------- | :-------------------- | | **Name** | string | Read-only | The name of the file. | ## Related topics * [Document](/vantage/documentation/skill-designer/process/condition-activity/document) * [Page](/vantage/documentation/skill-designer/process/condition-activity/page) * [Object model](/vantage/documentation/skill-designer/process/condition-activity/object-model) # Step Source: https://docs.abbyy.com/vantage/documentation/skill-designer/process/condition-activity/step The Step object — a single processing stage exposed via Processing.PreviousStep in a Condition activity script. `Step` represents a single processing stage in a Condition activity script. It is returned by [`Processing.PreviousStep`](/vantage/documentation/skill-designer/process/condition-activity/processing) and lets a condition check whether the previous stage succeeded. ## Properties | Name | Type | Access | Description | | :--------- | :----------------------------------------------------------------------------------------------------- | :-------- | :----------------------------------------------------------- | | **Status** | [ProcessingStatus](/vantage/documentation/skill-designer/process/condition-activity/processing-status) | Read-only | The status of the step (for example, `Completed`, `Failed`). | | **StepId** | string | Read-only | The step identifier. | ## Related topics * [Processing](/vantage/documentation/skill-designer/process/condition-activity/processing) * [ProcessingStatus](/vantage/documentation/skill-designer/process/condition-activity/processing-status) * [Context](/vantage/documentation/skill-designer/process/condition-activity/context) * [Object model](/vantage/documentation/skill-designer/process/condition-activity/object-model) # Symbol Source: https://docs.abbyy.com/vantage/documentation/skill-designer/process/condition-activity/symbol The Symbol object — a single character from a recognized field value, with a low-confidence flag, in a Condition activity script. `Symbol` represents a single character from a recognized field value in a Condition activity script. A collection of `Symbol` values is returned by [`Field.Symbols`](/vantage/documentation/skill-designer/process/condition-activity/field). ## Properties | Name | Type | Access | Description | | :--------------- | :--- | :-------- | :---------------------------------------------------------- | | **Symbol** | char | Read-only | The character value. | | **IsSuspicious** | bool | Read-only | `true` if the character was recognized with low confidence. | ## Related topics * [Field](/vantage/documentation/skill-designer/process/condition-activity/field) * [Object model](/vantage/documentation/skill-designer/process/condition-activity/object-model) # Transaction Source: https://docs.abbyy.com/vantage/documentation/skill-designer/process/condition-activity/transaction The Transaction interface — the current processing transaction in a Condition activity script. `Transaction` is the current processing transaction in a Condition activity script. ## Properties | Name | Type | Access | Description | | :------------ | :--------------------------------------------------------------------------------------- | :-------- | :----------------------------------------------- | | **Documents** | [Document](/vantage/documentation/skill-designer/process/condition-activity/document)\[] | Read-only | The collection of documents for the transaction. | ## Related topics * [Context](/vantage/documentation/skill-designer/process/condition-activity/context) * [Document](/vantage/documentation/skill-designer/process/condition-activity/document) * [Object model](/vantage/documentation/skill-designer/process/condition-activity/object-model) # BinaryFile Source: https://docs.abbyy.com/vantage/documentation/skill-designer/process/custom-activity/binary-file The BinaryFile interface provides access to file data in binary format, typically the pre-preprocessing source image of a document or page. The `BinaryFile` interface provides access to file data in binary format. This object contains the image before preprocessing. ## Properties | Name | Type | Access | Description | | :----------- | :----- | :-------- | :-------------------- | | **FileName** | string | Read-only | The name of the file. | ## Methods ### ConvertToBase64 ```javascript theme={null} string ConvertToBase64(); ``` Returns the file data converted from binary to a Base64-encoded string. ## Related topics * [Document](/vantage/documentation/skill-designer/process/custom-activity/document) * [Page](/vantage/documentation/skill-designer/process/custom-activity/page) * [Object model](/vantage/documentation/skill-designer/process/custom-activity/object-model) # ClassConfidenceModel Source: https://docs.abbyy.com/vantage/documentation/skill-designer/process/custom-activity/class-confidence-model A single class-confidence pair returned by Document.ClassConfidences after a Classification skill runs. `ClassConfidenceModel` represents a single class and its confidence, an estimate of the probability that the document was classified correctly. ## Properties | Name | Type | Access | Description | | :------------- | :----- | :-------- | :----------------------------------------------------------- | | **Class** | string | Read-only | The name of the class. | | **Confidence** | number | Read-only | The confidence value (higher means a more confident result). | ## Related topics * [Document](/vantage/documentation/skill-designer/process/custom-activity/document) * [Object model](/vantage/documentation/skill-designer/process/custom-activity/object-model) * [Classify activity](/vantage/documentation/skill-designer/process/classify-activity) # ContentEncoding Source: https://docs.abbyy.com/vantage/documentation/skill-designer/process/custom-activity/content-encoding The ContentEncoding enumerator lists the encoding types available for string-based HTTP requests in Custom activity scripts. `ContentEncoding` enumerates the encoding types available for string-based HTTP requests. ## Constants * **Default** * **Unicode** * **ASCII** * **BigEndianUnicode** * **UTF32** * **UTF7** * **UTF8** ## Related topics * [HttpRequest](/vantage/documentation/skill-designer/process/custom-activity/http-request) * [Object model](/vantage/documentation/skill-designer/process/custom-activity/object-model) # DataType Source: https://docs.abbyy.com/vantage/documentation/skill-designer/process/custom-activity/data-type The DataType enumerator lists the possible data types a field can contain, used by Field.DataType in Custom activity scripts. `DataType` enumerates the possible data types a field can contain. ## Constants * **None** * **Text** * **Date** * **Amount** * **Number** * **Choice** * **Binary** * **Boolean** ## Related topics * [Field](/vantage/documentation/skill-designer/process/custom-activity/field) * [FieldOcrType](/vantage/documentation/skill-designer/process/custom-activity/field-ocr-type) * [Object model](/vantage/documentation/skill-designer/process/custom-activity/object-model) # Document Source: https://docs.abbyy.com/vantage/documentation/skill-designer/process/custom-activity/document The Document object provides properties and methods for reading the document being processed, including fields, pages, classification results, and source files. `Document` represents the document currently being processed in a Custom activity script, including its fields, pages, classification results, source files, and export results. Depending on which processing stages have completed, some properties may return empty values. For example, only `DocumentId` and `SourceFiles` are populated before any skill is applied. `ResultClass` is populated after a Classification skill runs. `Fields` is populated after extraction. ## Properties | Name | Type | Access | Description | | :------------------------- | :-------------------------------------------------------------------------------------------------------------- | :--------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **ClassConfidences** | [ClassConfidenceModel](/vantage/documentation/skill-designer/process/custom-activity/class-confidence-model)\[] | Read-only | The confidence values for each class. | | **DocumentId** | string | Read-only | The unique document identifier. | | **DocumentSkillId** | string | Read-only | The unique identifier of the Document skill applied to the document. | | **DocumentSkillName** | string | Read-only | The name of the Document skill applied to the document. | | **Fields** | [Field](/vantage/documentation/skill-designer/process/custom-activity/field)\[] | Read-only | Fields detected on the document. Populated only after a Document skill runs. | | **IsResultClassConfident** | bool | Read-only | `true` if the document's class was determined with confidence. | | **Pages** | [Page](/vantage/documentation/skill-designer/process/custom-activity/page)\[] | Read-only | The pages of the document. | | **ResultClass** | string | Read-only | The class assigned by the Classification skill. Empty if the document wasn't classified. | | **RuleErrors** | [RuleError](/vantage/documentation/skill-designer/process/custom-activity/rule-error)\[] | Read-only | Field extraction validation rule errors. | | **SourceFiles** | [BinaryFile](/vantage/documentation/skill-designer/process/custom-activity/binary-file)\[] | Read-only | Document source files. Contains the image before preprocessing. Source metadata (including EXIF data) is preserved for JPEGs. | | **Exports** | [ResultFiles](/vantage/documentation/skill-designer/process/custom-activity/document-export-result#resultfiles) | Read-write | Document export results. | | **RegistrationParameters** | `Record` | Read-only | Dictionary of the source file's registration parameters for the first page. Keys are parameter names, values are [`Parameter`](/vantage/documentation/skill-designer/process/custom-activity/parameter) objects. | `ClassConfidences` and `IsResultClassConfident` are populated only when a Classification skill has been applied. ## Methods ### ToJsonString ```javascript theme={null} string ToJsonString(); ``` Returns the document data as a JSON-formatted string. ### GetField ```javascript theme={null} Field GetField(string fieldName); ``` Returns the [`Field`](/vantage/documentation/skill-designer/process/custom-activity/field) object for the named field. ## Related topics * [Transaction](/vantage/documentation/skill-designer/process/custom-activity/transaction) * [Field](/vantage/documentation/skill-designer/process/custom-activity/field) * [Page](/vantage/documentation/skill-designer/process/custom-activity/page) * [BinaryFile](/vantage/documentation/skill-designer/process/custom-activity/binary-file) * [Object model](/vantage/documentation/skill-designer/process/custom-activity/object-model) * [Custom activity](/vantage/documentation/skill-designer/process/custom-activity/custom-activity) # DocumentExportResult Source: https://docs.abbyy.com/vantage/documentation/skill-designer/process/custom-activity/document-export-result DocumentExportResult and ResultFiles provide access to exported document files (JSON, PDF, images) from a Custom or Output activity script. `DocumentExportResult` is a JavaScript object that provides access to document export results. Before a Custom activity runs, or before an Output (External system) script runs, Vantage exports each document to the formats configured on the activity (for example, JSON or PDF). Access these exported files via [`Document.Exports`](/vantage/documentation/skill-designer/process/custom-activity/document) to send them to third-party systems. ## Properties | Name | Type | Access | Description | | :---------------------------- | :------------------------------------------------------------------------------------------ | :-------- | :-------------------------------------- | | **FileName** | string | Read-only | The name of the file. | | **ExportFormat** | [ExportFormat](/vantage/documentation/skill-designer/process/custom-activity/export-format) | Read-only | The export format. | | **`Properties["PageIndex"]`** | string | Read-only | Page sequence number (JPG export only). | ## Methods ### ToJson ```javascript theme={null} string ToJson(); ``` Returns the export results as a JSON-formatted string. Only works for JSON formats (JSON, FieldsJson, OcrJson). ## ResultFiles A read-only collection of `DocumentExportResult` objects. Filter results by export format. ### Methods #### GetByFormat ```javascript theme={null} DocumentExportResult GetByFormat(ExportFormat format); ``` Returns the `DocumentExportResult` for the specified export format. ## Examples The following script gets the JSON and PDF export results for a document and sends them to an external system: ```javascript theme={null} // Access the export results for the first document in the transaction. // Vantage exports each document to the formats configured on the activity. var exports = Context.Transaction.Documents[0].Exports; // Get a specific export result by format. var jsonResult = exports.GetByFormat(ExportFormat.Json); var pdfResult = exports.GetByFormat(ExportFormat.Pdf); // Read the extracted data from the JSON export result as a string. var jsonString = jsonResult.ToJson(); // Send the extracted data and the PDF to an external system. var request = Context.CreateMultipartFormDataRequest(); request.Url = "https://my_service.com/api/v1.0/documents"; request.Method = "POST"; request.AppendStringContent(jsonString, "jsonData"); request.AppendFileContent(pdfResult, "binaryData"); request.Send(); ``` The following script lists each exported JPG page image with its file name and page number: ```javascript theme={null} // PageIndex is available for JPG exports only. var exports = Context.Transaction.Documents[0].Exports; exports .filter(result => result.ExportFormat === ExportFormat.Jpeg) .forEach(result => { Context.LogMessage(result.FileName + " (page " + result.Properties["PageIndex"] + ")"); }); ``` ## Related topics * [Document](/vantage/documentation/skill-designer/process/custom-activity/document) * [ExportFormat](/vantage/documentation/skill-designer/process/custom-activity/export-format) * [Custom activity](/vantage/documentation/skill-designer/process/custom-activity/custom-activity) * [Sample scripts](/vantage/documentation/skill-designer/process/custom-activity/sample-scripts) * [Export results to an external system](/vantage/documentation/skill-designer/process/output-activity/export-external-system) * [Object model](/vantage/documentation/skill-designer/process/custom-activity/object-model) # ExportFormat Source: https://docs.abbyy.com/vantage/documentation/skill-designer/process/custom-activity/export-format The ExportFormat enumerator lists the formats available for files exported from a Custom activity or via External Export. `ExportFormat` specifies the format of exported files sent to the external system. ## Default formats Formats available in a Custom activity by default (format names identical to those used in scripts): | Format | Description | | :------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **Pdf** | PDF document with a text layer. | | **Json** | Extracted data such as field values, field structure, and rule check errors. For more information, see the [JSON schema](/vantage/documentation/skill-designer/process/custom-activity/public-schema-json). | | **OcrJson** | Full-text recognition data in JSON format. For more information, see the [OCR JSON schema](/vantage/documentation/skill-designer/process/custom-activity/ocr-skill-schema-json). | | **FieldsJson** | Simplified JSON file containing only field values and rule check errors. | ## Custom export formats When a Custom activity is used as External Export, scripts can only access output files created by the [Output activity](/vantage/documentation/skill-designer/process/output-activity/output-activity). The following additional formats are available: | Format | Description | | :------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **FieldsJson** | Simplified JSON file containing only field values and rule check errors. | | **Json** | Extracted data such as field values, field structure, and rule check errors. For more information, see the [JSON schema](/vantage/documentation/skill-designer/process/custom-activity/public-schema-json). | | **Xml** | Extracted data such as field values, field structure, and rule check errors. For more information, see the [XML schema](/vantage/documentation/skill-designer/process/custom-activity/ocr-schema-xml). | | **Csv** | Extracted text data with values of repeating or non-repeating fields. | | **Pdf** | PDF document with a text layer. | | **Jpeg** | Extracted image data in JPG format. | | **Tiff** | Extracted image data in TIFF format. | | **Text** | Extracted text data in TXT format. | | **Docx** | Extracted text and image data in DOCX format. | | **Xlsx** | Extracted text and image data in XLSX format. | | **OcrJson** | Full-text recognition data in JSON format. For more information, see the [OCR JSON schema](/vantage/documentation/skill-designer/process/custom-activity/ocr-skill-schema-json). | To specify output formats, click **Settings** in the **Exported Data** section of the **Output** activity's **Actions** pane. For more information, see [Data export formats](/vantage/documentation/skill-designer/process/output-activity/export-formats). ## Related topics * [DocumentExportResult](/vantage/documentation/skill-designer/process/custom-activity/document-export-result) * [Output activity](/vantage/documentation/skill-designer/process/output-activity/output-activity) * [Data export formats](/vantage/documentation/skill-designer/process/output-activity/export-formats) * [Object model](/vantage/documentation/skill-designer/process/custom-activity/object-model) # ExtractedData (deprecated) Source: https://docs.abbyy.com/vantage/documentation/skill-designer/process/custom-activity/extracted-data Deprecated ExtractedData interface for accessing Extract activity output in Custom activity scripts. Provides only the first document of a transaction. This interface is deprecated. It provides access only to the first document of the transaction. The ExtractedData interface is a deserialized representation of the export results in JSON format (for skills containing the [Extract](/vantage/documentation/skill-designer/process/extract-activity) activity). It simplifies access to data extracted using Extract activity. ## Methods | Name | Description | | :-------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | HasFieldDefinition(string fieldName); | Returns True if the field was detected in the structure description of the document specified in the Extract activity properties of a processing skill. Document structure is set in the ExtractedData object. ExtractedData fields are grouped, hence the field name should be passed as a path, for example, "Amounts/Additional Tax Groups/NetAmount". Forward slashes are used as separators between fields and group names. | | GetFieldValues(string fieldName); | Returns an array of field values as [Field](/vantage/documentation/skill-designer/process/custom-activity/field) objects for the specified field name. Can have any number of values. | | AddFieldValue(string fieldName, number lineItem?); | Creates a field instance. Can be used to create both repeating and non-repeating fields. Returns a created [Field](/vantage/documentation/skill-designer/process/custom-activity/field) object. | | RemoveTableRow(string tableName, number rowNumber); | Removes a row from the table. | | GetTableRowCount(string tableName); | Returns the number of rows in the specified table. | ## Related topics * [Transaction](/vantage/documentation/skill-designer/process/custom-activity/transaction) * [Document](/vantage/documentation/skill-designer/process/custom-activity/document) * [Extract activity](/vantage/documentation/skill-designer/process/extract-activity) * [Object model](/vantage/documentation/skill-designer/process/custom-activity/object-model) # ExtractedField (deprecated) Source: https://docs.abbyy.com/vantage/documentation/skill-designer/process/custom-activity/extracted-field Deprecated ExtractedField interface representing a single field extracted from the first document of a transaction in older Custom activity scripts. This interface is deprecated. It provides access only to the first document of the transaction. The extracted field. ## Properties | Name | Type | Description | | :----------------- | :------------------------------------------------------------------------------------------------------ | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Name | string, read-only | The field name. ExtractedData fields are grouped, hence the field name should be passed as a path, for example, "Amounts/Additional Tax Groups/NetAmount". Forward slashes are used as separators between fields and group names. | | IsRepeatable | boolean, read-only | Specifies whether the field is repeating. | | IsParentRepeatable | boolean, read-only | Specifies whether the parent field is repeating. | | FieldType | [FieldOcrType](/vantage/documentation/skill-designer/process/custom-activity/field-ocr-type), read-only | The field type. | | HasStringValue | boolean, read-only | Specifies that the field is of type "string". | | HasBooleanValue | boolean, read-only | Specifies that the field value is of type "boolean". | | EnumValue | string | The EnumValue value. | | StringValue | string | The string value of the field. | | BooleanValue | string | The boolean value of the field. | ## Methods | Name | Description | | :------------------------------------------------ | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | SetImageRegion(number pageNumber, string region); | Sets a region for a field on the selected page. Region coordinates are specified in "left, top, right, bottom" format. If the page with the specified number does not exist in the document, an exception containing an error is generated. | | GetImageRegion(number pageNumber); | Returns a string that contains field region coordinates on the selected page. Region coordinates are specified in "left, top, right, bottom" format. If the page with the specified number does not exist in the document, an exception containing an error is generated. If field coordinates are not specified, returns **Null**. | | Remove(); | Deletes current field. | ## Related topics * [Field](/vantage/documentation/skill-designer/process/custom-activity/field) * [FieldOcrType](/vantage/documentation/skill-designer/process/custom-activity/field-ocr-type) * [ExtractedData (deprecated)](/vantage/documentation/skill-designer/process/custom-activity/extracted-data) * [Object model](/vantage/documentation/skill-designer/process/custom-activity/object-model) # Field Source: https://docs.abbyy.com/vantage/documentation/skill-designer/process/custom-activity/field The Field interface provides access to the field value and its properties. `Field` provides access to a document field's value, type, structure, and OCR metadata in a Custom activity script. ## Properties | Name | Type | Access | Description | | :---------------- | :--------------------------------------------------------------------------------------------------- | :--------- | :------------------------------------------------------------------------------------------------------------------- | | **Children** | Field\[] | Read-only | Child fields. | | **DataType** | [DataType](/vantage/documentation/skill-designer/process/custom-activity/data-type) | Read-only | The field data type. | | **FieldType** | [FieldOcrType](/vantage/documentation/skill-designer/process/custom-activity/field-ocr-type) | Read-only | The field type (for example, text, barcode, or image). | | **FullName** | string | Read-only | The full path from the document root. Parent field names are separated by `/`, for example `Vendor/Address`. | | **Id** | string | Read-only | The identifier of a field definition from the document definition. | | **InstanceId** | string | Read-only | The identifier of a field instance. If the document has no instances of the field, `InstanceId` is `null`. | | **InstanceIndex** | number | Read-only | The index of the current instance among all repeating fields of the same type. Only meaningful for repeating fields. | | **Instances** | Field\[] | Read-only | All instances of this field. Only meaningful for repeating fields. | | **IsConfirmed** | boolean | Read-only | `true` if the value was confirmed by an operator during verification. | | **IsRepeatable** | boolean | Read-only | `true` if the field is repeating. | | **IsSuspicious** | boolean | Read-only | `true` if recognition wasn't confident for this field. | | **IsValid** | boolean | Read-only | `true` if `Text` converted successfully to a `Value` of the correct type; otherwise `false`. | | **IsVisible** | boolean | Read-only | `true` if the field is visible to operators; `false` if hidden during verification. | | **Name** | string | Read-only | The field name. | | **Parent** | Field | Read-only | The parent field. | | **Regions** | [RegionsCollection](/vantage/documentation/skill-designer/process/custom-activity/region#collection) | Read-only | Regions on the image where the field is located. | | **Text** | string | Read-only | The field text as detected on the document. | | **Value** | object | Read-write | The field value converted to the appropriate data type (for example, date or float). | | **Image** | [BinaryFile](/vantage/documentation/skill-designer/process/custom-activity/binary-file) | Read-only | The image in binary format. | `Image` only applies to fields of type **Picture**. ## Methods ### AddInstance ```javascript theme={null} Field AddInstance(any value?); ``` Creates or updates a field instance, depending on the field type: * **Non-repeating fields** – Updates the existing instance, or creates one if none exists. * **Repeating fields** – Creates a new instance. Returns the created or updated `Field` object. ### Remove ```javascript theme={null} void Remove(); ``` Deletes the field. ## Related topics * [Document](/vantage/documentation/skill-designer/process/custom-activity/document) * [DataType](/vantage/documentation/skill-designer/process/custom-activity/data-type) * [FieldOcrType](/vantage/documentation/skill-designer/process/custom-activity/field-ocr-type) * [Region](/vantage/documentation/skill-designer/process/custom-activity/region) * [BinaryFile](/vantage/documentation/skill-designer/process/custom-activity/binary-file) * [Object model](/vantage/documentation/skill-designer/process/custom-activity/object-model) # FieldOcrType Source: https://docs.abbyy.com/vantage/documentation/skill-designer/process/custom-activity/field-ocr-type This enumerator specifies the type of the extracted field. `FieldOcrType` enumerates the type of an extracted field, used when inspecting fields produced by an Extract activity. ## Constants | Name | Description | | :------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Barcode | Barcode. For more information on how fields of this type are created, see [Barcode](/vantage/documentation/skill-designer/document/adding-fields/barcode). | | Checkmark | Checkmark. For more information on how fields of this type are created, see [Checkmark](/vantage/documentation/skill-designer/document/adding-fields/checkmark). | | CheckmarkGroup | Checkmark group. For more information on how fields of this type are created, see [Checkmark Group](/vantage/documentation/skill-designer/document/adding-fields/checkmark-group). | | Group | Field group. For more information on how group fields are created, see [Group](/vantage/documentation/skill-designer/document/adding-fields/group). | | Picture | Image. For more information on how fields of this type are created, see [Image](/vantage/documentation/skill-designer/document/adding-fields/image). | | Table | Table. Each table cell is a separate field. For more information on how fields of this type are created, see [Table](/vantage/documentation/skill-designer/document/adding-fields/table). | | Text | Text. For more information on how fields of this type are created, see [text field](/vantage/documentation/skill-designer/document/adding-fields/text). | ## Related topics * [Field](/vantage/documentation/skill-designer/process/custom-activity/field) * [Add fields](/vantage/documentation/skill-designer/document/adding-fields/adding-fields) * [Object model](/vantage/documentation/skill-designer/process/custom-activity/object-model) # FieldType (deprecated) Source: https://docs.abbyy.com/vantage/documentation/skill-designer/process/custom-activity/field-type Deprecated FieldType enumerator listing field data types (String, Decimal, and others) used in older Custom activity scripts. This interface is deprecated. It provides access only to the first document of the transaction. The FieldType enumerator specifies the type of the extracted field. The enumerator contains the following constants: * String * Decimal * ISODate * Boolean * Image * Concept. For more information, see the [Developer Guide](/vantage/developer/getting-started). * Enum ## Related topics * [FieldOcrType](/vantage/documentation/skill-designer/process/custom-activity/field-ocr-type) * [Field](/vantage/documentation/skill-designer/process/custom-activity/field) * [Object model](/vantage/documentation/skill-designer/process/custom-activity/object-model) # Global methods Source: https://docs.abbyy.com/vantage/documentation/skill-designer/process/custom-activity/global-methods Global methods for encoding and decoding Base64 strings. Global JavaScript methods available to Custom activity scripts for Base64 encoding and decoding. ## Methods ### btoa ```javascript theme={null} string btoa(string input); ``` Encodes a string as Base64. ### atob ```javascript theme={null} string atob(string base64Input); ``` Decodes a Base64 string back to its original form. ## Related topics * [BinaryFile](/vantage/documentation/skill-designer/process/custom-activity/binary-file) * [HttpRequest](/vantage/documentation/skill-designer/process/custom-activity/http-request) * [Object model](/vantage/documentation/skill-designer/process/custom-activity/object-model) # HttpRequest Source: https://docs.abbyy.com/vantage/documentation/skill-designer/process/custom-activity/http-request The HttpRequest object sends application/x-www-form-urlencoded, text, JSON, or binary HTTP requests from a Custom activity script. `HttpRequest` sends HTTP requests containing `application/x-www-form-urlencoded`, text, or binary data to external services. ## Properties | Name | Type | Access | Description | | :------------------------- | :------ | :--------- | :---------------------------------------------------------------------------------- | | **Url** | string | Read-write | The resource URL. | | **Method** | string | Read-write | The request type (for example, `GET` or `POST`). | | **AuthToken** | string | Read-write | Authentication token if the external service requires authentication. | | **AuthScheme** | string | Read-write | Authentication scheme. | | **ThrowExceptionOnFailed** | boolean | Read-write | If `true` (default), HTTP response status codes outside 200–299 raise an exception. | | **Timeout** | number | Read-write | Request timeout in minutes. Default is 1 minute. | | **ResponseText** | string | Read-only | The response body in text format. | | **ResponseType** | string | Read-only | The content type of the response (for example, `application/json`). | | **Status** | number | Read-only | The HTTP response status code from the external service. | When `ThrowExceptionOnFailed` is `true` (the default) and the response is an error code, the transaction is interrupted and the error message appears in Skill Monitor. When `ThrowExceptionOnFailed` is `false`, error responses (4xx/5xx) don't raise an exception. Inspect `Status` to check the HTTP status code yourself. A response with an error code means the external service is reachable and responding. Errors related to service availability or connection failures always raise a program exception regardless of this property, and in those cases no HTTP status code is available. The `Timeout` value can't exceed the script runtime limit (600 seconds). ## Methods ### SetHeader ```javascript theme={null} void SetHeader(string name, string value); ``` Sets an additional HTTP header for the request. Call once per header. ### Send ```javascript theme={null} void Send(); ``` Sends the HTTP request. ### SetFileContent ```javascript theme={null} void SetFileContent(DocumentExportResult documentExportResult, string mediaType?); void SetFileContent(BinaryFile binaryFile, string mediaType?); ``` Initializes a file-based HTTP request body. The content type is detected from the file extension (for example, `application/json`, `application/pdf`). To override, pass `mediaType`. * The first overload sends exported data (from `Document.Exports`) as a file. * The second overload sends binary data, either a source image from when the transaction was created or an image from a field of type **Picture**. ### SetSourceFileContent ```javascript theme={null} void SetSourceFileContent(string mediaType?); ``` Initializes a binary-data request with the source image imported when the transaction was created. The content type is detected from the file extension. Override with `mediaType` if needed. `SetSourceFileContent` is deprecated. It only accesses the first file in a transaction. Use [`SetFileContent`](#setfilecontent) instead. ### SetStringContent ```javascript theme={null} void SetStringContent(string content, ContentEncoding contentEncoding?, string mediaType?); ``` Initializes a string-based HTTP request body. Defaults to `Content-Type: application/json` and UTF-8 encoding. Override either using the optional parameters. ### SetUrlFormEncodedContent ```javascript theme={null} void SetUrlFormEncodedContent(any content); ``` Initializes the request body from a JavaScript object and encodes it as `application/x-www-form-urlencoded`. The object should be a simple set of property/value pairs: ```javascript theme={null} var form = {}; form.grant_type = "password"; form.scope = "openid permissions"; form.client_id = "value of client_id"; form.client_secret = "value of client_secret"; form.password = "Password"; form.username = "User Name"; request.SetUrlFormEncodedContent(form); ``` ## Related topics * [Context](/vantage/documentation/skill-designer/process/custom-activity/context) * [MultipartFormDataRequest](/vantage/documentation/skill-designer/process/custom-activity/multi-part-form-data-request) * [BinaryFile](/vantage/documentation/skill-designer/process/custom-activity/binary-file) * [DocumentExportResult](/vantage/documentation/skill-designer/process/custom-activity/document-export-result) * [ContentEncoding](/vantage/documentation/skill-designer/process/custom-activity/content-encoding) * [Object model](/vantage/documentation/skill-designer/process/custom-activity/object-model) # MultipartFormDataRequest Source: https://docs.abbyy.com/vantage/documentation/skill-designer/process/custom-activity/multi-part-form-data-request MultipartFormDataRequest interface for making HTTP requests with multipart/form-data content type from Custom activity scripts. An HTTP request with the multipart/form-data content type. ## Properties | Name | Type | Description | | :--------------------- | :---------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Url | string | The resource URL. | | Method | string | The request type (for example, GET or POST). | | AuthToken | string | Authentication token (if external service authentication is required). | | AuthScheme | string | Authentication scheme. | | ThrowExceptionOnFailed | boolean | Specifies whether an exception should be generated when the external service returns an error code as the HTTP response status. If set to False, exceptions are not generated, and the HTTP status code is stored in the Status property. Set to True by default. | | Timeout | number | Response timeout in minutes. Set to 1 minute by default. | | ResponseText | string, read-only | The response results in text format. | | ResponseType | string, read-only | The type of request response returned by the service, for example, "application/json". | | Status | number | The external service HTTP response status code. If ThrowExceptionOnFailed is set to True, an error code will generate an exception and the transaction will be interrupted. The error message text can be viewed in Skill Monitor. | The `Timeout` value can't exceed the script runtime limit (600 seconds). ## Methods | Name | Description | | :-------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | AppendStringContent(string data, string contentName); | Adds a multipart/form-data string to the request body (by default, the content type is set to application/json with UTF8 encoding). The **contentName** parameter specifies the field name in passable format. | | AppendStringContent(string data, string contentName, ContentEncoding contentEncoding, string mediaType?); | Adds a multipart/form-data string to the request body. In addition, allows the encoding to be specified. If the content type is not specified, it is set to "application/json" by default. | | AppendFileContent(DocumentExportResult documentExportResult, string contentName, string mediaType?); | Adds multipart/form-data binary data to the request body. The content type is set automatically based on the extension of the file being passed. If required, the content type can be set in advance using the **mediaType** optional parameter. | | AppendFileContent(BinaryFile binaryFile, string contentName, string mediaType?); | Adds the following binary data to the request body: the source image imported to the transaction, or the image contained in the field of type Picture. The content type is set automatically based on the extension of the file being imported. If required, the content type can be set in advance using the **mediaType** optional parameter. | | AppendSourceFileContent(string contentName, string mediaType?); | Adds binary data from the source image imported to the transaction to the request body. The content type is set automatically based on the extension of the file being imported. If required, the content type can be set in advance using the **mediaType** optional parameter. | | SetHeader(string name, string value); | Sets additional HTTP headers for the request. This method should be called for each header name. | | Send(); | Sends the HTTP request. | `AppendSourceFileContent` is deprecated. It only accesses the first file in a transaction. Use `AppendFileContent` instead. ## Related topics * [HttpRequest](/vantage/documentation/skill-designer/process/custom-activity/http-request) * [BinaryFile](/vantage/documentation/skill-designer/process/custom-activity/binary-file) * [DocumentExportResult](/vantage/documentation/skill-designer/process/custom-activity/document-export-result) * [ContentEncoding](/vantage/documentation/skill-designer/process/custom-activity/content-encoding) * [Object model](/vantage/documentation/skill-designer/process/custom-activity/object-model) # OCR XML schema for Output activity Source: https://docs.abbyy.com/vantage/documentation/skill-designer/process/custom-activity/ocr-schema-xml XML schema definition used when exporting OCR and extracted data, including field values, field structure, and rule check errors. Vantage uses the following OCR XML schema when exporting extracted data, including field values, field structure, and rule check errors. ```xml theme={null} Paragraph formatting style Document sections collection Section Recognized page Recognized block Page Section Running titles and artefacts If true, all coordinates are relative to original image before opening, otherwise they are relative to the opened (deskewed) image Stores the type of rotation applied to original page image Page section is the sequence of page streams Page Stream is the sequence of page elements text Table Barcode Picture Table captions Table cells Page element with cell contents (text or picture) Image file relative path, presents if SavePicture export parameter is set to true Picture captions Text Stream is the sequence of paragraphs and/or blocks Id of page element Block region, the set of rectangles Image file relative path, presents if blockType attribute is Picture and SavePicture export parameter is set to true Recognized block text, presents if blockType attribute is Text The set of table rows, presents if blockType attribute is Table Separators box block, presents if blockType attribute is SeparatorsBox Separator block, presents if blockType attribute is Separator Information about barcode, presents if blockType attribute is Barcode Text paragraph Table cell Cell text Text paragraph line Attribute deprecated. Attribute deprecated. Group of characters with uniform formatting Attributes of characters are alternated with word's recognition variants. The variants of recognition of the word are written before the word Attributes of single character Variants of recognition of the next word Attribute deprecated. "wordFirst" and "wordLeftMost" attributes should be used instead. Starting point of the separator Ending point of the separator ``` ## Related topics * [ExportFormat](/vantage/documentation/skill-designer/process/custom-activity/export-format) * [Public JSON schema for Output activity](/vantage/documentation/skill-designer/process/custom-activity/public-schema-json) * [OCR JSON schema for Output activity](/vantage/documentation/skill-designer/process/custom-activity/ocr-skill-schema-json) * [DocumentExportResult](/vantage/documentation/skill-designer/process/custom-activity/document-export-result) * [Object model](/vantage/documentation/skill-designer/process/custom-activity/object-model) # OCR JSON schema for Output activity Source: https://docs.abbyy.com/vantage/documentation/skill-designer/process/custom-activity/ocr-skill-schema-json OCR JSON schema for Output Activity. Vantage uses the following OCR JSON schema when exporting extracted data such as field values, field structure, and rule check errors. ```json theme={null} { "$schema": "http://json-schema.org/draft-07/schema", "type": "object", "description": "Document.", "definitions": { "borderType": { "type": "string", "description": "Table cell border type.", "enum": [ "unknown", "invisible", "visible" ] }, "rect": { "type": "object", "description": "Rectangle {r:left, t:top, r:right, b:bottom}", "required": [ "l", "t", "r", "b" ], "properties": { "l": { "type": "integer", "description": "Left coordinate." }, "t": { "type": "integer", "description": "Top coordinate." }, "r": { "type": "integer", "description": "Right coordinate." }, "b": { "type": "integer", "description": "Bottom coordinate." } } }, "confidence": { "type": "number", "description": "Confidence." }, "listNumberingStyle": { "type": "string", "description": "List numbering style.", "enum": [ "None", "Decimal", "UpperRoman", "LowerRoman", "UpperLetter", "LowerLetter", "Ordinal", "CardinalText", "OrdinalText", "Hex", "Chicago", "IdeographDigital", "JapaneseCounting", "Aiueo", "Iroha", "DecimalFullWidth", "DecimalHalfWidth", "JapaneseLegal", "JapaneseDigitalTenThousand", "DecimalEnclosedCircle", "DecimalFullWidth2", "AiueoFullWidth", "IrohaFullWidth", "DecimalZero", "Bullet", "Ganada", "Chosung", "DecimalEnclosedFullstop", "DecimalEnclosedParen", "DecimalEnclosedCircleChinese", "IdeographEnclosedCircle", "IdeographTraditional", "IdeographZodiac", "IdeographZodiacTraditional", "TaiwaneseCounting", "IdeographLegalTraditional", "TaiwaneseCountingThousand", "TaiwaneseDigital", "ChineseCounting", "ChineseLegalSimplified", "ChineseCountingThousand", "ApplicationDefined", "KoreanDigital", "KoreanCounting", "KoreanLegal", "KoreanDigital2", "Hebrew1", "ArabicAlpha", "Hebrew2", "ArabicAbjad", "HindiVowels", "HindiConsonants", "HindiNumbers", "HindiCounting", "ThaiLetters", "ThaiNumbers", "ThaiCounting", "VietnameseCounting", "NumberInDash", "RussianLower", "RussianUpper", "Burmese", "Unnumbered" ] }, "listLevel": { "type": "object", "description": "List level description", "required": [ "levelIndex", "numberingStyle", "startNumber" ], "properties": { "levelIndex": { "type": "integer", "description": "Level index.", "minimum": 0 }, "numberingStyle": { "$ref": "#/definitions/listNumberingStyle", "description": "List numbering style." }, "startNumber": { "type": "integer", "description": "Start number." } } }, "picture": { "type": "object", "description": "Block with image.", "properties": { "id": { "type": "string", "description": "Picture block ID." }, "position": { "$ref": "#/definitions/rect" }, "confidence": { "$ref": "#/definitions/confidence" } } }, "barcode": { "type": "object", "description": "Barcode.", "properties": { "id": { "type": "string", "description": "Barcode block ID." }, "position": { "$ref": "#/definitions/rect" }, "confidence": { "$ref": "#/definitions/confidence" }, "type": { "type": "string", "description": "Barcode type.", "enum": [ "Code39", "Interleaved25", "EAN13", "Code128", "EAN8", "PDF417", "Codabar", "UPCE", "Industrial25", "IATA25", "Matrix25", "Code93", "PostNet", "UCC128", "Patch", "Aztec", "DataMatrix", "QRCode", "UPCA", "MaxiCode", "Code32", "FullAscii", "IntelligentMail", "RoyalMail4State", "KIX", "Australia4State", "JapanPost", "NotFound" ] }, "value": { "type": "string", "description": "Barcode value." }, "supplementType": { "type": "string", "description": "Supplement type.", "enum": [ "none", "2digits", "5digits" ] }, "supplementValue": { "type": "string", "description": "Supplement value." } } }, "lines": { "type": "array", "description": "An array of text strings in the text block ordered by reading direction.", "items": [ { "type": "object", "description": "A line of text.", "properties": { "position": { "$ref": "#/definitions/rect" }, "confidence": { "$ref": "#/definitions/confidence" }, "text": { "type": "string", "description": "A line of text value." }, "charParams": { "$ref": "#/definitions/charParams" }, "words": { "type": "array", "description": "An array of words in a line of text ordered by reading direction.", "items": [ { "type": "object", "description": "Word.", "properties": { "position": { "$ref": "#/definitions/rect" }, "confidence": { "$ref": "#/definitions/confidence" }, "text": { "type": "string", "description": "Word value." }, "charParams": { "$ref": "#/definitions/charParams" }, "chars": { "type": "array", "description": "An array of characters in a word ordered by reading direction.", "items": [ { "type": "object", "description": "Word character.", "properties": { "confidence": { "$ref": "#/definitions/confidence" }, "text": { "type": "string", "description": "Word character value." }, "position": { "$ref": "#/definitions/rect" }, "charParams": { "$ref": "#/definitions/charParams" } } } ] } } } ] } } } ] }, "charParams": { "type": "object", "description": "Symbol font formatting parameters.", "properties": { "bold": { "type": "boolean", "description": "Bold property state - if it is different from the container's one", "default": false }, "italic": { "type": "boolean", "description": "Italic property state - if it is different from the container's one", "default": false }, "underlined": { "type": "boolean", "description": "Underlined property state - if it is different from the container's one", "default": false }, "strikeout": { "type": "boolean", "description": "Strikeout property state - if it is different from the container's one", "default": false }, "smallCaps": { "type": "boolean", "description": "SmallCaps property state - if it is different from the container's one", "default": false }, "superscript": { "type": "boolean", "description": "Superscript property state - if it is different from the container's one", "default": false }, "subscript": { "type": "boolean", "description": "Subscript property state - if it is different from the container's one", "default": false }, "scaling": { "type": "integer", "description": "Scaling property state (in thousandths of 1) - if it is different from the container's one", "default": 1000, "minimum": 100, "maximum": 10000 }, "spacing": { "type": "integer", "description": "Spacing property state in twips (1/20 pt, 1/1440 inch) - if it is different from the container's one", "default": 0, "minimum": -1000, "maximum": 1000 }, "fontSize": { "type": "integer", "description": "Font size property state in twips (1/20 pt, 1/1440 inch) - if it is different from the container's one", "default": 200, "minimum": 50, "maximum": 4000 }, "fontName": { "type": "string", "description": "Font name property state - if it is different from the container's one" }, "color": { "type": "string", "description": "Symbol font color property state (hexadecimal value in 6-digits format RRGGBB) - if it is different from the container's one" }, "backgroundColor": { "type": "string", "description": "Symbol background color property state (hexadecimal value in 6-digits format RRGGBB) - if it is different from the container's one" }, "lang": { "type": "string", "description": "Symbol language property state (consists of language and country parts, please refer to ISO 639 and ISO 3166) - if it is different from the container's one" } } } }, "required": [ "version", "producer" ], "properties": { "version": { "type": "string", "description": "Document schema version.", "default": "Vantage OCR.Skill JSON output v1.0" }, "producer": { "type": "string", "description": "JSON file author.", "default": "ABBYY Vantage OCR.Skill" }, "languages": { "type": "array", "description": "List of document languages.", "items": [ { "type": "string", "description": "Document language." } ] }, "layout": { "type": "object", "description": "Layout (physical structure).", "required": [ "pages" ], "properties": { "corrected": { "type": "boolean", "description": "Coordinates for the corrected image on the output.", "default": true }, "pages": { "type": "array", "description": "Array of document pages ordered from first to last.", "items": [ { "type": "object", "description": "Document page.", "properties": { "width": { "type": "integer", "description": "The width of the page in pixels." }, "height": { "type": "integer", "description": "The height of the page in points." }, "rotated": { "type": "string", "description": "Rotation of the page relative to the original image.", "enum": [ "none", "clockwise", "counterclockwise", "upside-down" ] }, "texts": { "type": "array", "description": "An array of blocks with text.", "items": [ { "type": "object", "description": "Text.", "properties": { "id" : { "type": "string", "description": "Text block ID." }, "position": { "$ref": "#/definitions/rect" }, "confidence": { "$ref": "#/definitions/confidence" }, "lines": { "#ref": "#/definitions/lines" } } } ] }, "tables": { "type": "array", "description": "An array of blocks with a table.", "items": [ { "type": "object", "description": "Table.", "properties": { "id" : { "type": "string", "description": "Table block ID." }, "position": { "$ref": "#/definitions/rect" }, "confidence": { "$ref": "#/definitions/confidence" }, "cells": { "type": "array", "description": "Table cells.", "items": [ { "type": "object", "description": "Table cell.", "properties": { "id" : { "type": "string", "description": "Table cell ID." }, "position": { "$ref": "#/definitions/rect" }, "confidence": { "$ref": "#/definitions/confidence" }, "colRowPosition": { "type": "object", "description": "Cell coordinate in the Column-Row system {l:leftColumn, t:topRow, r:rightColumn, b:bottomRow}", "properties":{ "l": { "type": "integer", "description": "Left separator index." }, "t": { "type": "integer", "description": "Top separator index." }, "r": { "type": "integer", "description": "Right separator index." }, "b": { "type": "integer", "description": "Bottom separator index." } } }, "borders": { "type": "object", "description": "Table cell border types {l:left, t:top, r:right, b:bottom}", "properties":{ "l": { "$ref": "#/definitions/borderType", "description": "Left border type." }, "t": { "$ref": "#/definitions/borderType", "description": "Top border type." }, "r": { "$ref": "#/definitions/borderType", "description": "Right border type." }, "b": { "$ref": "#/definitions/borderType", "description": "Bottom border type." } } }, "contentType": { "type": "string", "description": "Table cell content type: [text, picture, barcode].", "enum": [ "text", "picture", "barcode" ] }, "picture": { "$ref": "#/definitions/picture" }, "barcode": { "$ref": "#/definitions/barcode" }, "lines": { "$ref": "#/definitions/lines" } } } ] } } } ] }, "pictures": { "type": "array", "description": "Array of blocks with a picture.", "items": [ { "$ref": "#/definitions/picture" } ] }, "barcodes": { "type": "array", "description": "Array of blocks with barcode.", "items": [ { "$ref": "#/definitions/barcode" } ] }, "separators": { "type": "array", "description": "Array of blocks with separator.", "items": [ { "type": "object", "description": "Separator.", "properties": { "position": { "$ref": "#/definitions/rect" }, "confidence": { "$ref": "#/definitions/confidence" }, "color": { "type": "integer", "description": "Separator color." }, "thickness": { "type": "integer", "description": "Separator thickness." }, "type": { "type": "string", "description": "Separator type.", "enum": [ "unknown", "solid", "dotted" ] }, "endPoints": { "type": "object", "description": "Coordinates of the separator ends {startX:startX, startY:startY, endX:endX, endY:endY}", "properties":{ "startX": { "type": "integer", "description": "Start point X-coordinate." }, "startY": { "type": "integer", "description": "Start point Y-coordinate." }, "endX": { "type": "integer", "description": "End point X-coordinate." }, "endY": { "type": "integer", "description": "End point Y-coordinate." } } } } } ] }, "checkmarks": { "type": "array", "description": "Array of blocks with checkmark.", "items": [ { "type": "object", "description": "Checkmark.", "properties": { "position": { "$ref": "#/definitions/rect" }, "confidence": { "$ref": "#/definitions/confidence" }, "value": { "type": "string", "description": "Checkmark value.", "enum": [ "checked", "unchecked", "corrected", "unknown" ] } } } ] } } } ] } } }, "content": { "type": "object", "description": "Document content (logical structure).", "properties": { "paragraphs": { "type": "array", "description": "An array of document paragraphs ordered by reading direction.", "items": [ { "type": "object", "description": "Document paragraph.", "properties": { "id": { "type": "string", "description": "Paragraph ID in the document." }, "role": { "type": "string", "description": "Paragraph role in the document.", "enum": [ "other", "text", "heading", "headingNumber", "tableOfContents", "tableText", "runningTitle", "endNote", "footNote", "tableCaption", "tableHeading", "pictureCaption", "artefact" ] }, "formatting": { "type": "object", "description": "Paragraph formatting.", "properties": { "aligning": { "type": "string", "description": "Text aligning in the paragraph.", "enum": [ "left", "center", "right", "justified", "justifiedForArabic" ] }, "lineSpacing": { "type": "integer", "description": "Paragraph line spacing.", "minimum": 0, "default": 0 } } }, "layoutReferences": { "type": "array", "description": "An array of document paragraph parts sources in the page block structure, in the order of the text in the paragraph.", "items": [ { "type": "object", "description": "Reference block/cell id, paragraph index and line range in the block/cell.", "required": [ "blockId", "blockType", "parIndex", "firstLine", "lastLine" ], "properties": { "blockId": { "type": "string", "description": "Containing text block or table cell ID." }, "blockType": { "type": "string", "description": "Paragraph container type.", "enum": [ "text", "cell" ] }, "sectionIndex": { "type": "integer", "description": "Index of logical section on page (or -1 if there is no section containing the paragraph - like headers, footers etc.).", "minimum": -1 }, "columnIndex": { "type": "integer", "description": "Index of column in logical section (or -1 if there is no column containing the paragraph - like incuts, footnotes etc).", "minimum": -1 }, "lineNumbering": { "type": "boolean", "description": "true if the paragraph is contained in line numbering area." }, "parIndex": { "type": "integer", "description": "Paragraph index in block or table cell.", "minimum": 0 }, "firstLine": { "type": "integer", "description": "Index of the first line of the paragraph in block or table cell.", "minimum": 0 }, "lastLine": { "type": "integer", "description": "Index of the last line of the paragraph in block or table cell.", "minimum": 0 } } } ] }, "text": { "type": "string", "description": "Paragraph text." }, "listReference": { "type": "object", "description": "Reference to list containing the paragraph.", "properties": { "id": { "type": "string", "description": "List ID." }, "levelIndex": { "type": "integer", "description": "Current list item level index.", "minimum": 0, "default": 0 }, "ordinalNumber": { "type": "integer", "description": "Current list item ordinal number.", "minimum": -1, "default": 0 } } }, } } ] }, "lists": { "type": "array", "description": "An array of lists found in the document.", "items": [ { "type": "object", "description": "List description.", "properties": { "id": { "type": "string", "description": "List ID in the document." }, "listLevels": { "type": "array", "description": "An array of list level descriptions.", "items": [ { "$ref": "#/definitions/listLevel" } ] } } } ] } } } } } ``` ## Related topics * [Public JSON schema for Output activity](/vantage/documentation/skill-designer/process/custom-activity/public-schema-json) * [OCR XML schema for Output activity](/vantage/documentation/skill-designer/process/custom-activity/ocr-schema-xml) * [Output activity](/vantage/documentation/skill-designer/process/output-activity/output-activity) # OutputData (deprecated) Source: https://docs.abbyy.com/vantage/documentation/skill-designer/process/custom-activity/output-data Deprecated OutputData interface used in Custom activity scripts to transfer modified document data (field values, new fields, deleted regions) back to Vantage. This interface is deprecated. It provides access only to the first document of the transaction. Used to transfer document data that has been modified by a script, such as field values, new lines or fields, and deleted field regions. After the script has finished running, the OutputData object is used to update document data. ## Methods | Name | Description | | :--------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | GetExtractedData(); | Returns the [Document](/vantage/documentation/skill-designer/process/custom-activity/document) object which contains data extracted using Extract activity. | | SetExtractedData(ExtractedData extractedData); | Allows [Document](/vantage/documentation/skill-designer/process/custom-activity/document) objects modified by the script to be passed. ExtractedData obtained during script runtime is passed to the script using the [Transaction.Documents](/vantage/documentation/skill-designer/process/custom-activity/transaction#documents) property. | ## Related topics * [Transaction](/vantage/documentation/skill-designer/process/custom-activity/transaction) * [Document](/vantage/documentation/skill-designer/process/custom-activity/document) * [Extract activity](/vantage/documentation/skill-designer/process/extract-activity) * [Object model](/vantage/documentation/skill-designer/process/custom-activity/object-model) # Page Source: https://docs.abbyy.com/vantage/documentation/skill-designer/process/custom-activity/page The Page object provides properties of a single document page, including image dimensions and the preprocessed image. `Page` represents a single page of the document being processed. ## Properties | Name | Type | Access | Description | | :-------------- | :-------------------------------------------------------------------------------------- | :-------- | :------------------------------------------------------------------------------------------------------- | | **Id** | string | Read-only | The unique identifier of the page. | | **ImageHeight** | number | Read-only | The height of the page image in pixels. | | **ImageWidth** | number | Read-only | The width of the page image in pixels. | | **Index** | number | Read-only | The page number in the document (starting at 0). | | **Image** | [BinaryFile](/vantage/documentation/skill-designer/process/custom-activity/binary-file) | Read-only | The preprocessed source image of the page. Attach it to an HTTP request to send the page in JPEG format. | ## Related topics * [Document](/vantage/documentation/skill-designer/process/custom-activity/document) * [BinaryFile](/vantage/documentation/skill-designer/process/custom-activity/binary-file) * [Object model](/vantage/documentation/skill-designer/process/custom-activity/object-model) # Parameter Source: https://docs.abbyy.com/vantage/documentation/skill-designer/process/custom-activity/parameter The Parameter interface represents a single named transaction parameter with a name, read-only flag, and value. `Parameter` represents a single transaction parameter, including its name, value, and whether it can be modified. ## Properties | Name | Type | Access | Description | | :------------- | :------ | :--------- | :------------------------------------ | | **Name** | string | Read-only | The name of the parameter. | | **IsReadOnly** | boolean | Read-write | `true` if the parameter is read-only. | | **Value** | string | Read-write | The value of the parameter. | ## Related topics * [Transaction](/vantage/documentation/skill-designer/process/custom-activity/transaction) * [Object model](/vantage/documentation/skill-designer/process/custom-activity/object-model) # Public JSON schema for Output activity Source: https://docs.abbyy.com/vantage/documentation/skill-designer/process/custom-activity/public-schema-json JSON schema definition used when exporting extracted data, including field values, field structure, and rule check errors. Vantage uses the following public JSON schema when exporting extracted data, including field values, field structure, and rule check errors. ```json theme={null} { "$schema": "http://json-schema.org/draft-07/schema#", "definitions": { "Classification": { "type": [ "object", "null" ], "properties": { "IsResultClassConfident": { "type": "boolean" }, "ResultClass": { "type": "string" }, "ResultClassName": { "type": [ "string", "null" ] }, "ClassConfidences": { "type": [ "array", "null" ], "items": { "$ref": "#/definitions/ClassificationConfidence" } } }, "required": [ "ResultClass" ] }, "ClassificationConfidence": { "type": [ "object", "null" ], "properties": { "Class": { "type": "string" }, "ClassName": { "type": [ "string", "null" ] }, "Confidence": { "type": "integer" } }, "required": [ "Class", "Confidence" ] }, "ExportedRuleError": { "type": [ "object", "null" ], "properties": { "RuleName": { "type": "string" }, "ErrorMessage": { "type": [ "string", "null" ] } }, "required": [ "RuleName" ] }, "ExtractedData": { "type": [ "object", "null" ], "properties": { "DocumentDefinition": { "$ref": "#/definitions/DocumentDefinition" }, "RootObject": { "$ref": "#/definitions/ExtractedObject" }, "Objects": { "type": "array", "items": { "$ref": "#/definitions/ExtractedObject" } } }, "additionalProperties": false, "required": [ "DocumentDefinition", "RootObject" ] }, "ExtractedDataDocument": { "type": [ "object", "null" ], "properties": { "Id": { "type": "string" }, "ExtractedData": { "$ref": "#/definitions/ExtractedData" }, "Pages": { "type": [ "array", "null" ], "items": { "$ref": "#/definitions/Page" } }, "ClassificationResult": { "$ref": "#/definitions/Classification" }, "RuleErrors": { "type": [ "array", "null" ], "items": { "$ref": "#/definitions/ExportedRuleError" } }, "RegistrationParameters": { "type": [ "object", "null" ], "additionalProperties": { "type": [ "string", "null" ] } } }, "required": [ "Id" ] }, "ExtractedDataTransaction": { "type": "object", "properties": { "Id": { "type": "string" }, "SkillId": { "type": [ "string", "null" ] }, "SkillName": { "type": [ "string", "null" ] }, "Documents": { "type": [ "array", "null" ], "items": { "$ref": "#/definitions/ExtractedDataDocument" } }, "CreationTime": { "type": "string", "format": "date-time" }, "SourceFiles": { "type": [ "array", "null" ], "items": { "$ref": "#/definitions/FileModel" } }, "RegistrationParameters": { "type": [ "object", "null" ], "additionalProperties": { "type": [ "string", "null" ] } } }, "required": [ "Id" ] }, "FileModel": { "type": [ "object", "null" ], "properties": { "Id": { "type": [ "string", "null" ] }, "Name": { "type": [ "string", "null" ] } } }, "Page": { "type": [ "object", "null" ], "properties": { "Id": { "type": [ "string", "null" ] }, "SourceFile": { "type": [ "string", "null" ] }, "SourceImagePageIndex": { "type": "integer" } } }, "OID": { "type": "string" }, "EnumValue": { "type": "object", "properties": { "Id": { "$ref": "#/definitions/OID" }, "Name": { "type": "string" } }, "additionalProperties": false, "required": [ "Id", "Name" ] }, "Cardinality": { "type": "object", "properties": { "Min": { "type": "integer" }, "Max": { "type": "integer" } }, "additionalProperties": false, "required": [ "Min", "Max" ] }, "ConceptField": { "type": "object", "properties": { "Id": { "type": "string" }, "Name": { "type": "string" }, "Type": { "type": "string", "enum": [ "String", "Image", "Concept", "ISODate", "Boolean", "Decimal", "Enum" ] }, "EnumValues": { "type": "array", "items": { "$ref": "#/definitions/EnumValue" } }, "ValueConcepts": { "type": "array", "items": { "$ref": "#/definitions/Concept" } }, "ValueConceptIds": { "type": "array", "items": { "$ref": "#/definitions/OID" } }, "Cardinality": { "$ref": "#/definitions/Cardinality" }, "Hidden": { "type": "boolean" } }, "additionalProperties": false, "required": [ "Id", "Name", "Type", "Cardinality" ] }, "Concept": { "type": "object", "properties": { "Id": { "type": "string" }, "Name": { "type": "string" }, "Fields": { "type": "array", "items": { "$ref": "#/definitions/ConceptField" } } }, "additionalProperties": false }, "DocumentDefinition": { "type": "object", "properties": { "RootConcept": { "$ref": "#/definitions/Concept" }, "Concepts": { "type": "array", "items": { "$ref": "#/definitions/Concept" } } }, "additionalProperties": false, "required": [ "RootConcept" ] }, "Rectangle": { "type": "array", "items": { "type": "integer" }, "minItems": 4, "maxItems": 4 }, "ImageRegion": { "type": "object", "properties": { "Page": { "$ref": "#/definitions/OID" }, "Rects": { "type": "array", "items": { "$ref": "#/definitions/Rectangle" } } }, "additionalProperties": false, "required": [ "Page", "Rects" ] }, "TextRange": { "type": "object", "properties": { "Begin": { "type": "integer" }, "End": { "type": "integer" } }, "additionalProperties": false, "required": [ "Begin", "End" ] }, "Annotation": { "type": "object", "properties": { "Source": { "type": "string", "enum": [ "None", "Text", "Image" ] }, "RawValue": { "type": "string" }, "ImageRegions": { "type": "array", "items": { "$ref": "#/definitions/ImageRegion" } }, "TextRanges": { "type": "array", "items": { "$ref": "#/definitions/TextRange" } }, "IsEditedManually": { "type": "boolean" }, "Confidence": { "type": "number", "minimum": 0, "maximum": 1 }, "SuspiciousSymbols": { "type": "array", "items": { "type": "integer" } }, "Suggestions": { "description": "Possible variants of normalization in case of ambiguity", "type": "array", "items": { "type": "string" } } }, "additionalProperties": false, "required": [ "Source" ] }, "ExtractedField": { "type": "object", "properties": { "Id": { "$ref": "#/definitions/OID" }, "Annotations": { "type": "array", "items": { "$ref": "#/definitions/Annotation" } }, "Value": { "oneOf": [ { "description": "Text field value, enum value or object reference", "type": "string" }, { "description": "Boolean field value", "type": "boolean" }, { "description": "Inline object value", "$ref": "#/definitions/ExtractedObject" } ] }, "IsVerified": { "type": "boolean" }, "NeedVerification": { "type": "boolean" } }, "additionalProperties": false, "required": [ "Id", "Value" ] }, "ExtractedFieldList": { "type": "object", "properties": { "Name": { "type": "string" }, "List": { "type": "array", "items": { "$ref": "#/definitions/ExtractedField" } } }, "additionalProperties": false, "required": [ "Name", "List" ] }, "ExtractedObject": { "type": "object", "properties": { "Id": { "$ref": "#/definitions/OID" }, "Annotations": { "type": "array", "items": { "$ref": "#/definitions/Annotation" } }, "Concept": { "type": "string" }, "ConceptId": { "$ref": "#/definitions/OID" }, "Fields": { "type": "array", "items": { "$ref": "#/definitions/ExtractedFieldList" } } }, "additionalProperties": false, "required": [ "Id" ] } }, "type": "object", "properties": { "Transaction": { "$ref": "#/definitions/ExtractedDataTransaction" }, "Version": { "type": "string" } }, "required": [ "Transaction", "Version" ] } ``` ## Related topics * [ExportFormat](/vantage/documentation/skill-designer/process/custom-activity/export-format) * [OCR JSON schema for Output activity](/vantage/documentation/skill-designer/process/custom-activity/ocr-skill-schema-json) * [OCR XML schema for Output activity](/vantage/documentation/skill-designer/process/custom-activity/ocr-schema-xml) * [DocumentExportResult](/vantage/documentation/skill-designer/process/custom-activity/document-export-result) * [Object model](/vantage/documentation/skill-designer/process/custom-activity/object-model) # Rectangle Source: https://docs.abbyy.com/vantage/documentation/skill-designer/process/custom-activity/rectangle The Rectangle object holds the top-left and bottom-right coordinates of a rectangular area on a page image. `Rectangle` represents a single rectangular area on a page image, defined by its top-left and bottom-right corners. ## Properties | Name | Type | Access | Description | | :--------------- | :----- | :-------- | :--------------------------------------- | | **TopLeftX** | number | Read-only | X-coordinate of the top-left corner. | | **TopLeftY** | number | Read-only | Y-coordinate of the top-left corner. | | **BottomRightX** | number | Read-only | X-coordinate of the bottom-right corner. | | **BottomRightY** | number | Read-only | Y-coordinate of the bottom-right corner. | ## Related topics * [Region](/vantage/documentation/skill-designer/process/custom-activity/region) * [Field](/vantage/documentation/skill-designer/process/custom-activity/field) * [Object model](/vantage/documentation/skill-designer/process/custom-activity/object-model) # Region Source: https://docs.abbyy.com/vantage/documentation/skill-designer/process/custom-activity/region The field region. It is an area on the image that contains the text for a specific field. A field region is constructed using one or more rectangles. `Region` represents a field region on a document image. A region is built from one or more rectangles. ## Properties | Name | Type | Access | Description | | :------------- | :-------------------------------------------------------------------------------------- | :-------- | :----------------------------------------------- | | **PageId** | string | Read-only | Identifier of the page that contains the region. | | **Rectangles** | [Rectangle](/vantage/documentation/skill-designer/process/custom-activity/rectangle)\[] | Read-only | The rectangle set used to make the region. | ## Methods ### AddRectangle ```javascript theme={null} bool AddRectangle(number topLeftX, number topLeftY, number bottomRightX, number bottomRightY); ``` Adds a rectangle to the region using the four boundary coordinates. Returns `true` if the rectangle was added. ### RemoveRectangle ```javascript theme={null} bool RemoveRectangle(Rectangle rectangle); ``` Removes the specified rectangle from the region. Returns `true` if the rectangle was removed. ### RemoveAll ```javascript theme={null} void RemoveAll(); ``` Removes all rectangles from the region.
## RegionsCollection
A read-only collection of `Region` objects for a single field. ### Methods #### AddRegion ```javascript theme={null} Region AddRegion(number pageIndex); ``` Adds a new region to the field on the specified page. Returns the created `Region`. #### RemoveRegion ```javascript theme={null} void RemoveRegion(Region region); ``` Removes the specified region. #### RemoveAll ```javascript theme={null} void RemoveAll(); ``` Removes all regions from the current field. ## Related topics * [Field](/vantage/documentation/skill-designer/process/custom-activity/field) * [Rectangle](/vantage/documentation/skill-designer/process/custom-activity/rectangle) * [Object model](/vantage/documentation/skill-designer/process/custom-activity/object-model) # RuleError Source: https://docs.abbyy.com/vantage/documentation/skill-designer/process/custom-activity/rule-error Document skill validation rule error. `RuleError` describes a single Document skill validation rule error returned by [`Document.RuleErrors`](/vantage/documentation/skill-designer/process/custom-activity/document). ## Properties | Name | Type | Access | Description | | :---------------- | :----- | :-------- | :-------------------------------------------------------------------------------------------------------------------------- | | **CustomMessage** | string | Read-only | The custom error message from a custom skill. Returns an empty string for built-in rules, or when no custom message is set. | | **ErrorType** | string | Read-only | The error type. Returned only for built-in rules. | ## Related topics * [Document](/vantage/documentation/skill-designer/process/custom-activity/document) * [Object model](/vantage/documentation/skill-designer/process/custom-activity/object-model) # Sample scripts Source: https://docs.abbyy.com/vantage/documentation/skill-designer/process/custom-activity/sample-scripts JavaScript samples for common Custom activity scenarios, including OAuth, external exports, field modification, table manipulation, and JSON generation. The following JavaScript samples illustrate common patterns for Custom activity scripts, including OAuth authorization, sending exports to external services, modifying extracted fields, manipulating tables, generating custom JSON, and retrieving source file names. Copy and adapt them to your own field names and endpoints. ## Authorize via OAuth and send export data to an external service The following script performs authentication using a token obtained via Resource Owner Password Flow and then sends the export data to an external service: ```javascript theme={null} // This sample Custom export script shows how to send an authorization request for OAuth 2.0 Resource Owner Password Flow, receive the token, // and then send export results to the external system in JSON format // Prepare the key-value body for the authorization request (parameters and their values may be different). The corresponding environment variable should be created beforehand. var authDataContent = {}; authDataContent.grant_type = "password"; authDataContent.scope = "openid permissions"; // Pass sensitive data using environment variables. The corresponding variables should be created beforehand. authDataContent.client_id = Context.GetSecret("client_id_secretName"); authDataContent.client_secret = Context.GetSecret("client_secret_secretName"); authDataContent.password = Context.GetSecret("password_secretName"); authDataContent.username = Context.GetSecret("username_secretName"); // create the request and send the data var request = Context.CreateHttpRequest(); request.Url = "https://my_auth_service.com/auth2/connect/token" request.Method = "POST"; // create content data for the authorization request request.SetUrlFormEncodedContent(authDataContent); request.Send(); var authResponseObject = JSON.parse(request.ResponseText); // get all exports from the document var exports = Context.Transaction.Documents[0].Exports; // select the JSON export result var extractedDataExportResult = exports.find(element => element.ExportFormat === ExportFormat.Json); var pdfExportResult = exports.find(element => element.ExportFormat === ExportFormat.Pdf); // Create content data for the request var multiPartRequest = Context.CreateMultipartFormDataRequest(); multiPartRequest.Url = "https://my_service.com/api/v1.0/process_method" multiPartRequest.Method = "POST"; multiPartRequest.AuthToken = authResponseObject.access_token; multiPartRequest.AuthScheme = "Bearer"; // add extracted data to the export result multiPartRequest.AppendStringContent(extractedDataExportResult.ToJson(), "jsonData"); // add the exported PDF multiPartRequest.AppendFileContent(pdfExportResult, "binaryData"); // send a request to the service multiPartRequest.Send(); // Get a deserialised response result var responseObject = JSON.parse(multiPartRequest.ResponseText); ``` ## Send export data to an external service The following script names the exported file using the invoice number and then sends export data to an external service (Dropbox in this case): ```javascript theme={null} // This sample Custom export script shows how to send a file to Dropbox // and set the file name using value of extracted data field. // Get the document export result var exports = Context.Transaction.Documents[0].Exports; var extractedDataExportResult = exports.find(element => element.ExportFormat === ExportFormat.Json); // Get the access token to the DropBox API (https://developers.dropbox.com/en-us/oauth-guide). The corresponding environment variable should be created beforehand. var token = Context.GetSecret("access_token_secretName"); // Get "Invoice Number" from the extracted data var invoiceNumberField = Context.Transaction.Documents[0].GetField("Invoice Number"); var invoiceNumber = invoiceNumberField.Value; // Create the result file name var jsonFileName = `ExtractedData_${invoiceNumber}.json`; // Send the JSON file with the extracted data to DropBox var httpRequest = Context.CreateHttpRequest(); httpRequest.Url = "https://content.dropboxapi.com/2/files/upload" httpRequest.Method = "POST"; httpRequest.AuthScheme = "Bearer"; httpRequest.AuthToken = token; httpRequest.SetHeader("Dropbox-API-Arg", `{"path": "/Files/${jsonFileName}", "mode": "add", "autorename": true, "mute": false, "strict_conflict": false}`); httpRequest.SetFileContent(extractedDataExportResult, "application/octet-stream"); httpRequest.Send(); ``` ## Modify extracted data The following script modifies the value of an existing field and adds new values for a repeating field using information contained in a response from an external service: ```javascript theme={null} // This sample Custom activity script shows how to modify an existing field // and create a new field value based on the results of an external call. // Get all exports from the document var exports = Context.Transaction.Documents[0].Exports; // Get the JSON export result from the exports var extractedDataExportResult = exports.find(element => element.ExportFormat === ExportFormat.Json); // Get the PDF export result from the exports var pdfExportResult = exports.find(element => element.ExportFormat === ExportFormat.Pdf); // Create an HTTP request and specify required request properties var multipartFormDataRequest = Context.CreateMultipartFormDataRequest(); multipartFormDataRequest.Url = "http://my_service/api/v1.0/apimethod/" multipartFormDataRequest.Method = "POST"; // Add extracted data from the JSON export result to the request multipartFormDataRequest.AppendStringContent(extractedDataExportResult.ToJson(), "jsonData"); // Add the PDF from the export results to the request multipartFormDataRequest.AppendFileContent(pdfExportResult, "binaryData"); // Set the timeout for the HTTP request to be completed (in minutes). // By default, the timeout is set to 1 minute. multipartFormDataRequest.Timeout = 1; // Send a request to the service multipartFormDataRequest.Send(); // Get a response result var newJsonDataObject = JSON.parse(multipartFormDataRequest.ResponseText); // Assuming such a JSON was obtained in the response result: /* { "DocumentData": { "Fields": { "InvoiceNumber": "706-222-3151", "InvoiceDate": "15.05.2020", "PurchaseOrder": [ { "OrderNumber": "25646788", "Total": "540.54" }, { "OrderNumber": "24516684", "Total": "138.43" } ] } } }*/ // Change the value of an existing Vantage document field based on data received from an external call var document = Context.Transaction.Documents[0]; var invoiceNumber = document.GetField("Invoice Number"); if (invoiceNumber.InstanceId === undefined || invoiceNumber.InstanceId === null) invoiceNumber.AddInstance(); invoiceNumber.Value = newJsonDataObject.DocumentData.Fields.InvoiceNumber; // Add new Vantage document field values based on data received from an external call var poOrder = Context.Transaction.Documents[0].GetField("Purchase Order"); let orderNumberFieldId = document.GetField("Purchase Order/Order Number").Id; let totalFieldId = document.GetField("Purchase Order/Total").Id; newJsonDataObject.DocumentData.Fields.PurchaseOrder.forEach(function (elem) { var newOrder = poOrder.AddInstance(); var orderNumber = newOrder.Children.find(x => x.Id === orderNumberFieldId); orderNumber.Value = elem.OrderNumber; var total = newOrder.Children.find(x => x.Id === totalFieldId); total.Value = elem.Total; }); ``` ## Retrieve data from a specific table column The following script writes all values (rows) of the **Description** table column to the transaction event log: ```javascript theme={null} // Get the first document in a transaction var document = Context.Transaction.Documents[0]; var descriptionFieldId = document.GetField("Line Items/Description").Id; // Get the table object var table = document.GetField("Line Items"); for (var i = 0; i < table.Instances.length; i++) { // Get the 'Description' column object for each table row and write its values to the transaction event log var columnDescription = table.Instances[i].Children.find(x => x.Id === descriptionFieldId); Context.LogMessage("Description. Row " + i + ": " + columnDescription.Value); } ``` ## Retrieve data from all table columns The following script writes all values (rows) of all table columns to the transaction event log: ```javascript theme={null} // Get the first document in a transaction var document = Context.Transaction.Documents[0]; // Get the table object var table = document.GetField("Line Items"); // Write all table data to the transaction event log for (var i = 0; i < table.Instances.length; i++) { for (var j = 0; j < table.Instances[i].Children.length; j++) { Context.LogMessage("Table row "+i+". Column "+table.Instances[i].Children[j].Name+": "+table.Instances[i].Children[j].Value); } } ``` ## Add rows to a table The following script adds new table rows and sets values for the **Description** and **Quantity** table columns: ```javascript theme={null} // Get the first document in a transaction var document = Context.Transaction.Documents[0]; // Get the table object var table = document.GetField("Line Items"); var descriptionFieldId = document.GetField("Line Items/Description").Id; var quantityFieldId = document.GetField("Line Items/Quantity").Id; var tableRowCount = table.Instances.length; // Create function to add one table row and set values for Description and Quantity columns function addRow(valueDescription, valueQuantity, index) { table.AddInstance(); var columnDescription = table.Instances[index].Children.find(x => x.Id === descriptionFieldId); columnDescription.Value = valueDescription; var columnQuantity = table.Instances[index].Children.find(x => x.Id === quantityFieldId); columnQuantity.Value = valueQuantity; } // Add three rows and set values addRow("49910 - Gloves or mittens, NOI, in boxes", 4, tableRowCount++); addRow("15560 - Bulk, NOI, inflated", 42, tableRowCount++); addRow("15520 - Athletic or Sporting Goods, NOI", 24, tableRowCount++); ``` ## Delete rows from a table The following script deletes all rows from a table: ```javascript theme={null} // Get the first document in a transaction var document = Context.Transaction.Documents[0]; // Get the table object var table = document.GetField("Line Items"); var indexCount = table.Instances.length - 1; // Delete all rows by their indexes for (var i = indexCount; i >= 0 ; i--) { table.Instances[i].Remove(); } // Or you can delete the entire table table.Remove(); ``` ## Delete a specific instance of a repeating field The following script deletes the last instance of a repeating field: ```javascript theme={null} // Get the first document in a transaction var document = Context.Transaction.Documents[0]; // Get the repeating field object var rField = document.GetField("First Name"); // Check if this field is repeating if (rField.IsRepeatable) { // Delete the last instance of this field if (rField.Instances.length >= 1) { rField.Instances[rField.Instances.length-1].Remove(); } } else { Context.LogMessage(rField.Name + " is not repeating."); } ``` ## Generate a JSON file and send it to a third-party system The following script generates a JSON file in a custom format and sends it to a third-party system: ```javascript theme={null} // This sample Custom export script shows how to create a JSON string // using extracted Invoice US fields values and send it to an external endpoint. // Get the first document in the transaction. var document = Context.Transaction.Documents[0]; // Create a JSON object and set its key/value pairs. var extractedValues = {}; extractedValues.Total = document.GetField("Total").Value; extractedValues.Currency = document.GetField("Currency").Value; extractedValues.Date = document.GetField("Invoice Date").Value; // Get repeating field values and set them as array JSON values. extractedValues.PurchaseOrderNumber = []; var poGroup = document.GetField("Purchase Order"); var orderNumberFieldId = document.GetField("Purchase Order/Order Number").Id; for (var i = 0; i < poGroup.Instances.length; i++) { var poNumber = poGroup.Instances[i].Children.find(x => x.Id === orderNumberFieldId); extractedValues.PurchaseOrderNumber.push(poNumber.Value); } // The received JSON file is of the following format: /* { "Total": 1819.14, "Currency": "USD", "Date": "2019-05-23T00:00:00.000Z", "PurchaseOrderNumber": [ "012345678", "4500123466" ] }*/ // Send a multipart/form-data request with the JSON created previously as the string content of that request. var httpRequest = Context.CreateMultipartFormDataRequest(); httpRequest.Method = "POST"; httpRequest.Url = "https://external-endpoint.com/api/v1.0/tasks/1495c913-17bb-48d4-8041-a240e05ca9a4/process"; httpRequest.AppendStringContent(JSON.stringify(extractedValues), "jsonData"); httpRequest.Send(); ``` ## Retrieve original file names The following script puts the original name of a file into the **MyField** field: ```javascript theme={null} // Get the name of the source file and set it as the value of the specified field ("MyField") Context.Transaction.Documents.forEach( doc => { // For Scanning Station, the source file name is put into a registration parameter var param = doc.RegistrationParameters["SourceFileName"]; doc.GetField("MyField").Value = param != null ? param.Value : doc.SourceFiles[0].FileName; }); ``` ## Related topics * [Custom activity](/vantage/documentation/skill-designer/process/custom-activity/custom-activity) * [Object model](/vantage/documentation/skill-designer/process/custom-activity/object-model) * [Context](/vantage/documentation/skill-designer/process/custom-activity/context) * [HttpRequest](/vantage/documentation/skill-designer/process/custom-activity/http-request) * [MultipartFormDataRequest](/vantage/documentation/skill-designer/process/custom-activity/multi-part-form-data-request) * [ExportFormat](/vantage/documentation/skill-designer/process/custom-activity/export-format) # Transaction Source: https://docs.abbyy.com/vantage/documentation/skill-designer/process/custom-activity/transaction The Transaction interface provides access to the current transaction and all its documents. `Transaction` exposes the current transaction and its documents to a Custom activity script. ## Properties ### Id **Type:** `string`, **Access:** Read-only The transaction identifier. ### Documents **Type:** [Document](/vantage/documentation/skill-designer/process/custom-activity/document)`[]`, **Access:** Read-only The transaction's documents. If a Custom activity is placed inside a [For Each Document](/vantage/documentation/skill-designer/process/for-each) activity, `Documents` contains only the single document being processed. ### RegistrationParameters **Type:** `Record`, **Access:** Read-only Dictionary of registration parameters. Keys are parameter names, values are [`Parameter`](/vantage/documentation/skill-designer/process/custom-activity/parameter) objects. ## Related topics * [Context](/vantage/documentation/skill-designer/process/custom-activity/context) * [Object model](/vantage/documentation/skill-designer/process/custom-activity/object-model) * [Document](/vantage/documentation/skill-designer/process/custom-activity/document) * [Parameter](/vantage/documentation/skill-designer/process/custom-activity/parameter) * [For Each Document activity](/vantage/documentation/skill-designer/process/for-each) # Duplicate a Process skill Source: https://docs.abbyy.com/vantage/documentation/skill-designer/process/duplicating-process-skill How to duplicate Process skills and manage their referenced activities. Duplicate a Process skill to customize it or create multiple copies. Duplicating a Process skill does not duplicate the Classification and Document skills it references — the duplicates reuse the originals. If those skills are configured to train automatically from verification results, they will train on results from every Process skill that references them, including the duplicates. To isolate a copy, duplicate its referenced skills manually. To give the copy its own Classification and Document skills, duplicate the Process skill manually: Duplicate the appropriate Process skill. Duplicate every Classification and Document skill referenced by the Process skill from step 1. Edit the skill duplicates if required. Publish the skill duplicates. Unpublished skills can't be selected for editing. Edit the Process skill duplicate from step 1. In the Skill Designer: * Click the workflow activity. * Delete the existing Classification or Document skill by clicking the **Delete** icon to the right of the skill name in the **Actions** pane. * In the drop-down in the **Actions** pane, select the corresponding skill duplicate created in step 2. * Repeat for each relevant Process skill activity. ## Related topics * [Process skill](/vantage/documentation/skill-designer/process/process-skill) * [Set up a Process skill](/vantage/documentation/skill-designer/process/set-up) # For Each Document activity Source: https://docs.abbyy.com/vantage/documentation/skill-designer/process/for-each Use the For Each Document activity to run inner activities against one transaction document at a time. The For Each Document activity is a container that runs its inner activities against one transaction document at a time. You can place any of the following inside it: * [Extract activity](/vantage/documentation/skill-designer/process/extract-activity) * [Classify activity](/vantage/documentation/skill-designer/process/classify-activity) * [OCR activity](/vantage/documentation/skill-designer/process/ocr-activity) * [Custom activity](/vantage/documentation/skill-designer/process/custom-activity/custom-activity) * [Condition activity](/vantage/documentation/skill-designer/process/condition-activity/condition-activity) Other activity types can't be placed inside a For Each Document activity, and For Each Document activities can't be nested. For Each Document activity in the Process skill editor In the usual Process skill workflow, each transaction has a single collection of documents. Inside a For Each Document activity, that collection is split into one collection per document, and the container processes each in turn. In the example above, each transaction document is evaluated by the Condition activity individually and then routed to either the Extract activity or the Custom activity. ## Related topics * [Extract activity](/vantage/documentation/skill-designer/process/extract-activity) * [Classify activity](/vantage/documentation/skill-designer/process/classify-activity) * [OCR activity](/vantage/documentation/skill-designer/process/ocr-activity) * [Custom activity](/vantage/documentation/skill-designer/process/custom-activity/custom-activity) * [Condition activity](/vantage/documentation/skill-designer/process/condition-activity/condition-activity) * [Set up a Process skill](/vantage/documentation/skill-designer/process/set-up) # Continued development using separate environments Source: https://docs.abbyy.com/vantage/documentation/skill-designer/skill-design/continued-development Develop and test skills in a sandbox environment before transferring them to production for continued skill development. Use separate testing and production environments: develop and tune the skill in a sandbox that mirrors production, and then transfer the tuned skill into production. You can still collect documents processed by Manual Review Operators in production and transfer the skill — along with its accumulated documents — back to testing to continue development. ## Development workflow Continued development with separate environments follows this cycle: Develop the skill in the testing environment as described in the [Standalone skills scenario](/vantage/documentation/skill-designer/skill-design/standalone-skills) and the [Process skill scenario](/vantage/documentation/skill-designer/skill-design/process-skill-scenario). Once the skill is ready for production, [export](#export-a-skill) it from the testing environment. If you export a skill without its document set, you won't be able to continue training it in production, and you won't be able to add documents collected in production back to the current skill in testing. Skills without a document set can only be trained from scratch using a new document set. [Import](#import-a-skill) the skill into the production environment. In production, set up a Process skill that references the imported skill if you want to collect documents processed by the skill. For details, see the [Process skill scenario](/vantage/documentation/skill-designer/skill-design/process-skill-scenario). You can also export and import the Process skill itself — referenced skills can be included in the archive. You should still consult the [Process skill scenario](/vantage/documentation/skill-designer/skill-design/process-skill-scenario) to pick a document-collection strategy and adjust skill settings. Run the skill in the production environment. Collect documents via Manual Review as configured. After collecting documents (or making other changes to the skill in production), [export](#export-a-skill) the latest published version of the skill, including the document set, from the production environment. [Import](#import-a-skill) the skill into the testing environment. Adjust, publish, and test the skill in the testing environment. Repeat steps 2–4 to redeploy the updated skill to production. Repeat steps 5–9 to fine-tune the skill over multiple iterations. ## Important considerations When transferring a skill between environments: * Export and import upload and download all documents used in the skill. A large document set can take some time to transfer. * Check which version of a skill the Process skill references. If you imported the skill as a new version of an existing skill, you may need to update the Process skill's version reference manually. ## Export a skill The export captures the latest published version, so make sure that version is up to date. Publish the skill first if needed. In the **Skill Catalog**, left-click the skill (anywhere except its name) to select it. Click **Export** on the toolbar. Choose whether to include the data catalog records and the document set used to train the skill. Exclude them if they contain sensitive data. Click the **Export** button. Vantage archives the skill to a ZIP file — this can take some time for large document sets. When the archive is ready, it downloads automatically to your local Downloads folder. For more information, see [Export a skill](/vantage/documentation/skill-catalog/export-skill). ## Import a skill Open the **Skill Catalog**. Click **Import** on the toolbar. In the dialog that opens, select the archive that contains the skill you want to import. Click **Open**. If the skill already exists in your **Skill Catalog**, choose whether to create a new version of the existing skill or a new skill under a different name. Once the import finishes, the skill is available to users in the current environment. For more information, see [Import a skill](/vantage/documentation/skill-catalog/import-skill). ## Related topics * [Skill design management](/vantage/documentation/skill-designer/skill-design/skill-design-management) * [Standalone skills scenario](/vantage/documentation/skill-designer/skill-design/standalone-skills) * [Process skill scenario](/vantage/documentation/skill-designer/skill-design/process-skill-scenario) * [Export a skill](/vantage/documentation/skill-catalog/export-skill) * [Import a skill](/vantage/documentation/skill-catalog/import-skill) # Process skill scenario Source: https://docs.abbyy.com/vantage/documentation/skill-designer/skill-design/process-skill-scenario Continued development of a Classification or Document skill that is referenced by a Process skill. This scenario describes how to continue developing a Classification or Document skill that is referenced by a Process skill. It fits when you want to: * Accumulate documents processed by Manual Review Operators and use them to train a skill. Because Vantage can accumulate documents processed by a Classification or Document skill, you can invoke the skill from a Process skill that includes a **Manual Review** activity. Documents processed by Manual Review Operators are added to the skill's document set and can then be used for automatic training or kept for manual review by the skill designer. For more information, see [Online learning](/vantage/documentation/runtime/online-learning/online-learning). * Switch between different Classification and Document skills (rather than between skill versions). This scenario assumes you have already created a Classification or Document skill for which you want to collect documents. ## Select a document accumulation strategy for Online learning Pick a strategy based on your objectives and development stage. You'll need to decide: * Whether to enable or disable automatic skill training when new documents are acquired (**Online learning** mode, set in the Classification or Document skill). * Whether to collect all documents or only documents with issues — for example, rule errors or uncertain fields (**Review Documents** mode, set in the **Manual Review** activity of the Process skill). | Development phase | Online learning mode | Review Documents mode | | :------------------------------------------------------- | :------------------------------ | :-------------------------------------------------------------- | | Early skill development | **Collect only** | **All** (default) | | Automatic fine-tuning of a skill with normal performance | **Collect and learn** (default) | **With rule errors, with uncertain fields, or of unknown type** | | Late development | **Collect only** | **With rule errors, with uncertain fields, or of unknown type** | Expand a phase below to read the rationale. Grow the document set by collecting every document the skill processes, not just ones with uncertain fields or rule errors. Multiple users can review in parallel to add many labeled documents quickly. You may still need to adjust the skill before training, so keep automatic training disabled. Collect documents that had issues and were corrected during manual review, and let automatic training run. New models are tested before replacing the old model and are discarded if they underperform, so automatic training won't reduce skill accuracy. For a well-adjusted skill with an extensive document set, collect only documents that had issues. Since the skill already performs well, avoid retraining it automatically — review the collected documents manually instead. ## Set up document accumulation To set up a skill according to the selected strategy: Open the Classification or Document skill in Vantage. In skill settings, confirm that the **Online learning** mode matches the selected strategy. This property is only available in skill settings in Vantage. Publish the skill so the changes are available to other users. Create a Process skill that contains: * A **Classify** or **Extract** activity referencing the skill you want to train. Enable **Online learning** when adding the skill to the activity if you want to accumulate its documents. * A **Manual Review** activity whose **Review Documents** mode matches the selected strategy. For more information, see [Set up a Process skill](/vantage/documentation/skill-designer/process/set-up). If needed, configure an additional input source and/or destination for the result files. See [Input activity](/vantage/documentation/skill-designer/process/input-activity/input-activity) and [Output activity](/vantage/documentation/skill-designer/process/output-activity/output-activity). Publish the Process skill. It receives a version number and becomes available for testing and production. Documents are processed by the referenced Classification or Document skill and accumulated according to the configured strategy. Users access the Process skill via API, connectors, or via a shared folder or email (if configured in the previous step). ## Edit a skill after documents have been accumulated To adjust a skill using the collected documents: Open the skill for which you collected documents. Vantage creates a new draft version. The Process skill continues to reference the published version, so editing the draft does not affect users. From this point on, all collected documents are added to the document set of the **published** version, not the draft you just created. Review the documents, make any necessary adjustments, and train the skill. Publish the skill. Vantage creates a new published version with an incremented number. The Process skill still references the previous version of the Classification or Document skill — the reference is not updated automatically. Update the version referenced by the Process skill: * Click the up arrow next to the Process skill version number in the **Skill Catalog**. * In the dialog that opens, select the latest version of the referenced skill. * Click **Save**. * Publish the Process skill. The reference is updated, and users of the Process skill now get the new version of the referenced skill. ## Roll back or switch strategies ### Delete the latest Process skill version If you aren't satisfied with the new version's performance, delete the latest Process skill version: In the **Skill Catalog**, click the Process skill version number. Click the **Delete** icon next to the latest version. Users are switched to the previous Process skill version, which references the previous version of your Classification or Document skill. Deleting a version is permanent. ### Keep the Process skill changes but reference an older skill version If the latest Process skill version has changes you want to keep, create a new Process skill version that references an older Classification or Document skill version: Open the Process skill. Click the **Skill settings** icon to the right of the skill name. Select any available version of the referenced skill and click **Save**. Publish the Process skill. Users are switched to the new Process skill version, which references the version you selected — not necessarily the previous one. You can then delete the latest version of the Classification or Document skill. To preserve it, copy the version to a new skill before deleting — you can continue developing the copy as a separate skill. By changing the referenced skill (see step 3 above), you can switch the workflow from one skill to another, for example to compare their performance. For more information, see [Skill versions](/vantage/documentation/skill-versions). Any change to a skill becomes available to users only after you publish the skill. ## Related topics * [Skill design management](/vantage/documentation/skill-designer/skill-design/skill-design-management) * [Online Learning](/vantage/documentation/runtime/online-learning/online-learning) * [Set up a Process skill](/vantage/documentation/skill-designer/process/set-up) * [Input activity](/vantage/documentation/skill-designer/process/input-activity/input-activity) * [Output activity](/vantage/documentation/skill-designer/process/output-activity/output-activity) * [Skill versions](/vantage/documentation/skill-versions) # Skill design management Source: https://docs.abbyy.com/vantage/documentation/skill-designer/skill-design/skill-design-management Scenarios for continuing to develop and manage skills that are already in production. Choose one of the following scenarios for developing and managing skills that are already in production. * **[Standalone skills](/vantage/documentation/skill-designer/skill-design/standalone-skills)** — Develop standalone [Classification](/vantage/documentation/skill-designer/classification/classification-skill) and [Document](/vantage/documentation/skill-designer/document/document-skill) skills without relying on documents processed by an in-production skill. Users access the skills via API and connectors. * **[Process skill scenario](/vantage/documentation/skill-designer/skill-design/process-skill-scenario)** — Develop a [Process skill](/vantage/documentation/skill-designer/process/process-skill) that references Classification or Document skills. Users access the Process skill via API and connectors, and can upload documents through a shared folder or email. This scenario fits when you want to: * Accumulate documents processed by Manual Review Operators and use them to train the skill. * Switch between different Classification and Document skills (rather than between skill versions). * **[Separate environments for testing and production](/vantage/documentation/skill-designer/skill-design/continued-development)** — Manage skill development across dedicated testing and production environments. Unsure which scenario fits? See [Switch between skills and skill versions](/vantage/documentation/skill-designer/skill-design/switching-skills) for a side-by-side comparison of skill version management across scenarios. ## Related topics * [Standalone skills scenario](/vantage/documentation/skill-designer/skill-design/standalone-skills) * [Process skill scenario](/vantage/documentation/skill-designer/skill-design/process-skill-scenario) * [Continued development using separate environments](/vantage/documentation/skill-designer/skill-design/continued-development) * [Switch between skills and skill versions](/vantage/documentation/skill-designer/skill-design/switching-skills) * [Skill versions](/vantage/documentation/skill-versions) # Standalone skills scenario Source: https://docs.abbyy.com/vantage/documentation/skill-designer/skill-design/standalone-skills Continued development of a Classification or Document skill in Vantage, without collecting documents from an in-production skill. This scenario describes how to continue developing a Classification or Document skill in Vantage. It does not cover collecting documents from a skill already running in production. ## Release a skill to production To make a skill available for processing documents: Create the skill in Vantage or [Advanced Designer](/vantage/documentation/advanced-designer/introduction). Configure and train the skill. For details, see [Classification skill](/vantage/documentation/skill-designer/classification/classification-skill), [Document skill](/vantage/documentation/skill-designer/document/document-skill), or the [Advanced Designer guide](/vantage/documentation/advanced-designer/introduction). Publish the skill when you're ready to expose it to users — for production or testing. Publishing assigns a version number and makes the skill available for document processing via API or connectors. If a skill has no version number in the **Skill Catalog**, it hasn't been published yet and is not yet available for document processing. ## Edit a skill that is available in production To adjust a published skill: Open the skill. Vantage creates a new draft version; the published version stays live, so editing does not affect other users. Make your changes and publish. Vantage creates a new published version with an incremented version number. Users who consume the skill via API or connectors always receive the latest published version, so the change applies automatically. For more information, see [Edit a skill](/vantage/documentation/skill-catalog/edit-skill). ## Roll a skill back to a previous version If you aren't satisfied with a new skill version, delete it and roll back to the previous one: Open **Skill Catalog** and click the skill version number. To keep a copy of the version you're about to delete, click the **Duplicate skill** icon to copy it to a new skill. Click the **Delete** icon next to the latest version. Users are switched to the second-most-recent version in the list. Deleting a version is permanent. A duplicated version becomes a separate skill. You can continue developing it independently, but it can't be merged back into the original skill later. To use the new skill, users must update the skill ID in their API calls or connector settings. For more information, see [Skill versions](/vantage/documentation/skill-versions). ## Related topics * [Skill design management](/vantage/documentation/skill-designer/skill-design/skill-design-management) * [Classification skill](/vantage/documentation/skill-designer/classification/classification-skill) * [Document skill](/vantage/documentation/skill-designer/document/document-skill) * [Edit a skill](/vantage/documentation/skill-catalog/edit-skill) * [Skill versions](/vantage/documentation/skill-versions) * [Advanced Designer overview](/vantage/documentation/advanced-designer/introduction) # Switch between skills and skill versions Source: https://docs.abbyy.com/vantage/documentation/skill-designer/skill-design/switching-skills Overview of how to switch between different skills and skill versions based on access method. This overview compares how to switch between skills and skill versions depending on how users access the skill. For detailed procedures, follow the links in the table. | Case | API or connectors | Process skill | | :------------------------------------------------------ | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **Update the Classification/Document skill version** | Publish the skill. Users are switched to the new version automatically. [Edit a skill that is available in production](/vantage/documentation/skill-designer/skill-design/standalone-skills#edit-a-skill-that-is-available-in-production) | Publish the skill, update the Process skill's reference, and then publish the Process skill. [Edit a skill after documents have been accumulated](/vantage/documentation/skill-designer/skill-design/process-skill-scenario#edit-a-skill-after-documents-have-been-accumulated) | | **Roll back to the previous version** | Delete the latest skill version. Users are switched to the previous version automatically. [Roll a skill back to a previous version](/vantage/documentation/skill-designer/skill-design/standalone-skills#roll-a-skill-back-to-a-previous-version) | Either delete the latest Process skill version, or create a new Process skill version that references the older Classification/Document skill version. [Roll back or switch strategies](/vantage/documentation/skill-designer/skill-design/process-skill-scenario#roll-back-or-switch-strategies) | | **Switch to another Classification/Document skill** | Get the new skill's ID (via Vantage API or from the end of the URL shown when editing the skill in the Skill Editor), and then replace the old ID in your API calls or connector settings. | Edit the Process skill's **Classify** or **Extract** activity to reference the new skill, and then publish the Process skill. Users are switched to the new Process skill version automatically and access the new referenced skill through it. | | **Transfer a new skill version to another environment** | Publish the skill, export its latest version, switch environments, and import it under the same name with **Create new version**. The skill ID does not change across environments, so API calls and connector settings need no updates. [Continued development using separate environments](/vantage/documentation/skill-designer/skill-design/continued-development) | Either transfer just the skill and update the Process skill's reference in the target environment, or transfer the Process skill with its embedded skills. Either path ends with publishing the Process skill in the target environment. [Continued development using separate environments](/vantage/documentation/skill-designer/skill-design/continued-development) | ## Related topics * [Skill design management](/vantage/documentation/skill-designer/skill-design/skill-design-management) * [Standalone skills scenario](/vantage/documentation/skill-designer/skill-design/standalone-skills) * [Process skill scenario](/vantage/documentation/skill-designer/skill-design/process-skill-scenario) * [Continued development using separate environments](/vantage/documentation/skill-designer/skill-design/continued-development) * [Skill versions](/vantage/documentation/skill-versions) # Access skill parameters via the Vantage API Source: https://docs.abbyy.com/vantage/documentation/skill-designer/skill-parameters/accessing-skill-params Use the Vantage API to access and modify Document and Process skill parameter values. The Vantage API lets you access Document and Process skill parameters and change their values for a specific transaction. Parameters are passed as key-value string pairs. Values set via the API take precedence over values set in the Vantage UI. ## Change skill parameter values To change skill parameter values for a transaction, create a new transaction (or launch one) via POST and include the new values in the `skillParameters` body. Create an empty transaction: ```http theme={null} POST {your-host}/api/publicapi/v1/transactions ``` Or launch a transaction that runs a specific skill: ```http theme={null} POST {your-host}/api/publicapi/v1/transactions/launch?skillId={skill-id} ``` Include new parameter values in the request body: ```bat theme={null} curl -X POST "{your-host}/api/publicapi/v1/transactions" ^ -H "Authorization: Bearer {token}" ^ -H "Content-Type: application/json" ^ -d "{\"skillId\":\"123\",\"skillParameters\":[{\"key\":\"New parameter\",\"value\":\"Vendors new\"}]}" ``` ```bash theme={null} curl -X POST '{your-host}/api/publicapi/v1/transactions' \ -H 'Authorization: Bearer {token}' \ -H 'Content-Type: application/json' \ -d '{"skillId":"123","skillParameters":[{"key":"New parameter","value":"Vendors new"}]}' ``` A transaction can have up to 10 key-value skill parameters. Keys are limited to 128 characters; values to 256. ## Get skill parameter values Use one of the following to retrieve skill parameter values. ### Query the skillParameters endpoint Send a GET request: ```http theme={null} GET {your-host}/api/publicapi/v1/transactions/{transaction-id}/skillParameters/ ``` Response: ```json theme={null} [ { "key": "New parameter", "value": "Vendors" } ] ``` ### Download the transaction file Send a GET request to download the transaction file, which contains parameter values in JSON: ```http theme={null} GET {your-host}/api/publicapi/v1/transactions/{transaction-id}/files/{file-id}/download ``` ## Related topics * [Skill parameters](/vantage/documentation/skill-designer/skill-parameters/skill-parameters) * [Document skill parameters](/vantage/documentation/skill-designer/skill-parameters/document-skill-params) * [Process skill parameters](/vantage/documentation/skill-designer/skill-parameters/process-skill-params) * [Extract activity](/vantage/documentation/skill-designer/process/extract-activity) * [API Introduction](/vantage/developer/api-introduction) # Document skill parameters Source: https://docs.abbyy.com/vantage/documentation/skill-designer/skill-parameters/document-skill-params Configure Document skill parameters to adjust behavior for various processing scenarios. Use Document skill parameters to adjust skill behavior for different processing scenarios without changing, retraining, or republishing the skill. Document skill parameters are accessible from Vantage, Advanced Designer, or via the Vantage API. ## Built-in skills with default parameters The following built-in skills have default parameters: * Receipt and Receipt CJK skills * Taxi Receipt skill * Invoice skills * Commercial Invoice skill * Hotel Invoice skill * Purchase Order EU and Purchase Order US skills ## Create and configure parameters You can change the default values on any of the built-in skills above, or add new parameters to your own skills. Open the skill for editing. On the **Skill Designer** page, click the settings icon next to the skill name. On the **Parameters** tab, click **Add Parameter** and choose a type: **Data Catalog**, **Text**, or **Boolean**. Derived skills inherit the default parameters of their base skills. These parameters can't be deleted or renamed — you can only change their default values. You can still create additional parameters. Specify a name or keep the default. Parameter names are limited to 256 characters. Specify the parameter's value: * **Data Catalog** — select a data catalog from the drop-down list. * **Text** — enter a string value or a regular expression. * **Boolean** — choose **Yes** or **No**. Optionally, add a description for the parameter. Repeat steps 3–6 for each additional parameter you need. Click **Save** and publish the skill. A skill can have at most 100 parameters. ## Use parameters You can reference Document skill parameters in: * [Data catalog lookup rules](/vantage/documentation/skill-designer/document/rule-verification/setting-lookup-rules) * [Extraction Rules activity](/vantage/documentation/advanced-designer/activities/extraction-rules/extraction-rules) * [Classify By Company activity](/vantage/documentation/advanced-designer/activities/classify-by-company) ## Related topics * [Skill parameters](/vantage/documentation/skill-designer/skill-parameters/skill-parameters) * [Process skill parameters](/vantage/documentation/skill-designer/skill-parameters/process-skill-params) * [Access skill parameters via the Vantage API](/vantage/documentation/skill-designer/skill-parameters/accessing-skill-params) * [Document skill](/vantage/documentation/skill-designer/document/document-skill) * [Create data catalog lookup rules](/vantage/documentation/skill-designer/document/rule-verification/setting-lookup-rules) # Process skill parameters Source: https://docs.abbyy.com/vantage/documentation/skill-designer/skill-parameters/process-skill-params Configure Process skill parameters to access and modify Document skill parameter values. Process skill parameters access and modify the values of the Document skill parameters used by [Extract activities](/vantage/documentation/skill-designer/process/extract-activity). If your Document skill has no parameters, you don't need to add any to the Process skill. ## Parameter structure A Process skill carries two kinds of parameters: * **Extract activity parameters** — reference [Document skill](/vantage/documentation/skill-designer/document/document-skill) parameters and inherit their values. * **Process skill parameters** — the Process skill's own parameters, used to expose Extract activity parameters to the Vantage API. ## Change Extract activity parameter values To change the values of an Extract activity's parameters: Open the Process skill for editing. Click an Extract activity. In the **Actions** pane, click the settings icon next to the Document skill name specified for the Extract activity. The dialog lists the Document skill's parameters. Change their default values as needed: * **Data Catalog** — point the parameter at a different data catalog so this Extract activity uses a different one than the Document skill does. * **Text** — change the string value so this Extract activity uses a different value for the target field. * **Boolean** — toggle between **Yes** and **No**, for example to control whether this Extract activity applies a scripted rule. You can only change default values here. You can't add, delete, rename parameters, or change their descriptions. Changes here do not affect parameters in the Document skill itself. Click **Save** and publish the skill. Once the skill is published, the Extract activity uses the new default values. These defaults aren't accessible via the Vantage API — to access and change them through the API, create Process skill parameters linked to the Extract activity parameters (see below). ## Create Process skill parameters and link them to Extract activities To expose Extract activity parameters to the Vantage API, create Process skill parameters and link them: Open the skill for editing. On the **Skill Designer** page, click the settings icon next to the skill name. On the **Parameters** tab, click **Add Parameter** and choose a type: **Data Catalog**, **Text**, or **Boolean**. Specify a name or keep the default. Parameter names are limited to 256 characters. Specify the parameter's default value: * **Data Catalog** — select a data catalog from the drop-down list. * **Text** — enter a string value or a regular expression. * **Boolean** — choose **Yes** or **No**. Optionally, add a description for the parameter. Click **Save**. Link the new parameter to a parameter on an Extract activity: * Open the Extract activity. In the **Actions** pane, click the settings icon next to the Document skill name. * In the drop-down for any Document skill parameter, select the Process skill parameter you just created. The Document skill parameter now references the new Process skill parameter. Click **Save** and publish the skill. You can now use the new Process skill parameter to access and change Extract activity parameter values via the [Vantage API](/vantage/documentation/skill-designer/skill-parameters/accessing-skill-params). ## Related topics * [Skill parameters](/vantage/documentation/skill-designer/skill-parameters/skill-parameters) * [Document skill parameters](/vantage/documentation/skill-designer/skill-parameters/document-skill-params) * [Access skill parameters via the Vantage API](/vantage/documentation/skill-designer/skill-parameters/accessing-skill-params) * [Extract activity](/vantage/documentation/skill-designer/process/extract-activity) * [Process skill](/vantage/documentation/skill-designer/process/process-skill) # Skill parameters Source: https://docs.abbyy.com/vantage/documentation/skill-designer/skill-parameters/skill-parameters Configure and manage skill parameters to adjust skill behavior without retraining or republishing. Skill parameters let you adjust the behavior of a skill without changing, retraining, and publishing it again — useful for complex skills that require large training sets. * In a Document skill, parameters adjust the skill to different document-processing scenarios. * In a Process skill, parameters reference and adjust the parameters of the Document skill it wraps. Only users with the Tenant Administrator and Skill Designer roles can create and edit skill parameters. ## Use cases ### Processing invoices from different customers using their own data catalogs Use the same built-in [Invoice skill](/vantage/documentation/skill-catalog/built-in-skills/invoice-skills/invoice-overview) to process invoices from multiple customers by passing a different data catalog in each Vantage API transaction. Some built-in skills, including the Invoice skill, ship with default parameters that point to data catalogs — you just supply a new catalog value per transaction. For details, see [Access skill parameters via the Vantage API](/vantage/documentation/skill-designer/skill-parameters/accessing-skill-params). ### Restricting automatic country and expense type detection Use the [Receipt skill](/vantage/documentation/skill-catalog/built-in-skills/receipt-skills/receipt) to process retail receipts from a single country — for example, Germany. Some built-in skills, including the Receipt skill, expose default parameters that restrict automatic country and expense type detection. To process only German retail receipts, set the parameter values to `DE` and `GeneralRetail`. The **Country** and **Expense Type** fields are redefined accordingly and documents process faster. ### Assigning a new value to a certain field Configure a Document skill to assign a new value to the **Date** field for a specific document set. Create a Boolean skill parameter, set its default to **No**, and add a scripted rule for the **Date** field: ```javascript theme={null} if (Context.Skill.Parameters["New parameter"].Value == false) { Context.GetField("Date field").Value = 'New date' } ``` When the parameter is **No** for a given document set, the rule runs and the `New date` value is assigned to the **Date** field. ## Relations between parameters on different levels A Process skill can include an Extract activity, which in turn uses a Document skill. Each level of this nested structure has its own parameters: * **Document skill parameters** — share extracted data between activities of the Document skill and specify document-processing settings. Viewable and editable in Vantage, Advanced Designer, and via the Vantage API. * **Extract activity parameters** — essentially the Document skill's parameters as accessed from the Extract activity. Viewable and editable in Vantage. * **Process skill parameters** — reference Extract activity parameters and can override their values. Viewable and editable in Vantage and via the Vantage API. If your Document skill has no parameters, you don't need to add any to the Process skill. ## Types of skill parameters Skill parameters can be one of three types: | Type | Description | | :--------------- | :----------------------------------------------------------- | | **Data Catalog** | Connection string to a data catalog on the connected server. | | **Text** | String value. | | **Boolean** | Boolean value — the possible values are **Yes** and **No**. | ## Related topics * [Document skill parameters](/vantage/documentation/skill-designer/skill-parameters/document-skill-params) * [Process skill parameters](/vantage/documentation/skill-designer/skill-parameters/process-skill-params) * [Access skill parameters via the Vantage API](/vantage/documentation/skill-designer/skill-parameters/accessing-skill-params) * [Business rules automation](/vantage/documentation/skill-designer/document/rule-verification/business-rules-automation) * [Receipt - Document Skill](/vantage/documentation/skill-catalog/built-in-skills/receipt-skills/receipt) * [Invoice Skills](/vantage/documentation/skill-catalog/built-in-skills/invoice-skills/invoice-overview) # Monitor and adjust Deep Learning activity training Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/deep-learning-monitoring Track epoch-by-epoch accuracy on the Self-Assessment graph, decide when to stop, and adjust training duration for a Deep Learning activity. In the **Self-Assessment** section of the **Results** tab, you can monitor the training progress and adjust the training duration. The statistics displayed in this section will help you understand if the training is going on successfully or if changes should be made. ## Training progress graph The graph on the left shows the percentage of correctly extracted field values across all epochs. Self-Assessment graph plotting field-extraction accuracy across training epochs for a Deep Learning activity This graph is updated after each epoch and reflects the actual accuracy of field extraction. The accuracy is calculated on a validation subset, taking into consideration recognition errors and some additional metrics. During the training process, tests are carried out on the validation set, which consists of 20% of the documents. After training, tests are carried out on all documents. Therefore, the results may differ. The more documents there are in total, the less the results should differ. ## Interpret the graph This graph can help you decide whether you should carry on with the training or stop training the activity: * If the accuracy is sufficiently high and is no longer increasing, then the training can be stopped. * If the accuracy is not sufficiently high but is still increasing, then the training should go on. * If the accuracy is not sufficiently high and is no longer increasing, then you should analyze the quality of extraction of individual fields (there may be fields in the documents that are too rare or that have been marked up incorrectly). Training does not affect the quality of recognition and incorrectly detected fields can still be trained. ## Decide when to stop training your activity By default, a Deep Learning activity is trained over 20 epochs. However, in certain cases you may want to reduce the training duration or stop the training manually. You may want to stop training if: * The accuracy percentage is sufficiently high and there have not been any significant changes in accuracy for several epochs in a row. * The accuracy percentage is low and there have not been any significant changes in accuracy for several epochs in a row (consider using a larger document set or make sure that all fields are well represented and marked up correctly). * You want to test the activity manually on all the documents (resume the training if you are not satisfied with the field extraction results). ## Adjust the training duration You can reduce the number of epochs or the time spent on training a document set at any point during training. Document types with fewer variants take less time to train. Go to the **Self-Assessment** section of the **Results** tab. Click the settings icon to the right of the number of epochs above the graph. Enter a new number of epochs and/or a time in `hours:minutes` format, and then click **Apply**. The new limit must be greater than the number of elapsed epochs, and the maximum number of epochs is 20. Training stops once any one of the limits is reached. You can stop the training at any time by clicking **Stop Training**. The training results for any unfinished epoch will be discarded. # Debug an Extraction Rules activity Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/extraction-rules/activity-debugging Find images with match errors, analyze hypotheses, correct element properties, and re-match — the iterative cycle for refining an Extraction Rules activity. Extraction Rules activity debugging entails checking and correcting the activity properties. Once an element is created, we recommend compiling the activity and matching it to each test image. Make sure that the activity does not contain any errors, and that all required objects are matched. Sometimes objects will not be detected because they were not located in the search region or because they did not satisfy the element properties. As such, debugging consists of discovering images with match errors, hypothesis analysis, correction of element properties, and a second matching attempt. Once the activity has been corrected, its needs to be matched to problem pages a second time in order to make sure that the errors have been fixed, as well as to all other pages (to make sure that the corrections have not interfered with the matching of other pages). In general, matching results are viewed multiple times during the creation of an Extraction Rules activity. Matching is performed only for the active elements and fields. Its duration is directly related to the number of active elements. To reduce matching time while debugging, you can temporarily disable the elements that don't affect the results for the element you're currently working on. You can change the state of an element using its context menu. You can also select several elements and change their state simultaneously. Remember to disable fields linked to the disabled elements, otherwise matching will not be started. # Extraction Rules activity results Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/extraction-rules/activity-results View document-processing statistics on the Results tab in the Extraction Rules Activity Editor after running Test Activity to evaluate extraction quality. On the **Results** tab in the editor, you can view statistics document processing results obtained using an Extraction Rules activity. These statistics are formed after the activity has been tested on all documents in the set (the **Test Activity** button). Analyzing these statistics may help you find out how the activity should be modified in order to achieve the best possible extraction results. Statistics displayed on the Results tab in the Extraction Rules Activity Editor are the same as those displayed in the **Results** tab for the skill itself. For more information, see Results. # Type-specific properties of the Amount of Money element Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/extraction-rules/amount-of-money Configure the Amount of Money search element to find monetary values — currency, currency position, decimal separators, and value range. The **Amount of Money** element has the following properties in the **What to search for** section: ## Basic properties * **Currency** specifies the allowed currency values. * **Currency position** specifies the allowed locations of the currency name in relation to the number value: **Left or Right**, **Only Left**, **Only Right**. * **Value** specifies a minimum and maximum value. * **Separators** specifies characters that can act as decimal separators. ## Advanced properties * **Max. space length** allows specifying the maximum length of the space inside the detected object. * **Allow missing fractional part** specifies whether the fractional part of the number is obligatory or not. If this option is selected, the program will find such numbers as '12.' and '12.-'. * **Allow missing separator** specifies whether the fractional part separator is obligatory or not. If this option is selected, the program may find integers without separators. * **Text orientation** allows specifying the orientation of the text you're looking for. By default, the activity only looks for text oriented horizontally and won't formulate a hypothesis for rotated text. If you need to find the text rotated in a specific way and ignore the text written in any other direction, you should select only the **Clockwise** or the **Counter-clockwise** option. To find text regardless of its orientation, you should enable all available options. To display advanced properties, click the advanced mode icon on the **Properties** pane. # Type-specific properties of the Barcode element Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/extraction-rules/barcode Configure the Barcode search element to find barcodes on document images by specifying type (QR, EAN, Code 128, etc.) and orientation. The **Barcode** element has the following properties in the **What to search for** section: ## Basic properties * **Type** specifies the barcode type. * **Orientation** specifies the barcode orientation: Left-to-Right, Bottom-to-Top, Right-to-Left, Top-to-Bottom. You can select one or several values in the **Type** and **Orientation** fields. For a list of supported barcodes, see [Supported barcode types](/vantage/documentation/tenant-admin/technical-specs/barcodes). # Type-specific properties of the Character String element Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/extraction-rules/character-string Configure the Character String search element to find character sequences on a line using a character set or regular expression in Advanced Designer. The **Character String** element has the following properties in the **What to search for** section: ## Method **Method** specifies the search method for the text. The following 2 methods are available: ### Characters **Characters** describes the text using a specified character sets, which is a collection of characters permitted to be in the sequence that is being searched for. This method is used when the character sequence format cannot be described using a regular expression, or if the image quality is not high enough, resulting in recognition errors. Several character sets can be specified for a Character String element, however, these character sets cannot contain characters common to several at the same time. If the format of the text is not known, allowed character sets are not specified, and all possible characters are considered during the search. To set a character sets, select **Characters** in the **Method** field and navigate to the Characters field. In the dialog box that will open, you will be able to set new character sets, as well as edit and delete existing ones. #### Setting a character set Select the appropriate character encoding standard from the drop-down lists in either the **Code Page** field or the **Unicode Subrange** field. Select the appropriate characters in the table below. The characters you select will be displayed in the **Selected characters** field. You can also specify a character set using a keyboard. In the `Portion in text, %` field, specify the share of characters (from 0 to 100) that are present in the text being searched for. Character set editor with Code Page, Unicode Subrange, and a character grid for selecting allowed characters in a Character String element ### Regular Expression **Regular Expression** describes the text being searched for using a regular expression. Regular expressions describe the structure of a word or any other entered value using a special language. A regular expression determines the possible character combinations and their positioning relative to each other, thereby describing the structure of the text being searched for. A regular expression search is precise - i.e. the formulated hypothesis should correspond precisely to the regular expression. Usually, this search method is used when document images are of high quality with no recognition errors. To describe the text being searched for using a regular expression, select **Regular Expression** in the **Method** field, and navigate to the field below. In the editor that will open, specify your regular expression. #### Regular expression alphabet | Name in the list | Symbol in the field | Example | | :------------------------------------------------------------------------------ | :------------------ | :---------------------------------------------------------------- | | Any character | \* | "k"\*"t" – allows 'kit', 'kat', etc. | | Letter | C | C"at" – allows cat, bat, Rat, mat, etc. | | Upper case letter | A | A"at" – allows Cat, Bat, Rat, Mat, etc. | | Lower case letter | a | a"at" – allows car, bat, rat, mat, etc. | | Letter or digit | X | X – allows any single letter or digit. | | Digit | N | N"th" allows 5th, 4th, 6th, etc. | | String | "" | "cat" | | Or | \| | "dr"("i"\|"u")"nk" – allows "drink" or "drunk". | | Character from the set | \[] | \[hm]"at" – allows 'hat' or 'mat'. | | Character not from the set | \[^] | \[^b]"at" – allows 'cat', 'mat', 'rat', but does not allow bat. | | Any number of repeats (applies to the expression or sub-expression to the left) | `{-}` | `[AB74]{-}` – allows any combination of A, B, 7, 4 of any length. | | Number of repeats is n | `{n}` | `N{2}"th"` allows 25th, 84th, 11th, etc. | | n to m repeats | `{n-m}` | `N{1-3}"th"` allows 5th, 84th, 111th, etc. | | 0 to n repeats | `{-n}` | `N{-2}"th" `allows th, 84th, 4th, etc. | | n or more repeats | `{n-}` | `N{2-}"th"` allows 25th, 834th, 311th, 34576th, etc. | | Subexpression | () | | #### Examples of regular expressions | Use case | Regular expression | Sample values | | :---------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Postal code | `[0-9]{6}` | "142172" | | Zip code (USA) | `[0-9]{5}("-"[0-9]{4}){-1}` | "55416", "33701-4313" | | Income | `N{4-8}[,]N{2}` | "15000,00", "4499,00" | | Month (numerical) | `((\|"0")[1-9])\|("10")\|("11")\|("12")` | "4", "05", "12" | | Fraction | `("-"\|)([0-9]{1-})(\|(("."\| ",")([0-9]{1-})))` | "1234,567", "0.99", "100,0", "-345.6788903" | | E-mail | `[A-Za-z0-9_]{1-}(("."\| "-")[A-Za-z0-9_]{1-}){-3}"@"[A-Za-z0-9_]{1-}(("."\| "-")[A-Za-z0-9_]{1-}){-4}"."([A-Za-z]{2-4}\|"asia"\|"museum"\|"travel"\|"example"\|"localhost")` | "[support@abbyy.com](mailto:support@abbyy.com)", "[my-name@company.org.ru](mailto:my-name@company.org.ru)", "[info@gallery.museum](mailto:info@gallery.museum)" | #### Extended regular expressions Extended regular expressions are regular expressions with additional functionality enclosed between an opening bracket followed by a percent character and a percent character followed by a closing bracket (`[% and %]`). Extended regular expressions have the following additional features: * One or more characters inside the brackets are supplemented with popular OCR errors. For example, `[%S%]` may allow S, \$, and 5. * Special words inside `[%...%]` for common character sets and OCR errors: * **LETTERS** — Capital Latin letters and characters commonly recognized as capital Latin letters. * **DIGITS** — Digits and characters commonly recognized as digits. * **LETTERSANDDIGITS** — Capital Latin letters, digits, and characters commonly recognized as capital Latin letters and digits. For example, `[%DIGITS%]{9}` specifies nine consecutive digits or common OCR errors for digits, e.g. "OI234Sb7B9". ## Additional properties * **Allowed errors** specifies the maximum allowed recognition error percentage. In other words, it denotes the maximum allowed percentage of total characters that can be from outside the defined character set. The hypothesis for an object can only be formulated if the recognition error percentage for it is not higher than the specified value. * **Word count** specifies the minimum and maximum number of words in the text being searched for. * **Character count** specifies the minimum and maximum number of characters in the text being searched for. * **Search for parts of words** specifies whether word fragments are allowed in hypotheses. Disable this option if you need to exclude hypotheses with word fragments and search only for entire words. ## Advanced properties * **Allow embedded hypotheses** allows using characters in the search area to generate all the possible hypotheses - including intersecting and embedded hypotheses. * **Max. space length** allows specifying the maximum length of the space inside the detected object. * **Text orientation** allows specifying the orientation of the text you're looking for. By default, the activity only looks for text oriented horizontally and won't formulate a hypothesis for rotated text. If you need to find the text rotated in a specific way and ignore the text written in any other direction, you should select only the **Clockwise** or the **Counter-clockwise** option. To find text regardless of its orientation, you should enable all available options. * **Detect words by** specifies how lines should be divided into words: automatically (**Pre-Recognition**) or by dividing a line into words (**Interword Space**) whenever the space between neighboring characters is greater than or equal to the value entered in **Min. interword space**. In advanced mode properties **Word count** and **Character count** are not set by a numeric value, but by a fuzzy interval, for details see [Fuzzy Interval](/vantage/documentation/advanced-designer/activities/formulating/fuzzy-interval) and [Fuzzy Interval Editor](/vantage/documentation/advanced-designer/activities/formulating/fuzzy-interval-editor). To display advanced properties, click the advanced mode icon on the **Properties** pane. # Compile and match an Extraction Rules activity Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/extraction-rules/compile-and-match Compile an Extraction Rules activity to validate element properties, and then match it to documents to locate objects and verify detection accuracy. The Extraction Rules activity is compiled to check the validity of the element properties used to specify the search conditions for image objects. ## Compilation checks The following are checked: 1. **Element properties.** Element properties used to specify object parameters and search regions should only link to elements in the **Search Elements** tree located above the element being searched for. If this is not the case, the program will indicate the invalid elements. 2. **Field properties.** Field properties should not contain links to excluded elements or elements that do not exist. 3. **Regular expressions in** FlexiLayout language: * The code should not contain any syntax errors. * Additional conditions specified in the **Search Conditions** section should only refer to elements described in the **Search Elements** tree located above the element being searched for. Additional conditions specified in the **Hypotheses Evaluation** section should only refer to the element being searched for and elements located above it in the **Search Elements** tree. * All global constants used in the code should be defined. * All variables used in the code should be defined and initialized. * The code itself should call only those entities that are available in that particular section of the code. * Elements of one type should not be given properties of elements of another type (e.g. Static Text cannot have a **Max width** property). The Extraction Rules activity is compiled automatically when you exit the activity editor and when you click **Match** or **Test Activity**. If compilation detects any errors, matching cannot proceed. Any search elements with errors will be marked with an error icon. Hover your mouse over this icon to see a detailed error description. To proceed, you must correct the errors, making sure that your activity meets the criteria listed above. ## Matching process **Matching** is a process whereby Advanced Designer looks for the image objects that meet the conditions specified in the elements' properties. The program will go down the **Search Elements** tree attempting to locate all the objects described by the elements, one by one. ### Matching example Suppose that we have a group element **A** consisting of two simple elements **a** and **b** and of one group element **B** consisting of elements **aa** and **bb**. Suppose further that we additionally have two simple elements **c** and **d**. Elements **A**, **c**, and **d** will have the same level of nesting. When matching the Extraction Rules activity, the program will attempt to locate the corresponding objects in the following order: **a**, **b**, **aa**, **bb**, **c**, and **d**. ``` Element A Element a Element b Element B Element aa Element bb Element c Element d ``` If the program can locate the objects corresponding to all the required elements, matching will succeed. If the program fails to detect at least one required object, matching will stop and you will need to edit the activity. ## Matching commands To match the Extraction Rules activity, you can use one of the following commands: * **Match** matches the activity to the selected documents without displaying the results on the Results tab of the Activity Editor. This method can be used when debugging the activity to check the validity of the properties of a specific element. * **Test Activity** matches the activity to each document in the activity set. Matching results are displayed in the statistics and are used to compare the matching quality of the current version of the Extraction Rules activity against its earlier versions. The compilation and matching status of the Extraction Rules activity is displayed in the notification log (available by clicking the bell icon in the upper right corner). You can use the notification log to navigate to the matching results by clicking the appropriate notification. ## Verify Activity To quickly check the Extraction Rules activity for errors, click the more icon and then click **Verify Activity**. The Extraction Rules activity will be compiled, but no matching will be performed. # Configure search elements Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/extraction-rules/configure-elements Set search conditions for objects on document images by configuring common and advanced element properties in the Properties pane in Advanced Designer. Configuring search elements is an important step in setting up any activity, because element properties set the conditions for searching for an object in the document image. The more precisely you specify element properties, the better the result of its detection on the image will be. If you are new to Advanced Designer or if you are dealing with simpler documents, we recommend that you configure the elements using the common properties displayed in the two sections of the **Properties** pane: **What to search for** and **Where to search**. If you have sufficient experience with the product and need to set up more flexible and complex search conditions, you can also use the advanced properties in the **What to search for** section and the advanced **Under what conditions** section. To show and hide advanced properties, click the advanced mode icon on the **Properties** pane. ## What to search for section The **What to search for** section contains specific properties for each element. These properties are described in the following sections: * [Static Text Element](/vantage/documentation/advanced-designer/activities/extraction-rules/static-text) * [Character String Element](/vantage/documentation/advanced-designer/activities/extraction-rules/character-string) * [Paragraph Element](/vantage/documentation/advanced-designer/activities/extraction-rules/paragraph) * [Key Value Element](/vantage/documentation/advanced-designer/activities/extraction-rules/key-value) * [Date Element](/vantage/documentation/advanced-designer/activities/extraction-rules/date) * [Amount of Money Element](/vantage/documentation/advanced-designer/activities/extraction-rules/amount-of-money) * [Phone Element](/vantage/documentation/advanced-designer/activities/extraction-rules/phone) The **Region** element does not have a **What to search for** section on the **Properties** pane. * [Separator Element](/vantage/documentation/advanced-designer/activities/extraction-rules/separator) * [White Gap Element](/vantage/documentation/advanced-designer/activities/extraction-rules/white-gap) * [Barcode Element](/vantage/documentation/advanced-designer/activities/extraction-rules/barcode) * [Object Collection Element](/vantage/documentation/advanced-designer/activities/extraction-rules/object-collection) * [Group Element](/vantage/documentation/advanced-designer/activities/extraction-rules/group) * [Repeating Group Element](/vantage/documentation/advanced-designer/activities/extraction-rules/repeating-group) — includes **Instances** properties that control how subsequent instances are located relative to previous ones (**Next instance**, **Up from the previous one**, **Down from the previous one**). The **Input Field** element does not have a **What to search for** section on the **Properties** pane. The Deep Learning Element has a **Get hypotheses from** section instead of the **What to search for** section. ## Where to search section The **Where to search** section is identical for all elements. In this section, you can set restrictions for the area where Advanced Designer will look for the objects corresponding to the element. For more information, see [Element Search Area](/vantage/documentation/advanced-designer/activities/extraction-rules/search-area). In the case of the **Deep Learning** search element this section is called **Specify hypothesis area**. It provides the same settings. ## Under what conditions section (advanced properties) The **Under what conditions** section contains advanced properties only. This section is identical for all elements and allows you to set additional conditions and restrictions for your element search: * Elements are either required, optional, or prohibited. This property can be set using the corresponding values in the **Element is** drop-down list. For more information, see [Required, optional, and prohibited elements](/vantage/documentation/advanced-designer/activities/extraction-rules/elements-optional). * **Min. hypothesis quality**. Quality of the hypothesis that Advanced Designer formulates if it has detected no objects corresponding to an optional element in the search area. This property is available if Optional element is selected in the **Under what conditions** section. The default value is 0.97. * **Max. number of hypotheses.** Limits the number of hypotheses the program can use when searching for a next element. By default, this parameter is set to 5 for simple elements and 1 for group elements. This means that if the program finds 15 hypotheses for a given element, it will choose the top five, leaving the other 10 hypothesis chains incomplete. * **Do not find element if.** Can be used to specify a condition that, when satisfied, prevents the program from looking for the element. The condition is based on whether or not the reference element was detected. If you specify more than one condition, the Do not find element if command will only work if all of the conditions are satisfied. * **Comment**. Comment or description of an element provided by the user. ## Properties in the element context menu You can also change the name and type of elements in the element context menu: * The element name can be changed using the **Rename** command in the element context menu. The element name can contain letters (Latin and Russian), numbers, and underscores. However, an element name cannot start with a number. Spaces, special symbols (.,:- \ /), and reserved keywords are also not allowed. For automatically created elements corresponding to skill fields, element names are generated using field names. Automatic element name generation also takes into account unused characters and keywords. * The element type can be changed using the **Convert Element to** command in the element context menu. Elements can either be simple elements (**Static Text**, **Separator**, **White Gap**, **Barcode**, **Character String**, **Paragraph**, **Object Collection**, **Date**, **Phone**), meaning they do not contain any nested elements, or group elements (**Group**, **Repeating Group**). Changing the element type does not convert simple elements to group elements and vice versa. ## Set properties in the Code editor Element properties can also be specified using expressions written in programming code. For more information, see [FlexiLayout language](/vantage/documentation/advanced-designer/activities/flexilayout/language). To make setting element properties using programming code easier, you can copy the existing properties from the **Properties** pane and paste them to the Code Editor in programming code format. To do so, right-click the required element in the element tree and select **Copy Element Properties as Code**. Alternatively, use the **Ctrl+Alt+C** hotkey. Next, navigate to the Code Editor pane using the button in the bottom pane and navigate to the Search Condition section. Paste the properties you have copied using either the **Ctrl+V** hotkey or the **Paste** command in the Code Editor drop-down menu. Once you have carried out the above steps, you can review the automatically generated code and edit the element properties programming code if required. # Type-specific properties of the Date element Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/extraction-rules/date Configure the Date search element to find dates with various formats, day/month/year orderings, separators, and language support for spelled-out months. The **Date** element has the following properties in the **What to search for** section: ## Date format properties * **Date format** specifies the entire date format: Day, month, year; Month, day, year; Year, day, month; Year, month, day. * **Day format** specifies the day value format: Single digit, Two digits. * **Month format** specifies the month value format: Single digit, Two digits, Word. * **Month languages** specifies languages that can be used to write the month. This field is only available if the Word value is specified for **Month format**. The following languages are supported: English, Hungarian, Dutch, Greek, Danish, Spanish, Italian, Latvian, Lithuanian, German, Norwegian, Polish, Portuguese, Turkish, Finnish, Czech, Swedish, Estonian, French, Japanese, Ukrainian, and Russian. * **Year format** specifies the year value format: Two digits, Four digits. * **From** and **To** specifies an interval for the date. When setting a date interval, you can select the current date by using the Today option in the date interval form. * **Separators** are characters that may be used to separate the various date components. One or several values can be selected in the **Date format**, **Day format**, **Month format**, and **Year format** fields. ## Advanced properties * **Max. space length** allows specifying the maximum length of the space inside the detected object. * **Text orientation** allows specifying the orientation of the text you're looking for. By default, the activity only looks for text oriented horizontally and won't formulate a hypothesis for rotated text. If you need to find the text rotated in a specific way and ignore the text written in any other direction, you should select only the **Clockwise** or the **Counter-clockwise** option. To find text regardless of its orientation, you should enable all available options. To display advanced properties, click the advanced mode icon on the **Properties** pane. # Type-specific properties of the Deep Learning element Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/extraction-rules/deep-learning Configure the Deep Learning search element to access values found by a Deep Learning activity inside a Hypothesis Filtering container in Advanced Designer. The **Deep Learning** element has the following properties in the **Get hypotheses from** section: ## Basic properties * **Activity** specifies the Deep Learning activity which finds the value for this search element. * **Activity Field** contains the name of the field in the Deep Learning activity. You will see a warning if the selected Deep Learning activity hasn't yet been trained. You will be able to add fields to the search element, but you won't be able to match or train the Extraction Rules activity until training is completed for all the Deep Learning activities that provide values for search elements. # Search element types Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/extraction-rules/element-type Search element types in an Extraction Rules activity — Static Text, Character String, Date, Amount of Money, Barcode, Group, Repeating Group, and more. A **Search Element** is a description of one or several document image objects, which allows you to set search conditions for an object in a specific area. An element contains information about the type of image object being searched for, the object's properties and its search area. Search results obtained using element properties are used by the activity to form regions for objects detected on the image—an area consisting of one or several rectangles encompassing the detected object. The location of fields and other elements is then determined relative to the location of detected elements. To create an element, click **Create Element** and select the appropriate element type in the list that will appear. Once an element has been created, you need to set up its properties in the **Properties** pane (see [Element Properties](/vantage/documentation/advanced-designer/activities/extraction-rules/configure-elements) for more information). The specified properties can also be viewed and edited in code format (see [FlexiLayout Language](/vantage/documentation/advanced-designer/activities/flexilayout/language) for more information). Elements can be moved around in the tree depending on the structure of the document. Note that the location of the elements in the tree determines their search order. Element search is carried out in descending order. When you create a search element, choose its type depending on what object you need to find. Below you will find short descriptions of search element types available in the Extraction Rules activity. Once you create the search element, configure its properties that are described [here](/vantage/documentation/advanced-designer/activities/extraction-rules/configure-elements). ## Static Text This element describes predefined text. Most document images usually contain some static text. This may either be the name of the document (for example, "Invoice") or additional labeling for data fields (e.g. "Date", "to:", "from:"). Such text is recognized as a Recognized Words object during pre-recognition and usually serves as an anchor for detecting values for the corresponding fields (for example, the date is typically written next to the label "Date" ) This text may consist of a word or a phrase. Phrases are different from words in that they contain at least one space. A phrase may also be written over several lines. When searching for this element, Recognized Words and Recognized Lines objects detected during image pre-recognition and located in the search area of the element are considered. ## Character String This element describes a sequence of characters on a single line (left to right). Character sequences are compiled from recognized text objects (Recognized Words), for example, from whole words or from several fragments of text objects. This element is designed for searching for text that is not pre-defined. Recognized Words objects detected during image pre-recognition and located inside the element search area are considered. Usually, the activity searches for character sequences in areas around static text that has already been detected. For example, when looking for an invoice number, the static text "Invoice No." needs to be found first, after which the activity looks for a character sequence to the right of the static text on the same line (numbers only in this case). The activity does not search for Character String elements in Arabic and Hebrew due to their left-to-right restriction. ## Paragraph This element describes a paragraph of text. A search using this element considers all text objects intersecting with the search area. This element is designed to look for paragraphs of text that is not predefined. Recognized Words and Recognized Lines objects detected during pre-recognition and located in the element search area are considered. ## Key value This is a group element designed to search for fields that have a label. To create this element, you need to specify the properties of the label, the main search field, and the space between them. You can also specify a type and appropriate properties for the primary element. Static text and white gap act as secondary search means for the primary field. When searching for the static text, Recognized Words and Recognized Lines objects detected during image pre-recognition and located inside the element search field are considered. Once the static text element has been detected, the activity searches for the corresponding field containing the element value. ## Date This element describes the date. Dates can be written in different formats, with the day and year values always written as numbers, while the month value can also sometimes be written using letters. The date format is specified by the user. ## Amount of Money This element describes number values that are either integers or have two decimal places. By default, a placeholder symbol for the decimal part is allowed. For example, 12. will be recognized as 12.00. The whole number part can be divided into groups using delimiters (spaces and the following symbols are permitted to act as delimiters by default: . , '). The number being searched for can have a prefix and a suffix, for example, a text element that comes before or after the number value. The prefix has to be on the same line as the number value. This format is usually used for amounts of money, with the currency name acting as the prefix. ## Phone This element describes a telephone number, which is usually accompanied by a keyword (e.g. "Tel.", "Home Tel.", etc.) and a city/region code separated from the rest of the number using brackets. The telephone number and the corresponding keyword must be located on the same line. ## Region This element represents a region on a document image without any specifications regarding its contents. The element region can consist of several unconnected regions. This element is used in the activity to mark out regions regardless of the objects they contain. This element should be used when the same field is detected using different elements on different documents, e.g. Date and Character String to look for a date that is specified in both standard and non-standard formats. In this case, Date and Character String are secondary elements, while Region is used to record the extraction results. ## Separator This element describes a vertical or horizontal separator. This element is designed for searching for separators. Separator objects detected during image pre-recognition and located entirely within the element search area are considered. These objects can either be located within the search area entirely, or can merely intersect with the area. ## White Gap This element describes a rectangular area on the image, which almost never contains other objects. Can be used as a secondary element for other element searches. For example, if there is always a white gap between the address and the document header on the documents being processed, a White Gap element can be used to search for the element that contains the address. ## Barcode This element describes barcodes. This element is designed to detect barcode types supported by Advanced Designer. Barcode objects detected during image pre-recognition and located inside the element search area are considered. ## Object Collection This element describes a collection of objects of various types, all of which satisfy the search conditions. The Object Collection element is usually used to look for objects that cannot be detected using any other element type. For example, this element can be used to find standalone punctuation marks that are not part of any line of text or other text objects, as well as text that could not be recognized due to a lot of unrelated objects. This element can also be used to find non-text objects like images and markings. ## Group This is a collection of several other elements (termed subelements). Subelements can be both simple and group elements. We do not recommend having group elements that contain no subelements. Group elements can be used to do the following: * Grouping elements together. This makes debugging independent parts of your Extraction Rules activity easier. For example, your activity may contain 100 elements split up into 3 parts: header, main body, footer. Each of these 3 group elements contains more group elements designed to look for small fragments of the logical part of your activity. Besides minimizing the number of possibilities that have to be considered by the activity, using such a structure ensures that debugging and editing is easier in the future, since it is split up into independent parts. * Ensuring a logical hierarchy of the elements in the tree, which makes navigating the activity easier. * Reducing the possible number of element hypotheses, which speeds up the search for the resulting hypothesis for the activity as a whole. Grouping elements together lets that group of elements be considered as a single entity with its own hypothesis, which makes it possible to have a quality measurement for the group as a whole. * A compound element allows you to specify search area restrictions shared across all subelements. The search area for a specific subelement of a group element will be calculated as an intersection of the subelement and group element search areas. Elements (both group and simple) can either be required, optional, or prohibited. If an optional compound element contains a required subelement, the subelement not being matched will result in the formulation of the null hypothesis for the group element. This will not interrupt the matching of the Extraction Rules activity. ### Repeating Group This element is designed to look for repeating element groups (of unknown instances). A common example of this is a data table. A repeating element is different from a regular compound element in terms of its repetition parameters. This group can appear several times on a single page as well as across the whole document. Since this group repeats within a document, the element allows you to describe all of its instances (including its repetition parameters) as a single element. As such, using Repeating Group lets you describe the document structure much quicker. This element can be used to do the following: * Search for tables. * Search for a header on each page of a multi-page document. * Search for an unknown number of repeating data entries. ## Input Field This element is designed to detect a field region extracted by another activity. This element can be used to find other elements. For example, if a skill contains a field that always remains on the image after training, it can be used as an anchor field when searching for elements using an Extraction Rules activity. To do so, create an Input Field element and select the appropriate field in the skill structure. This will create a Region element that contains code linking the element and the selected field in the **Search Conditions** tab. ## Deep Learning This element provides access to a value found by a Deep Learning activity that feeds its output to the Extraction Rules activity within a Hypothesis Filtering container. This element is available only within a Hypothesis Filtering container. You can control the output of a Deep Learning activity by specifying conditions for this search element. For example, if the Deep Learning activity is configured to find a repeating value, you can set the preferred location of the instance that you need to extract. # Required, optional, and prohibited elements Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/extraction-rules/elements-optional Set search elements as required, optional, or prohibited to control how Advanced Designer continues matching when an object is absent or incorrectly detected. Semi-structured documents are different from structured documents in that their set of fields varies from image to image. When creating an element, you need to keep in mind that the corresponding object may not appear on some images, making it impossible to detect it on them. Images can also be scanned incorrectly (e.g. some areas may become too dark or too bright), leading to a loss of data. In this case, the corresponding object will also not be detected. The Extraction Rules Activity Editor lets the program continue searching for other elements if a specific element is absent on an image. To continue matching for images that do not contain a specific object, that object needs to be set as optional. ## Required elements Image objects described using **required** elements are meant to always be present on an image, and they need to be detected when matching an Extraction Rules activity. However, if such an object is not detected, matching is stopped. ## Optional elements Image objects described using **optional** elements may be absent on an image or may not be detected. Unlike required elements however, this does not cause matching to stop, and image objects described by other elements will still be detected. By default, all simple elements are optional, which means they are not required to be present on images. Unlike simple elements, all compound elements are set as required by default. ## Prohibited elements Sometimes, the presence of a specific element should mean that a hypothesis chain is incorrect. Such elements are called **prohibited** elements. Detecting this element type stops the generation of the hypothesis tree in which the element was detected. These elements can be used to prevent the matching of an incorrect Extraction Rules activity to a document. ## Configure element type To change whether an element is required, optional, or prohibited, use the **Element is** property on the **Properties** pane. # Extraction Rules activity for semi-structured documents Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/extraction-rules/extraction-rules Define custom rules and search elements to extract fields from semi-structured documents — useful when training data is limited or AI output needs filtering. The Extraction Rules activity allows you to set rules for detecting fields on semi-structured documents and verifying how such rules work on real-life documents. It is usually applied when a field's location may differ from document to document, complicating the extraction of data, and when you can provide additional information for detecting such fields: e.g. the location of fields relative to other objects on the document or regular expressions specifying search conditions for an object. For example, you can specify that the Invoice Number field may be located either on the right of the image or directly under the words "Order number", "Order #", or other similar keywords. We also recommend adding a Fast Learning activity to the processing flow, enabling Online Learning to collect runtime documents, which will automatically rebuild the skill later via machine learning. ## Use cases Add the Extraction Rules activity to your document processing flow in the following cases: * When your document set isn't streamlined enough to use a Fast Learning activity to extract data, you don't have enough documents to train a Deep Learning activity, and the documents have a known structure which you can formalize. * When you want greater control over the AI, analyzing the prediction results of the Deep Learning and Fast Learning activities before transferring those values into document fields. For example, if you expect to extract a number located close to some keyword, you can filter out hypotheses that don't appear to be a number and hypotheses that are not located near the keyword. Generally, if post-processing with rules is required, this usually indicates that the training set for the Deep Learning and Fast Learning activities should be expanded, because machine learning technologies can "feel out" and learn a field's data type, typical location, and surroundings. * When you have a FlexiLayout file from ABBYY FlexiLayout Studio which you want to reuse. For more information, see [Importing FlexiLayouts from ABBYY FlexiLayout Studio](/vantage/documentation/advanced-designer/activities/flexilayout/flexilayout-import). * When your documents contain complex structures (e.g. nested tables, which are repeating structures inside other tables) which can't be extracted by other activities targeted at semi-structured documents. ## How it works An Extraction Rules activity is a formalized description of a set of documents that enables data capture workers to use custom rules to locate data fields on documents and extract information from these fields. In other words, an Extraction Rules activity allows you to specify field search algorithms for document images. You can either specify the location of fields relative to other objects or use absolute coordinates to specify their location. Various objects on the document image are detected using search elements. For every object that needs to be detected on the image, you need to create a corresponding element that fully describes the required type of object (such as text, image, barcode), its characteristics, and the presumed search area for the object. The elements compose a **Search Elements** tree, which is a logically connected structure (of any nesting level) where elements are searched for relative to each other. The order of the elements in the tree directly corresponds to the order in which the activity searches for them, i.e. when matching a description to the image, the activity will look for elements in descending order. Grouping elements helps optimize the search and allows the creation of independent sub-hierarchies. To extract data to a field, you should map it to a search element. If the element is found on the image, its region becomes the region of the mapped field. For more information, see [Setting up an Extraction Rules activity](/vantage/documentation/advanced-designer/activities/extraction-rules/set-up-extraction-rules). ## Combine several Extraction Rules activities You can create a workflow item that contains several Extraction Rules activities. An activity to be applied to the document is selected depending on the value of some field. This field may contain classification results or other data that helps distinguish among the document variants. The specified values serve as conditions for choosing a corresponding activity. For more information, see [Multiple Extraction Rules within a single activity](/vantage/documentation/advanced-designer/activities/extraction-rules-several-sets). # Extraction Rules activity structure Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/extraction-rules/extraction-rules-activity-structure The Extraction Rules activity organizes search elements as a tree, where elements serve as anchors for locating data fields on document images. The Extraction Rules activity is a tree-like structure consisting of elements used to search for data fields. The search elements tree and the field structure will be displayed to the right of the document image, in the **Search Elements** and **Fields** tabs. Search Elements tree and Fields tab displayed alongside the document image in the Extraction Rules Activity Editor Using **Search Elements**, you can find various text and non-text objects on the document image. You can use elements that have already been detected as anchors for specifying the location of other elements and fields. Elements corresponding to skill fields are created automatically when a field is enabled in an Extraction Rules activity. They can also be modified, moved in the **Search Elements** tree, and deleted. Once the required elements have been created and set up, create links between elements and the searched fields (for more information, see [Field Properties](/vantage/documentation/advanced-designer/activities/extraction-rules/field-properties)). A Cartesian coordinate system is used to specify the location of objects on the image and the distance between them. The system origin (0, 0) is located exactly in the upper left corner of the image. The horizontal coordinate value increases as you move from left to right, and the vertical coordinate value increases as you move from top to bottom. ## Export an Extraction Rules activity If you want to reuse an Extraction Rules activity in another skill, you can export it as a JSON file. In the Activity Editor, click the more icon and then click **Export...**. In the dialog that opens, choose a folder where the Extraction Rules activity will be saved as a JSON file. ## Units used to measure objects In the Extraction Rules Activity Editor, various units of measurement can be used: millimeters, centimeters, inches, dots (1/300th of an inch), points (1/72nd of an inch). The sizes of objects, intervals, etc. can be specified in the selected unit of measurement. The program converts all distances to dots and uses that particular unit of measurement when matching the Extraction Rules activity, hence the measurement precision of all values is equal to 1 dot. The unit of measurement can be selected in the menu in the Toolbar (**Options** - **Units** section). Changing the unit of measurement will cause all specified sizes and distances to be converted to the specified unit. The current unit of measurement used in the program is displayed in the bottom pane: Bottom-pane indicator showing the current unit of measurement for an Extraction Rules activity # Field properties Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/extraction-rules/field-properties Map skill fields to search elements in an Extraction Rules activity — including the rules for text, table, group, and repeating fields. The **Fields** tab displays the skill fields used in the activity. To extract data to fields, map them to search elements. When the element mapped to a field is found on the document, its region becomes the field region. When a field is enabled in an activity, a corresponding search element is automatically created and mapped to the field. To create new fields, change the existing fields properties, or enable fields that weren't selected on the Activity properties pane, open the Manage Fields dialog using the corresponding link on the **Fields** tab. If required, you can disable and enable field search for the current activity directly in the Activity Editor using the **Disable** and **Enable** field context menu commands or the key combination **Ctrl+Alt+D**. The field region description method (element or code) is specified in the field list. Fields that aren't extracted by the current activity are grayed out. Schematic showing how skill fields are mapped to search elements in an Extraction Rules activity ## Map fields to search elements When you select a field on the **Fields** tab, you will see a search element mapped to this field in the **Get region from** drop-down list. You can use this drop-down list to map the field to another element. You can also specify a field region [using the code](/vantage/documentation/advanced-designer/activities/flexilayout/language). The table below will help you decide which elements and element structures you can use to extract data to a field depending on the field properties. | Field properties | | Ways to provide a region for the field | | :------------------------------ | :------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **Field type** | **Allow Multiple Items setting** | | | Text, Barcode, Checkmark, Image | Disabled | One of the following: Map the field to a non-repeating search element, or map the field to code. **Note:** Using code allows you to map a field to a search element inside a certain instance or the last found instance of a Repeating Group element. | | | Enabled | One of the following: Map the field to a Repeating Group element, map the field to a search element inside a Repeating Group element, or map the field to code. | | Checkmark Group | Always disabled | The checkmark group serves only to structure the fields on the data form and doesn't have a region. You should map its child fields instead of mapping the group itself. | | Group | Disabled | The group without multiple items serves only to structure the fields on the data form and doesn't have a region. You should map its child fields instead of mapping the group itself. | | | Enabled | One of the following: Map the field to a Repeating Group element and map child fields of the group to child elements of this Repeating Group element, or map the group to code. | | Table | Always enabled | One of the following: Map the table to a Repeating Group element and map table columns to child elements of this Repeating Group element, or map the group to code. | When mapping a field/group with multiple items, you should also consider its full path, which includes the field/group itself and all its parent groups. The total number of groups/fields with multiple items in this full path should match the total number of Repeating Group elements in the full path to the search element you're mapping to. Field groups with multiple items that are mapped to code are excluded during the count. ### Example Let's go over mapping possibilities for the fields in the following field structure: Sample field structure with nested groups and repeating-group items used for the mapping examples | Mapping possibilities for a particular field | Illustration | | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :-------------------------------------------------------------------------------------------------------------------- | | The **field A** has multiple items enabled. You can map this field to the first Repeating Group element of any branch or to its child elements (see elements parent\_a, parent\_d, f, and their child elements). However, you can't map it to a Repeating Group in a Repeating Group (see element parent\_h). | Mapping for field A — connects to the first Repeating Group element of any branch or its child elements | | The **field D** has the same mapping possibilities because groups B and C don't have multiple items. | Mapping for field D — same options as field A since groups B and C have no multiple items | | The **group with multiple items F** can be mapped to the first Repeating Group element of any branch, but it can't be mapped to child elements of such Repeating Group elements. | Mapping for group F with multiple items — only the first Repeating Group element of any branch | | Finally, the **field H** which lies in the group with multiple items F can be mapped only to the Repeating Group element parent\_h or its child element h. Since one of the groups E, F, and G has multiple items, one of the elements e, f, and g must be a Repeating Group element in this case. | Mapping for field H inside group F — only Repeating Group element parent_h or its child element h | # Type-specific properties of the Group element Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/extraction-rules/group Configure the Group search element to control subelement search behavior, including Only first found and minimum detected subelements, in Advanced Designer. The **Group** element has the following properties in the **What to search for** section: ## Basic properties * **Only first found** restricts group subelement search to the subelement that is detected first on the image. The subelement search is carried out until one of the subelements is detected, after which the search is stopped. * **Min. no. of found subelements** specifies the minimum number of group subelements that need to be detected in order for the group element as a whole to be considered detected. # Import an Extraction Rules activity Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/extraction-rules/import-extraction-rules Reuse an Extraction Rules activity across skills by importing its JSON configuration file in the Advanced Designer Activity Editor. You may want to use the same Extraction Rules activity in multiple skills. For example, if you are going to create skills for similar documents from different countries, they may share most of the fields, and so can be processed using the same activity. In this case, you can import the required Extraction Rules activity as a JSON file. ## Import process In the Activity Editor, click the more options icon and then click **Import...**. In the dialog that opens, select the JSON file. Once imported, the activity structure is displayed in the Extraction Rules Activity Editor. ## Export activities For information about exporting, see [Export an Extraction Rules activity](/vantage/documentation/advanced-designer/activities/extraction-rules/extraction-rules-activity-structure#export-an-extraction-rules-activity). # Type-specific properties of the Key value element Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/extraction-rules/key-value Configure the Key value search element to find labeled fields — define secondary element (label), primary element (value), and the gap between them. The **Key value** element has the following properties in the **What to search for** section: ## Secondary element properties * **Text to find** specifies the static text. * **Allow multiple lines** allows/disallows multi-line text. * **Allowed errors** specifies the maximum recognition error percentage. * **Gap between key and value** allows/disallows gap between secondary and primary element. For more information about the **Text to find** and **Allow multiple lines** properties, see the description of similar properties for the [Static Text element](/vantage/documentation/advanced-designer/activities/extraction-rules/static-text). ## Primary element properties * **Position** specifies the position of the element relative to the static text. * **Type** specifies the type of element being searched for. Depending on the selected type, other specific element properties become available: * **Any Text**: has no special properties. * **Allowed Values**: identical to Static Text. * **Number**: **Can be negative** bool (specifies whether negative values are permitted); **Can be fractional** bool (specifies whether non-integers are permitted). * **Amount of Money**: **Currency** (specifies the permitted currency values). * **Date**: **Date format** (specifies the date format); **From** and **To** (specify an interval for the date). * **Phone**: **Number of digits** (specifies the minimum and maximum number of characters in a telephone number). * **Character String**: identical to Character String. ## Advanced properties * For the primary element of type **Number**, there is additionally a **Value** property, which allows specifying the range of possible values. Possible values range from -2147483648 to 2147483647. * For the primary element of type **Date**, there is additionally a **Max. space length** property, which allows specifying the maximum length of the space inside the detected object. * **Take spaces into account** allows spaces in the search string. If this option is not selected, spaces will be removed from the search string. Ignoring spaces makes the search faster. However, if the phrase you are searching for may be split over multiple lines or if some words in the phrase may be missing, you need to enable the Take spaces into account option and type in your search phrase preserving the spaces. * **Allow missing words** allows missing words in the phrase and allows setting a penalty for missing words. The penalty is a number from 0 to 1. The quality of the hypothesis will be multiplied by this number as many times as there are missing words in the phrase. If some words may be absent in the phrase, set this parameter to 1 (multiplying the quality of the hypothesis by 1 will not downgrade its quality). * **Max. space length** allows specifying the maximum length of the space inside the detected object. * **Search for parts of words** specifies whether the hypothesis should include word parts contained only partially within the search area. Disable this option if you need to exclude word fragments from the hypothesis. * **Match case** enables case-sensitive search, making the program distinguish between small and capital letters. * **Min. space b/w key and value** specifies the minimum space between the secondary and the primary element. This option is available only if **Gap between key and value** is enabled. * **Use white gap to detect spaces**. This option is available only if **Gap between key and value** is enabled. * **Search area** specifies the width and height of the search area (in user-defined units of measurement). To display advanced properties, click the advanced mode icon on the **Properties** pane. # Type-specific properties of the Object Collection element Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/extraction-rules/object-collection Configure the Object Collection search element to find any combination of Text, Picture, Checkmark, Separator, or Barcode objects with size constraints. The **Object Collection** element has the following properties in the **What to search for** section: ## Basic properties * **Type** specifies the object type: **Text**, **Picture**, **Checkmark**, **Separator**, **Barcode**. One or several values can be selected. * **Height** specifies the minimum and maximum height of the objects. * **Width** specifies the minimum and maximum width of the objects. # Type-specific properties of the Paragraph element Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/extraction-rules/paragraph Configure the Paragraph search element to find multi-line text blocks with controls for alignment, line count, line height, and stamp removal. The **Paragraph** element has the following properties in the **What to search for** section: ## Basic properties * **Text alignment** specifies the alignment type for the text in the paragraph. The following values are allowed: **Any**, **Left**, **Right**, **Justified**, **Center**. * **Line count** specifies the minimum and maximum number of lines of text in the paragraph. ## Advanced properties * **Max. space in line** specifies, in user-defined units of measurement, the maximum allowed absolute length of the space inside the detected object; when searching for the text, characters are added to the string until the distance between the neighboring characters becomes greater than the value in **Max. space in line**. * **Max. interline space** specifies the maximum distance between the lines in user-defined units of measurement. * **Max. relative interline space** specifies the maximum distance between the two lines relative to the height of the top line; if the distance between the lines is greater than this value, the second line does not make it into the hypothesis. * **Line height** specifies the minimum and maximum line height. * **Line width** specifies the minimum and maximum line width. * **Search for parts of words** specifies whether the hypothesis should include word parts contained only partially within the search area. Disable this option if you need to exclude word fragments from the hypothesis. * **Remove stamps**. When recognizing payment documents, stamps placed over text may pose a problem. Typically, a stamp is placed in the bottom right corner of the text. The text fragment with a superimposed stamp is practically illegible and is recognized by the program as bits of phrases that usually make no sense. To avoid this, do not include the stamped text fragment into the block and key in the text manually from the image (and you won't have to remove the incorrectly recognized text). If Remove stamp is enabled, the program will analyze the bottom right corner of the search area and remove any bits of text that may have been caused by a superimposed stamp. * **Ignore separators** specifies whether separators should be ignored when searching for the paragraph. Disable this option if the paragraphs are marked off by separators. To display advanced properties, click the advanced mode icon on the **Properties** pane. # Type-specific properties of the Phone element Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/extraction-rules/phone Configure the Phone search element to find telephone numbers — keywords, separators, digit count, and area code brackets in Advanced Designer. The **Phone** element has the following properties in the **What to search for** section: ## Basic properties * **Key words** specifies allowed values for the element keywords. * **Separators** specifies allowed number separator values. * **Digits count** specifies the minimum and maximum number of characters in a telephone number. ## Advanced properties * **Missing key word penalty** specifies a penalty coefficient (a number from 0 to 1) by which the quality of the hypothesis will be multiplied if the key word is not found. * **Max. space length** allows specifying the maximum length of the space inside the detected object. * **Area code brackets** allows brackets for city/area codes. To add an opening and closing bracket, click **Add Brackets** and in the **Area code brackets** dialog box, type the opening bracket in the **Opening character** field and the closing bracket in the **Closing character** field. To delete brackets from the list, select the brackets and click the delete icon. * **Text orientation** allows specifying the orientation of the text you're looking for. By default, the activity only looks for text oriented horizontally and won't formulate a hypothesis for rotated text. If you need to find the text rotated in a specific way and ignore the text written in any other direction, you should select only the **Clockwise** or the **Counter-clockwise** option. To find text regardless of its orientation, you should enable all available options. To display advanced properties, click the advanced mode icon on the **Properties** pane. # Reference Browser Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/extraction-rules/reference-browser Use the Reference Browser pane to inspect element and field dependencies in an Extraction Rules activity — quick verification without opening every element. The Reference Browser displays element and field dependencies. The Reference Browser lets you quickly verify the correctness of specified search conditions and element dependencies without going through the properties of each element. The Reference Browser also displays links between fields and elements. You can use the Reference Browser when debugging the Extraction Rules activity and checking element relationships to rectify any possible errors in their properties. ## Open the Reference Browser To open the reference browser pane, click the reference browser icon in the bottom pane: Reference Browser pane showing element search and dependency lists in the Extraction Rules Activity Editor ## View dependencies To view dependencies for an element, enter its name or the name of the corresponding field. To enable and disable case sensitivity, use the aBc button. Elements and fields that are found will be displayed in the search results list. To view the dependencies for an element, click it (Dependencies and References lists). The Dependencies list contains links to the specified element from other elements and fields. The References list contains links from the specified elements to other elements and fields. Expand the lists to view details about the discovered dependencies. # Type-specific properties of the Repeating Group element Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/extraction-rules/repeating-group Configure the Repeating Group search element to find tables and other repeating structures — instance positioning, repetition counts, and overlap rules. The **Repeating Group** element has the following properties in the **What to search for** section: ## Basic properties * **Each instance within one page**. If you enable this option, the program will search for one instance of a repeating group on each page of a multi-page document. If instances of a repeating group can be located on a single page, do not enable this option. * **Exclude previous instances**. The following constraint is imposed on the instances of an element: no two instances may intersect. This is achieved by forcibly excluding the already detected instances. * **Repetitions.** Specifies the minimum and maximum number of instances on a page. * **Min. no. of found subelements.** Specifies the minimum number of group subelements that need to be detected in order for the group element as a whole to be considered detected. ## Instances The **Instances** section controls how the program locates subsequent instances of the repeating group relative to previously detected instances. These properties define the spatial relationship and distance constraints used when searching for the next instance. * **Next instance.** Specifies the expected position of the next instance relative to the previous one. Select a value from the drop-down list (for example, "Below Previous") to indicate the direction in which the program should search for subsequent instances. * **Up from the previous one.** Specifies the maximum distance (in pixels) to search above the previous instance's position when locating the next instance. This defines the upper boundary of the search area relative to the previous instance. * **Down from the previous one.** Specifies the maximum distance (in pixels) to search below the previous instance's position when locating the next instance. This defines the lower boundary of the search area relative to the previous instance. Setting **Down from the previous one** to a non-zero value restricts the search area for the next instance to the specified distance below the previous one. If line items are spaced inconsistently, this may cause instances to be missed. Set the value to `0` or leave it blank to remove the downward distance constraint. If your extraction is not detecting all line items, check the **Instances** settings. Overly restrictive distance values are a common cause of missed instances, particularly after migrating skills to a new version of Vantage. # Search area Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/extraction-rules/search-area Define where Advanced Designer looks for an element on a document image — using absolute coordinates or relations to anchor elements. A **search area** is a region on the image where the program should look for objects corresponding to a specific element. It is calculated based on the conditions specified in the **Where to search** section of the **Properties** pane. On semi-structured documents, some objects may appear in different locations on different documents, and so the program will not always be able to find them using absolute search areas. In this case, search areas can be defined relative to elements with permanent locations, or relative to fields that have already been found. There are also cases where an element can be detected without defining a search area (e.g. a Static Text element always containing some document-unique word can be detected based on that word alone) or by limiting the search area just to the first or the last page of a document. ## Specify a search area Create and set up so-called anchor elements. Any elements that have already been detected can be used as anchor elements, provided you can define some relations between them and the element you want the program to detect. Match the elements against your image using the **Match** command and make sure they are detected correctly. Create an element corresponding to the image object you want to detect and specify its properties in the **What to search for** section. Specify search area in the **Where to search** section. 1. In the **Search on** drop-down list, select **Whole Document** if you need to search the whole document, or **First Page** or **Last Page** if you need to restrict your search to the first or last pages. When specifying the search area in this manner, no anchor elements are required. 2. If required, specify relations existing between the element to be detected and other elements or draw a search area directly on the image. You can specify search area boundaries in relation to other elements, exclude certain elements from the search area, or specify which element or page edge is nearest to the element to be detected. Click **Match** to make sure that your element can be detected correctly on all the documents. ## Specify a search area on the document image In most cases you will specify a search area relative to the location of other search elements used as anchors. You can only use an element as an anchor if it was successfully found on the image, so you should first set up and match elements that will be used as anchors. Click the **Draw on Image** button and draw a search area on your image. The search area should be close to or intersecting with the regions of the anchor elements. In the **Where to search** section, the **Right of**, **Below**, **Left of**, and **Above** properties will appear for the search area you have drawn, as well as coordinates to specify distances for those properties in relation to the search area and anchor elements. These properties are synchronized with the search area on the image. You can modify the search area at any time by either editing the area on the image or changing the relation properties in the **Properties** pane. When you select a relation in the **Properties** pane, the half-plane specified by this relation is highlighted on the document image. Next, adjust relations for the anchor elements and the search area using the anchor element toolbar, which can be accessed by clicking an element's region: Anchor element toolbar with directional arrows, delete-relations, nearest-to, and exclude tools for configuring a search area * The directional arrow tools can be used to enable and disable object search relations relative to the element in the corresponding direction. * The delete relations tool removes all relations set for the selected element. * The nearest tool specifies that among all element hypotheses, the one nearest to the selected element should be considered if all other conditions are satisfied equally. When hypotheses are formulated, the object nearest to the selected element will be chosen. If this tool is used, the **Nearest to** property appears on the **Properties** pane. This property can be set for only one anchor element. * The exclude tool excludes the selected element from the search area. It is used when an element inside the search area may be mistaken for the object being searched for. For example, if you are looking for a Character String element with a character set, a different Character String element with the same or similar character set can be chosen by mistake. To prevent this from happening, exclude the second element from the search area using the exclude tool. When you use this tool, the **Exclude** property appears in the **Properties** pane. When you are finished setting up the search area, click the **Draw on Image** button to exit the Draw Search Area mode. ## Specify a search area in the Properties pane These relations are equivalent to the ones configured using the anchor element toolbar described above. You can edit each relation separately. If you switch on the Draw Search Area mode, the search area and the half-plane defined by the selected relation will be displayed on the document image. The search area will be synchronized with the relation properties. ### Right of, Below, Left of, Above, Exclude In the **Where to search** section, click **Add** and select the relation type you wish to configure. In the dialog box that opens, select an anchor element. You can select any active element above the current element. You can add multiple relations of each of these types. You can modify the search area by changing the offset for the **Right of**, **Below**, **Left of**, and **Above** relations. A positive offset value means that the boundary will be moved in the same direction as specified in the relation. A negative offset value moves the boundary in the direction opposite to the direction specified in the relation. For example, a negative offset for the **Right of** relation will move the boundary to the left. You can also select the element boundary from which the search area will be calculated. By default, the boundary is selected in such a way as not to include the anchor element in the search area (above the top boundary, below the bottom boundary, etc.). You can also calculate the search area from the opposite boundary of the anchor element (above the bottom boundary, below the top boundary, etc.) or from its center. To adjust this setting, click the boundary icon displayed for the appropriate relation. #### Example Suppose that you need to find a specific sequence of characters that is above some predefined static text on some documents and level with that static text on others. Setting the **Above** value to 0 will not have the search area consider elements level with the static text, meaning that your element will not be in the search area on some images: Search area with Above value 0, excluding the area level with the static text Document image where the target element falls outside the search area defined by Above 0 However, setting the **Above** value to -50 or clicking the boundary icon and selecting the **Bottom Boundary of Region** will include both the area level with the static text and the area above it, which guarantees that your element will be inside the search area on all images: Search area expanded by setting Above to -50 to include both the area above and level with the static text Document image where the target element correctly falls inside the expanded search area on all images ### Nearest to When setting this relation in the **Properties** pane, you can select either a search element or one of the page edges as an anchor. This is the only relation that you can set for the first element in the tree. You can add only one relation of this type. You cannot add this relation for Group and Repeating Group elements, but you can add it for child elements of a group or a repeating group. ### Use a Repeating Group element as an anchor element When you select an anchor element for a relation, you will see that Repeating Group elements and their child elements are always grayed out. However, you can use these elements as anchor elements. To set up a relation with a Repeating Group element, click the edit dropdown icon to the right of the element name and select the instance that will serve as an anchor element. You can specify the last found instance, all completed instances or an instance with a certain number. ## Edit and delete relations You can change the anchor element for any existing relation by double-clicking the relation on the **Properties** pane. The offset and boundary settings will be preserved. Existing relations can be deleted both using the anchor element pane and the delete button next to the appropriate property in **Properties** pane. To delete a search area, click the delete relations icon on the search area. Alternatively, select **Whole Document**, **First Page**, or **Last Page** in the **Search on** property. # Type-specific properties of the Separator element Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/extraction-rules/separator Configure the Separator search element to find horizontal or vertical separators with controls for orientation, length, and hypothesis quality penalties. The **Separator** element finds a horizontal or vertical separator — a straight line such as a table border or an underline — detected on the document image during pre-recognition. The **Separator** element has the following properties in the **What to search for** section: ## Basic properties * **Orientation** specifies the orientation of the separator: Horizontal, Vertical. * **Length** specifies the maximum and minimum lengths of the separator, in the user-defined units of measurement. ## Advanced properties * **Min. relative length** sets the minimum relative length of a separator. This is a number ranging from 0 to 100. The relative length of a separator is calculated as \[length of the separator]/\[length of the search area along the separator]. Objects of smaller relative lengths will be ignored. * **Penalty limit for length**. The minimum coefficient by which the hypothesis quality may be multiplied as a penalty for its length. When estimating the quality of a hypothesis, the hypothesis may be penalized for the length of the separator: the longer the separator object, the higher the quality of the hypothesis. The highest quality of 1 is assigned to a separator whose length is the same as the search area. When the relative length of the separator decreases from 1 to 0, the quality of the hypothesis decreases in direct proportion from 1 to Penalty limit for length. * **Fits entirely within search area** specifies that the separator must fit entirely within its search area. Clear this option to find separators which overlap the search area. * **Max. space length** specifies the maximum distance between two separator objects that can be included in one hypothesis and considered to be one separator. * **Max. relative length of space** specifies the maximum relative distance between two separator objects that can be included in one hypothesis and considered to be one separator. The relative distance is calculated as follows: \[distance between separator fragments]/\[total length of the separator]. If the **Max. space length** and the **Max. relative length of space** have both been specified, the program will use the shorter of the two distances. * **Orthogonal shift of space** specifies the maximum relative distance between two parallel separator objects (along a perpendicular line) that can be included in one hypothesis and considered to be one separator. To display advanced properties, click the advanced mode icon on the **Properties** pane. # Set up an Extraction Rules activity Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/extraction-rules/set-up-extraction-rules Add an Extraction Rules activity to a flow, select fields, configure search elements, and run match-and-test cycles in Advanced Designer. On the **Activities** tab, add an Extraction Rules activity to the document processing flow. On the **Activity Properties** pane, select the fields that should be extracted by the activity. All fields are selected for a new Extraction Rules activity by default. Click **Activity Editor** to open the Activity Editor. 1. Turn on the display of pre-recognized objects on the document images. You can also create a separate document set for the activity and/or upload additional documents. 2. Create and configure search elements to locate auxiliary objects and field values. 3. Go through Extraction Rules activity debugging until you successfully extract all the data you need. This includes compiling and matching the activity, reviewing hypotheses formulated by the activity, and adjusting the search element properties. You can also import an Extraction Rules activity as a JSON file. Once the activity has been configured, click **Test Activity**. After testing has completed, analyze the field extraction results for your activity. If required, adjust the activity and test it again. # Type-specific properties of the Static Text element Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/extraction-rules/static-text Configure the Static Text search element to find predefined text — manual entry, user dictionary, multi-line variants, OR operators, and case matching. The **Static Text** element has the following properties in the **What to search for** section: ## Text to find **Text to find** determines the method used to specify search text. * **Entered manually** is selected by default and allows you to enter your search text in the box below. You can either type in your search text or paste it from the document image by clicking the recognized words or by drawing an area that contains the text that you want to find. You can specify multiple single- or multi-line text variants. The syntax is described below. * **From User Dictionary** allows you to use a TXT file as the source of search text variants. Select a TXT file in the **Dictionary** drop-down list. ## Additional properties * **Allow multiple lines** allows/disallows the detection of text that is written over several lines. * **Allowed errors** specifies the maximum percentage or number of characters that do not match text to find. * **Search for parts of words** allows/disallows the detection of other words containing the word being searched for. For example, if "contract" was specified in the **Text to find** box and the document contains the word "contracts," enabling this option will detect the word "contract" inside "contracts." Otherwise, the word "contract" will only be detected where it appears as a standalone word. ## Advanced properties * **Take spaces into account** allows spaces in the search string. If this option is not selected, spaces will be removed from the search string. Ignoring spaces makes the search faster. However, if the phrase you are searching for may be split over multiple lines or if some words in the phrase may be missing, you need to enable the Take spaces into account option and type in your search phrase preserving the spaces. * **Allow missing words** allows missing words in the phrase and allows setting a penalty for missing words. The penalty is a number from 0 to 1. The quality of the hypothesis will be multiplied by this number as many times as there are missing words in the phrase. If some words may be absent in the phrase, set this parameter to 1 (multiplying the quality of the hypothesis by 1 will not downgrade its quality). * **Max. space length** allows specifying the maximum length of the space inside the detected object. * **Match case** enables case-sensitive search, making the program distinguish between small and capital letters. * **Text orientation** allows specifying the orientation of the text you're looking for. By default, the activity only looks for text oriented horizontally and won't formulate a hypothesis for rotated text. If you need to find the text rotated in a specific way and ignore the text written in any other direction, you should select only the **Clockwise** or the **Counter-clockwise** option. To find text regardless of its orientation, you should enable all available options. To display advanced properties, click the advanced mode icon on the **Properties** pane. ## Search for text variants ### Single-line variants If the text being searched for differs from document to document, add several possible variants of the text to **Text to find**, putting each variant on a new line. For example, if forms of the same type can contain different headings like "Contract," "Rental Agreement" or "Agreement," you should specify the following in **Text to find**: Contract Rental Agreement Agreement When pasting text from the document image, each variant will be placed on a new line automatically. ### Multi-line variants If the search text can be split over several lines, enable the **Allow multiple lines** option. Be sure to enclose each variant in curly brackets `{ }`. For example, if documents of the same type can have different headings like "Contract," "Rental Agreement" or "Agreement" and the heading "Rental Agreement" can be split over two lines, specify the following variants in the **Text to find** box: `{Contract}` `{Rental Agreement}` `{Agreement}` You can also draw an area that contains several lines of text. In this case you will be prompted to enable the **Allow multiple lines** option. When you enable this option, Advanced Designer will automatically prompt you to put curly brackets around each variant. Curly brackets will not be considered as part of the search text. Advanced Designer will also add curly brackets to any text you paste from the image. If you then choose to clear this option, Advanced Designer will prompt you to delete the curly brackets. ### Phrase variants constructed from words You can also specify phrase variants in the **Text to find** box using "|" (the OR operator). For example: > `{RENTAL|LEASE AGREEMENT|CONTRACT}` `{CLIENT|PARTNER STATEMENT}` In this example, the program will look for the following phrases: rental agreement, rental contract, lease agreement, lease contract, client statement, and partner statement. Note that each phrase variant should be placed in curly brackets and all opened brackets must be closed. ### Use a text file Instead of adding search text variants into the **Text to find** box, you can list them in a TXT file. Each search text variant should be placed on a new line. You can use the OR operator as described above. If the text placed on one line in the dictionary may be split over several lines on the document, enable the **Allow multiple lines** option. Do not enclose the variants in curly brackets, as they would be considered as part of the search text. To upload the file you prepared, click the more icon on the toolbar and select **User Dictionaries**. In the dialog box that opens, click the add catalog icon, change the displayed file type to TXT, navigate to the file you want to upload, and click **Open**. To view and edit a user dictionary, select it and click the edit catalog icon. To use the uploaded TXT file as the source of text variants, select the **From User Dictionary** option and then select the uploaded file from the **Dictionary** drop-down list. # Upload and pre-recognize images Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/extraction-rules/upload-and-prerecognition Upload images for an Extraction Rules activity and configure how Advanced Designer pre-recognizes objects (words, lines, separators, barcodes) on each page. To begin creating an Extraction Rules activity, first select the documents that will be used to set up the activity. You can also use the skill document set (selected by default) or select a particular document set for a specific activity using the drop-down list to the left of the Toolbar. For more information about document sets, see [Documents](/vantage/documentation/advanced-designer/document-skills/documents). To add documents to a selected document set, click **Upload**. Document processing begins with a full-text recognition of the document images, the results of which are then used to carry out object searches. Documents are automatically pre-recognized using skill settings. As part of pre-recognition, the program uses the images to look for objects to be used to search for Extraction Rules activity elements. You will be required to carry out an analysis of these objects when creating your activity elements and setting up such characteristics as minimum and maximum number of words/characters, maximum recognition error percentage, etc. Once recognition is completed, regions for detected objects are displayed on the image. You can specify the types of objects to be displayed using the **Show Image Objects** button on the toolbar. The following objects can be highlighted: * **Recognized Words** * **Recognized Lines** * **Separators** * **Barcodes** * **Raw Objects** You can select and deselect objects of all types by choosing **Show All Objects** and **Hide All Objects** respectively. Advanced Designer automatically detects and corrects the orientation of a page. If required, you can change the page orientation manually by clicking the rotate icon in the toolbar and selecting one of the following options from the drop-down list: **Rotate Left**, **Rotate Right**, or **Rotate 180º**. # Type-specific properties of the White Gap element Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/extraction-rules/white-gap Configure the White Gap search element to find empty rectangular areas on document images — orientation, size, and histogram thresholds. The **White Gap** element has the following properties in the **What to search for** section: ## Basic properties * **Orientation** specifies the orientation of the gap: Horizontal, Vertical. * **Height** and **Width** specifies the minimum allowed gap height (for horizontal orientation) and width (for vertical orientation). ## Advanced properties * **Search among** sets the type of objects among which to look for the White Gap. Select the objects by checking the boxes next to them. You can select one or more values from a list: **Text**, **Punctuation mark**, **Picture**, **Inverted text**, **Checkmark**, **Separator**, **Barcode**. * **Lower threshold limit** sets the minimum level of the histogram. This property allows other objects in the search area. If the height of the histogram of the objects is greater than the number specified in this field, the program will consider the search area to contain no gaps. Measured in the user-defined units of measurement. The default value is 37dot. * **Upper threshold limit** sets the maximum level of the histogram. This property allows excluding false histogram maximums which may be caused by large numbers of vertically arranged accidental objects in the search area when looking for a vertical gap or horizontally arranged objects when looking for a horizontal gap. Measured in the user-defined units of measurement. The default value is 150dot. * **Threshold coefficient** sets the maximum relative level of the histogram. The relative level of the histogram is calculated as \[level of histogram]/\[histogram maximum in search area]. The default value is 20. To display advanced properties, click the advanced mode icon on the **Properties** pane. # Access to Table Hypothesis Properties from Code Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/flexilayout/access-table-hyp Learn how to access table hypothesis properties programmatically using TableHypothesis, OnePageTableHypothesis, and TableHypColumn objects. To call a hypothesis of a multi-page table element, you should use a **TableHypothesis** object. It has the following parameters: ## TableHypothesis Object | Parameter | Description | | :-------------------------------------------- | :------------------------------------------- | | Int SubTablesCount() | The number of single-page tables. | | OnePageTableHypothesis LastSubTable() | The last detected single-page table. | | OnePageTableHypothesis SubTable( Int number ) | The single-page table with the given number. | ## OnePageTableHypothesis Object The **OnePageTableHypothesis** object is used to call a hypothesis of the single-page table. It has the following parameters: | Parameter | Description | | :---------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------- | | Hypothesis Body() | The hypothesis of the table body. | | Hypothesis Footer() | The hypothesis of the table footer. | | Hypothesis Header() | The hypothesis of the table header. | | Int ColumnsCount() | The number of detected columns. | | Int ColumnIndex( String columnName ) | The index that the column with the name columnName has in the current table hypothesis. Indexing starts at 0. Returns -1 if the column wasn't found. | | Int RowsCount() | The number of detected rows. | | Logic HasColumn( String columnName ) | Specifies whether the hypothesis contains a column with the name columnName. | | Logic HasBody() | Specifies whether the table hypothesis contains a non-empty body. | | Logic HasFooter() | Specifies whether the table hypothesis contains a non-empty footer. | | Logic HasHeader() | Specifies whether the table hypothesis contains a non-empty header. | | Rect CellRect( Int columnIndex, Int rowIndex ) | The rectangle that corresponds to the table cell in the column with index columnIndex and in the row with index rowIndex. Indexing starts from 0. | | Rect CellRect( String columnName, Int rowInex ) | The rectangle that corresponds to the table cell in the column with name columnName and in the row with index rowIndex. Indexing starts from 0. | | Rect RowRect( Int rowIndex ) | The rectangle that corresponds to the table row with index rowIndex. Indexing starts from 0. | | TableHypColumn Column( Int columnIndex ) | The hypothesis of a table column for the column with the given index. Indexing starts from 0. | | TableHypColumn Column( String columnName ) | The hypothesis of a table column for the column with the given name. | ## TableHypColumn Object The **TableHypColumn** object is used to call a hypothesis of the table column. A variable of this type can only be created by using a Let expression. It has the following parameters: | Parameter | Description | | :-------------------------------- | :---------------------------------------------------------------- | | Distance Width() | The width of the column. | | Logic HasLeftSeparator() | Shows whether the column has a black separator on the left. | | Logic HasLeftSeparatorInHeader() | Shows whether the column has a black separator on the right. | | Logic HasRightSeparator() | Shows whether the column name has a black separator on the left. | | Logic HasRightSeparatorInHeader() | Shows whether the column name has a black separator on the right. | | String Name() | The column name. | | XCoordinate Left() | The left boundary of the column. | | XCoordinate Right() | The right boundary of the column. | # Coordinates and Units of Measurement Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/flexilayout/coordinates-units Understanding coordinate systems and units of measurement for describing positions and distances in FlexiLayout. Two dimensions, vertical and horizontal, are used to describe positions of objects on the page and distances between them. The (0,0) reference point is located in the top left-hand corner of the image. X-coordinates increase left to right, Y-coordinates increase top to bottom. In a multi-page sheet there are two coordinate systems: a global coordinate system and local one. The former covers the entire multi-page sheet and all the objects on it and uses the top left corner of the first page as the origin of coordinates. The latter covers only one page and its objects and uses the top left corner of each page as the origin of coordinates. ## Units of Measurement Units of measurement for coordinates and distances: | Unit of measurement | Description | | :------------------ | :---------------------------- | | dot (dt) | 1/300 of an inch. | | inch (in) | inch. | | pt | paper point, 1/72 of an inch. | | mm | millimeter. | | cm | centimeter. | ## Distance Constant Formats Constants for distances can be represented using one of two formats: | Format | Example | | :------------------------------------------------------------------------------------------------------------------------------------------------------------ | :--------------------------- | | A numerical value immediately followed by a unit of measurement | `5cm`, `200dot`, `4in` | | A numerical value followed by the multiplication operator followed by a unit of measurement. You can insert spaces between any members of the representation. | `5*mm`, `17 *dt`, `3 * inch` | # Importing FlexiLayouts from ABBYY FlexiLayout Studio Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/flexilayout/flexilayout-import Learn how to import FlexiLayouts from ABBYY FlexiLayout Studio into Advanced Designer for document extraction. Advanced Designer supports FlexiLayouts created in ABBYY FlexiLayout Studio. A new skill can be created based on an existing FlexiLayout. Alternatively, FlexiLayout files can be imported to the Extraction Rules activity editor. ## Creating a Skill Using a FlexiLayout File To create a skill based on a FlexiLayout: 1. On the Advanced Designer start page, select **Create Document Skill from ABBYY FlexiLayout Project**: AD_StartPage_ImportSkill 2. In the dialog box that opens, specify the path to your ABBYY FlexiLayout Project Files (FSP) file and change the name of the skill you are creating if required (by default, the new skill has the same name as the FlexiLayout file). Advanced Designer will then use your file to create a new skill. The document processing flow of this new skill will include an Extraction Rules activity containing the uploaded FlexiLayout. The selected recognition languages will be inherited from the FlexiLayout settings. If the import is completed successfully and no modifications are required, the new skill can be published and used in ABBYY Vantage. ## Importing a FlexiLayout Using the Extraction Rules Activity Editor If you have already created a skill that contains an Extraction Rules activity in a document processing flow, you can use the activity editor to import your FlexiLayout. When importing a FlexiLayout, you need to set up a document processing flow for processing documents before you can publish and use your skill. This method should be used if you need to use several Extraction Rules and/or other activities in a single skill. To import a FlexiLayout into an Extraction Rules activity: 1. Click the more icon and then click **Import...**. 2. In the dialog box that opens, select your FlexiLayout Project Files (FSP) file. Once uploaded, the FlexiLayout will be displayed in the Extraction Rules Activity Editor. ## Important Notes When Importing a FlexiLayout The following considerations apply to any import method: * The result of matching an Extraction Rules activity based on an imported FlexiLayout may differ from the result of matching the original FlexiLayout created in ABBYY FlexiLayout Studio. For greater accuracy, be sure to review the matching results on several documents and modify the search elements where required before publishing the skill. * If your FlexiLayout contains several alternatives, you will be asked to select one during uploading. If you need to use several FlexiLayout alternatives, create and set up a Classification activity to sort documents into types that correspond to the alternatives. To process the sorted documents, create several Extraction Rules activities with different alternatives. * The block tree will automatically be replaced by the field structure, which will also be the field structure for the skill as a whole (displayed in the Fields tab). * Element properties will be copied without being modified. They can be viewed and edited in the Element Properties panel in the Code Editor tab. Properties of elements set in ABBYY FlexiLayout Studio but not displayed in the Element Properties pane will be transferred to the **Search Conditions** and **Hypotheses Evaluation** sections in the Code Editor tab as code. * All properties already set as code will be transferred without being modified. * Table elements will be imported, but they aren't fully supported in Advanced Designer. For more details, see [Table Element](/vantage/documentation/advanced-designer/activities/flexilayout/table-element). * Unsupported elements and fields of the uploaded FlexiLayout will be converted. Conversion messages will be recorded in the log and displayed in the **Search Conditions** section in the Code Editor tab. ### List of Unsupported Elements and Blocks | FlexiLayout Studio | Advanced Designer | | :------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Named Entity (NER) Element | The element will be converted to a Region element. A separate activity can be created for named entity extraction. | | Table Block | The block will be converted to a Group field with multiple items allowed. Mapping to the corresponding table element will be preserved. | | First Found Element | The element will be converted to a Group element with **Only first found** enabled. | | Header and Footer Elements | The elements will be converted to Group elements. Advanced Designer doesn't support FlexiLayout-based document assembly. Hence, Headers and Footers will be converted to group elements that can be found, however, FlexiLayout-based assembly of pages isn't supported. | | Line of Elements Element | The element will be converted to a Group element. | When converting an unsupported element, the prefix "Former\_" is added to its name. Element names are modified not only in the **Search Elements** tree, but also in the Code Editor tab. No conversion messages are displayed and no prefixes are added for First Found, Line of Elements, Header, and Footer elements because their properties aren't modified when converting to a Group element. * User dictionaries connected to FlexiLayout elements are uploaded along with the FlexiLayout. Also, languages added with the FlexiLayout are displayed in the skill settings. Currently, Advanced Designer doesn't support dynamic dictionaries that can be updated, however, during import, the database connection string will be copied over to the Code Editor section so that dynamic dictionaries can still be uploaded as static ones. * String parameters that have default values in the ABBYY FlexiLayout Studio are converted to skill parameters of type Text with their values preserved. Other parameters aren't imported. * Images from the ABBYY FlexiLayout Studio project aren't imported along with the FlexiLayout. To set up and check your Extraction Rules activity, upload the appropriate images or use images uploaded to the skill document set. For more information, see [Upload and pre-recognition of images](/vantage/documentation/advanced-designer/activities/extraction-rules/upload-and-prerecognition). # Function-Call Operators Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/flexilayout/function-call-operators Understanding how to set function and method parameters using parentheses and colon operators. Function and method parameters are set in one of the following ways: * Using the `()` operator (parentheses) * Using the `:` operator (colon) Parameters are separated by `,` (comma). If the list of arguments of a function or method is empty, you can omit the `()` operator. The `:` operator is not used in this case. ## Examples | Operator | Example | | :------- | :-------------------------------------------- | | `()` | `Mode( Horizontal );` `MaxErrors( 2, 0.25 );` | | `:` | `Mode: Horizontal;` `MaxErrors: 2, 0.25;` | | | `DontFind();` `DontFind;` | # FlexiLayout Language Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/flexilayout/language Learn how to use the FlexiLayout language to set up additional conditions for matching Extraction Rules activities to documents with precision. To match an Extraction Rules activity to a document with more precision, you can set up various additional conditions: element properties, search conditions, and additional restrictions for the formulated hypothesis. These additional conditions are specified as program code. Commands are written using a special language developed specifically for FlexiLayouts. To set up additional conditions, select an appropriate element, open the Code Editor pane using the code editor button on the bottom pane and select an appropriate section: * [Search Condition](/vantage/documentation/advanced-designer/activities/flexilayout/search-conditions/search-condition-functions) to set up an element search parameter and restrict the search area. * [Hypotheses Evaluation](/vantage/documentation/advanced-designer/activities/flexilayout/hypothesis-eval-functions) to use specific element properties to penalize a formulated hypothesis. * [External Fields](/vantage/documentation/advanced-designer/activities/flexilayout/user-defined-properties) to set up custom properties, for example, typed variables belonging to a specific element. # Lexical Conventions Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/flexilayout/lexical-conventions Understanding identifiers, punctuation, operators, constants, and comments in the FlexiLayout language. ## Identifiers An **identifier** is a sequence of characters used to denote one of the following: * Block name * Element name * Constant name * Variable name * Keyword Identifiers are case-insensitive. **Identifier Syntax:** ``` identifier: nondigit identifier nondigit identifier digit nondigit : one of _ a b c d e f g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z digit : one of 0 1 2 3 4 5 6 7 8 9 ``` ## Punctuation Characters The following punctuation characters can be used: `. , ( ) * / + - = < > { } : ; ! & |` The punctuation characters `( )` and `{ }` must appear in pairs. ## Operator Precedence and Associativity The highest precedence level is at the top of the table. | Operator | Meaning | Associativity | | :---------------------------------------------- | :----------------------------- | :------------ | | `( )` | Function call | | | `:` | Function call | | | `.` | Member selection | Left to right | | `+` `–` | Unary positive, Unary negative | | | `*` `/` | Multiplication, Division | Left to right | | `+` `–` | Addition, Subtraction | Left to right | | `NOT` | Logical NOT (unary) | | | **Comparison operations (have equal priority)** | | | | `<` | Less than | Left to right | | `>` | Greater than | Left to right | | `<=` | Less than or equal to | Left to right | | `>=` | Greater than or equal to | Left to right | | `==` | Equality | Left to right | | `!=` | Inequality | Left to right | | | | | | `AND` | Logical AND | Left to right | | `OR` | Logical OR | Left to right | ## Assignment Operator The `=` operator assigns a value to a variable. For example: ``` Distance a; a = Page( 1 ).RectGlobal.Width; ``` The data type of the expression must be compatible with the data type of the variable. ## Constants The FlexiLayout language uses only global constants (available in all Code Editor sections). To view and edit the list of constants defined for the current activity, click the more icon to open the menu of the **Search Elements** tree and select **Constants**. ## Comments You can add comments to the code. The comments have the same format as in the C language and can be written in one of the following ways: * The `/*` (slash, asterisk) characters, followed by any sequence of characters (including new lines), followed by the `*/` characters. * The `//` (two slashes) characters, followed by any sequence of characters. A new line not immediately preceded by a backslash terminates this form of comment. # Name Scope Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/flexilayout/name-scope Understanding the scope and lifetime of names for elements, constants, and variables in the FlexiLayout language. Names of elements, constants and variables can be used only in certain sections of a program. This is called the "scope" of the name. The scope of a variable also determines its lifetime. The name of a variable declared in any Code Editor section is accessible only within that particular section, and only after the point of declaration. A name declared within a block is accessible only within that block and the blocks enclosed by it, and only after the point of declaration: ``` { Int a; a = 5; } ``` ## Accessing Element Hypotheses Element hypotheses can be accessed through the names of the elements. In both element description sections (**Search Conditions** and **Hypotheses Evaluation**) you can access the hypotheses for all elements located above the current element in the same hypothesis tree branch. Moreover, the formulated hypothesis for an element may be called in the **Hypotheses Evaluation** section for that element. Code from the **Search Conditions** section is executed separately for each hypothesis independently of the hypotheses which are located on other branches of the tree of hypotheses. This means that when the program executes the code of a particular section of an element description, it can access only one hypothesis for each superordinate element, namely the hypothesis which is located on the same branch. Element hypotheses and their properties are accessed in read-only mode. ## Element Naming Hypotheses for a superordinate element are called by the full name of the element, for example: `SearchObjects.Group1.Group2.FirstItem`. When accessing one subelement of a group from another subelement, you need not specify the name of the group. For example, in the Advanced sections of the element `SearchObjects.Group1.Group2.SecondItem`, you can call the element `SearchObjects.Group1.Group2.FirstItem` in one of the following ways: `SearchObjects.Group1.Group2.FirstItem`, `Group1.Group2.FirstItem`, `Group2.FirstItem`, `FirstItem`. The shortcut name will always refer to the most nested element. Suppose we have the following tree of elements: ``` SearchElements FirstItem Group1 FirstItem SecondItem ``` If you are in `SearchElements.Group1.SecondItem` and use the name `FirstItem`, you will call the `SearchElements.Group1.FirstItem` element, and not the `SearchElements.FirstItem` element. # Area Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/flexilayout/predefined-types/area Integer type measured in dot×dot used to represent the area of an image region in the FlexiLayout language, with arithmetic and comparison operators. Integer type (measured in dot\*dot) used to represent the area of an image region. ## Operators | Operator | Description | | :------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `-` | Changes the sign. Unary operator. | | `+` | Adds two values of type Area. Binary operator. | | `-` | Subtracts a values of type Area from another value of type Area. Binary operator. | | `*` | Multiplies a value of type Area by a number of type Int. Binary operator. Returns a value of type Area. | | `*` | Multiplies a value of type Area by a number of type Real. Binary operator. Returns a value of type Area. | | `/` | A binary division operator that divides a number by an integer of type Int. Returns a value of type Area. | | `/` | A binary division operator that divides a number of type Area by a number of type Area. Returns a value of type Real. | | `<`, `<=`, `>`, `>=`, `==`, `!=` | Compare two values of type Area: less than, less than or equal to, greater than, greater than or equal to, equal to, not equal to. Binary operators. Return a value of type Logic. | # BarcodeOrientations Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/flexilayout/predefined-types/barcode-orientations Set of possible barcode orientations in the FlexiLayout language used for Barcode element configuration, combined with the join operator. Type used to represent a set of possible barcode orientations with operator definitions. ## Operators | Operator | Description | | :------- | :-------------------------------------------- | | `+` | Joins two values of type BarcodeOrientations. | # BarcodeTypes Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/flexilayout/predefined-types/barcode-types Set of barcode symbology types in the FlexiLayout language used for Barcode element configuration, combined with the join operator. Type used to represent a set of barcode types with operator definitions. ## Operators | Operator | Description | | :------- | :------------------------------------- | | `+` | Joins two values of type BarcodeTypes. | # CurrencyPositionTypes Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/flexilayout/predefined-types/currency-position-types Position of the currency symbol relative to the amount in an Amount of Money element in the FlexiLayout language, combined with the join operator. Type used to set the position of the currency name relative to the numerical value in a Amount of Money element. ## Operators | Operator | Description | | :------- | :----------------------------------------------------------- | | `+` | Joins values of type CurrencyPositionTypes. Binary operator. | # DateFormats Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/flexilayout/predefined-types/date-formats Integer enum in the FlexiLayout language representing date formats, combined into sets with the join operator for Date hypothesis configuration. Integer type used to represent the format of date. ## Operators | Operator | Description | | :------- | :------------------------------------ | | `+` | Joins two values of type DateFormats. | # DayFormatVariants Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/flexilayout/predefined-types/day-format-variants Integer enum in the FlexiLayout language representing day-format variants used in date parsing, combined into sets with the join operator. Integer type used to represent the format of day in the date. ## Operators | Operator | Description | | :------- | :------------------------------------------ | | `+` | Joins two values of type DayFormatVariants. | # Direction Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/flexilayout/predefined-types/direction Vertical or horizontal direction value in the FlexiLayout language used to set the orientation of Separator and White Gap elements. Type used to represent the vertical or horizontal direction. Sets the direction of Separator and White Gap elements. # Distance Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/flexilayout/predefined-types/distance Integer type measured in dots in the FlexiLayout language for representing distances, with arithmetic, comparison operators, and an abs() method. Integer type (measured in dots) that represents distances. ## Methods | Method | Description | | :------------------------- | :---------------------------------------- | | `Distance abs( Distance )` | Returns the absolute value of a distance. | ## Operators | Operator | Description | | :------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `-` | Changes the sign. Unary operator. | | `+` | Adds values of type Distance. Binary operator. | | `-` | Subtracts values of type Distance. Binary operator. | | `*` | Multiplies a value of type Distance by a value of type Int. Binary operator. Returns a value of type Distance. | | `*` | Multiplies values of type Distance. Binary operator. Returns a value of type Area. | | `/` | Divides a value of type Distance by a value of type Int. Binary operator. Returns a value of type Distance. | | `<`, `<=`, `>`, `>=`, `==`, `!=` | Binary operators of comparison. Compare two values of type Distance: less than, less than or equal to, greater than, greater than or equal to, equal to, not equal to. Return a value of type Logic. | # DistInterval Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/flexilayout/predefined-types/distinterval Range of allowed Distance values in the FlexiLayout language, with Start and End methods and multiplication or division by Int values. Type used to represent the allowed range of distances. ## Operators | Operator | Description | | :------- | :---------------------------------------------------------------------------------------------------------------------- | | `*` | Multiplies a value of type DistInterval by a number of type Int. Binary operator. Returns a value of type DistInterval. | | `/` | Divides by a number of type Int. Binary operator. | ## Methods | Method | Description | | :----------------- | :------------------------------------------------ | | `Distance Start()` | Returns the minimum distance. Read-only property. | | `Distance End()` | Returns the maximum distance. Read-only property. | # FuzzyRect Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/flexilayout/predefined-types/fuzzy-rect Rectangle with fuzzy interval boundaries in the FlexiLayout language, with And and Or operators to intersect and unite plus methods for boundaries and rectangles. ## Operators | Operator | Description | | :------- | :----------------------------------------------------------------------------------------------------------- | | `And` | Intersects two fuzzy rectangles, i.e. intersects the ranges of the boundaries of specified fuzzy rectangles. | | `Or` | Unites two fuzzy rectangles, i.e. unites the ranges of the boundaries of specified fuzzy rectangles. | ## Methods | Method | Description | | :---------------------- | :----------------------------------------------------------------------- | | `Rect ExternalRect()` | Returns a copy of the external rectangle. | | `Rect InternalRect()` | Returns a copy of the internal rectangle. | | `XInterval Left()` | The left boundary of the fuzzy rectangle, horizontal range. | | `YInterval top()` | The top boundary of the fuzzy rectangle, vertical range. | | `XInterval Right()` | The right boundary of the fuzzy rectangle, horizontal range. | | `YInterval Bottom()` | The bottom boundary of the fuzzy rectangle, vertical range. | | `XInterval XCenter()` | The X-coordinate of the center of the fuzzy rectangle, horizontal range. | | `YInterval YCenter()` | The Y-coordinate of the center of the fuzzy rectangle, vertical range. | | `DistInterval Width()` | The width of the fuzzy rectangle, distance range. | | `DistInterval Height()` | The height of the fuzzy rectangle, distance range. | | `Logic IsEmpty()` | Checks if the fuzzy rectangle is empty. | # HorSearchAreaBound Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/flexilayout/predefined-types/hor-search-area Represents the left and right boundaries of a FlexiLayout element's search area, created with Let expressions and compared against XCoordinate values. Type used to represent the right and left boundaries of the element's search area. A variable of this type can only be created by using a Let expression. ## Operators | Operator | Description | | :------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------- | | `-` | Binary operator that subtracts a value of type `HorSearchAreaBound` from a value of type `XInterval` and vice versa. Returns a value of type `Xinterval`. | | `>`, `<` | Binary operators that compare a value of type `HorSearchAreaBound` to a value of type `XCoordinate`. Return a value of type `FuzzyRect`. | # Hypothesis Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/flexilayout/predefined-types/hypothesis Generic hypothesis type in the FlexiLayout language used to access common properties and methods shared across all element hypotheses. Type used to call a hypothesis of the element of any type. For details, see [Hypotheses for all types of element](/vantage/documentation/advanced-designer/activities/flexilayout/hypotheses/hypothesis-for-all). # HypothesisInstances Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/flexilayout/predefined-types/hypothesis-instances Instances of a Repeating Group element in the FlexiLayout language, with hypothesis methods plus GetYArray to retrieve Y coordinates of instance rectangles. Describes instances of a Repeating Group element. Has the same methods as hypotheses. For more information on the methods of hypotheses, see [Hypotheses for all types of element](/vantage/documentation/advanced-designer/activities/flexilayout/hypotheses/hypothesis-for-all). ## Methods | Method | Description | | :----------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `YCoordinateArray GetYArray( Real ratio )` | Returns the array of Y coordinates of instance rectangles. To calculate the Y coordinate, the following formula is used: Top + Height \* ratio. Null instances are ignored. | # ImageObjectSet Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/flexilayout/predefined-types/image-object-set Set of image objects belonging to a FlexiLayout hypothesis, with Rects() and Region() methods to retrieve rectangle arrays and continuous regions. Type used to represent the set of image objects belonging to the hypothesis. ## Methods | Method | Description | | :------------------ | :------------------------------------------------------------------------------------------------------------------------- | | `RectArray Rects()` | Returns a copy of the array of rectangles of image objects belonging to the hypothesis. | | `Region Region()` | Returns a copy of the continuous region created from the array of rectangles of image objects belonging to the hypothesis. | # ImageObjectType Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/flexilayout/predefined-types/image-object-type Represents classified image object types in the FlexiLayout language, with a join operator to combine multiple types into a single value. A value of type **ImageObjectType** represents one or more classes of image object detected during pre-recognition. Combine elementary values with the `+` operator — for example, `BarcodeObject + PictureObject` matches both barcodes and pictures. These elementary values are part of the FlexiLayout [predefined constants](/vantage/documentation/advanced-designer/activities/flexilayout/predefined-constants). ## Values | Value | Object type | | :-------------------- | :------------------- | | `AnyText` | Text | | `PunctuationMark` | Punctuation marks | | `PictureObject` | Picture | | `InvertedTextObject` | Inverted text | | `CheckmarkObject` | Checkmark | | `SeparatorObject` | Separator | | `VertSeparatorObject` | Vertical separator | | `HorSeparatorObject` | Horizontal separator | | `BarcodeObject` | Barcode | ## Operators | Operator | Description | | :------- | :---------------------------------------- | | `+` | Joins two values of type ImageObjectType. | # Int Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/flexilayout/predefined-types/int 32-bit integer type in the FlexiLayout language for whole-number values, with arithmetic and comparison operators and an abs() method. Integer type. Corresponds to a 32-digit integer. ## Methods | Method | Description | | :--------------- | :---------------------------------------- | | `Int abs( Int )` | Returns the absolute value of an integer. | ## Operators | Operator | Description | | :------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `-` | Changes the sign. Unary operator. | | `+` | Adds integers. Binary operator. | | `-` | Subtracts one integer from another. Binary operator. | | `*` | Multiplies integers. Binary operator. | | `/` | Divides integers. Binary operator. | | `<`, `<=`, `>`, `>=`, `==`, `!=` | Operators of comparison: less than, less than or equal to, greater than, greater than or equal to, equal to, not equal to. Binary operators. Return a value of type Logic. | # Logic Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/flexilayout/predefined-types/logic Boolean type in the FlexiLayout language that holds true or false, returned by all conditional expressions and combined with And, Or, and Not operators. Boolean type. A variable of this type can have values `true` and `false`. All conditional expressions return a value of type Logic. ## Operators | Operator | Description | | :------- | :---------------------------- | | `Not` | Logical NOT, unary operator. | | `And` | Logical AND, binary operator. | | `Or` | Logical OR, binary operator. | # MonthFormatVariants Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/flexilayout/predefined-types/month-format-variants Integer enum in the FlexiLayout language representing month-format variants used in date parsing, combined into sets with the join operator. Integer type used to represent the format of month in the date. ## Operators | Operator | Description | | :------- | :-------------------------------------------- | | `+` | Joins two values of type MonthFormatVariants. | # PageInterval Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/flexilayout/predefined-types/page-interval Page range in a multi-page document in the FlexiLayout language, with Start, End, and IsEmpty methods to query the interval boundaries. Types used to represent the page interval of a multi-page document. ## Methods | Method | Description | | :---------------- | :---------------------------------------------------------- | | `Logic IsEmpty()` | Checks if the range of a rectangle is empty. Read-only. | | `Int Start()` | Returns the number of the first page in a range. Read-only. | | `Int End()` | Returns the number of the last page in a range. Read-only. | # Quality Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/flexilayout/predefined-types/quality Real number between 0 and 1 returned by methods that score the quality of an element hypothesis in the FlexiLayout language. Real number from 0 to 1. Represents the returned value of the methods controlling the quality of an element hypothesis. # Real Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/flexilayout/predefined-types/real Real-number type in the FlexiLayout language for floating-point arithmetic and comparison operations against other Real values. Real number. ## Operators | Operator | Description | | :------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `-` | Changes the sign. Unary operator. | | `+` | Adds two real numbers. Binary operator. | | `-` | Subtracts a real number from another real number. Binary operator. | | `*` | Multiplies two real numbers. Binary operator. | | `/` | Divides by a real number. Binary operator. | | `<`, `<=`, `>`, `>=`, `==`, `!=` | Compare two real numbers: less than, less than or equal to, greater than, greater than or equal to, equal to, not equal to. Binary operators. Return a value of type Logic. | # RecognitionMode Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/flexilayout/predefined-types/recognition-mode Integer enum in the FlexiLayout language representing pre-recognition modes that control how an OCR pass is configured for an element. Integer type used to represent pre-recognition modes. # Rect Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/flexilayout/predefined-types/rect Rectangular region on an image in the FlexiLayout language, with boundary, center, area, inflate, and intersection methods plus And and Or operators. Rectangle on an image. ## Constructors | Constructor | Description | | :-------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `Rect Rect( XCoordinate left, YCoordinate top, XCoordinate right, YCoordinate bottom )` | Constructs a value of type Rect from coordinates on the image. The boundaries of the rectangle are passed as parameters: left – left boundary, top – top boundary, right – right boundary, bottom – bottom boundary. | ## Operators | Operator | Description | | :------- | :---------------------------------------------------------------------------------------------------- | | `Or` | Unites two rectangles. The result is the smallest rectangle which contains both rectangles. | | `And` | Intersects two rectangles. The result is the largest rectangle which is contained in both rectangles. | ## Methods | Method | Description | | :--------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `XCoordinate Left()` | Returns the left boundary of the rectangle. Read-only property. | | `YCoordinate top()` | Returns the top boundary of the rectangle. Read-only property. | | `XCoordinate Right()` | Returns the right boundary of the rectangle. Read-only property. | | `YCoordinate Bottom()` | Returns the bottom boundary of the rectangle. Read-only property. | | `Distance Width()` | Returns the width of the rectangle. Read-only property. | | `Distance Height()` | Returns the height of the rectangle. Read-only property. | | `Area Area()` | Returns the area of the rectangle. Read-only property. | | `Void Left( XCoordinate x )` | Sets the left boundary of the rectangle. | | `Void top( YCoordinate y )` | Sets the top boundary of the rectangle. | | `Void Right( XCoordinate x )` | Sets the right boundary of the rectangle. | | `Void Bottom( YCoordinate y )` | Sets the bottom boundary of the rectangle. | | `XCoordinate XCenter()` | The X-coordinate of the center of the rectangle. | | `YCoordinate YCenter()` | The Y-coordinate of the center of the rectangle. | | `Void Inflate( Distance xDist, Distance yDist )` | Expands the rectangle by xDist to the left and to the right, and by yDist upwards and downwards. | | `XCoordinate GetX( Real ratio )` | Calculates the X-coordinate located within the rectangle between the Left and Right coordinates as Left + Width \* ratio. | | `YCoordinate GetY( Real ratio )` | Calculates the Y-coordinate located within the rectangle between the top and Bottom coordinates as Top + Height \* ratio. | | `Rect GetInflated( Distance xDist, Distance yDist )` | Returns an "expanded" rectangle. Each apex is shifted by xDist and yDist in the direction that expands the figure (the top left apex is moved upwards and to the left, etc.). -The rectangle itself remains unchanged. | | `Logic IsEmpty()` | Checks if the rectangle corresponds to a non-empty region on the image, i.e. a region whose Left \< Right and top \< Bottom. | # RectArray Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/flexilayout/predefined-types/rect-array Array of Rect values in the FlexiLayout language with methods to add, access, and convert the array to a Region or a circumscribing Rect. Array of rectangles. ## Constructors | Constructor | Description | | :------------------------------------- | :---------------------------------------------------------------------------------------------------- | | `RectArray RectArray ()` | Creates an empty array of rectangles. | | `RectArray RectArray( Rect rect )` | Constructor with parameter Rect. Creates an array consisting of one rectangle equal to the rect rect. | | `RectArray RectArray( Region region )` | Constructor with parameter Region. Creates an array consisting of rectangles of the region region. | ## Methods | Method | Description | | :---------------------------- | :----------------------------------------------------------- | | `Int Count()` | Returns the number of array elements. | | `Region Region()` | Continuous region from an array of rectangles. | | `Rect Rect()` | Rectangle circumscribing an array of rectangles. | | `Rect GetAt( Int )` | Returns the item at the specified index. | | `Rect Rect( Int )` | Same as the Rect GetAt( Int ) method, obsolete syntax. | | `Void Add( Rect rect )` | Adds a rect rectangle to an array of rectangles. | | `Void Add( RectArray array )` | Adds an array array of rectangles to an array of rectangles. | # Region Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/flexilayout/predefined-types/region Set of non-overlapping stacked rectangles in the FlexiLayout language, with And and Or operators and methods for boundaries, area, and inflate. A region is a set of rectangles positioned one under another in such a way that the top line of the lower rectangle is the bottom line of the upper one (so that the rectangles do not overlap). ## Constructors | Constructor | Description | | :------------------------------------- | :--------------------------------------------------------------------------------------------------------------- | | `Region Region()` | Creates an empty region. | | `Region Region( RectArray rectArray )` | Constructor from a value of type RectArray. Creates a region containing the rectangles from the rectArray array. | ## Operators | Operator | Description | | :------- | :----------------------------------------------------------------------------------- | | `Or` | Unites two regions. | | `And` | Intersects two regions; or a region and a rectangle. Returns a value of type Region. | ## Methods | Method | Description | | :----------------------------------------------- | :-------------------------------------------------------------------------------------------- | | `XCoordinate Left()` | Returns the left boundary of the region. Read-only property. | | `YCoordinate top()` | Returns the top boundary of the region. Read-only property. | | `XCoordinate Right()` | Returns the right boundary of the region. Read-only property. | | `YCoordinate Bottom()` | Returns the bottom boundary of the region. Read-only property. | | `Distance Width()` | Returns the width of the region. Read-only property. | | `Distance Height()` | Returns the height of the region. Read-only property. | | `Area Area()` | Returns the area of the region. Read-only property. | | `Void Inflate( Distance xDist, Distance yDist )` | Expands the region by xDist to the right and to the left, and by yDist upwards and downwards. | | `Rect Rect()` | Returns a copy of the rectangle circumscribing the region. | # String Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/flexilayout/predefined-types/string Variable-length Unicode string type in the FlexiLayout language, with Length, Find, Compare, Mid, and SubstParam methods plus concatenation operators. ## Methods | Method | Description | | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `Int Length()` | Returns the number of characters in the string (read-only). | | `Int Find( String subStr, Int startPos = 0 )` | Returns the beginning of the substring subStr of the string. Starts the search from the startPos position. Can be used without the startPos argument, in which case it assumes the default value of 0. Returns -1 if the string does not include a startPos substring. | | `Int Compare( String str )` | Compares the string with the method's argument (case-sensitive). Returns: `<0`, if `this` is less than `str`; 0, if `this` is equal to `str`; `>0`, if `this` is greater than `str` | | `Int CompareNoCase( String str )` | Compares the string with the method's argument (not a case-sensitive). Returns: `<0`, if `this` is less than `str`; 0, if `this` is equal to `str`; `>0`, if `this` is greater than `str` | | `String Mid( Int start, Int count )` | Returns a substring of the string that is 'count' characters long and starts with the character number start. | | `String Mid( String subStr, Int startPos = 0 )` | Returns the beginning of the substring subStr of the string. Can be used without the startPos argument, in which case it assumes the default value of 0. Returns -1 if the string does not include a startPos substring. | | `String SubstParam( String param0 ); String SubstParam( String param0, String param1 ); String SubstParam( String param0, String param1, String param2 ); String SubstParam( String param0, String param1, String param2, String param3 ); String SubstParam( String param0, String param1, String param2, String param3, String param4 )` | Returns the text of the string, replacing all occurrences of the `%n` characters (where n is a non-negative integer) with the corresponding parameters. The number of occurrences of the `%n` characters in the string must be the same as the number of passed parameters. The text of the original string will not be modified. | | `String SubstParam( StringArray params )` | Same as above, but the parameters are passed as an array of strings. | ## Operators | Operator | Description | | :------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `==` | Binary operator that checks if the two strings are equal. Returns a result of type Logic that is set to `true` if the strings are equal, and returns `false`, otherwise (case-sensitive). | | `!=` | Binary operator that checks if the two strings are equal. Returns a result of type Logic that is set to `true` if the strings are not equal, and returns `false`, otherwise (case-sensitive). | | `+` | Concatenates two strings. Returns a value of type String. | # TextRotations Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/flexilayout/predefined-types/text-rotations Allowed text orientations (HorizontalText, ClockwiseText, CounterClockwiseText) in the FlexiLayout language, combined into a set with the join operator. A type for representing a set of allowed orientations of the recognized text. Possible values: * `HorizontalText` * `ClockwiseText` * `CounterClockwiseText` ## Operators | Operator | Description | | :------- | :------------------------------------ | | `+` | Joins values of type `TextRotations`. | # TextTypes Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/flexilayout/predefined-types/text-types Recognized text styles (TextType_Normal, TextType_TypeWriter, TextType_Matrix) in the FlexiLayout language, combined into a set with the join operator. ## Operators | Operator | Description | | :------- | :---------------------------------- | | `+` | Joins two values of type TextTypes. | # VertSearchAreaBound Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/flexilayout/predefined-types/vert-search-area Represents the top and bottom boundaries of a FlexiLayout element's search area, created with Let expressions and compared against YCoordinate values. Type used to represent the top and bottom boundaries of the element's search area. A variable of this type can only be created by using a Let expression. ## Operators | Operator | Description | | :------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------- | | `-` | Binary operator that subtracts a value of type `HorSearchAreaBound` from a value of type `YInterval` and vice versa. Returns a value of type `Yinterval`. | | `>`, `<` | Binary operators that compare a value of type `VertSearchAreaBound` to a value of type `YCoordinate`. Return a value of type `FuzzyRect`. | # Void Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/flexilayout/predefined-types/void Return type in the FlexiLayout language used to declare functions that do not return a value, equivalent to void in C-style languages. Type Void is used to declare functions that return no value. # XCoordinate Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/flexilayout/predefined-types/xcoordinate Integer type in the FlexiLayout language for X-coordinates on an image, with arithmetic against Distance values and comparison operators. Integer type used to represent X-coordinates. ## Operators | Operator | Description | | :------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `+` | Adds a value of type XCoordinate to a value of type Distance. Binary operator. Returns a value of type XCoordinate. | | `-` | Subtracts a value of type Distance from a value of type XCoordinate. Binary operator. Returns a value of type XCoordinate. | | `-` | Subtracts a value of type XCoordinate from a value of type XCoordinate. Binary operator. Returns a value of type Distance. | | `<`, `<=`, `>`, `>=`, `==`, `!=` | Compares two values of type XCoordinate: less than, less than or equal to, greater than, greater than or equal to, equal to, not equal to. Binary operators. Return a value of type Logic. | # XInterval Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/flexilayout/predefined-types/xinterval Range of X-coordinates on an image in the FlexiLayout language, with Start and End methods and arithmetic against Distance and DistInterval values. Type used to represent a range of X-coordinates on an image. ## Operators | Operator | Description | | :------- | :--------------------------------------------------------------------------------------------------------------------------- | | `+` | Adds a value of type XInterval to a value of type Distance. Binary operator. Returns a value of type Xinterval. | | `+` | Adds a value of type XInterval to a value of type DistInterval. Binary operator. Returns a value of type Xinterval. | | `-` | Subtracts a value of type Distance from a value of type XInterval. Binary operator. Returns a value of type Xinterval. | | `-` | Subtracts a value of type DistInterval from a value of type XInterval. Binary operator. Returns a value of type Xinterval. | | `-` | Subtracts a value of type XInterval from a value of type XInterval. Binary operator. Returns a value of type XInterval. | | `-` | Subtracts a value of type XCoordinate from a value of type XInterval. Binary operator. Returns a value of type DistInterval. | | `-` | Subtracts a value of type XInterval from a value of type XCoordinate. Binary operator. Returns a value of type DistInterval. | ## Methods | Method | Description | | :-------------------- | :----------------------------------------------------------------------------- | | `XCoordinate Start()` | Returns the X-coordinate of the beginning of the interval. Read-only property. | | `XCoordinate End()` | Returns the X-coordinate of the end of the interval. Read-only property. | # YCoordinateArray Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/flexilayout/predefined-types/y-coordinate-array Array of YCoordinate values for rectangle positions in the FlexiLayout language, with methods to add, delete, shift, and access elements. The array of Y coordinates of the rectangles. ## Constructors | Constructor | Description | | :------------------------------------ | :---------------------------------------------------------------------------- | | `YCoordinateArray YCoordinateArray()` | Constructor. Creates an empty array of rectangles specified by Y coordinates. | ## Methods | Method | Description | | :---------------------------------------- | :------------------------------------------------------------------------------ | | `Void Add( YCoordinate )` | Adds a rectangle to the end of the array. | | `Void Add( YCoordinateArray )` | Adds another array to the end of the array. | | `Void InsertAt( Int index, YCoordinate )` | Adds a rectangle to position index. | | `Void DeleteAll()` | Deletes all elements of the array. | | `Void DeleteAt( Int index )` | Deletes the element in position index. | | `YCoordinate GetAt( Int index )` | Returns the element with the specified index. | | `Int Count()` | Returns the number of elements in the array. | | `Void ShiftDown( Int index, Distance )` | Shift downward (increase) the coordinate of the specified element in the array. | | `Void ShiftUp( Int index, Distance )` | Shift upward (decrease) the coordinate of the specified element in the array. | | `Void ShiftDown( Distance )` | Shift downward (increase) all elements in the array. | | `Void ShiftUp( Distance )` | Shift upward (decrease) all elements in the array. | # YCoordinate Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/flexilayout/predefined-types/ycoordinate Integer type in the FlexiLayout language for Y-coordinates on an image, with arithmetic against Distance values and comparison operators. Integer type used to represent Y-coordinates. ## Operators | Operator | Description | | :------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `+` | Adds a value of type YCoordinate to a value of type Distance. Binary operator. Returns a value of type YCoordinate. | | `-` | Subtracts a value of type Distance from a value of type YCoordinate. Binary operator. Returns a value of type YCoordinate. | | `-` | Subtracts a value of type YCoordinate from a value of type YCoordinate. Binary operator. Returns a value of type Distance. | | `<`, `<=`, `>`, `>=`, `==`, `!=` | Operators that compare two values of type YCoordinate: less than, less than or equal to, greater than, greater than or equal to, equal to, not equal to. Binary operator. Returns a value of type Logic. | # YearFormatVariants Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/flexilayout/predefined-types/year-format-variants Integer enum in the FlexiLayout language representing year-format variants used in date parsing, combined into sets with the join operator. Integer type used to represent the format of year in the date. ## Operators | Operator | Description | | :------- | :------------------------------------------- | | `+` | Joins two values of type YearFormatVariants. | # YInterval Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/flexilayout/predefined-types/yinterval Range of Y-coordinates on an image in the FlexiLayout language, with Start and End methods and arithmetic against Distance and DistInterval values. Type used to represent a range of Y-coordinates on an image. ## Operators | Operator | Description | | :------- | :------------------------------------------------------------------------------------------------------------------------- | | `+` | Adds a value of type YInterval to a value of type Distance. Binary operator. Returns a value of type Yinterval. | | `+` | Adds a value of type YInterval to a value of type DistInterval. Binary operator. Returns a value of type Yinterval. | | `-` | Subtracts a value of type Distance from a value of type YInterval. Binary operator. Returns a value of type Yinterval. | | `-` | Subtracts a value of type DistInterval from a value of type YInterval. Binary operator. Returns a value of type Yinterval. | | `-` | Subtracts a value of type YInterval from a value of type YInterval. Binary operator. Returns a value of type DistInterval. | ## Methods | Method | Description | | :-------------------- | :----------------------------------------------------------------------------- | | `YCoordinate Start()` | Returns the Y-coordinate of the beginning of the interval. Read-only property. | | `YCoordinate End()` | Returns the Y-coordinate of the end of the interval. Read-only property. | # Reserved Keywords Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/flexilayout/reserved-keywords Complete list of reserved keywords that cannot be used to name elements, constants, or variables in the FlexiLayout language. The following reserved keywords cannot be used to name elements, constants, or variables. ## Reserved Keyword List **Column 1:** * `AllInstances` * `and` * `AndElement` * `array` * `AttributeDefinitions` * `begin` * `bool` * `boolean` * `break` * `case` * `char` * `chose_if` * `class` * `const` * `continue` * `CurrentInstance` * `default` * `delete` * `div` * `do` * `double` * `Elements` * `else` * `end` * `EndOfAndElement` * `EndOfElement` * `EndOfOrElement` * `enum` * `error` * `explicit` * `extern` * `ExternalType` **Column 2:** * `false` * `finally` * `FinalRelations` * `FlexibleTemplateHeader` * `float` * `for` * `Function` * `goto` * `if` * `Import` * `IndependentRelations` * `InitScript` * `inline` * `Instance` * `int` * `is` * `LastFound` * `let` * `like` * `long` * `mod` * `namespace` * `new` * `not` * `nothing` * `null` * `of` * `on` * `operator` * `or` * `OrElement` * `ParamDefinitions` **Column 3:** * `Params` * `private` * `PrivateRelations` * `protected` * `public` * `RecognitionParams` * `RegionalDecimalPoint` * `register` * `Relations` * `return` * `set` * `short` * `sizeof` * `static` * `string` * `struct` * `switch` * `template` * `then` * `this` * `to` * `true` * `typedef` * `typeid` * `typename` * `unsigned` * `using` * `Variants` * `void` * `while` * `with` * `xor` # Statements Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/flexilayout/statements Understanding statement syntax including separators, compound statements, conditional statements, and iteration loops. ## Separating Statements Statements are separated by `;` (semicolon). ## Compound Statements One or more statements can be enclosed in curly braces to form a compound statement. Compound statements are commonly called "blocks" (not to be confused with FlexiLayout blocks). ## Conditional Statements In any section intended for entering code, you can use conditional if statements. The if statement controls conditional branching. The body of an if statement is executed if the value of the expression is `true`. The syntax for the if statement has two forms. **Syntax** selection-statement: ``` if ( expression ) then statement if ( expression ) then statement else statement ``` In both forms of the if statement, the expressions are evaluated. In the first form of the syntax, if expression is `true`, statement is executed. If expression is `false`, statement is ignored. In the second form of syntax, which uses `else`, the second statement is executed if expression is `false`. ## Iteration Statements In any section intended for entering code, you can use iteration for statements. The for statement controls loops. The loop is executed while the value of the expression is `true`. **Syntax** iteration statement: ``` for from to [ step ] ``` The name of the `` counter is compulsory. This name must be different from the names of variables declared above. The scope of the counter is the body of the loop. Changing the value of the counter or declaring variables with the same name as the counter is not allowed within the loop. The initial from-expr and final to-expr counter values are estimated before performing the first iteration of the loop. Then they are treated as integer constants in order to avoid endless loops. The step parameter is optional. If the step value is not specified, the step is considered 1. The step value as well as its initial and final values is estimated once in the beginning of the loop. Depending on the sign of the step the condition for the iteration is chosen. For positive step values, the following condition must be performed: ``, for negative step values, the condition is as follows: ``. The step value cannot be zero, otherwise an error message will occur. The `` can be a single statement or a block (compound statement) enclosed in curly braces. You can also use the following statements inside the loop: * `break` - breaks the loop * `continue` - goes to the next iteration of the loop # Table Element Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/flexilayout/table-element Understanding Table element support and limitations when importing FlexiLayouts from ABBYY FlexiLayout Studio to Advanced Designer. The **Table** element is not fully supported in Advanced Designer. It's only introduced to minimize the editing efforts when importing FlexiLayouts with Table elements. You can make slight adjustments to the table properties via code. However, if you need to make big changes, e.g. alter the column set or the table extraction logic, we recommend that you replace the Table element with a Repeating Group element. When setting up table extraction from scratch, use a Repeating Group element. ## Limitations * There is no **What to search for** section in the **Properties** pane of the Table element. The properties from this section can be configured via code. * You can see the list of existing columns only when mapping the element to a field via the **Get region from** drop-down list. * Adding new columns isn't supported. * Mapping of columns to fields via code isn't supported. * When the FlexiLayout is imported to Advanced Designer, the table block is converted to a Group field with multiple items with mapping being preserved. You can map the table element to another Group field with multiple items allowed or a Table field. The columns of the Table element can only be mapped to child elements of the selected Group or Table field. The set of child elements of the selected field should match the set of columns of the Table element. The difference between the Table field and the Group field is the following: table columns always have the text data type, whereas child fields of a group can be of any type. ## Hypothesis Properties When [formulating a hypothesis](/vantage/documentation/advanced-designer/activities/formulating/formulating-a-hypothesis), the activity looks for tables and divides them into columns and rows by relying on the Separators and White Gaps on the image. Additionally, table headers and footers are used to facilitate table detection. Headers and footers serve as the top and bottom boundaries for table bodies, with no information being extracted from them. The header contains the names of the columns which may be used to divide the table into columns. Once a table has been detected, the activity formulates hypotheses for the entire table element, its columns, rows, and cells. A list of hypotheses properties can be viewed by following these links: * [Standard properties](/vantage/documentation/advanced-designer/activities/formulating/formulate-and-eval) * [Type-specific properties](/vantage/documentation/advanced-designer/activities/flexilayout/table-hyp) [Here](/vantage/documentation/advanced-designer/activities/flexilayout/access-table-hyp) you will find a list of code-accessible table hypothesis parameters. # Specifying Table Element Properties Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/flexilayout/table-element-props Configure Table element properties via code in the Search Conditions section of the Code Editor. To adjust table properties, use the **Search Conditions** section of the Code Editor. Available properties are described below: ## Column Search Parameters | Parameter | Description | | :---------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | Void AddHeaderKeyWord( String keyWord, String columnName, Real omissionQuality = worstQuality, Logic wholeWordMode = false, Logic multiLine = false ) | Specifies the keyword for the column name. | | Void AddHeaderKeyHypothesis( Hypothesis hypothesis, String columnName ) | Specifies the column name by means of the detected hypothesis. | | Void AddHeaderKeyHypothesis( XInterval left, YInterval top, XInterval right, YInterval bottom, String columnName ) | Specifies the coordinates of the column name. | | Void AddColumnType( TableColumnType type, String columnName, String regExp = emptyString ) | Specifies the column type. The third parameter must only be specified if the column type is a regular expression. Possible values of TableColumnType:
ColumnType\_Text—**Text** data type
ColumnType\_Currency—**Amount of money** data type
ColumnType\_Date—**Date** data type
ColumnType\_RegExp—regular expression
ColumnType\_Number—**Number** data type | | Void ColumnOmissionQuality( Real quality, String columnName ) | If fixed column orders are used, this parameter sets the penalty for the hypotheses, defined as the coefficient (a number from 0 to 1) by which the quality of the hypothesis will be multiplied if the column specified in the fixed column order isn't detected. The default value is 0.9. | | Void MissingContentPenalty( Real quality, String columnName ) | Sets the penalty for the hypotheses, defined as the coefficient (a number from 0 to 1) by which the quality of the hypothesis will be multiplied if the actual data type in the column doesn't coincide with the data type specified by the user. If the parameter isn't set, its default value is 0.98. If column order rules are used, it specifies the penalty for the absence of the column in the table. | | Void ColumnBounds( XCoordinate left, XCoordinate right, String columnName ) | Sets the right and left boundaries of the search area for the column. | | Void ExactColumnBorders( XCoordinate left, XCoordinate right, String columnName ) | Sets the exact column boundaries. This parameter can be used to search for a table when the location of some (or all) of the columns is known in advance. | | Void AddColumnContent( Hypothesis hypothesis, String columnName ) | Specifies the column content by means of the detected hypothesis. | | Void AddColumnContent( XInterval, XInterval, String ) | Specifies the column content by setting the right and left boundaries of a column. | ## Parameters Setting the Column Order | Parameter | Description | | :------------------------------------------------------------------------ | :----------------------------------------- | | Void AddPossibleColumnsOrder( String orderName, StringArray columnNames ) | Specifies a variant of fixed column order. | | Void ColumnsRelation( StringArray columnNames ) | Specifies a rule for the column order. | ## Header Search Parameters | Parameter | Description | | :-------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | Void HasHeader( Logic ) | Specifies whether the activity should look for a header. | | Void HeaderOptional( Real q1, Real q2 ) | Specifies whether the header is optional, similarly to the Void Optional ( Real q1, Real q2 ) function for elements. | | Void HeaderSearchArea( Rect ) | Specifies the search rectangle for the header. If this function is used, the search area of the header will be calculated as the intersection of this rectangle and the one enclosing the search area of the whole table. | | Void MaxHeaderHypothesesCount( Int ) | Sets the maximum number of hypotheses to be generated during header search. | | Void MinHeaderKeyElements( Int ) | Sets the minimum number of key elements required to detect the header. The default value is 2. | | Void ExtendHeaderLocalization( XInterval, YInterval, XInterval, YInterval ) | Extends the area regarded as the header. For example, it can be used to discard the line of unwanted information located between the header and the body of the table. | ## Footer Search Parameters | Parameter | Description | | :------------------------------------------------------------------------ | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Void HasFooter( Logic has = true ) | Specifies whether the activity should look for the footer. | | Void FooterOptional( Real q1, Real q2 ) | Specifies whether the footer is optional, similarly to the Void Optional ( Real q1, Real q2 ) function for elements. | | Void FooterSearchArea( Rect ) | Specifies the search rectangle for the footer. If this function is used, the footer search area will be calculated as the intersection of this rectangle and the one enclosing the search area of the whole table. | | Void FooterHasTopSeparator() | Specifies that there is a separator between the footer and the body of the table. The separator can be a part of a table boundary. | | Void FooterWholeWordMode ( Logic wholeWordMode = true ) | This flag is used when looking for a footer based on keywords. If this flag is set to **True**, hypotheses made up of only word parts are discarded. The default setting is **False**. | | Void FooterNearestToTop ( Logic ) | This flag is used when looking for a footer based on keywords. If this flag is set to **True**, the activity selects the topmost candidate and discards the rest. If this flag is set to **False**, the activity considers all the possible candidates. The quality of the footer contributes to the quality of the table and then the table hypothesis with the highest quality is selected. The default setting is **True**. | | Void AddFooterKeyWord( String keyWord ) | Specifies a keyword for the footer of the table. | | Void AddFooterKeyHypothesis( Hypothesis hypothesis ) | Specifies the footer of the table by means of the detected hypothesis. | | Void AddFooterKeyHypothesis( XInterval, YInterval, XInterval, YInterval ) | Specifies the coordinates of the footer of the table. | ## Body Search Parameters | Parameter | Description | | :------------------------------------ | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Void DontFindBody() | Allows skipping the body search. Used for debugging. | | Void BodyOptional( Real q1, Real q2 ) | Specifies whether the body is optional, similarly to the Void Optional ( Real q1, Real q2 ) function for elements. | | Void IgnoreVerticalSeparators() | Ignores vertical separators in the body of the table when dividing the table into columns (by default, separators are taken into account). | | Void IgnoreSeparatorsFromHeader() | Ignores vertical separators in the header of the table when dividing the table into columns (by default, vertical separators are taken into account). | | Void AutoDetectLeftAndRight( Logic ) | Enables automatic detection of the left and right boundaries of the table. The default setting is **True**. | | Void AutoDetectTopAndBottom( Logic ) | Enables automatic detection of the top and bottom boundaries of the table. The default setting is **True**. If the flag is set to **False**, the entire text inside the search area of the table element is used. | ## Rows Detection Parameters | Parameter | Description | | :------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Void SingleLineTable( Logic ) | Tells the activity that each line of text must correspond to one row in the table. | | Void SingleLineMasterColumn( Logic ) | Tells the activity that each line of text must correspond to one row in the master column of the table. | | Void MaxRowVerticalGap( Distance ) | Specifies the maximum vertical distance between two rows in the table. If the specified distance is exceeded, this means the end of the body of the table. By default, this distance isn't limited. | | Void MinRowVerticalGap( Distance ) | Specifies the minimum vertical distance between two rows in the table. If the distance is smaller than the specified distance, the rows are merged. The default value is 0. | | Void MaxMasterColumnRowGap( Distance ) | Specifies the maximum vertical distance between two rows in the master column of the table. If the specified distance is exceeded, this means the end of the body of the table. By default, this distance isn't limited. | | Void MinMasterColumnRowGap( Distance ) | Specifies the minimum vertical distance between two table rows in a particular column. If the distance is smaller than specified, the rows are merged. The default distance is 0. | | Void IgnoreHorizontalSeparators() | Ignores horizontal separators when dividing the table into rows. | | Void DivideRowsBySeparators() | Detects rows relying on separators only and ignoring text. | | Void DivideRowsByMasterColumn( String columnName ) | Tells the activity to use the text of the column when dividing the table into rows. This function can be called multiple times. If a table on an image doesn't have the required column, the column from the next call of the function is used, etc. If all the columns are unavailable, the rows are detected in the whole table. | | Void MasterColumnTextAlignment( TextAlignmentInTableCell ) | Specifies text alignment in a table cell in the Master Column. Possible values: TextAlignment\_CellTop, TextAlignment\_CellBottom. Example: `MasterColumnTextAlignment: TextAlignment_CellBottom;` - the text is aligned to the bottom border of the cell. | | Void AddStopWord( String ) | Specifies the words for which separate rows mustn't be drawn. | | Void RowSplitters( YCoordinateArray, Logic isBodyTopIncluded = true, Logic isBodyBottomIncluded = true ) | Specifies separators to divide the table into rows: isBodyTopIncluded == true - specifies the top of the table body, isBodyBottomIncluded == true - specifies the bottom of the table body, isBodyTopIncluded == false - the top of the table body is detected automatically, isBodyBottomIncluded == false - the bottom of the table body is detected automatically. Any specified separators outside the table search area are ignored. Example: `let yArray = RepeatingGroup.AllInstances.GetYArray(1); RowSplitters( yArray );` | ## Multi-Page Table Parameters | Parameter | Description | | :-------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Void HeaderOnEachPage( Logic has = true ) | Specifies that the table header occurs on every page (at the beginning of each one-page sub-table). | | Void AddHeaderKeyHypotheses( HypothesisInstances, String columnName ) | Specifies a column name on multiple pages by means of a set of hypotheses for a subelement of a repeating group. | | Void FooterOnEachPage( Logic has = true ) | Specifies that the table footer occurs on every page. | | Void AddFooterKeyHypotheses( HypothesisInstances ) | Specifies a table footer on multiple pages by means of a set of hypotheses for a subelement of a repeating group. | | Void PreviousInstances( TableHypothesisInstances ) | Specifies the previous table instances if the table is inside a repeating group. It's assumed that the direction of instances is top to bottom, column boundaries have no shifts within the same page and may be slightly shifted horizontally between pages. The previous instances are used to search for or improve the search for columns if the table has no header or if the header isn't detected. | # Table Hypothesis Properties Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/flexilayout/table-hyp Understanding the properties of Table, Table header, Table footer, and Table body hypotheses in Advanced Designer. ## Table Hypothesis Properties A **Table** hypothesis has the following properties: | Property | Description | | :----------- | :------------------------------------------------------ | | Header found | Shows whether the table header has been found. | | Footer found | Shows whether the table footer has been found. | | Body found | Shows whether the table body has been found. | | Order name | The name of the detected order of columns in the table. | ## Table Header Hypothesis Properties A **Table header** hypothesis has the following properties: | Property | Description | | :--------------- | :----------------------------- | | Column name list | Shows the found table columns. | ## Table Footer Hypothesis Properties A **Table footer** hypothesis has no additional type-specific properties. ## Table Body Hypothesis Properties A **Table body** hypothesis has the following properties: | Property | Description | | :------------ | :------------------------------------------- | | Order name | Shows the name of the found column order. | | Found columns | Shows the names of the found columns. | | Rows number | Shows the number of rows found in the table. | # User Defined Properties Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/flexilayout/user-defined-properties Learn how to create and use typed variables that belong to elements in the FlexiLayout language. A user defined property is a typed variable that belongs to an element. These properties are defined in the External fields section. The following format should be observed: ``` Type1 Name1; ... TypeN NameN; ``` where Name is the name of the variable and Type is its type. When fields are created, they are initialized as follows: numerical fields are initialized with zero values, rectangles and regions are initialized with empty values, etc. Fields may be used in the element to which they belong and in any of the elements located below their element. The value of a field can be changed only in the element to which it belongs, and in other elements it is available as read only. The value of a complex expression that characterizes the hypothesis for an element may be computed and written into this property. This value may be accessed from any of the elements below, without computing it each time it is needed. This reduces the time required to match the FlexiLayout, obviates the need to copy a large expression into each of the elements, and makes the code more readable. To access a field of an element, the full name of the field is used in the following format: `ElementName.FieldName` (e.g. `SearchElements.StaticText1.x`). Within an element, its field may be accessed by name: `x`. In the case of a compound element, its subelements (at any level of nesting) may also access its elements by their short names. Within an element, the names of the fields must be unique. The names of elements of a compound element may not coincide with any of the field names in its subelements (at any level of nesting). Additionally, the names of the fields of a compound element may not coincide with any of the names of its subelements. ## Example This example searches for two address components: city (character string City) and subway station (character string Station). The subway station is specified only if the city is Sydney. To speed up FlexiLayout matching, we specify a fromSydney property for the City element. This property is `true` if the City element is detected and has the value `Sydney`, and `false` in all other cases. Code for the City element: **External fields** ``` logic fromSydney; ``` **Hypotheses Evaluation** ``` if( not IsNull and Value.Find( "Sydney" ) >= 0 ) then fromSydney = true; else fromSydney = false; ``` Subsequently, we use this property to search for the subway station. To speed up the matching process, we search for the station only if Sydney is detected as the City element. Code for the Station element: **Search Conditions** ``` if not City.fromSydney then dontfind; ``` Because of the fields, elements of the same type are not treated as identical. Thus, constructions of the following type are prohibited: ``` Let e = SearchElements.StaticText1; e = SearchElements.StaticText2; // element of the same type ``` # Variables Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/flexilayout/variables Learn how to create and use variables in the FlexiLayout language code sections. You can create and use variables in any section where code is entered. The name of a variable cannot coincide with the name of a global constant or the name of an element. Variables can be created in one of two ways. ## Declare a Variable by Specifying Its Type and Name The syntax is as follows: ``` [type name] [variable name]; ``` For example: ``` Int a; ``` ``` String s; ``` ``` Logic isElementLongEnough; ``` To call the value of a variable, you must first initialize it by using an assignment operator. Calling a variable that has not been initialized will result in an error during compilation or when executing the code. ## Declare a Variable and Initialize It at the Same Time You can declare and initialize a variable using an expression, e.g. an element name, an element property or another variable. The syntax is as follows: ``` Let [variable name] = [expression] ``` For example: ``` Int a;a=3; Let a1 = a + 5; ``` ``` Let myElement = SearchObjects.Group1.Group2.FirstItem ``` ``` Let myRect = SearchObjects.Group1.Group2.FirstItem.Rect ``` The system creates a variable with the specified name. The type of the variable is implicitly defined by the type of the expression it refers to. At the same time the variable is initialized using the value of the expression. Variables created using this method can be conveniently used as shortcut names for deeply nested elements and other objects to make the notation shorter. # Amount of Money hypothesis Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/formulating/amount-of-money-hyp Properties of an Amount of Money hypothesis in an Extraction Rules activity — Value, Currency name, and Currency name rectangle coordinates. When formulating a hypothesis, only those text objects that were detected during pre-recognition of a format suitable for an Amount of Money element are considered. ## Amount of Money hypothesis properties A formulated Amount Of Money hypothesis has the following type-specific properties (in addition to the general ones): | Property | Description | | :----------------- | :------------------------------------------------------------------------------------------------- | | Value | Detected numeric value. | | Currency name | Detected currency name. | | Currency name rect | Specifies the coordinates of the rectangle containing the hypothesis region for the currency name. | # Barcode hypothesis Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/formulating/barcode-hyp Properties of a Barcode hypothesis in an Extraction Rules activity — recognized Text, Type, Orientation, and number of suspicious characters. When a hypothesis is formulated, only those Barcode objects that have been detected during pre-recognition are considered. ## Barcode hypothesis properties A formulated Barcode hypothesis has the following type-specific properties (in addition to the general ones): | Property | Description | | :------------------------------ | :----------------------------------------------- | | Text | Specifies the recognized value of the barcode. | | Type | Specifies the barcode type. | | Orientation | Specifies the barcode orientation. | | Number of suspicious characters | The number of uncertainly recognized characters. | # Character String hypothesis Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/formulating/character-string-hyp Properties of a Character String hypothesis in an Extraction Rules activity — character sets, regular-expression matching, and the recognized Text property. If a regular expression is specified in the element properties, then the program looks for all character strings satisfying the expression. If no regular expression is specified, hypotheses are formulated using the set character sets. When a hypothesis is formulated, all text objects overlapping with the search region horizontally are considered. Vertically, this object must be within the search region entirely. These text objects are then used to construct strings (left-to-right). In the constructed strings, character strings belonging to only one of the specified character sets are highlighted. Strings are also separated into fragments. ## Character String hypothesis properties A formulated Character String hypothesis has the following type-specific properties (in addition to the general ones): | Property | Description | | :------- | :-------------------------------------------------- | | Text | Specifies the character sequence in the hypothesis. | # Date hypothesis Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/formulating/date-hyp Properties of a Date hypothesis in an Extraction Rules activity — Day, Month, and Year of the detected date based on the configured date format. When a hypothesis is formulated, date strings need to be within the search region and be in the specified format to be considered. The date format can be set when describing element properties. ## Date hypothesis properties A formulated Date hypothesis has the following type-specific properties (in addition to the general ones): | Property | Description | | :------- | :------------------------------------ | | Day | The day of the detected date value. | | Month | The month of the detected date value. | | Year | The year of the detected date value. | # Formulate and evaluate an element hypothesis Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/formulating/formulate-and-eval Properties of a formulated element hypothesis — Element name, Page, Surrounding rect, Width × Height, Detected, Search Conditions quality, Chain quality. As a result of a hypothesis being formulated, an **element region** is indicated on the image. An element region is a region on the image consisting of an interconnected set of rectangles around an object detected on the image. The region for the null hypothesis is the entire element search region. The search region may contain several objects that suit the element description, and a hypothesis can be formulated for each one. A formulated element hypothesis is displayed on the **Tree of Hypotheses** pane and has the following properties: ## Hypothesis properties | Property | Description | | :---------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | Element name | The full name of the element. | | Page | The number of the page on which the element was detected. | | Surrounding rect | The coordinates of the rectangle which surrounds the region of the hypothesis. | | Width x Height | The width and height of the region of the hypothesis. | | Detected | Shows whether the object described by the element has been found (True) or whether a null hypothesis has been formulated (False). | | From the best path | Shows whether the found hypothesis belongs to the best path in the tree of hypotheses (True) or not (False). | | Search Conditions quality | How well the hypothesis matches the properties of the element specified either explicitly or using additional search area conditions (Code Editor panel, **Search Conditions** section). | | Hypotheses Evaluation quality | How well the hypothesis matches the additional hypothesis precision conditions (Code Editor pane, **Hypotheses Evaluation** section). | | Chain quality | The current quality of the chain of hypotheses, from the first subelement of the group to the current subelement. Chain quality is calculated by multiplying the qualities of all subelements in the chain and is used to compare rival chains of hypotheses. | # Formulate a hypothesis Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/formulating/formulating-a-hypothesis How the Extraction Rules activity assesses search-element hypotheses during matching — region detection, hypothesis quality, and Group quality calculation. When the program matches an Extraction Rules activity, it attempts to locate objects that correspond to the activity's elements, as well as evaluate the accuracy of the results. During matching, elements are searched for sequentially in the order in which they are described in the **Search Elements** tree (descending order). Each element in the specified search area can be matched to several image objects that fit the element description. The program considers the various objects in the form of hypotheses regarding the location of elements. A **hypothesis** is an assumption that the detected object suits a particular element, i.e. satisfies the specified element properties and search conditions. The element search area may contain several objects that can be matched to the element. In this case, several element hypotheses are formulated. The primary characteristic of a hypothesis is its hypothesis quality, which is an evaluation of how well the detected object matches the given element (its properties and search conditions). Hypothesis quality ranges from 0 to 1. Hypothesis quality for a group element is calculated by multiplying together the quality values of all its subelement hypotheses. A quality value of 1 means that the detected object fits the description exactly (or 100%). If the value is not 0, then matching will also include a step where field regions for the Extraction Rules activity are formed. # Fuzzy interval Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/formulating/fuzzy-interval Fuzzy intervals (f1, f2, f3, f4) for evaluating hypothesis quality based on object length — character count, line dimensions, and gradient quality. A **Fuzzy interval** is a tool that enables the program to assess the quality of a hypothesis based on its length. A fuzzy interval may be measured in units of length (dots, millimeters, etc.) or in characters (in the case of lines). For a fuzzy interval, four values must be specified which determine the possible and optimal range of values. For the purpose of simplification, an easy-to-use fuzzy interval editor is provided in the program. Suppose you have a fuzzy interval `{f1,f2,f3,f4}` and the length of the detected string (in characters, or dots for a detected space) is L. If the length L is in the range from f2 to f3 (i.e.` L>=f2 and L<=f3`), the quality of the hypothesis is 1. If the length is in the range from f1 to f2, the quality of the hypothesis changes in direct proportion from 0 to 1 (`Quality(f1) = 0, Quality(f2)=1`). Similarly, if the length is in the range from f3 to f4, the quality of the hypothesis changes in direct proportion from 1 to 0 (`Quality(f3) = 1, Quality(f4) = 0`). If the length does not fall in the range from f1 to f4 (i.e. `Lf4`), the quality of the hypothesis is 0 (`Quality(L) = 0`). The quality of the hypothesis for the detected object is multiplied by the values of the Character count property, which is selected depending on the length of the detected object. Fuzzy interval graph plotting hypothesis quality from 0 to 1 across f1, f2, f3, f4 boundary values The quality of any chain of hypotheses for several elements is calculated by multiplying the hypotheses for each element in the chain. If the chain is sufficiently long and the quality estimates of the constituent hypotheses are too low due to the restrictions being too strict, the resulting quality of the entire chain may be too low as well. Therefore, it is recommended to make sure that the selected hypothesis has the highest quality estimate possible. On the other hand, you need to be able to distinguish hypotheses by their qualities, so as to be able to select the best one. Therefore, you need to set up fuzzy intervals (which are mathematical functions for hypothesis evaluation) in such a way so that acceptable hypotheses are not penalized too much. Negative values can also be used for the left boundary of the fuzzy interval (even though in reality there are no strings of negative length). This may be useful for making the quality graph less steep on the (0, 1) interval, thereby reducing the quality penalty. If you need to set a bottom limit for this parameter (e.g. the length of the string cannot be smaller than 10 characters with the fuzzy interval for the length of the string being `[-10,20,30,40}`), you can do so directly in Hypothesis Evaluation by setting `Value.Length >=10`. Fuzzy interval with a negative left boundary, illustrating reduced quality penalty in the (0, 1) interval We do not recommend making the interval boundaries too strict. This is particularly important when processing images of varying quality. On some images for example, there may be spaces with letters due to the poor quality of the source document or the particular scanning options. In this case, the program may interpret one character as several characters, which may lead to a drastic decrease in the quality of the hypothesis if the interval was overly strict. As a result, the program may discard that hypothesis (which could have been correct in essence) and select a different one. For this reason, if you need to select between hypotheses by comparing their lengths, this should be done using additional conditions in Hypothesis Evaluation. # Fuzzy Interval Editor Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/formulating/fuzzy-interval-editor Visual editor for specifying fuzzy intervals graphically — Distance and Integer modes, slope adjustment, and Left/Right boundary controls. Advanced Designer offers a visual editor to make specifying fuzzy intervals easier. You can open the **Fuzzy Interval Editor** from the **Properties** pane for a **Character String** element in advanced mode by pressing the `fuzzy_int` button. ## Fuzzy Interval Editor dialog box Fuzzy Interval Editor dialog with the interval graph, numerical-value fields, and Distance/Integer interval-type controls 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 in on a selected image area using the **Zoom selected area** button. The arrow buttons allow you to move the area in the corresponding direction. To fit the interval, click **Fit interval** button. 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 numerical values in the corresponding fields. The visual fuzzy interval editor operates in two modes: 1. Fuzzy intervals for units of measurement, which may be fractional. In this case, select **Distance** under **Interval type**. 2. Fuzzy intervals for positive integers, such as string length in characters. In this case, select **Integer** under **Interval type**. ### Edit 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. ### Change 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. # Group hypothesis Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/formulating/group-hyp How the Extraction Rules activity formulates Group hypotheses by combining subelement hypotheses, with a single search constraint shared across constituents. Elements may be grouped together to form Group elements. This allows the program to consider the grouped elements as one entity for which it has already formulated a single hypothesis (consisting of hypotheses for each constituent element). The program examines the combinations of hypotheses for the constituent elements of the group and selects only the best ones (their number is set by the user). The **Search Elements** tree as a whole is in essence a Group element itself, the best hypothesis for which contains the activity matching results. A Group element allows you to create a single search constraint for all constituent elements. The search area for a particular constituent element will be the intersection of the search area specified for the constituent element and the search area specified for the entire group. The intersection of the search area of a constituent element and the search area of the group may be empty. If the intersection is empty, the constituent element will not be detected. Therefore, we recommend either only specifying simple relations for Group elements, e.g. "`Above: PageRect.Top + PageRect.Height/2;`" (search for the element in the top half of the image), or avoid specifying any at all. A formulated Group hypothesis has no additional type-specific properties. # Hypothesis tree Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/formulating/hypothesis-tree How the Extraction Rules activity builds a hypothesis tree, evaluates paths by multiplying quality values, and selects the best-rated path through the tree. When matching each Extraction Rules activity, the program sequentially builds hypotheses for all created elements. Element hypotheses are formulated sequentially (from the first element in the tree to the last). A hypothesis tree is then created using the formulated hypotheses. If the variant is matched successfully, the hypothesis tree is displayed in the **Tree of Hypotheses** pane: Hypothesis Tree Example If several variants have been matched, only the hypothesis tree of the variant matched first is displayed. If the activity could not be matched, the hypothesis tree for the first version is displayed. The program uses the hypothesis tree to select the best path, i.e. the best-rated path to the formulated hypothesis for the last element in the tree. Paths are evaluated by multiplying the quality values of all hypotheses of elements along the path. The location of the activity blocks is calculated using the hypotheses formulated for elements in the best path of a specific hypothesis tree. ## View element hypotheses To view element hypotheses for a group element: Click a hypothesis in the **Tree of Hypotheses** pane. Press **Enter** or use the **Show Details** command in the context menu. To navigate back by one level, use the **Go One Level Up** command in the context menu. ## Understand the hypothesis tree The left column of the hypothesis tree lists the elements of nesting level 1 in the same order as they are described in the element tree. The right column contains special icons representing hypotheses for that particular element. Formulated hypotheses are connected by lines that demonstrate the order of their formulation. Best path hypotheses are connected using green lines, while all other lines are gray. ## Hypothesis icons | Icon | Description | | :------------------------------------------------------------------------------------------------------------------------------------------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Best path | A hypothesis from the best path. | | Non-best path | A hypothesis not from the best path. | | Best path null | A null hypothesis from the best path. | | Non-best path null | A null hypothesis not from the best path. | | Incomplete chain | An incomplete chain of hypotheses for a Group element (Group, Repeating Group, Header, Footer). You can view an incomplete chain of hypotheses to locate a non-detected element. | | Best path+ Non-best+ Null best+ Null non-best+ | The branch of the element displays the hypothesis from the best path. To view all the hypotheses, press "+" or select **Expand Active** in the shortcut menu. | | Best path- Non-best- Null best- Null non-best- | Displays all the hypotheses in the branch of the element. To hide the hypotheses which are not from the best path, press "-" or select **Collapse Active** in the shortcut menu. | | Best end Non-best end Null best end Null non-best end Red striked | The sub-branch of hypotheses for the element was discontinued at this point. | # Key value hypothesis Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/formulating/kv-hyp Key value hypothesis properties in an Extraction Rules activity — Static Text and White Gap secondary elements plus type-specific main element properties. The Key Value element is a group element containing predetermined subelements. Formulation and evaluation of hypothesis for this element is carried out the same way as it is for the [Group](/vantage/documentation/advanced-designer/activities/formulating/group-hyp) element, with secondary element hypotheses having identical properties. Moreover, secondary element hypotheses have additional properties. ## Additional Static Text hypothesis properties | Property | Description | | :------- | :------------------------------------------------------------------------------------------------- | | Keyword | Lists keywords that are part of the hypothesis. A separate error count is displayed for each word. | ## Additional White Gap hypothesis properties | Property | Description | | :---------------------------------- | :-------------------------------------------------------------------------------------------------------------------------- | | Orientation | Specifies the orientation of the detected white gap. | | Histogram maximum in search area | Specifies the maximum histogram value in the search area. | | White Gap threshold | Specifies the calculated threshold for the histogram, over which the white gap will no longer be considered to be detected. | | Histogram maximum within hypothesis | Specifies the maximum histogram value within the white gap hypothesis region. | ## Additional main element hypothesis properties Additional main element hypothesis properties can have varying properties depending on element type: | Field type | Property | Description | | :------------------- | :------------ | :----------------------------------- | | **Any Text** | Text | Text that is part of the hypothesis. | | **Number** | Text | Text that is part of the hypothesis. | | **Amount of Money** | Value | Detected numeric value. | | **Amount of Money** | Currency name | Detected currency name. | | **Date** | Day | Day. | | **Date** | Month | Month. | | **Date** | Year | Year. | | **Phone** | Number | Detected telephone number. | | **Phone** | Keyword | Detected prefix keyword. | | **Character String** | Text | Text that is part of the hypothesis. | # Object Collection hypothesis Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/formulating/object-collection-hyp How the Extraction Rules activity formulates an Object Collection hypothesis — all objects in the collection must satisfy the element properties. When a hypothesis is formulated, all objects in a collection need to satisfy the element properties and search conditions. A formulated Object Collection hypothesis has no additional type-specific properties. # Paragraph hypothesis Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/formulating/paragraph-hyp Properties of a Paragraph hypothesis in an Extraction Rules activity — the Text property containing the paragraph contents detected on the document image. ## Paragraph hypothesis properties A formulated Paragraph hypothesis has the following type-specific properties (in addition to the general ones): | Property | Description | | :------- | :------------------------------------ | | Text | Specifies the text in the hypothesis. | # Phone hypothesis Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/formulating/phone-hyp Properties of a Phone hypothesis in an Extraction Rules activity — detected telephone Number, Keyword, and Keyword rectangle coordinates. When a hypothesis is formulated, only text objects detected during pre-recognition and that are of a format that corresponds to the Phone element are considered. ## Phone hypothesis properties A formulated Phone hypothesis has the following type-specific properties (in addition to the general ones): | Property | Description | | :----------- | :---------------------------------------- | | Number | The detected telephone number. | | Keyword | The keyword for the telephone number. | | Keyword rect | The coordinates of the keyword rectangle. | # Region hypothesis Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/formulating/region-hyp How the Extraction Rules activity formulates a Region hypothesis — objects inside the search region are not considered when forming the hypothesis. When formulating a Region hypothesis, objects inside the search region are not considered. A formulated Region hypothesis has no additional type-specific properties. # Repeating Group hypothesis Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/formulating/repeating-group-hyp Repeating Group hypothesis in an Extraction Rules activity — handles instance positioning and overlap rules; carries no type-specific properties of its own. # Separator hypothesis Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/formulating/separator-hyp Properties of a Separator hypothesis — Orientation, Relative length, Space length, and Orthogonal shift in an Extraction Rules activity. When a hypothesis is formulated, only those Separator objects that have been detected during pre-recognition are considered. ## Separator hypothesis properties A formulated Separator hypothesis has the following type-specific properties (in addition to the general ones): | Property | Description | | :-------------------- | :----------------------------------------------------------------------------------------------------------------- | | Orientation | Specifies the orientation of the detected separator. | | Relative length | Specifies the relative length of the detected separator. | | Space length | Specifies the absolute length of the space character inside the detected separator. | | Relative space length | Specifies the relative length of the space character inside the detected separator. | | Orthogonal shift | Specifies the distance between separators (in the direction perpendicular to their orientation) in the hypothesis. | # Static Text hypothesis Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/formulating/static-text-hyp How the Extraction Rules activity formulates a Static Text hypothesis — Allowed errors percentage, fuzzy text matching, and the Keyword property. When the program looks for static text on an image, the recognized text object need not exactly match the text value specified in the properties of the element. For example, you can specify the properties of a Static text element in such a way as to make the program consider text like "Supplier", "Suppller", etc. as a valid hypothesis for the expected static text "Supplier". The **Allowed errors** property value is set in the element properties. This property specifies the maximum percentage of errors allowed in a word (i.e. the share of errors in the hypothesis text). If the share of errors exceeds the value specified in the property, the detected object will not be considered a valid hypothesis. The greater the number of errors, the poorer the quality of a hypothesis. Since the number of characters in the object is not known in advance and searched text can be of varying length, the hypothesis will be evaluated using either an absolute or a relative parameter. When formulating and evaluating a hypothesis, the program will use the more stringent of the two conditions, for example, if the detected object meets one criterion but not the other, the object will not be considered a valid hypothesis. ## Static Text hypothesis properties A formulated Static text hypothesis has the following type-specific properties (in addition to the general ones): | Property | Description | | :------- | :------------------------------------------------------------------------------------------------- | | Keyword | Lists keywords that are part of the hypothesis. A separate error count is displayed for each word. | # White Gap hypothesis Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/formulating/white-gap-hyp Properties of a White Gap hypothesis in an Extraction Rules activity — Orientation, Histogram maximum, White Gap threshold, and search-among object types. Hypotheses for **White Gap** elements are formulated by creating object histograms. By default, a white gap is looked for among objects of the **Raw Object** type. To try and detect a white gap among other types of objects (e.g. separators), you need to specify an appropriate search condition in the additional search area properties for the **White Gap** element (Code Editor panel, **Search Conditions** section). For example, if you need to find a white gap in a region that can contain any type of object, use the expression `Type: PictureObject + SeparatorObject + AnyText + PunctuationMark + CheckMarkObject;`. ## White Gap hypothesis properties A formulated White Gap hypothesis has the following type-specific properties (in addition to the general ones): | Property | Description | | :---------------------------------- | :-------------------------------------------------------------------------------------------------------------------------- | | Orientation | Specifies the orientation of the detected white gap. | | Histogram maximum in search area | Specifies the maximum histogram value in the search area. | | White Gap threshold | Specifies the calculated threshold for the histogram, over which the white gap will no longer be considered to be detected. | | Histogram maximum within hypothesis | Specifies the maximum histogram value within the white gap hypothesis region. | # Hypothesis Filtering container Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/hypothesis-filtering Combine Deep Learning activities with an Extraction Rules activity to filter, correct, and rank neural-network outputs in Advanced Designer. A Hypothesis Filtering container combines several Deep Learning activities and an Extraction Rules activity. The outputs of the Deep Learning activities are fed to the Extraction Rules activity, which sets conditions to select the values you want. Even though a Deep Learning activity can achieve very high quality of field extraction, you may want to control the output of the Deep Learning activity in some cases. To do so, you can combine one or several Deep Learning activities with an Extraction Rules activity, which will apply conditions to the values obtained by the Deep Learning activity or activities. Output control is essential when the neural network finds entire words, but you only need specific parts, or when you need to filter out accidentally captured noise. It can also be useful for identifying parts of larger fields, such as addresses, which may be overlooked by the neural network. Additionally, it enables you to choose the best hypothesis for multiple instances of the same value. For example, when a vendor name is printed multiple times on a document, you can select the most accurate extraction result from among the multiple instances. This technology is provided as a preview and will be improved in future versions. ## Set up a Hypothesis Filtering container Click the block with the Deep Learning activity and select **Filter Hypotheses**. This will create a new Hypothesis Filtering container and put the selected Deep Learning activity inside it. Drag more Deep Learning activities onto the Hypothesis Filtering container. This will let you combine and compare the output of two or more Deep Learning activities. Two activities may be needed, for example, when working with text fields and tables at the same time. Add an Extraction Rules activity to the container. You can either create a new activity by clicking on the placeholder or drag an existing activity onto the container. For each of the values found by the Deep Learning activities, add a Deep Learning search element and set its properties. You can add all the output fields of one Deep Learning activity at the same time. A **Deep Learning** search element supports all properties that limit the search area and the conditions for finding the element. Connect the input and output of the Hypothesis Filtering container to other blocks in the document processing workflow. The output fields of the Hypothesis Filtering container will be the same as the output fields of the Extraction Rules activity. If you decide to stop controlling the output of the Deep Learning activity, click anywhere in the container and select **Don't Filter Hypotheses**. The container will be disassembled, but the activities themselves will not be deleted, and you will still be able to use them in the modified document processing workflow. ## Examples These are just a few examples that show how a Hypothesis Filtering container can be used. However, there are many other possible situations where you can use this functionality to control the output of neural networks and fine-tune fields extraction. Only you can determine which adjustments are needed for the documents you are working with, and we encourage you to try this technology out in each case where the Deep Learning activity results will benefit from some tuning. The examples below use the same sample skill, where the outputs of two Deep Learning activities are fed to an Extraction Rules activity. ### Skill workflow Hypothesis Filtering container holding two Deep Learning activities feeding into an Extraction Rules activity * Deep Learning activity extracts text fields. * Deep Learning 2 activity extracts a table. * Hypothesis Filtering container selects and combines their results. ### Structure of search elements in the Extraction Rules activity Search Elements tree in the Extraction Rules activity, with each search element mapped to a corresponding skill field Each search element is mapped to its corresponding field. ## Example 1: Correct a value found by a Deep Learning activity In this example, a Deep Learning activity finds a value for the document number that is too long, and a new search element is created to correct the value. The value for the document number found by the Deep Learning activity includes the part after the dash: Document number value found by the Deep Learning activity that includes unwanted text after a dash 1. To correct the Document\_Number value, a new search element is created. This search element, named DocNumber\_Corrected, should be located within the region of the Document\_Number search element and contain a limited number of characters. Properties pane for the DocNumber_Corrected search element with a character-count limit 2. The search area for the new element is [restricted](/vantage/documentation/advanced-designer/activities/flexilayout/search-conditions/search-functions) to match the Document\_Number region by adding the following line to the element's code: ```text theme={null} RestrictSearchArea: Document_Number.Region; ``` 3. The corrected search element is mapped to the field that extracts the document number: Mapping showing the corrected search element assigned to the document-number field As a result, the extracted document number will not include the part after the dash: Document number correctly extracted without the part after the dash after applying the corrected search element ## Example 2: Select one of several repeating values In this example, a Deep Learning activity is trained to find all instances of the document number, but the end result of the skill needs only one document number field. To achieve this, the **Allow Multiple Items** setting is disabled for the Document Number field and conditions are specified to select the right instance of the document number. We recommend that you [save the labeled document set](/vantage/documentation/advanced-designer/labeling/labeling#skill-training-set) to a folder first. When you disable the **Allow Multiple Items** setting for a field, all extra instances of that field will be deleted from the labeling. The model trained in the Deep Learning activity will still work, but should you want to modify and retrain it, you will need to load the original document set. 1. The **Allow Multiple Items** setting is disabled for the Document Number field (the setting can be accessed by clicking **Manage Fields**). Manage Fields dialog with Allow Multiple Items disabled for the Document Number field 2. The Document\_Number search element with multiple instances cannot be mapped to the Document Number field. So a new **Deep Learning** search element is created from the document number output of the Deep Learning activity and mapped to the Document Number field. Mapping the new Deep Learning search element to the Document Number field after disabling Allow Multiple Items 3. The multiple instances of the document number found by the Deep Learning activity are used to build a tree of hypotheses, of which only one will be selected as the value of the Document\_Number search element. Tree of hypotheses for repeating Document_Number values, used to select a single instance 4. To find a particular instance, certain conditions are added for the Document\_Number search element (in this case we want to find the topmost instance of the document number). Search element conditions configured to select the topmost instance of the document number ## Example 3: Combine the output of two Deep Learning activities A Hypothesis Filtering container lets you combine the results of two or more Deep Learning activities to check them against each other or to simply fine-tune these results within the same activity. In this example, two Deep Learning activities were needed because one Deep Learning activity cannot be trained to extract both text fields and tables. A condition is added specifying that the Company\_Address search element should always be found above the Goods\_Table search element. As a result, the correct address will be found even if other addresses are printed at the bottom of the page. Condition specifying that Company_Address must always be found above Goods_Table on the page # Address Parsing activity Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/address-parsing Parse address fields extracted by other activities into street, city, state, country, and ZIP code components in Advanced Designer. The Address Parsing activity is designed to parse addresses into the following components: * Street * City * State * Country * Zip-code The Address Parsing activity is used to parse the values of the fields extracted by other activities. Hence, in the document processing flow, Address Parsing activity should always be placed after an activity that extracts the address first. The activity only supports fields of type Text. ## Set up an Address Parsing activity On the **Activities** tab, add an Address Parsing activity to the document processing flow. On the **Activity Properties** pane, select the address field extracted by a different activity in the **Input Field** drop-down field. In the **Output field**, select the fields into which the address components will be extracted. Click **Create Mapping**. In the dialog that opens, use the **Place the extracted Address part in** list to map each address component to its target field, and then click **Save**. You can edit the mapping at any time by clicking **Edit Mapping**. Click **Test Skill** to run the skill and review the address-component extraction results on the **Results** tab. ## Supported regions | Region | Supported languages | | :--------------- | :------------------ | | USA | English | | Canada, France | English, French | | Austria, Germany | English, German | | Italy | English, Italian | | Spain | English, Spanish | ## Supported entities and languages | Entity name | Supported languages | | :---------------- | :---------------------------------------- | | Street (Line 1) | English, German, French, Italian, Spanish | | City | English, German, French, Italian, Spanish | | State (Province) | English, German, French, Italian, Spanish | | ZIP (Postal code) | English, German, French, Italian, Spanish | | Country | English, German, French, Italian, Spanish | # Deep Learning activity for NLP Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/deep-learning-nlp Train a neural-network NLP model to extract fields from unstructured text in Advanced Designer — suitable for contracts, letters, and free-form documents. The Deep Learning for NLP activity is designed to train the skill to extract fields from unstructured documents using Natural Language Processing (NLP) technology. Deep Learning activity can only be set up for a field that has been previously extracted by another activity. For example, you can extract a text paragraph using a Segmentation activity and then set up a Deep Learning activity to extract fields from that paragraph. This activity only supports fields of type Text. ## Training requirements As Deep Learning activities are trained using reference labeling, it is important that the location of the fields be specified correctly on all document images. The greater the number of labeled documents in the training set, the higher the quality of field extraction. The recommended number of sample documents is as follows: * For high-variability documents at least 150 sample documents (2-3 sample documents per variant) are required. * For low-variability documents we can start training with 1 sample documents but at least 2-3 sample documents per variant is required. ## Use separate document sets You can use a separate document set to train your Deep Learning activity. To do so, select the Deep Learning activity from the drop-down list next to the skill name. Then, in the drop-down list to the left of the **Upload** button, select the necessary document set or click **Create Set...** to create a new one. You can upload, delete, and rotate documents on this tab as described in the [Documents](/vantage/documentation/advanced-designer/document-skills/documents) section. ## Supported languages Supported languages: English, French, German, Japanese, Russian, Spanish, Italian, Portuguese (Standard), and Dutch. ## Set up a Deep Learning activity On the **Activities** tab, add a Deep Learning activity to the document processing flow. Note that your Deep Learning activity should be placed after the activity that will extract the field used as the source by your Deep Learning activity. Use the **Field** drop-down list in the **Activity Properties** pane to select the source field corresponding to the unstructured text fragment from which fields should be extracted. Select the fields that should be extracted from the source field. You can select fields that are on the same nesting level as the source field or one level below it. Click **Activity Editor** and go to the **Fields** tab to label your documents by specifying the regions for the fields that should be extracted from the source field. The labeling process in the Activity Editor is identical to the regular [document labeling process](/vantage/documentation/advanced-designer/document-skills/fields) with one exception — the fields to be extracted by the Deep Learning activity should be located within the region of the source field. Use the following guidelines to determine the size of the document set: * Deep Learning activity for NLP can be started with 1 sample documents but at least 2-3 sample documents per variant is required. * If the training set contains between 1 and 150 documents, you can start training your activity, but Advanced Designer will display a warning saying "We recommend adding at least 150 documents". * If the training set contains between 150 and 10,000 documents, you can start training your activity right away. This is the recommended number of documents to have in your training set. * If the training set contains more than 10,000 documents, Advanced Designer will display a warning saying that the skill may become unstable. Click **Train Activity** to train the activity. Once the activity has been trained, activity testing will start automatically. After testing has completed, navigate to the **Results** tab and analyze the field extraction results for your activity. Statistics displayed on the **Results** tab are identical to the general statistics for the skill displayed on the [Results](/vantage/documentation/advanced-designer/document-skills/results) tab. If required, make any necessary changes to your labeling and train the activity again. The activity can only be trained and tested using documents with confirmed labeling. Documents have unconfirmed labeling if the reference labeling was generated automatically based on the predicted labeling, unless you copy predicted labeling to reference using the corresponding option in the document context menu. You can check the labeling status for each document on the **Documents** tab. To confirm labeling for a document, you should review it on the **Fields** tab. # Multiple Extraction Rules in a single activity Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/extraction-rules-several-sets Create a single processing flow item with several independent Extraction Rules activities and activity choice conditions for document variants. A document set may include document variants with different layouts, e.g. statements from different banks or invoices issued by different companies. Advanced Designer allows you to create a single processing flow item that contains several independent Extraction Rules activities and activity choice conditions. The choice of activity is determined by the value of the field which contains data that is used to distinguish among the document variants. This is typically a field containing classification results, but generally this can be any field that has been filled by any preceding activity. You configure branching conditions for activities in the set by mapping the field values to the activities. You may also select an action for all field values not specified in the mapping table: you can either assign them an Extraction Rules activity from the set or choose to skip this processing step. ## Use cases This method can be useful in the following cases: | Case | How document variants are distinguished | Sample mapping | | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------- | | You have classified your documents by layout or by a certain parameter, e.g. the year the document was issued. You need to configure separate extraction rules for some of the document classes. | Based on the results of classification by text and image or some document parameter extracted to a field | Field value = A : Extraction Rules A / Field value = B : Extraction Rules B / All other field values : Skip this step | | You have classified your documents by company and need to configure separate extraction rules for documents from each company in your catalog. You want to use a general Extraction Rules activity for all companies not listed in the catalog. | Based on the results of classification by company | CompanyID = 1 : Extraction Rules 1 / CompanyID = 2 : Extraction Rules 2 / ... / Other company IDs : General Extraction Rules | The activities merged into one processing flow item have the same set of output fields. If you change the state of a field for one activity, it will be consistently changed for all other activities in the set. If you delete the item from the document processing flow, all activities inside it are also deleted and cannot be restored. ## Create a new set of activities Add a regular Extraction Rules activity to the document processing flow. Click **Add activity and set condition for its use** on the **Activity Properties** pane. Specify the name of a new activity and click **Add**. Go to the **Activities** tab on the **Activity Properties** pane and add as many activities as needed by clicking **Add**. You can set branching condition for each activity in the **Add Extraction Rules Activity** dialog or configure all activities later. ## Configure activities and branching conditions Select the activity in the processing flow and open the **Activities** tab of the **Activity Properties** pane. You will see a list of activities added to the item. The error icon indicates that an activity has errors or is not configured. The alert icon indicates that the branching condition for an activity is not set. Click **Conditions** at the bottom of the **Activity Properties** pane. In the dialog that opens, specify the field whose values will determine the choice of an Extraction Rules activity. Changing a field to get values from will reset the mapping. All available Extraction Rules activities are listed in the mapping table. Map the field values to the activities. Select an action for the values not listed in the mapping table. You can select either to use one of the activities added to the set or to skip this processing step. Click **Save**. Each activity should be configured in the **Activity Editor** the same way as a regular Extraction Rules activity. For more information, see [Extraction Rules activity description](/vantage/documentation/advanced-designer/activities/extraction-rules). To open the **Activity Editor** for a certain activity, click on the activity name in the list of activities. If the activity is selected in the list, you can also open the editor by clicking the **Activity Editor** button at the bottom of the **Activity Properties** pane. You can rename and delete an activity via the menu that opens when you click the more icon to the right of the activity name. By selecting the **Use as Separate Activity** option in this menu, you can detach an activity from the set. It will be recreated as a separate item of the document processing flow. All configured extraction rules will be preserved. ## Merge existing activities You can also merge existing activities by dragging and dropping a regular Extraction Rules activity on another such activity or on a set of activities. After dropping the activity, you'll have to open the **Conditions** dialog to set the branching condition for the newly added activity. The list of fields enabled for the dropped activity will be harmonized with the list of fields enabled for the item with which it is merged. All extraction rules configured in the activities will be preserved. ## Split an activity Having created the set of Extraction Rules activities, you may decide to add other activities to the branches of the document processing flow. For example, you may want to replace one of the Extraction Rules activities with a Fast Learning activity or add a Script activity to a certain branch of the workflow. In this case you can split the set of activities into a bunch of regular Extraction Rules activities preceded by an IF activity. To do so, select the activity in the workflow and click the split icon in the pop-up window. All configured extraction rules will be preserved. You will have to configure the case conditions for each activity manually. # Conversion of Types Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/flexilayout/conversion-of-types Understanding implicit type conversions supported in the FlexiLayout language The FlexiLayout language supports implicit conversion of types. ## Standard Conversions * `Int` → `Real` * `Rect` → `Region` * `XCoordinate` → `XInterval` * `YCoordinate` → `YInterval` * `Distance` → `DistInterval` ## Conversions That May Result in Errors The following conversions are allowed in the language, but may result in an error. For example, conversion `XCoordinate` → `Distance` with a subsequent conversion `Distance` → `YCoordinate` may lead to an error of converting an X-coordinate into a Y-coordinate. If you use such conversions in your code, the compiler will display a warning message. * `Distance` → `XCoordinate` * `Distance` → `YCoordinate` * `XCoordinate` → `Distance` * `YCoordinate` → `Distance` * `DistInterval` → `XInterval` * `DistInterval` → `YInterval` * `Xinterval` → `DistInterval` * `Yinterval` → `DistInterval` # Amount of Money Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/flexilayout/element-properties/amount-of-money Parameters for configuring Amount of Money element properties in FlexiLayout | Parameter | Description | | ------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `Void AllowFractionalPartOmission( Logic )` | Specifies whether the numerical value must have a fractional part. | | `Void AllowSeparatorOmission( Logic )` | Specifies whether the fractional part separator is required in the numerical value. | | `Void CurrencyNames( String )` | Specifies the possible currency names. The variants must be separated by a vertical bar (`\|`). **Example:** `Currency: "USD\|$\|EUR\|EURO";` | | `Void CurrencyOmissionQuality( Real )` | Sets the penalty for a missing currency name. | | `Void CurrencyPosition( CurrencyPositionTypes )` | Sets the location of the currency name – to the left or to the right of the numerical value. **Example:** `CurrencyPosition: CurrencyPos_Left;` | | `Void FindOnlyIntegers( Logic )` | Finds only integers. Symbols set by the Separators function (or in the corresponding dialog box) will be ignored. `AllowSeparatorOmission` is automatically set to `True` and `AllowFractionalPartOmission` is automatically set to `False`. | | `Void MaximalValue( Real )` | Sets the maximum numerical value. | | `Void MaxXOutsidePart( Real )` | Specifies the part of the character that may extend beyond the search area horizontally. The part of the character is specified by a number from 0 to 1. Those characters are included in the hypothesis that have the specified or smaller part outside the search area. | | `Void MaxYOutsidePart( Real )` | Specifies the part of the character that may extend beyond the search area vertically. The part of the character is specified by a number from 0 to 1. Those characters are included in the hypothesis that have the specified or smaller part outside the search area. | | `Void MaxRelativeGapInLine( Real )` | The maximum distance between neighboring characters expressed as a percentage of the line height. | | `Void MinimalValue( Real )` | Sets the minimum numerical value. | | `Void Separators( String )` | Sets the symbols which can be used to separate the integer and fractional parts of the numerical value. **Example:** `Separators: ",.";` | | `Void AllowedTextRotations( TextRotations )` | Specifies a set of orientations of the recognized text in which an element search is allowed. | # Barcode Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/flexilayout/element-properties/barcode Parameters for configuring Barcode elements in FlexiLayout, including Type, Orientation, and MaxXOutsidePart and MaxYOutsidePart tolerances for the search area. | Parameter | Description | | :---------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `Void Type( BarcodeTypes )` | Barcode type. **Example:** The code below tells the program that the barcode is of Interleaved 25 type. `Type: BarcodeType_Interleaved25; Void Orientation( BarcodeOrientations );` | | `Void Orientation( BarcodeOrientations )` | Barcode orientation. **Example:** The code below tells the program that the barcode must be read left to right. `Orientation: BarcodeOrientation_LeftToRight;` | | `Void MaxXOutsidePart( Real )` | Specifies the part of the object that may extend beyond the search area horizontally. May assume values from 0 to 1. Those objects are included in the hypothesis that have the specified or smaller part outside the search area. | | `Void MaxYOutsidePart( Real )` | Specifies the part of the object that may extend beyond the search area vertically. May assume values from 0 to 1. Those objects are included in the hypothesis that have the specified or smaller part outside the search area. | # Character String Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/flexilayout/element-properties/character-string Configure Character String element properties including hypothesis formulation, quality settings, character sets, and regular expressions | Parameter | Description | | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `Void AllowEmbeddedHypotheses( Logic )` | Sets the hypothesis formulation mode. To formulate all possible hypotheses (including overlapping and nested) from a character string, set the value to **True**. To formulate hypotheses of maximum length, set to **False**. **Example:** The code below tells the activity that it must generate the longest hypothesis. `AllowEmbeddedHypotheses(False);` | | `Void MinQuality( Real )` | Sets the minimum quality of the hypothesis. Hypotheses whose quality is below this minimum will be discarded. **Example:** The code below tells the activity to ignore hypotheses whose quality is lower than 0.95. `MinQuality: 0.95;` | | `Void MaxNonDefinedCount( Real )` | Sets the allowed percentage of characters which do not belong to any of the character sets specified for the search element. **Example:** The code below tells the activity that the string may contain up to 30% of characters which do not belong to any of the specified character sets. `MaxNonDefinedCount(0.3);` | | `Void MaxWordBreakCount( Real )` | The maximum number of word breaks in the line. The line is divided into words based on the MinInterwordSpace parameter. The parameter is specified as a ratio: \[number of word breaks]/\[number of characters in the string]. | | `Void MinInterwordSpace( Distance )` | Enables division into words based on the width of the space and specifies the minimum width of the space to Distance. | | `Void WordsCount( Int, Int, Int, Int )` | Sets the number of words in the character string. The number of words is specified by means of a fuzzy interval. The default interval is `{-1,-1,INF,INF}` (i.e. the activity looks for hypotheses containing any number of words). | | `Void TotalChainLength( Int, Int, Int, Int )` | Sets the length of the character string (i.e. the number of characters in the string). The number of characters is specified by means of a fuzzy interval. **Example:** The code below tells the activity to look for a line 5 to 10 characters long. `TotalChainLength(4, 5, 10, 11);` | | `Void TotalGapLength( Distance, Distance, Distance, Distance )` | Specifies the maximum allowed total length of spaces in the string as a fuzzy interval. | | `Void MaxGapInLine( Distance )` | Sets the maximum distance between neighboring characters. When generating a hypothesis, the activity will add characters to the hypothesis until the distance between two neighboring characters does not exceed MaxGapInLine. | | `Void MaxRelativeGapInLine( Real )` | Sets the maximum distance between neighboring characters expressed as a percentage of the line height. | | `Void AllowChoppedWords( Logic )` | Specifies whether text objects which do not fit entirely within the left and right boundaries should be included into the hypothesis. The default value is **True**. | | `Void MaxXOutsidePart( Real )` | Specifies the part of the text object that may lie outside the search area in the horizontal dimension. The part of the text object is specified by a number from 0 to 1. A text object is included in the hypothesis if the part of the text object outside the search area is not bigger than specified by this parameter. | | `Void MaxYOutsidePart( Real )` | Specifies the part of the text object that may lie outside the search area in the vertical dimension. The part of the text object is specified by a number from 0 to 1. A text object is included in the hypothesis if the part of the text object outside the search area is not bigger than specified by this parameter. | | `Void AddAlphabet( String alphabet, Real portion, Logic isRestrictionStrong )` | Sets the character set and the allowed percentage of characters in the hypothesis. The flag isRestrictionStrong specifies whether a hypothesis is discarded when the allowed percentage is exceeded. If the flag is set to **False**, excess symbols will be considered to belong to no character set. The default setting is **True**. **Example:** The code below tells the activity to add a character set which consists of the characters №, #, % and \*, whose percentage in the hypothesis may not exceed 10%. **Note:** You can only add characters which are not part of any of the character sets specified for the current element. `AddAlphabet("№#%*", 0.1, True);` | | `Void RegularExpression( String )` | Sets the regular expression defining the text of the hypothesis. The regular expression syntax is described [here](/vantage/documentation/advanced-designer/activities/extraction-rules/character-string#regular-expression). **Example:** The two following regular expressions are equivalent and look for a string where characters may be arranged in one of two ways: 2 digits, - (hyphen), 1 digit; or Letter N, digit from 1 to 5, / (forward slash), 1 to 3 digits. `RegularExpression: ("([0-9]{2}[-][0-9])\|([N][1-5][/][0-9]{1-3})");` `RegularExpression: ("([0-9]{2}\"-\"[0-9])\|(\"N\"[1-5]\"/\"[0-9]{1-3})");` | | `Void WholeWordMode( Logic )` | Specifies whether only whole words must be considered as valid hypotheses. If the flag is set to **True**, hypotheses made up of parts of words will be discarded. The default setting is **False**. **Note:** This differs from the AllowedChoppedWords property as follows: AllowChoppedWords only considers words on the boundary of the search area, whereas WholeWordMode considers all words within a hypothesis. | | `Void RegularExpressionFromFile( String fileName, Int maxRecordsCount = 1000 )` | Uses a text file to set the regular expression defining the text of the hypotheses. The fileName argument sets the name of the text file. To speed up the search, only the first maxRecordsCount variants are used (the default setting is 1000). | | `Void RegularExpressionFromCatalog( String catalogParameterName, Int columnIndex, NamedValueArray searchCriteria = EmptyNamedValueArray, Int maxRecordsCount = 1000 )` | Uses the values in the column with index columnIndex from the data catalog referenced by the catalogParameterName parameter to set the regular expression defining the text of the hypotheses. You can determine column indexes using one of the following global functions: FieldNamesOfCatalog, GetCatalogColumnIndex, GetCatalogColumnIndices. The records may be filtered by the search criteria set using an array of named values, where each named value represents the column name and its expected value. The set will contain only the values from the records which meet the search criteria. To speed up the query, only the first maxRecordsCount records are accessed (the default setting is 1000). | | `Void Width( Distance, Distance, Distance, Distance )` | Specifies the width of the hypothesis specified as a fuzzy interval. | | `Void Height( Distance, Distance, Distance, Distance )` | Specifies the height of the hypothesis specified as a fuzzy interval. | | `Void TrimSymbols( String )` | Specifies the characters to be trimmed at the beginning and at the end of a hypothesis. | | `Void SimilarSymbolQuality( Real )` | Specifies a coefficient for the hypothesis quality if the hypothesis includes a character that looks similar to a character from the specified character set. | | `Void AllowedTextRotations( TextRotations )` | Specifies a set of allowed orientations for the recognized text. A hypothesis will only be formulated if the recognized text has an orientation that is allowed by this parameter. | # Date Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/flexilayout/element-properties/date Configure Date element properties including language settings, date formats, and quality parameters | Parameter | Description | | :------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `Void AddLanguage( String )` | Adds a language to be used for detecting dates to the list of already specified language(s). The parameter should be a string specifying any of the supported languages: "English", "Czech", "Danish", "Dutch", "Estonian", "Finnish", "French", "German", "Greek", "Hungarian", "Italian", "Latvian", "Lithuanian", "Norwegian", "Polish", "Portuguese", "Russian", "Spanish", "Swedish", "Turkish". | | `Void DateFormat( DateFormats )` | Date format. **Example:** Instruct the program that the date should be of the month, day, year format `DateFormat: MonthDayYear;` | | `Void DayFormat( DayFormatVariants )` | Day format. | | `Void IgnoreAccents( Logic value = true )` | Specifies whether diacritics should to be taken into account when looking for names of months. By default, diacritics are ignored. | | `Void Language( String )` | Specifies the language in which the name of the month will be written. | | `Void MaxDate( String )` | A string in the format DD/MM/YYYY which sets the Date parameter. Specifies a time period: DateTimePicker1... DateTimePicker2... **Example:** The code below tells the program that the date lies between January 1, 2000 and December 31, 2004 (format is irrelevant). `MinDate: "01/01/2000"; MaxDate: "31/12/2004";` | | `Void MaxXOutsidePart( Real )` | Specifies the part of the character that may extend beyond the search area horizontally. The part of the character is specified by a number from 0 to 1. Those characters are included in the hypothesis, that have the specified or smaller part outside the search area. | | `Void MaxYOutsidePart( Real )` | Specifies the part of the character that may extend beyond the search area vertically. The part of the character is specified by a number from 0 to 1. Those characters are included in the hypothesis, that have the specified or smaller part outside the search area. | | `Void MaxRelativeGapInLine( Real )` | The maximum distance between neighboring characters expressed as a percentage of the line height. | | `Void MinDate( String )` | A string in the format DD/MM/YYYY which sets the Date parameter. | | `Void MinQuality( Real )` | Sets the minimum quality of the hypothesis. | | `Void MonthFormat( MonthFormatVariants )` | Specifies the month format. **Example:** The code below tells the program that the month in the date may be written either as a word or as a two-digit number. `MonthFormat: DigitsWithLeadingZeroMonth + WordMonth;` | | `Void Separators( String )` | Specifies the possible date separators. **Example:** The code below tells the program that numbers in the date may be separated by dots (.) or forward slashes (/). `Separators: "./";` | | `Void YearFormat( YearFormatVariants )` | Specifies the year format. | | `Void AllowedTextRotations( TextRotations )` | Specifies a set of orientations of the recognized text in which an element search is allowed. | # Deep Learning Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/flexilayout/element-properties/deep-learning Parameters for configuring Deep Learning element properties in FlexiLayout. ## Field parameters During training, each word in a labeled field is attributed to a particular class in the neural network. When searching for fields on a new document (for example, one not used in training), the neural network will attribute each word in the new document to one or more classes, with varying degrees of confidence. Additional neural network features will then be used to combine the classified words into fields. These algorithms can be managed using the parameters listed below. | Parameter | Description | | :------------------------------------------------ | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `Void FieldName( String )` | The name of the field trained in the Deep Learning activity in the "Group name.Field name" format. | | `Void NetName( String )` | The name of the Deep Learning activity. | | `Void BreakOnSeparators( Logic )` | If set to `False`, words separated by vertical separators will be allowed in hypotheses. If set to `True`, words separated by vertical separators will be excluded from hypotheses. The default value is `True`. | | `Void MinWordCount( Int )` | The minimum number of words allowed in a hypothesis. The default value is 1. | | `Void MaxWordCount( Int )` | The maximum number of words allowed in a hypothesis. The default value is 1. | | `Void UseBestWordClass( Logic )` | If set to `True`, each word in a document will be attributed to the neural network class that corresponds to the best-fitting trained field. If set to `False`, each word in a document will be attributed to all classes with confidence values greater than or equal to `MinWordClassConfidence`. The default value is `False`. | | `Void StartFromBestWordClass( Logic )` | If set to `True`, hypotheses will be generated based only on the neural network class that corresponds to the best-fitting field for the first word. If set to `False`, hypotheses will be generated based on all the classes of the first word. The default value is `True`. | | `Void MinWordClassConfidence( Real )` | The minimum confidence level required for a word to be considered part of a field. The default value is 0.7. | | `Void MaxStartWordClassConfidence( Real )` | The maximum confidence level required for a word to be considered part of a field. The default value is 1. The confidence level of a word for belonging to a field must be lower than this value. | | `Void ConfidentClassThreshold( Real )` | The threshold for a reliable confidence level. The default value is 0.9. | | `Void MinLinkConfidence( Real )` | The minimum confidence level required to combine words into a hypothesis. The default value is 0.5. | | `Void MinAvgLinkConfidence( Real )` | The minimum average confidence level required to make a word part of a hypothesis. The default value is 0.5. | | `Void MinLinkConfidenceForUncertainWords( Real )` | The confidence level required to make a word part of a hypothesis even if its `MinWordClassConfidence` is not met. The word's `ConfidentClassThreshold` value must not equal that of any other class. The default value is 0.95. | ## Table parameters ### ProductItemsRepeatableGroup | Parameter | Description | | :------------------------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `Void NetName( String )` | The name of the Deep Learning activity. | | `Void MinLineClassConfidence( Real )` | The minimum line confidence required for a line to be considered a table row. The default value is 0.5. | | `Void MinColumnCountInRow( Int )` | The minimum number of columns that must be found within a table row. The default value is 2. | | `Void CurrencyNames( StringArray )` | Names of currencies that may appear next to numbers. Specify this parameter to improve detection of columns containing amounts. This parameter will be deprecated in future versions. | | `Void UnitsOfMeasure( StringArray )` | Units of measurement that may appear next to amounts of goods. Set this parameter to improve detection of columns containing amounts. This parameter will be deprecated in future versions. | ### ProductItemsColumn | Parameter | Description | | :--------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `Void FieldName( String )` | The name of the field that is trained by the Deep Learning activity. | | `Void MinClassConfidence( Real )` | The minimum confidence level required for a word to be considered as belonging to the column. It can be a decimal number from 0 to 1. The default value is 0.2. | | `Void IsDecimal( Logic )` | Indicates whether the column consists of decimal numbers. The default value is `False`. | | `Void IsDescription( Logic )` | Indicates whether the column contains descriptions and is not suitable for dividing the table into rows. The default value is `False`. | | `Void IsMultiline( Logic )` | Indicates whether the column contains multiline cells. The default value is `False`. | | `Void IsUnfixed( Logic )` | Indicates whether the column's position within the table is unfixed. The default value is `False`. | | `Void DivideRowsByColumn( Logic )` | Indicates whether the column is used to divide the table into rows. The default value is `True`. | # Key Value Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/flexilayout/element-properties/key-value Key Value elements in FlexiLayout have no element-specific methods and inherit the common search, control, and debug functions shared with other elements. A Key Value element is a Group element with predefined subelements. When you work with this element as one entity, its subelements are not visible and you cannot call their methods. To be able to access the methods of the subelements, turn the Key Value element into a usual Group element using command on the element's shortcut menu. A Key Value has no specific methods or properties. The methods and properties common to all elements are described in the following sections: * [Functions which limit the search area](/vantage/documentation/advanced-designer/activities/flexilayout/search-conditions/search-functions) * [Controlling searches](/vantage/documentation/advanced-designer/activities/flexilayout/search-conditions/controlling-searches) * [Debug functions which return information about the search area](/vantage/documentation/advanced-designer/activities/flexilayout/search-conditions/debug-functions) # Object Collection Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/flexilayout/element-properties/object-collection Parameters for configuring Object Collection elements in FlexiLayout, including object Type, height and width bounds, WholeWordMode, and UseRawText. | Parameter | Description | | :------------------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `Void Type( ImageObjectType )` | Sets the value of the Type parameter. If other object types were specified in the **What to search for** section in the **Properties** pane for the current element, they will be ignored after this function is called. **Example:** The code below sets a list of objects of type Barcode and pictures for the current Object Collection element. `Type: BarcodeObject + PictureObject;` which is the same as: `Type(BarcodeObject + PictureObject);` Calling this property will find all the objects of the Barcode and Picture type in the search area of the element. | | `Void MinObjHeight( Distance )` | Sets the minimal height. You can use any units of measurement. **Example:** The code below sets the minimum height to 10mm: `MinObjHeight(10mm);` | | `Void MaxObjHeight( Distance )` | Sets the maximal height. You can use any units of measurement. | | `Void MinObjWidth( Distance )` | Sets the minimal width. You can use any units of measurement. | | `Void MaxObjWidth( Distance )` | Sets the maximal width. You can use any units of measurement. | | `Void WholeWordMode( Logic )` | This flag specifies whether only whole text objects should be considered as hypotheses. When set to `True`, hypotheses consisting of word parts are ignored. The flag is set to `False` by default. **Note:** Restrictions on the height and width of objects are applied to words if the flag is set to `True` and to characters if the flag is set to `False`. | | `Void UseRawText( Logic )` | Enables the use in text searches of those unrecognized text-like objects that were assigned the type **Raw Objects** during pre-recognition. To enable this feature, call the method with parameter `True`. By default, only recognized text is used in text searches (i.e. the parameter is set to `False`). | | `Void MaxXOutsidePart( Real )` | Specifies the part of the object that may extend beyond the search area horizontally. The part of the character is specified by a number from 0 to 1. Those objects are included in the hypothesis that have the specified or smaller part outside the search area. | | `Void MaxYOutsidePart( Real )` | Specifies the part of the object that may extend beyond the search area vertically. The part of the character is specified by a number from 0 to 1. Those objects are included in the hypothesis that have the specified or smaller part outside the search area. | # Paragraph Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/flexilayout/element-properties/paragraph Configure Paragraph element properties including line spacing, alignment, dimensions, and text formatting options. | Parameter | Description | | :------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `Void MaxGapInLine( Distance )` | Sets the maximum distance between neighboring characters. | | `Void AllowChoppedWords( Logic )` | This flag specifies whether text objects which do not fit entirely within the left and right boundaries should be included into the hypothesis. **Example:** The code below tell the program that it may look for the element among the text objects that only partially fit within the search area. `AllowChoppedWords(True);` | | `Void MinQuality( Real )` | Sets the minimum quality of the hypothesis. | | `Void MaxXOutsidePart( Real )` | Specifies the part of the character that may extend beyond the search area horizontally. The part of the character is specified by a number from 0 to 1. Those characters are included in the hypothesis that have the specified or smaller part outside the search area. | | `Void MaxYOutsidePart( Real )` | Specifies the part of the character that may extend beyond the search area vertically. The part of the character is specified by a number from 0 to 1. Those characters are included in the hypothesis that have the specified or smaller part outside the search area. | | `Void IgnoreSeparators( Logic )` | This flag specifies whether to ignore separators during assembly of the paragraph. If the value is set to **True**, paragraphs that contain separators are not splitted. | | `Void MinLineWidth( Distance )` | The minimum width of the line. Applies during concatenation of lines in a paragraph. Lines that do not satisfy the condition are excluded. | | `Void MaxLineWidth( Distance )` | The maximum width of the line. Applies during concatenation of lines in a paragraph. Lines that do not satisfy the condition are excluded. | | `Void MinLinesCount( Int )` | The minimum number of lines in the paragraph. | | `Void MaxLinesCount( Int )` | The maximum number of lines in the paragraph. | | `Void Alignment( TextAlignment )` | Sets the alignment type. Applies during the check after the paragraph assembly. Paragraphs with incorrect alignment are excluded. Admissible values: `Alignment_None` - alignment is not checked, `Alignment_Left` - left alignment, `Alignment_Right` - right alignment, `Alignment_Justified` - justified, `Alignment_Center` - center alignment. | | `Void MaxAlignmentError( Distance )` | The admissible error of alignment. Is calculated as the difference between the maximum and minimum coordinates of the corresponding line edge (the edge is defined by the alignment type). | | `Void AllowFirstLineIndent( Logic )` | The admissible error of alignment. Is calculated as the difference between the maximum and minimum coordinates of the corresponding line edge (the edge is defined by the alignment type). | | `Void MaxFirstLineIndent( Distance )` | Specified whether the first line indent is allowed. When set to **True**, the first line can be indented for the Alignment\_Left, Alignment\_Right and Alignment\_Justified alignment types. For the Alignment\_Left and Alignment\_Justified types, the left indent is allowed. For Alignment\_Right, the right indent is allowed. | | `Void AllowLastHangingLine( Logic )` | The maximum allowed indent of the first line. If a negative value is specified, a hanging indent is allowed. | | `Void MaxInterlineSpace( Distance )` | This flag specifies whether the paragraph can end with a shorter line. When set to **True**, the minimum length of last line of the paragraph is not restricted. | | `Void MaxRelativeInterlineSpace( Real )` | The maximum distance between the neighboring lines expressed as a percentage of the height of the top line. | | `Void MaxLineHeightSpread( Real )` | The maximum variation in the height of the lines; calculated as the difference in height between the tallest line and the smallest line divided by the height of the tallest line. | | `Void MaxLineLengthSpread( Real )` | The maximum variation in the length of the lines; calculated as the difference in length between the longest line and the shortest line divided by the length of the longest line. | | `Void MinHorLineOverlap( Real )` | The minimum horizontal overlap of the neighboring lines; calculated as the length of the common segment of the lines divided by the length of the shortest line | | `Void LinesCount( IntFuzzyInterval )` | The number of lines in the paragraph. | | `Void FragmentWidth( IntFuzzyInterval )` | The width of the paragraph in characters. | | `Void MaxLineHeight( Distance )` | The maximum height of the characters (font size). | | `Void MinLineHeight( Distance )` | The minimum height of the characters (font size). | | `Void MaxRelativeGapInLine( Real )` | The maximum distance between neighboring characters expressed as a percentage of the line height. | | `Void FilterStamp( Logic )` | When recognizing payment documents, stamps placed over text may pose a problem. Typically, a stamp is placed in the bottom right corner of the text. The text fragment with a superimposed stamp is practically illegible and is recognized by the program as bits of phrases which make no sense. To avoid this, do not include the stamped text fragment into the block and key in the text manually from the image (and you won't have to remove the incorrectly recognized text). When set to **True**, the program will analyze the bottom right corner of the search area and remove any bits of text that may have been caused by a superimposed stamp. | | `Void AllowedTextRotations( TextRotations )` | Specifies a set of orientations of the recognized text in which an element search is allowed. | # Phone Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/flexilayout/element-properties/phone Parameters for configuring Phone elements in FlexiLayout, including digit counts, prefixes, separators, city-code delimiters, and per-character penalties. | Parameter | Description | | :------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `Void MinDigitsCount( Int )` | Sets the minimum number of digits in the phone number. | | `Void MaxDigitsCount( Int )` | Sets the minimum number of digits in the phone number. | | `Void Prefixes( String )` | Sets the possible phone prefixes. Prefixes must be separated by commas. Commas may be followed by spaces. **Example:** `Prefixes: "tel, tel., phone";` | | `Void PrefixOmissionQuality( Real )` | Sets the penalty for a missing phone prefix. | | `Void Separators( String )` | Sets the symbols used to separate digits in the phone number. **Example:** `Separators: "-/";` | | `Void AddCodeDelimiters( String, String )` | Sets the opening and closing brackets for the city code. The parameters of the function are one-character strings. The first parameter is an opening bracket, the second parameter is a closing bracket. **Example:** `AddCodeDelimiters: "{", "}";` | | `Void PossibleDigitQuality( Real )` | Sets the penalty for each missing wrong character in the phone number. The default value is 0.97. | | `Void UniformDigitStringQuality( Real )` | Sets the penalty for a phone number which consists of only digits evenly distributed on the image. Used to distinguish telephone numbers from other sequences of digits, such as zip codes, account numbers, etc. The default value is 0.97. | | `Void MaxXOutsidePart( Real )` | Specifies the part of the character that may extend beyond the search area horizontally. The part of the character is specified by a number from 0 to 1. Those characters are included in the hypothesis that have the specified or smaller part outside the search area. | | `Void MaxYOutsidePart( Real )` | Specifies the part of the character that may extend beyond the search area vertically. The part of the character is specified by a number from 0 to 1. Those characters are included in the hypothesis that have the specified or smaller part outside the search area. | | `Void MaxRelativeGapInLine( Real )` | The maximum distance between neighboring characters expressed as a percentage of the line height. | | `Void AllowedTextRotations( TextRotations )` | Specifies a set of orientations of the recognized text in which an element search is allowed. | # Region Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/flexilayout/element-properties/region Region elements in FlexiLayout have no element-specific methods and inherit the common search, control, and debug functions shared with other elements. A Region element has no specific methods or properties. The non-specific methods and properties are described in the following sections: * [Functions which limit the search area](/vantage/documentation/advanced-designer/activities/flexilayout/search-conditions/search-functions) * [Controlling searches](/vantage/documentation/advanced-designer/activities/flexilayout/search-conditions/controlling-searches) * [Debug functions which return information about the search area](/vantage/documentation/advanced-designer/activities/flexilayout/search-conditions/debug-functions) # Repeating Group Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/flexilayout/element-properties/repeating-group Parameters for configuring Repeating Group elements in FlexiLayout, including MinRepetitions, MaxRepetitions, PaginalMode, and per-page repetition bounds. | Parameter | Description | | :--------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `Void MinRepetitions( Int )` | Sets the minimum number of group instances in the document. | | `Void MaxRepetitions( Int )` | Sets the maximum number of group instances in the document. | | `Void PaginalMode( Logic value = true )` | Sets the Paginal search mode for group instances. | | `Void MinRepetitionsOnPage( Int )` | Sets the minimum number of instances per one page. If the minimum number of instances is not detected, the repeating group is considered not detected. | | `Void MaxRepetitionsOnPage( Int )` | Sets the maximum number of instances per one page. If a required number of group instances is detected on a page, the search stops on this page and continues on the next one. | # Separator Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/flexilayout/element-properties/separator Configure Separator element properties including orientation, length, quality, and gap parameters. | Parameter | Description | | :--------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `Void Mode( Direction )` | Separator orientation. **Example:** The code below tells the program that the separator is horizontal. `Mode: Horizontal;` | | `Void MinQuality( Real )` | Sets the minimum quality of the hypothesis. | | `Void MinRelativeLength( Real )` | Sets the minimum length of the separator which lies within the search area relative to the length of the search area. See Separator, Min relative length. | | `Void PenaltyLimitForLength( Real )` | Specifies the minimum quality that the hypothesis may get for its length when calculating its quality (number from 0 to 1). The longer the separator object, the higher the quality. The highest quality of 1 has the separator whose length equals the length of the search area. As the relative length of the separator decreases from 1 to 0, the quality of the hypotheses decreases inn direct proportion from 1 to PenaltyLimitForLength. **Note:** This function was introduced to replace Void MaxPenalty( Real ), which is obsolete and will be removed from future versions. If you previously used Max length penalty, set PenaltyLimitForLength to (1 - \[Max length penalty]). | | `Void MinSeparatorLength( Distance )` | Sets the minimum length of a separator. | | `Void MaxSeparatorLength( Distance )` | Sets the maximum length of a separator. | | `Void MaxSeparatorGap( Distance )` | The maximum distance between two separator objects that can be included in one hypothesis and considered to be one separator. **Example:** The code below tells the program that several horizontal separators located on one level must be considered as one separator if the gap between them does not exceed 20 dots. `Mode: Horizontal; MaxSeparatorDistance(0mm); MaxSeparatorGap(20dt);` | | `Void MaxSeparatorRelativeGap( Real )` | The maximum relative distance between two separator objects that can be included in one hypothesis and considered to be one separator. The relative distance is calculated as follows: \[distance between separator fragments]/\[total length of the separator]. | | `Void MaxSeparatorGap( Distance, Real )` | Sets absolute (d) and relative (r) constraints on the length of the space. | | `Void MaxSeparatorDistance( Distance )` | The maximum relative distance between two parallel separator objects (along a perpendicular line) that can be included in one hypothesis and considered to be one separator. **Example:** The code below tells the program that several vertical separators must be considered as one separator if the distance between them does not exceed 1 mm. `Mode: Horizontal; MaxSeparatorDistance(1mm);` | | `Void FitsWithinSearchArea( Logic )` | Specifies that the separator must fit entirely within the search area. | # Specifying Element Properties Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/flexilayout/element-properties/specifying-element-properties Learn how to change element properties in the Search Conditions section of the Code Editor for FlexiLayout elements. If required, you can change the properties of an element in the **Search Conditions** section of the Code Editor. Below is a list of elements that can be edited in the **Search Conditions** section. ## Example The following checks whether elements Element1 and Element2 have been detected or not. If at least one of the elements have not been detected, the program is instructed to look for a vertical separator. Otherwise, the program should look for a horizontal separator. ``` if (Element1.IsNull == False) or (Element2.IsNull == False) then Mode: Vertical; else Mode: Horizontal; ``` Element properties are described in detail in the sections that follow. # Static Text Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/flexilayout/element-properties/static-text Configure Static Text element properties in FlexiLayout — quality, error tolerance, gap and overlap limits, case/diacritic handling, and searching text from files and data catalogs.

Parameter

Description

Void MinQuality( Real )

Sets the minimum quality of the hypothesis.

Void MaxErrors( Int )

Sets the maximum number of errors in the hypothesis.

Void MaxErrorsPart( Real )

Sets the maximum percentage of errors in the hypothesis.

Void MaxErrors( Int number, Real part )

Sets the maximum number of errors in the hypothesis: number – absolute number, part – percentage.

E.g.

The code below specifies that the absolute number of errors may not exceed 3, and the percentage of errors may not exceed 20%.

MaxErrors(3, 0.2);

Note. Out of the two conditions the activity will use the strictest.

Void MaxGapInLine( Distance )

Sets the maximum distance between neighboring characters.

When generating a hypothesis, the activity will add characters to the hypothesis until the distance between two neighboring characters does not exceed MaxGapInLine.

E.g.

The code below tells the activity that the maximum distance between neighboring characters may not exceed 5 mm, otherwise a null hypothesis is generated.

MaxGapInLine(5mm);

Void MaxRelativeGapInLine( Real )

Sets the maximum distance between neighboring characters expressed as a percentage of the line height.

Void AllowChoppedWords( Logic )

The flag specifies whether text objects which do not fit entirely within the left and right boundaries should be included into the hypothesis. The default value is True.

E.g.

The code below tells the activity to look for the element only among the text objects which fit entirely within the search area.

AllowChoppedWords(False);

Void MaxXOutsidePart( Real )

Specifies the part of the text object that may lie outside the search area in the horizontal dimension. The part of the text object is specified by a number from 0 to 1. A text object is included in the hypothesis if the part of the text object outside the search area is not bigger than specified by this parameter.

Void MaxYOutsidePart( Real )

Specifies the part of the text object that may lie outside the search area in the vertical dimension. The part of the text object is specified by a number from 0 to 1. A text object is included in the hypothesis if the part of the text object outside the search area is not bigger than specified by this parameter.

Void CaseSensitive( Logic Value=true )

Distinguishes between lowercase and uppercase letters if set to True.

Void IgnoreAccents( Logic value = true )

Ignores/does not ignore diacritics when searching for text. If the value is set to True, diacritics will be ignored (for example, the words "café" and "cafe" will be treated as identical).

Void SearchTextFromFile( String fileName, Int maxRecordsCount = 1000 )

Specifies the set of strings to be searched on an image with the help of a fileName text file. For more information about using TXT files, see User Dictionaries and Static Text Element.

To speed up the search, only the first maxRecordsCount variants are used (the default setting is 1000).

E.g.
SearchTextFromFile: "Keywords.txt", 500;

Void SearchTextFromCatalog( String catalogParameterName, Int columnIndex, NamedValueArray searchCriteria = EmptyNamedValueArray, Int maxRecordsCount = 1000 )

Retrieves values from the column with index columnIndex in the data catalog referenced by the catalogParameterName parameter and uses these values as the set of strings to be searched on an image. You determine column indexes using one of the following global functions: FieldNamesOfCatalog, GetCatalogColumnIndex, GetCatalogColumnIndices.

The records may be filtered by the search criteria which are set using an array of named values, where each named value represents the column name and its expected value. The set of strings to find will contain only the values from the records which meet the search criteria.

E.g.

The code below tells the activity to search for values from the 2nd column of the data catalog referenced by the CompanyCatalog parameter:

SearchTextFromCatalog( "CompanyCatalog", 2 );

The code below filters the records based on the value of the "CompanyName" column. The value from the 2nd column will be added to the text to find only if the value of the "CompanyName" column for the corresponding record is "ABBYY".

NamedValueArray searchCriteria = NamedValue( "CompanyName", "ABBYY" );
SearchTextFromCatalog( "CompanyCatalog", 2, searchCriteria );

The code below uses an auxiliary method GetCatalogColumnIndex to get the column index by its name:

SearchTextFromCatalog( "CompanyCatalog", GetCatalogColumnIndex( "CompanyCatalog", "ColumnName" ));

To speed up the query, only the first maxRecordsCount records are accessed (the default setting is 1000).

Void AllowIntersectPercent( Real )

Specifies the maximum allowed percentage of vertical overlap for two lines of text (the default setting is 15). You may want to use this parameter for texts with tight line spacing.

Void SearchText( String )

Specifies the text that will be searched on an image. The string may contain several search variants separated with "|" (the OR operator). For more information, see Type-specific Properties of the Static Text Element.

The following methods are available if the text to find consists of several words

Void NextLinePenalty( Real )

Sets a penalty for line breaks. The penalty is a number from 0 to 1. The quality of the hypothesis will be multiplied by this number as many times as there are line breaks in the phrase. If line breaks are allowed in the phrase, set this parameter to 1 (multiplying the quality of the hypothesis by 1 will not downgrade its quality).

Void OmissionPenalty( Real )

Sets a penalty for missing words. The penalty is a number from 0 to 1. The quality of the hypothesis will be multiplied by this number as many times as there are missing words in the phrase. If some words may be absent in the phrase, set this parameter to 1 (multiplying the quality of the hypothesis by 1 will not downgrade its quality).

Void WholeWordMode( Logic )

Specifies whether only whole text objects must be considered as valid hypotheses. When set to True, hypotheses consisting of parts of words are ignored. The default setting is False.

Note. This method is different from AllowChoppedWords in that AllowChoppedWords affects only hypotheses generated from words on the boundary of the search area, whereas WholeWordMode affects the generation of all hypotheses.

Void AllowEmbeddedHypotheses( Logic )

Sets the hypothesis formulation mode. To formulate all possible hypotheses (including overlapping and nested), set the value to True. To formulate hypotheses of maximum length, set to False.

E.g.

The code below tells the activity that it must formulate the longest hypothesis.

AllowEmbeddedHypotheses(False);

Void MaxLineBreakDistance( Distance )

Sets the horizontal distance between the words on different lines if line breaks are allowed in the phrase.

Void SuggestOnlySimilarChars( Logic value )

Specifies which characters the activity can use as replacement characters when performing a fuzzy search. When set to True, limits the activity to only using characters with a similar outline as replacement characters.

Void AllowedTextRotations( TextRotations )

Specifies a set of allowed orientations for the recognized text. A hypothesis will only be formulated if the recognized text has an orientation that is allowed by this parameter.

# White Gap Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/flexilayout/element-properties/white-gap Parameters for configuring White Gap elements in FlexiLayout, including orientation Mode, MinGapLevel, MaxGapLevel, MinGapWidth, and object Type filters. | Parameter | Description | | :----------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `Void Mode( Direction )` | White Gap orientation. **Example:** The code below tells the program to look for a vertical gap. `Mode: Vertical;` | | `Void MaxGapLevel( Distance )` | Sets the maximum level of the histogram. This property allows excluding false histogram maximums which may be caused by large numbers of vertically arranged accidental objects in the search area when looking for a vertical gap or horizontally arranged objects when looking for a horizontal gap. Measured in the user-defined units of measurement. The default value is 150dot. **Example:** The code below tells the program that the maximum gap level may not exceed 150 dots. `MaxGapLevel(150dt);` | | `Void MinGapLevel( Distance )` | Sets the minimum level of the histogram. This property allows other objects in the search area. If the height of the histogram of the objects is greater than the number specified in this field, the program will consider the search area to contain no gaps. Measured in the user-defined units of measurement. The default value is 37dot. | | `Void MinGapWidth( Distance )` | Sets the minimum width/height of a White Gap in the direction perpendicular to Orientation. Gaps of smaller width/height will be ignored. Measured in the user-defined units of measurement. The default value is 20dot. **Example:** The code below tells the program that the minimum height of the horizontal gap is 50 dot. `Mode: Horizontal; MinGapWidth(50dt);` | | `Void Type( ImageObjectType )` | Searches for a white gap among the objects of a particular type. (By default, the program will look for white gaps among any of the objects detected on the image.) **Example:** The code below specifies that the program must look for white gaps only among text objects. `Type: AnyText+InvertedTextObject;` | | `Void UseRawText( Logic )` | Enables the use in text searches of those unrecognized text-like objects that were assigned the type **Raw Objects** during pre-recognition. To enable this feature, call the method with parameter **True**. By default, only recognized text is used in text searches (i.e. the parameter is set to **False**). | # Global Functions Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/flexilayout/global-functions Comprehensive reference for all global functions available in the FlexiLayout language. ## Operations with Areas | Function | Description | | :------------------------------------------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `Area Max( Area a1, Area a2 )` | Returns the maximum value from a1, a2. | | `Area Min( Area a1, Area a2 )` | Returns the minimum value from a1, a2. | | `Area ObjectsArea( Rect, ImageObjectType )` | Returns the area of the objects of the specified type within the specified rectangle. Works in global coordinates. | | `Area ObjectsIntersectionArea( Rect, ImageObjectType )` | Returns the area of the objects of the specified type within the specified rectangle. If the area of the objects goes beyond the specified rectangle, returns the intersection of the area of the objects and the specified rectangle. Works in global coordinates. | ## Operations with Distances | Function | Description | | :----------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `Distance Abs( Distance )` | Returns the absolute value of a distance. | | `Distance AverageInterLineInterval()` | Returns the average height of the text lines on the page. The function may only be used if the maximum and minimum numbers of pages in the document are set to 1. For a multi-page document, use the corresponding method of the type Page: `Page( N ).AverageLineHeight`. | | `Distance AverageLineHeight()` | Returns the average distance between the text lines on the page. The function may only be used if the maximum and minimum numbers of pages in the document are set to 1. For a multi-page document, use the corresponding method of the type Page: `Page( N ).AverageInterLineInterval`. | | `Distance Min( Distance d1, Distance d2 )` | Returns the minimum value from d1, d2. | | `Distance Max( Distance d1, Distance d2 )` | Returns the maximum value from d1, d2. | ## Operations with Numeric Data Types | Function | Description | | :----------------------------- | :----------------------------------------------------------------- | | `Int abs( Int )` | Returns the absolute value of a number. | | `Int Ceil( Real )` | Returns the smallest integer that is not less than the argument. | | `Int Floor( Real )` | Returns the biggest integer that is not greater than the argument. | | `Int Max( Int n1, Int n2 )` | Returns the maximum value from n1, n2. | | `Int Min( Int n1, Int n2 )` | Returns the minimum value from n1, n2. | | `Int Round( Real )` | Returns an integer closest in value to the argument. | | `Real Min( Real d1, Real d2 )` | Returns the minimum value from d1, d2. | | `Real Max( Real d1, Real d2 )` | Returns the maximum value from d1, d2. | ## Operations with Rectangles and Regions | Function | Description | | :------------------------------------------------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------- | | `Rect DocumentRect()` | Returns the rectangle of the entire document (in global coordinates). | | `Rect PageRect()` | Returns the rectangle of the entire image. The function may only be used if the maximum and minimum numbers of pages in the document are set to 1. | | `Region FormRegion( RectArray included, RectArray excluded )` | Creates a region that includes the array of included rectangles, and excludes the array of excluded rectangles. | ## String Operations

Function

Description

String Chr( Int )

Returns a string using the specified Unicode code of the character (code must be written in decimal system).

String LCase( String )

Returns a string obtained from the specified string by changing all of its characters to lower case.

String RealToStrVariants( Real value, String fractionalPartSeparators, Int maxDigitsCountInFractionalPart = 2 )

Creates string representations, separated by a vertical bar ("|"), for the specified real number "value," decimal separators fractionalPartSeparators, and the maximum number of digits in the fractional part. For example, for the arguments 19, ".,", 2 the result is "19|19.0|19.00|19,0|19,00".

String Str( Int )
String Str( Logic )
String Str( Real )
String Str( XInterval )
String Str( YInterval )
String Str( DistInterval )
String Str( FuzzyRect )
String Str( Hypothesis )
String Str( RectArray )
String Str( Region )
String Str( Area )
String Str( Quality )
String Str( Distance )
String Str( PageInterval )

String representation of a data type.

String RemoveSpaces( String )

Returns a string obtained from the specified string by removing all of the spaces in the string.

String UCase( String )

Returns a string obtained from the specified string by changing all of its characters to upper case.

## Access to XML Files | Function | Description | | :--------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `StringArray ReadFromXML( String filename, String xPathQuery )` | Reads an array of strings from the "filename" XML file. The strings are obtained by calculating the passed xPath query "xPathQuery." For more information about using XML files, see User Dictionaries. **Note:** To make the code clearer, you can define constants with replaceable parameters for frequently used xPath queries and use these constants in function calls. | | `String ReadSingleStringFromXML( String filename, String xPathQuery )` | Reads a string from the "filename" XML file. The string is obtained by calculating the passed xPath query "xPathQuery." For more information about using XML files, see User Dictionaries. | ## Type Conversion and Checks

Function

Description

Logic IsReal( String numberString, String separators = ".,", Logic isStrictMode = false )

Checks that the inputString string can be safely converted to a real number. The list of allowed decimal separators is set by the "separators" argument.

Logic IsRealFuzzy( String, String separators = defaultDecimalSeparators, Logic isStrictMode = false )

Checks if the string inputString can be safely converted into a real number taking into account possible recognition errors in the string.

Logic IsInt( String inputString, Logic isStrictMode = false )

Checks that the inputString string can be safely converted to an integer number.

Logic IsIntFuzzy( String inputString, Logic isStrictMode = false )

Checks if the string inputString can be safely converted into an integer taking into account possible recognition errors in the string.

Real StrToRealFuzzy( String, String separators = defaultDecimalSeparators, Logic isStrictMode = false )

Returns the result of converting the value of the string inputString into a real number taking into account possible recognition errors.

Real StrToReal( String numberString, String separators = ".,", Logic isStrictMode = false )

Returns the result of converting the inputString string into a real number. Spaces are omitted.

Example
Real realValue;
String valueFromDocument = SearchElements.StaticText.Value();
Logic canBeConverted = IsReal(valueFromDocument, ".");
if(canBeConverted) then realValue = StrToReal(valueFromDocument, ".");

Int StrToInt( String inputString, Logic isStrictMode = false )

Returns the result of converting the inputString string value into an integer. Spaces are omitted.

Example
Int integralValue;
String valueFromDocument = SearchElements.StaticText.Value();
Logic canBeConverted = IsInt(valueFromDocument, true);
if(canBeConverted) then integralValue = StrToInt(valueFromDocument, true);

Int StrToIntFuzzy( String, Logic isStrictMode = false )

Returns the result of converting the value of the string inputString into an integer taking into account possible recognition errors.

Int LogicToInt( Logic value )

Returns "1" if the value is true and "0" if the value is false.

## Operations with Coordinates | Function | Description | | :------------------------------------------------------------------ | :---------------------------------------------------------------- | | `XCoordinate Min( XCoordinate x1, XCoordinate x2 )` | Returns the minimum value from x1, x2. | | `XCoordinate Max( XCoordinate x1, XCoordinate x2 )` | Returns the maximum value from x1, x2. | | `XCoordinate MiddleBetween( XCoordinate x1, XCoordinate x2 )` | Returns the X-coordinate calculated as ( x1 + x2 ) / 2. | | `XCoordinate Between( XCoordinate x1, XCoordinate x2, Real ratio )` | Returns the X-coordinate calculated as x1 + ( x2 – x1 ) \* ratio. | | `YCoordinate Min( YCoordinate y1, YCoordinate y2 )` | Returns the minimum value from y1, y2. | | `YCoordinate Max( YCoordinate y1, YCoordinate y2 )` | Returns the maximum value from y1, y2. | | `YCoordinate MiddleBetween( YCoordinate y1, YCoordinate y2 )` | Returns YInterval calculated as ( y1 + y2 ) / 2. | | `YCoordinate Between( YCoordinate y1, YCoordinate y2, Real ratio )` | Returns YInterval calculated as y1 + ( y2 – y1 ) \* ratio. | | `XInterval MiddleBetween( Xinterval x1, XInterval x2 )` | Returns XInterval calculated as ( x1 + x2 ) / 2. | | `XInterval Between( Xinterval x2, Xinterval x2, Real ratio )` | Returns XInterval calculated as x1 + ( x2 – x1 ) \* ratio. | | `YInterval MiddleBetween( Yinterval y1, Yinterval y2 )` | Returns YInterval calculated as ( y1 + y2 ) / 2. | | `YInterval Between( Yinterval y1, Yinterval y2, Real ratio )` | Returns YInterval calculated as y1 + ( y2 – y1 ) \* ratio. | ## Access to Data Catalogs To access a data catalog, you should first create a skill parameter referring to that catalog, and then use the parameter name in the method calls. | Function | Description | | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `Logic TestAccessToCatalog( String catalogParameterName )` | Tests access to the data catalog referenced by the catalogParameterName parameter. | | `Logic TestCatalogSearchCriteria( String catalogParameterName, StringArray searchColumns, NamedValueArray searchCriteria )` | Checks the validity of the search criteria set for the data catalog. The search criteria are set using an array of named values, where each named value represents a column name and its expected value. The searchColumns array specifies which columns of the data catalog record are to be included in the response. | | `StringArray FieldNamesOfCatalog( String catalogParameterName )` | Returns a list of all column names in the data catalog referenced by the catalogParameterName parameter. The columns are arranged by index number in ascending order. | | `StringArray FieldNamesOfCatalog( String catalogParameterName, StringArray searchColumnNames )` | Returns a list of the data catalog column names that appear in the searchColumnNames array (case-insensitive). The columns are arranged by index number in ascending order. You can use this method to determine column indexes. | | `Int RecordCountOfCatalog( String catalogParameterName, StringArray searchColumns, NamedValueArray searchCriteria = EmptyNamedValueArray )` | Returns the number of records in the data catalog that meet the specified search criteria. | | `Void PrepareRecordsetOfCatalog( String catalogParameterName, StringArray searchColumns, NamedValueArray searchCriteria = EmptyNamedValueArray, Int maxRecordsCount = 1000 )` | Fetches data catalog records which meet the search criteria. | | `StringArray RecordOfCatalog( String catalogParameterName, StringArray searchColumns, NamedValueArray searchCriteria = EmptyNamedValueArray, Int rowIndex )` | Returns a record from the data catalog that meets the search criteria. | | `Quality ValidateByCatalog( String word, String catalogParameterName, Int columnIndex, NamedValueArray searchCriteria = EmptyNamedValueArray, Int maxErrors, Rational maxErrorsPart, Logic ignoreSpaces = true, Int maxRecordsCount = 1000 )` | Checks the specified word string by comparing it with the values of the column with index columnIndex in the data catalog. Returns the quality of matching between the specified string and the best match from the data catalog column. | | `Int GetCatalogColumnIndex( String catalogParameterName, String columnName )` | Returns the index of the first column with the given name found in the data catalog referenced by the catalogParameterName parameter. The column name is case insensitive. | | `IntArray GetCatalogColumnIndices( String catalogParameterName, String columnName )` | Returns indexes of all columns with the given name found in the data catalog referenced by the catalogParameterName parameter. The column name is case insensitive. | ## Access to Skill Parameters of Type Text | Function | Description | | :--------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------- | | `Logic NamedParameterStringExists( String parameterName )` | Checks whether a text parameter with the given name exists in the skill. The parameter name is case sensitive. | | `String GetNamedParameterString( String parameterName )` | Returns the value of the text parameter with the given name. The parameter name is case sensitive. | ## Miscellaneous | Function | Description | | :--------------------------------------------- | :---------------------------------------------------------------------------------------------------------------- | | `InputFieldArray InputFields()` | Returns a collection of objects - fields found in the document during the previous stages of document processing. | | `Int PagesCount()` | Returns the number of pages in the document. | | `Page Page( Int PageNumber )` | Returns the Page object representing the page with the given number. | | `Logic IsOnSameLine( Hypothesis, Hypothesis )` | Checks if the hypotheses intersect vertically. | # Amount of Money Hypothesis Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/flexilayout/hypotheses/amount-of-money-hypothesis Properties of Amount of Money hypotheses in FlexiLayout, exposing the numerical value, currency name, and rectangles for the integer and fractional parts. | Parameter | Description | | :-------------------------- | :------------------------------------------------------------------------------------------------- | | `Real Value()` | The found numerical value. | | `Rect CurrencyNameRect()` | The rectangle which contains the name of the currency. Empty if no currency name has been found. | | `Rect FractionalPartRect()` | The rectangle which contains digits following the separator. Empty if there is no fractional part. | | `Rect IntegerPartRect()` | The rectangle which contains digits before the separator. Always not empty. | | `String CurrencyName()` | The found currency name. Returns an empty string if the currency name is not found. | # Barcode Hypothesis Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/flexilayout/hypotheses/barcode-hypothesis Properties of Barcode hypotheses in FlexiLayout, exposing the recognized barcode value via the Value() accessor on the hypothesis. | Parameter | Description | | :--------------- | :----------------------------------- | | `String Value()` | The value of the recognized barcode. | # Character String Hypothesis Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/flexilayout/hypotheses/character-string-hypothesis Properties and behavior of Character String hypotheses in FlexiLayout. | Parameter | Description | | :--------------- | :---------------------------------------------------------------------- | | `String Value()` | The value of the text on the image within the region of the hypothesis. | The program considers all the text objects which horizontally intersect the search area (vertically the objects must fit within the search area in their entirety). The text objects are then grouped into lines. Lines are built left to right. The program stops building a line when the maximum length of space (set in the **Max. space length** property) is exceeded. In the resulting lines, the program identifies character strings, each of which contains characters only from one of the user-defined character sets. In a similar fashion, the program divides lines into fragments. Next, the program formulates a hypothesis for each of the fragments. Depending on whether the **Allow embedded hypotheses** is selected or not, hypothesis are formulated on two different principles. Suppose the program detected three fragments at a previous stage. If the **Allow embedded hypotheses** is selected, hypotheses are formulated as follows: hypothesis 1: fragment 1 hypothesis 2: fragment 1 + fragment 2 hypothesis 3: fragment 1 + fragment 2 + fragment 3 hypothesis 4: fragment 2 hypothesis 5: fragment 2 + fragment 3 hypothesis 6: fragment 3 For each hypothesis, the program will check that the portion of characters of each character set does not exceed the value set in the **Portion in text, %** field. Similarly, the program checks that the percentage of non-alphabet characters does not exceed the value set in the **Allowed errors** field. If it least one of the checks fails, no hypothesis is formulated. If the **Allow embedded hypotheses** is not selected, the embedded hypotheses in the list above will be discarded. Embedded hypotheses are those which are contained within another hypothesis in the list above. If the checks were successful for all of the hypotheses, only the following hypothesis will remain: fragment 1 + fragment 2 + fragment 3. Thus, if the **Allow embedded hypotheses** is not selected, the program formulates hypotheses of maximum length which meet all of the conditions. Even though embedded hypotheses are excluded, hypotheses may intersect. This may be a stand-alone character or word, or a string of characters which are part of other hypotheses but for which no separate hypotheses have been formulated. For example, the program may formulate two hypotheses (i.e. two strings) - one ending in a certain word or phrase and another starting with that word or phrase. E.g. hypothesis 1: fragment 1 + fragment 2 hypothesis 2: fragment 2 + fragment 3 Once all the possible hypotheses have been generated, the program calculates the Search condition quality for each (this is an estimate of how well a hypothesis meets the search constraints set in the **Search Conditions**). At this stage, the quality is calculated based on whether the length of the hypothesis in characters falls within the fuzzy interval specified in the **Character count** property, on whether the length of the total gap in the line falls within the fuzzy interval specified in `TotalGapLength`, and on whether the number of words in the line fall within the fuzzy interval specified in the **Word count**. The overall quality of a hypothesis is calculated by multiplying all the qualities. # Date Hypothesis Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/flexilayout/hypotheses/date-hypothesis Properties of Date hypotheses in FlexiLayout, exposing Day, Month, and Year integer accessors plus the recognized text Value of the date region. | Parameter | Description | | :--------------- | :--------------------------------------------------------------------------------- | | `Int Day()` | The value of the day in the date. | | `Int Month()` | The value of the month in the date. | | `Int Year()` | The value of the year in the date. | | `String Value()` | The value of the recognized text on the image within the region of the hypothesis. | # Hypotheses for All Types of Element Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/flexilayout/hypotheses/hypothesis-for-all Common properties and methods available for hypotheses across all FlexiLayout element types. A hypothesis for an element can be either found or not found. A found hypothesis, as a rule, is formulated on the basis of one or several image objects or their fragments (an exception is the White Gap element which may contain no image objects at all). A found hypothesis for a simple element is always a continuous region. Hypotheses for White Gap, Separator, and Barcode elements are always single rectangles. If a hypothesis is formulated on the basis of a set of detected image objects, e.g. a hypothesis for a Paragraph element, the region of the hypothesis will be built on the basis of the array of rectangles of the detected objects. The region created in this way can be obtained by the `Region` method of the hypothesis. When displaying the region of the hypothesis on the image, or when creating a block on the basis of the hypothesis, the boundaries of the region do not exactly follow the boundaries of each rectangle. Instead, the boundaries of the search area are smoothed out for better visualization. A region created in this way can be obtained using the `SimplifiedRegion` method of the hypothesis. The `Region` and `SimplifiedRegion` methods can be used either in the **Search Conditions** section (when describing the search area of the element), or when describing the properties of the block and using the already found elements. If a hypothesis was not found, it coincides with the fuzzy rectangle of its search area. When displaying a non-found hypothesis on the image, the program will draw the external rectangle of the fuzzy rectangle. The Left, top, Right, and Bottom boundaries of any hypothesis are ranges. For each found hypothesis, the range degenerates to a point, i.e. `Left.Start = Left.End`, `top.Start = top.End`, etc. For a non-found hypothesis, the ranges of the boundaries coincide with the ranges of its search area. Accessing generated hypotheses and their properties in the code of the corresponding dialog boxes of blocks and elements provides additional tools for setting up the FlexiLayout. Element hypotheses can be accessed by the names of the elements. To access a hypothesis for the current element in the **Hypotheses Evaluation** section, you can use only the name of the property. Hypotheses and their properties are accessed in read-only mode. Hypotheses for elements can be accessed in the **Search Conditions** and **Hypotheses Evaluation** sections as well as in the field's Code Editor section. In **Search Conditions**, you can access the generated hypotheses (and their properties) for all the elements located above the current element in the Elements tree. In **Hypotheses Evaluation**, you can access the generated hypotheses for the elements located above the current element in the Elements tree and the hypothesis for the current element itself. In field's Code Editor, you can access the hypotheses (and their properties) for all the elements. The table below lists the properties of hypotheses for all types of element. | Property | Description | | :------------------------------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `Logic IsNull()` | Whether this is a null hypothesis (if the element has been detected, `IsNull` property of the hypothesis is `True`). | | `Logic IsFound()` | Whether the hypothesis is not null (if the element has not been detected, `IsNull` property of the hypothesis is `False`). Equivalent to `IsNull`. | | `XInterval Left()` | The left boundary of the hypothesis, horizontal range in global coordinates. | | `YInterval top()` | The top boundary of the hypothesis, vertical range in global coordinates. | | `XInterval Right()` | The right boundary of the hypothesis, horizontal range in global coordinates. | | `YInterval Bottom()` | The bottom boundary of the hypothesis, vertical range in global coordinates. | | `XInterval XCenter()` | The X-coordinate of the center of the hypotheses, horizontal range in global coordinates. | | `YInterval YCenter()` | The Y-coordinate of the center of the hypotheses, vertical range in global coordinates. | | `DistInterval Width()` | The width of the hypothesis in global coordinates, range of distances. | | `DistInterval Height()` | The height of the hypothesis in global coordinates, range of distances. | | `FuzzyRect FuzzyRect()` | Fuzzy rectangle of the hypothesis in global coordinates. | | `Rect Rect()` | The rectangle circumscribing the hypothesis in global coordinates. Coincides with the external rectangle of the fuzzy rectangle. | | `Region Region()` | The region of the hypothesis in global coordinates. The method is not supported for Group elements. | | `Region SimplifiedRegion()` | The region of the hypothesis in global coordinates simplified for better visual representation. The method is not supported for Group elements. | | `ImageObjectSet Set()` | The image objects which are part of the hypothesis. | | `ImageObjectSet ExcludeSet()` | The image objects which are in the region excluded from the search area by methods of type `Exclude`. | | `RectArray Rects()` | The array of the rectangles included in the hypothesis. For most elements, it coincides with the array of the rectangles enclosing detected objects. For White Gap and Region elements, no objects are available. | | `Int HypothesesCount()` | The number of hypothesis which can be formulated for the element in the search area. The function may only be used if the maximum and minimum numbers of pages in the document are set to 1, i.e. the detected document has only one page. If you use this function for a multi-page document, matching a FlexiLayout will return an error. | | `PageInterval Pages()` | The range of pages where the hypothesis is to be found. | | `PageArea PageAreaGlobal( Int PageNumber )` | Returns the part of the hypothesis located on the given page in global coordinates. | | `PageArea PageAreaLocal( Int PageNumber )` | Returns the part of the hypothesis located on the given page in the local coordinates of the page. | ## Sample code for calling hypothesis properties Before you access the properties of a hypothesis for a simple or Group element, make sure that the hypothesis to be accessed is not a null hypothesis (call its `IsNull` property). Accessing a property of a null hypothesis (which corresponds to a non-detected element) will cause an error. Suppose there is an identifier on your document in the form of a barcode and you want your FlexiLayout to match only those documents on which the value of the barcode is 1556897142240. Do the following to achieve this result. In the **Hypotheses Evaluation** section of the element that describes the properties and search constraints of the barcode, write the following code: ``` if value != "1556897142240" then Quality: 0; ``` Click **Apply** or **Check Code**. The compiler will not detect any syntax errors. It looks as if the code is OK. However, if you try matching the FlexiLayout with any page from Sample 1, the following error message will be displayed: "Error in element "MainGroup.IdentityNumber", Advanced relations section: Attempt to access undefined hypothesis MainGroup.IdentityNumber." The cause of error is as follows. The program finds a hypothesis for the barcode element. Then it compares the value of the barcode with the value specified in the code. If the values are different, the `Quality: 0;` code will reset the value of the hypothesis to 0. Then a null hypothesis is generated for this element, for which the program also checks the condition `value != "1556897142240"`. Since accessing the value of a null hypothesis is not allowed (it does not have this property), the program issues an error message "...undefined hypothesis..." Therefore, you need to adjust the code as follows: ``` if not IsNull then { if value != "1556897142240" then Quality: 0; } ``` The above code will work only for a required element. For an optional element, the code has to be adjusted as follows: ``` if not IsNull then { if value != "1556897142240" then Quality: 0; } else {Quality: 0;} ``` Otherwise, only the quality of the real hypothesis will be reset to 0. This will cause the program to generate a null hypothesis, for which the "if not IsNull" will not be executed. Therefore the quality of the final (null) hypothesis will remain the same as was specified in the properties of the element (0.97 if the default value was kept) and the program will continue matching the FlexiLayout, even without the given element. If you add `else {Quality: 0;}` to the code, the string will be executed for all hypotheses (including the null hypothesis) and the matching of the FlexiLayout will be stopped, because the complete chain of hypotheses will also be reset to 0 at this element. ## Methods Region Region() and Region SimplifiedRegion() compared The methods `Region Region()` and `Region SimplifiedRegion()` allow you to get the region of an element, but the method `Region Region()` gets the exact region while the method `Region SimplifiedRegion()` gets the rectangle created based on the boundary coordinates. # Optimization of Hypothesis Matching Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/flexilayout/hypotheses/hypothesis-optimization Understanding how FlexiLayout optimizes hypothesis matching using MaxHypothesesCount and quality-based algorithms. Each element in the FlexiLayout has an important parameter called `MaxHypothesesCount`. The user can use this parameter to limit the number of hypotheses which the program may use when looking for the subsequent element. By default, this parameter is set to 5 for simple elements, and to 1 for Group elements. That means that if the program finds 15 hypotheses for a given element, it will select the best five, leaving the other 10 chains of hypotheses incomplete. Group elements, as a rule, are detected more reliably than simple elements. Therefore, the best hypothesis for a Group elements usually turns out to be the correct one. In most cases the program has several incomplete chains of hypotheses and, consequently, several possible search directions. The program looks for the best hypothesis using the classic "wide search" algorithm. This algorithm means that the program always tries to complete the chain which has the best quality at the moment, irrespective of its length. Suppose we have a FlexiLayout which describes 30 elements for which two chains of hypotheses have been created: a chain of 29 elements which has an estimated quality of 0.89 and a chain of 2 elements which has an estimated quality of 0.92. The program will attempt to complete the smaller chain, which is better in terms of quality, until such time when the qualities of all its extensions become worse than the first chain. In the case of a Group element, the program uses so-called quality optimization. When the program finds an ideal complete chain of hypotheses for a given Group element (that is, the quality of this chain is 1), it ignores all the other variants. The total number of hypotheses for each element is limited to 10,000. The number of hypotheses created for an element may exceed the number set in the `MaxHypothesesCount`. In this case, only the user-defined number of the best hypotheses will make it into the tree of hypotheses. # Hypotheses and Their Properties Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/flexilayout/hypotheses/hypothesis-properties Index of FlexiLayout hypothesis types and their properties, covering text, barcode, date, phone, amount, repeating group, and key value hypotheses. * [Object Collection hypothesis](/vantage/documentation/advanced-designer/activities/flexilayout/hypotheses/object-collection-hypothesis) * [Character String hypothesis](/vantage/documentation/advanced-designer/activities/flexilayout/hypotheses/character-string-hypothesis) * [Static Text hypothesis](/vantage/documentation/advanced-designer/activities/flexilayout/hypotheses/static-text-hypothesis) * [Paragraph hypothesis](/vantage/documentation/advanced-designer/activities/flexilayout/hypotheses/paragraph-hypothesis) * [Barcode hypothesis](/vantage/documentation/advanced-designer/activities/flexilayout/hypotheses/barcode-hypothesis) * [Date hypothesis](/vantage/documentation/advanced-designer/activities/flexilayout/hypotheses/date-hypothesis) * [Phone hypothesis](/vantage/documentation/advanced-designer/activities/flexilayout/hypotheses/phone-hypothesis) * [Amount of Money hypothesis](/vantage/documentation/advanced-designer/activities/flexilayout/hypotheses/amount-of-money-hypothesis) * [Repeating Group hypothesis](/vantage/documentation/advanced-designer/activities/flexilayout/hypotheses/repeating-group-hypothesis) * [Key value hypothesis](/vantage/documentation/advanced-designer/activities/flexilayout/hypotheses/key-value-hypothesis) * [Region hypothesis](/vantage/documentation/advanced-designer/activities/flexilayout/hypotheses/region-hypothesis) * [Hypotheses for all types of element](/vantage/documentation/advanced-designer/activities/flexilayout/hypotheses/hypothesis-for-all) * [Optimization of hypothesis matching](/vantage/documentation/advanced-designer/activities/flexilayout/hypotheses/hypothesis-optimization) # Key Value Hypothesis Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/flexilayout/hypotheses/key-value-hypothesis Properties of Key Value hypotheses in FlexiLayout, exposing subelement accessors for text, allowed values, amount of money, date, and phone content. A Key Value element is a group element with predefined subelements. The hypothesis for this element is generated in the same manner as for any Group element based on the hypotheses generated for its subelements. The hypothesis generated for a Labeled Field element has no specific properties. See the [Hypotheses for all types of elements](/vantage/documentation/advanced-designer/activities/flexilayout/hypotheses/hypothesis-for-all) section for a description of the properties common to all elements. The hypotheses generated for the subelements of this element may also be accessed. The properties of the hypothesis generated for the Key Value subelement are the same as the properties of a Static Text hypothesis. The hypothesis generated for the Key Value subelement may have the following specific properties depending on the type of content: | Element Type | Property | Description | | :------------------- | :-------------- | :-------------------------------------------------------------------------------------- | | **Any Text** | `Text` | The text of the hypothesis. | | **Allowed Values** | `Text` | The words included in the hypothesis. For each word, the number of errors is indicated. | | **Amount of Money** | `Value` | The detected numerical value. | | **Amount of Money** | `Currency name` | The detected currency name. | | **Date** | `Day` | Day. | | **Date** | `Month` | Month. | | **Date** | `Year` | Year. | | **Number** | `Text` | The text of the hypothesis. | | **Phone** | `Number` | The detected telephone number. | | **Phone** | `Prefix` | The detected telephone prefix. | | **Character String** | `Text` | The text of the hypothesis. | # Object Collection Hypothesis Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/flexilayout/hypotheses/object-collection-hypothesis Properties of Object Collection hypotheses in FlexiLayout, with NumberOfObjects() returning the count of classified image objects in the hypothesis region. | Parameter | Description | | :---------------------- | :-------------------------------------------------------------------- | | `Int NumberOfObjects()` | The number of classified objects within the region of the hypothesis. | # Paragraph Hypothesis Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/flexilayout/hypotheses/paragraph-hypothesis Properties of Paragraph hypotheses in FlexiLayout, exposing the recognized text Value of the image region covered by the paragraph hypothesis. | Parameter | Description | | :--------------- | :--------------------------------------------------------------------------------- | | `String Value()` | The value of the recognized text on the image within the region of the hypothesis. | # Phone Hypothesis Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/flexilayout/hypotheses/phone-hypothesis Properties of Phone hypotheses in FlexiLayout, exposing the recognized phone Value, the detected Prefix, and the rectangle of the prefix region. | Parameter | Description | | :------------------ | :--------------------------------------------------------------------------- | | `Rect PrefixRect()` | Rectangle which contains the phone prefix. Empty if the prefix is not found. | | `String Prefix()` | The found phone prefix. Returns an empty string if the prefix is not found. | | `String Value()` | The value of the recognized text in the region of the hypothesis. | # Region Hypothesis Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/flexilayout/hypotheses/region-hypothesis Region element hypotheses in FlexiLayout inherit only the common hypothesis properties and methods; no Region-specific accessors are defined. A hypothesis generated for a Region element has no specific methods or properties. The non-specific methods and properties are described in the [Hypotheses for all types of elements](/vantage/documentation/advanced-designer/activities/flexilayout/hypotheses/hypothesis-for-all) section. # Repeating Group Hypothesis Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/flexilayout/hypotheses/repeating-group-hypothesis Properties and methods for Repeating Group hypotheses in FlexiLayout, including CurrentInstance, LastFound, AllInstances, InstancesCount, and HasInstances. | Parameter | Description | | :------------------------------------------ | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `Hypothesis CurrentInstance()` | The current instance of the repeating group when searching for subelements of the repeating element. Used to create relations among subelements of an incomplete current instance of the repeating group. | | `Hypothesis LastFound()` | The last detected instance. If used in the relations of an element not from the given repeating group, the last detected instance of this group is taken. If used in the relations of subelements of the repeating group itself, the previous complete instance of this group is taken. | | `Hypothesis Instance( Int instanceNumber )` | Instance number `instanceNumber`. | | `HypothesisInstances AllInstances()` | All the detected instances of the repeating group. If used in the relations among subelements of the repeating group itself, all the previous complete instances of the group are taken. | | `Int InstancesCount()` | The number of detected instances. | | `Logic HasInstances()` | Checks if any instances have been detected. | # Static Text Hypothesis Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/flexilayout/hypotheses/static-text-hypothesis Properties and methods for Static Text hypotheses in FlexiLayout, including Value, line and keyword counts, and per-line rectangle and coordinate accessors. | Parameter | Description | | :--------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `Distance LineWidth( Int n )` | The height of the rectangle of the text line with the index `n`. | | `Distance LineHeight( Int n )` | The width of the rectangle of the text line with the index `n`. | | `Int LineCount()` | Returns the number of keywords in the string specified in `SearchText` which corresponds to a found string. | | `Int KeywordCount()` | The number of lines in the text of the hypothesis. | | `Rect LineRect( Int n )` | The rectangle of the text line with the index `n`. **Note:** The rectangles obtained through this function are sorted in accordance with their positions on the page, top down. The rectangles with smaller indexes are located higher up on the page (the index changes from 0 to `LineCount()` - 1). | | `String Keyword( Int index )` | Retrieves a keyword by its index in the string specified in `SearchText` which corresponds to a found string. Indexing starts from zero. | | `String Value()` | The value of the recognized text on the image within the region of the hypothesis. | | `XCoordinate LineLeft( Int n )` | The X-coordinate of the left-most point of the rectangle of the text line with the index `n`. | | `XCoordinate LineRight( Int n )` | The X-coordinate of the right-most point of the rectangle of the text line with the index `n`. | | `XCoordinate LineXCenter( Int n )` | The X-coordinate of the center of the rectangle of the text line with the index `n`. | | `YCoordinate LineBottom( Int n )` | The Y-coordinate of the bottom point of the rectangle of the text line with the index `n`. | | `YCoordinate LineTop( Int n )` | The Y-coordinate of the top-most point of the rectangle of the text line with the index `n`. | | `YCoordinate LineYCenter( Int n )` | The Y-coordinate of the center of the rectangle of the text line with the index `n`. | # Predefined Constants Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/flexilayout/predefined-constants Reference for all predefined constants available in the FlexiLayout language. | Type | Values | | :------------------------ | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Alignment | `Alignment_None`, `Alignment_Left`, `Alignment_Right`, `Alignment_Justified`, `Alignment_Center`. | | BarcodeOrientations | `BarcodeOrientation_Autodetect`, `BarcodeOrientation_LefttoRight`, `BarcodeOrientation_Downtotop`, `BarcodeOrientation_RighttoLeft`, `BarcodeOrientation_toptoDown`. | | BarcodeTypes | `BarcodeType_Autodetect`, `BarcodeType_Codabar`, `BarcodeType_Code39`, `BarcodeType_Code93`, `BarcodeType_CheckCode39`, `BarcodeType_Code39WithoutAsterisk`, `BarcodeType_Interleaved25`, `BarcodeType_CheckInterleaved25`, `BarcodeType_EAN13`, `BarcodeType_Code128`, `BarcodeType_EAN8`, `BarcodeType_PDF417`, `BarcodeType_IATA25`, `BarcodeType_UCC128`, `BarcodeType_UPCA`, `BarcodeType_UPCE`, `BarcodeType_CheckCodabar`, `BarcodeType_Industrial25`, `BarcodeType_Matrix25`, `BarcodeType_Postnet`, `BarcodeType_Patch`, `BarcodeType_Aztec`, `BarcodeType_DataMatrix`, `BarcodeType_QRCode`. | | CurrencyPositionTypes | `CurrencyPos_Left`, `CurrencyPos_Right`. | | DateFormats | `DayMonthYear`, `DayYearMonth`, `MonthDayYear`, `MonthYearDay`, `YearDayMonth`, `YearMonthDay`. | | DayFormatVariants | `NoLeadingZeroDay`, `WithLeadingZeroDay`. | | Direction | `Vertical`, `Horizontal`. | | ImageObjectType | The sum total of any number of elementary values that correspond to objects of various types: `AnyText` - text, `PunctuationMark` - punctuation marks, `PictureObject` - picture, `InvertedTextObject` - inverted text, `CheckmarkObject` - checkmark, `SeparatorObject` - separator, `VertSeparatorObject` - vertical separator, `HorSeparatorObject` - horizontal separator, `BarcodeObject` - barcode. | | Logic | `true`, `false`. | | MonthFormatVariants | `DigitsNoLeadingZeroMonth`, `DigitsWithLeadingZeroMonth`, `WordMonth`. | | PageEdge | `PageTop`, `PageBottom`, `PageLeft`, `PageRight`. | | Quality | `BestQuality`, `WorstQuality`. | | RecognitionMode | `BalancedMode`, `FastMode`, `FullModelMode`. | | SearchAreaPageRestriction | `WholePage` (used only in the RestrictSearchArea function). | | SearchAreaPageSetType | `AnyPage`, `OddPages`, `EvenPages`, `LastPage` (used only in the RestrictSearchArea function). | | String | `RegionalDecimalPoint` – the character used by the operating system to separate the integer and fractional parts of a decimal number. | | TextTypes | `TextType_Normal`, `TextType_TypeWriter`, `TextType_Matrix`. | | YearFormatVariants | `TwoDigitYear`, `FourDigitYear`. | | TextRotations | `HorizontalText`, `ClockwiseText`, `CounterClockwiseText`. | # AreaFuzzyInterval Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/flexilayout/predefined-types/area-fuzzy-interval Fuzzy area interval defined by four ordered Area values, used in the FlexiLayout language for arithmetic against Area and Int values. A type for representing a fuzzy integer interval of area. The fuzzy interval is represented by four values of type Area, each of which should be greater than or equal to the previous value. ## Constructor | Signature | Description | | :-------------------------------------------------- | :--------------------------------------------------------------------------------------------- | | `AreaFuzzyInterval AreaFuzzyInterval( Area value )` | Constructor from a value of type Area. Initializes all the four values with the "value" value. | ## Initialization A variable of type `AreaFuzzyInterval` may be initialized with an expression of type `{a1, a2, a3, a4}`, where a1, a2, a3, and a4 are values of type Area. **Example:** ``` Area a1 = 500dt*dt; AreaFuzzyInterval areaFuzzyInterval = {a1, 2000dt*dt, 3000dt*dt, 5000dt*dt}; ``` ## Operators | Operator | Description | | :------- | :---------------------------------------------------------------------------------------------------------------------------------------------------- | | `+` | A binary addition operator that adds a value of type AreaFuzzyInterval to a value of type Area. Returns a value of type AreaFuzzyInterval. | | `-` | A binary subtraction operator that subtracts a value of type Area from a value of type AreaFuzzyInterval. Returns a value of type AreaFuzzyInterval. | | `-` | A binary subtraction operator that subtracts a value of type AreaFuzzyInterval from a value of type Area. Returns a value of type AreaFuzzyInterval. | | `*` | A binary multiplication operator that multiplies a value of type AreaFuzzyInterval by a value of type Int. Returns a value of type AreaFuzzyInterval. | | `/` | A binary division operator that divides a value of type AreaFuzzyInterval by a value of type Int. Returns a value of type AreaFuzzyInterval. | # DistFuzzyInterval Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/flexilayout/predefined-types/dist-fuzzy-interval Fuzzy distance interval defined by four ordered Distance values, used in the FlexiLayout language for arithmetic with Distance and DistInterval values. A type for representing a fuzzy integer interval of distances. The fuzzy interval is represented by four values of type Distance, each of which should be greater than or equal to the previous value. ## Constructor | Signature | Description | | :------------------------------------------------------ | :------------------------------------------------------------------------------------------------- | | `DistFuzzyInterval DistFuzzyInterval( Distance value )` | Constructor from a value of type Distance. Initializes all the four values with the "value" value. | ## Initialization A variable of type `DistFuzzyInterval` may be initialized with an expression of type `{d1, d2, d3, d4}`, where d1, d2, d3, and d4 are values of type Distance. **Example:** ``` Distance d1 = 5dt; DistFuzzyInterval distFuzzyInt = {d1, 200dt, 300dt, 5000dt}; ``` ## Operators | Operator | Description | | :------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `+` | A binary addition operator that adds a value of type DistFuzzyInterval to a value of type Distance. Returns a value of type DistFuzzyInterval. | | `+` | A binary addition operator that adds a value of type DistFuzzyInterval to a value of type DistInterval. Returns a value of type DistFuzzyInterval. | | `-` | A binary subtraction operator that subtracts a value of type Distance from a value of type DistFuzzyInterval. Returns a value of type DistFuzzyInterval. | | `-` | A binary subtraction operator that subtracts a value of type DistFuzzyInterval from a value of type Distance. Returns a value of type DistFuzzyInterval. | | `-` | A binary subtraction operator that subtracts a value of type DistInterval from a value of type DistFuzzyInterval. Returns a value of type DistFuzzyInterval. | | `-` | A binary subtraction operator that subtracts a value of type DistFuzzyInterval from a value of type DistInterval. Returns a value of type DistFuzzyInterval. | | `*` | A binary multiplication operator that multiplies a value of type DistFuzzyInterval by a value of type Int. Returns a value of type DistFuzzyInterval. | | `*` | A binary multiplication operator that multiplies a value of type DistFuzzyInterval by a value of type DistInterval. Returns a value of type DistFuzzyInterval. | | `/` | A binary division operator that divides a value of type DistFuzzyInterval by a value of type Int. Returns a value of type DistFuzzyInterval. | # InputField Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/flexilayout/predefined-types/input-field Field detected in previous document processing steps, exposed to FlexiLayout with Name, Id, Region, and InstanceValues accessors for cross-step reuse. An object used to represent fields detected in documents during previous document processing steps. | Methods | Description | | :----------------------------- | :------------------------------------------------------------------------------------ | | `String Name()` | The field name. | | `String Id()` | The unique identifier of the field. | | `Region Region()` | A multipage field region denoted using a global multipage document coordinate system. | | `StringArray InstanceValues()` | An array of field values from all field instances detected in the document. | # InputFieldArray Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/flexilayout/predefined-types/input-field-array Array of fields detected in earlier document processing steps in the FlexiLayout language, with Count, GetAt, HasFieldName, and GetByName accessors. An array of objects used to represent fields detected in the document during previous document processing steps. | Methods | Description | | :------------------------------------ | :------------------------------------------------------------------------------- | | `Int Count()` | Returns the number of fields detected during previous document processing steps. | | `InputField GetAt( Int index )` | Returns a field using the array index. | | `Logic HasFieldName( String name )` | Checks whether the array contains a field with the specified name. | | `InputField GetByName( String name )` | Returns a field using the field name. | # IntArray Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/flexilayout/predefined-types/int-array Array of integer values in the FlexiLayout language, with constructors and methods to count, access, add, insert, and delete Int elements. Array of integers. ## Constructors | Constructor | Description | | :------------------------- | :--------------------------------------------------------------------------- | | `IntArray IntArray()` | Creates an empty array. | | `IntArray IntArray( Int )` | Constructor with parameter Int. Creates an array consisting of this integer. | ## Methods | **Methods** | **Description** | | ---------------------------------------- | --------------------------------------------- | | `Int Count()` | Returns the number of elements in the array. | | `Int GetAt( Int )` | Returns the element with the specified index. | | `Void Add( Int )` | Adds an integer to the end of the array. | | `Void Add( IntArray )` | Adds another array to the end of the array. | | `Void InsertAt( Int index, Int number )` | Adds an integer number to position index. | | `Void DeleteAll()` | Deletes all elements of the array. | | `Void DeleteAt( Int index )` | Deletes the element in position index. | ## Operators | **Operator** | **Description** | | :----------- | :------------------------------------------------- | | `<<` | Binary operator that adds an integer to the array. | # IntFuzzyInterval Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/flexilayout/predefined-types/int-fuzzy-interval Fuzzy integer interval defined by four ordered Int values, used in the FlexiLayout language for arithmetic with Int and DistInterval values. A type for representing a fuzzy integer interval of integers. The fuzzy interval is represented by four values of type Int, each of which should be greater than or equal to the previous value. ## Constructors | **Constructor** | **Description** | | :----------------------------------------------- | :----------------------------------------------------------------------------------- | | `IntFuzzyInterval IntFuzzyInterval( Int value )` | Constructor from an integer. Initializes all the four values with the "value" value. | ## Initialization | Initialization | Description | | :------------------------------------ | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Expression of type `{x1, x2, x3, x4}` | A variable of type `IntFuzzyInterval` may be initialized by an expression of type `{x1, x2, x3, x4}`, where x1, x2, x3, and x4 are values of type `Int`. **Example:** `Int x1 = 5;` `IntFuzzyInterval intFuzzyInt = {x1, 200, 300, 5000};` | ## Operators | Operators | Description | | :-------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `+` | A binary addition operator that adds a value of type `IntFuzzyInterval` to a value of type `Int`. Returns a value of type `IntFuzzyInterval`. | | `+` | A binary addition operator that adds a value of type `IntFuzzyInterval` to a value of type `DistInterval`. Returns a value of type `IntFuzzyInterval`. | | `-` | A binary subtraction operator that subtracts a value of type `Int` from a value of type `IntFuzzyInterval`. Returns a value of type `IntFuzzyInterval`. | | `-` | A binary subtraction operator that subtracts a value of type `IntFuzzyInterval` from a value of type `Int`. Returns a value of type `IntFuzzyInterval`. | | `-` | A binary subtraction operator that subtracts a value of type `DistInterval` from a value of type `IntFuzzyInterval`. Returns a value of type `IntFuzzyInterval`. | | `-` | A binary subtraction operator that subtracts a value of type `IntFuzzyInterval` from a value of type `DistInterval`. Returns a value of type `IntFuzzyInterval`. | | `*` | A binary multiplication operator that multiplies a value of type `IntFuzzyInterval` by a value of type `Int`. Returns a value of type `IntFuzzyInterval`. | | `*` | A binary multiplication operator that multiplies a value of type `IntFuzzyInterval` by a value of type `DistInterval`. Returns a value of type `IntFuzzyInterval`. | | `/` | A binary division operator that divides a value of type `IntFuzzyInterval` by a value of type `Int`. Returns a value of type `IntFuzzyInterval`. | # NamedValue Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/flexilayout/predefined-types/named-value Name and value string pair in the FlexiLayout language, with Name and Value accessor methods and equality operators for comparing two named values. A tuple of two strings where the first string is the name of a value and the second string is the value itself. ## Constructors | Method | Description | | :---------------------------------------- | :--------------------------------------------------- | | `NamedValue( String name, String value )` | Creates a named value with the given name and value. | ## Operators | Opertors | Description | | :--------- | :---------------------------------------------------------------------------------------- | | `==`, `!=` | Checks whether two variables of type `NamedValue` match. Returns a value of type `Logic`. | ## Methods | Method | Description | | :--------------- | :------------------------------------ | | `String Name()` | Returns the name of the named value. | | `String Value()` | Returns the value of the named value. | # NamedValueArray Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/flexilayout/predefined-types/named-value-array Array of NamedValue elements in the FlexiLayout language, with FindByName, Has, and standard methods to add, insert, delete, and access elements. Array of NamedValue elements. ## Constructors | Constructor | Description | | :------------------------------------ | :------------------------------------------------------------- | | `NamedValueArray()` | Creates an empty array of NamedValue elements. | | `NamedValueArray( NamedValue value )` | Creates an array of NamedValue elements with a single element. | ## Methods | Method | Description | | :--------------------------------------- | :------------------------------------------------------------------------------------ | | `NamedValueArray()` | Creates an empty array of NamedValue elements. | | `NamedValueArray( NamedValue value )` | Creates an array of NamedValue elements with a single element. | | `Int Count()` | Returns the number of elements in the array. | | `NamedValue GetAt( Int index )` | Returns the element with the specified index. | | `Void Add( NamedValue )` | Appends the given NamedValue element to the end of the array. | | `Void Add( NamedValueArray )` | Appends the given array to the end of the array. | | `Void InsertAt( Int index, NamedValue )` | Inserts the given named value at the given position. | | `Void DeleteAll()` | Deletes all elements of the array. | | `Void DeleteAt( Int index )` | Deletes the element with the given index. | | `Int FindByName( String name )` | Returns the index of the element with the given name. The name is not case sensitive. | | `Logic Has( NamedValue )` | Returns `True` if the given named value exists in the array. | # Page Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/flexilayout/predefined-types/page Page object in the FlexiLayout language returned by Page(PageNumber), with methods for line metrics, image objects, and page rectangles and regions. Type returned by the Page( Int PageNumber ) function. ## Methods | Method | Description | | :----------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `Distance AverageLineHeight()` | Average line height on a page. | | `Distance AverageInterlineInterval()` | Average line spacing on a page. | | `Area ObjectsAreaLocal( Rect localRect, ImageObjectType )` | The area of the objects in the specified rectangle on a page of the specified type. Local coordinates are used for the rectangle. | | `Area ObjectsIntersectionAreaLocal( Rect localRect, ImageObjectType )` | The joint area of the objects in the specified rectangle and the area of objects intersection with the rectangle on a page of the specified type. Local coordinates are used for the rectangle. | | `Area ObjectsAreaGlobal( Rect globalRect, ImageObjectType )` | The area of the objects in the specified rectangle on a page of the specified type. Global coordinates are used for the rectangle. | | `Area ObjectsIntersectionAreaGlobal( Rect globalRect, ImageObjectType )` | The joint area of the objects in the specified rectangle and the area of objects intersection with the rectangle on a page of the specified type. Global coordinates are used for the rectangle. | | `Rect RectLocal()` | The rectangle of the entire image in local coordinates. | | `Rect RectGlobal()` | The rectangle of the entire image in global coordinates. | | `Rect IntersectWith( Rect )` | Returns a rectangle of the intersection between the page and the specified rectangle global coordinates. | | `Region IntersectWith( Region )` | Returns a region of the intersection between the page and the specified region global coordinates. | # PageArea Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/flexilayout/predefined-types/page-area Area on a page in the FlexiLayout language returned by PageSearchArea and PageArea methods, with boundary intervals, region, and image object accessors. Area on a page. Returned by PageSearchAreaLocal, PageSearchAreaGlobal, PageAreaLocal, and PageAreaGlobal methods (these functions have page numbers as their arguments). Can be expressed either in global or local coordinates, depending on which function has been called. ## Methods | Method | Description | | :---------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------- | | `XInterval Left()` | The left boundary of the part of the hypothesis located on the given page, horizontal interval. | | `YInterval Top()` | The top boundary of the part of the hypothesis located on the given page, vertical interval. | | `XInterval Right()` | The right boundary of the part of the hypothesis located on the given page, horizontal interval. | | `YInterval Bottom()` | The bottom boundary of the part of the hypothesis located on the given page, vertical interval. | | `XInterval XCenter()` | The abscissa of the center of the part of the hypothesis located on the given page, horizontal interval. | | `YInterval YCenter()` | The ordinate of the center of the part of the hypothesis located on the given page, vertical interval. | | `DistInterval Width()` | The width of the part of the hypothesis located on the given page. | | `DistInterval Height()` | The height of the part of the hypothesis located on the given page. | | `FuzzyRect FuzzyRect()` | The fuzzy rectangle of the part of the hypothesis located on the given page. | | `Rect Rect()` | The enclosing rectangle of the part of the hypothesis located on the given page. Coincides with the outward rectangle of the fuzzy rectangle. | | `Region Region()` | The region of the part of the hypothesis located on the given page. | | `Region SimplifiedRegion()` | The region of the part of the hypothesis located on the given page, simplified for better viewing. | | `ImageObjectSet Set()` | Image objects captured by the part of the hypothesis located on the given page. | | `ImageObjectSet ExcludeSet()` | Image objects on the part of the image excluded from the search area of the part of the hypothesis located on the given page by Exclude methods. | | `RectArray Rects()` | The array of rectangles of the image objects capture by the part of the hypothesis located on the given page. | # PageEdge Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/flexilayout/predefined-types/page-edge Page edge reference (top, bottom, left, or right) in the FlexiLayout language used with the Nearest function to select the closest hypothesis. The type used to specify the Nearest function relative to a page edge. Allows you to select the hypothesis closest to the top, bottom, left or right page edge. # SearchAreaPageSetType Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/flexilayout/predefined-types/search-area-page-set-type Page-set value (AnyPage, OddPages, EvenPages, LastPage) in the FlexiLayout language used with the RestrictSearchArea function to scope element searches. The type used in the RestrictSearchArea function. The predefined constants for this type are: `AnyPage`; `OddPages`; `EvenPages`; `LastPage`. # StringArray Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/flexilayout/predefined-types/string-array Array of String values in the FlexiLayout language, with constructors and methods to count, access, add, insert, and delete string elements. Array of strings. ## Constructors | Constructor | Description | | :---------------------------------- | :----------------------------------------------- | | `StringArray StringArray()` | Creates an empty array. | | `StringArray StringArray( String )` | Creates an array consisting of the given string. | ## Methods | Method | Description | | :----------------------------------- | :-------------------------------------------- | | `Int Count()` | Returns the number of elements in the array. | | `String GetAt( Int index )` | Returns the element with the specified index. | | `Void Add( String )` | Adds a string to the end of the array. | | `Void Add( StringArray )` | Adds another array to the end of the array. | | `Void InsertAt( Int index, String )` | Adds a string to position index. | | `Void DeleteAll()` | Deletes all elements of the array. | | `Void DeleteAt( Int index )` | Deletes the element in position index. | # Predefined Field Region Description Variables Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/flexilayout/predefined-variables Predefined variables for describing field regions in FlexiLayout, including IsNull, IsSuspicious, OutputRegion, OutputInstances, and OutputValue. | Name | Description | | :---------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `IsNull` | Variable of type Logic. The value of the variable determines whether the field region has been found or not. The IsNull variable is pre-initialized with value `False`, which means that the field region has been found. To instruct the program that the block has not been found, set the value to `True`. Used for fields of all types. | | `IsSuspicious` | Variable of type Logic. Its value indicates whether the field has been detected reliably. The IsSupicious variable is pre-initialized with value `False`, which means that the field has been found. To tell the program that the field has been detected unreliably, set the value to `True`. Used for fields of all types. | | `OutputInstances` | Variable of type HypothesisInstances that is used for fields of the Repeating Group type. The value of the variable defines the detected field region. The region of a field built from the instances of elements and subelements of a repeating group is discontinuous. | | `OutputRegion` | Variable of type Region. The value of the variable determines the region of the block. | | `OutputValue` | Variable of type String. Allows you to set the value of the field as a string. Can be set when the field region is not set. | # Using Print in Debugging Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/flexilayout/print-in-debugging How to use the Print function to debug FlexiLayout code by displaying hypothesis properties and values. In the **Search Conditions** and **Hypotheses Evaluation** sections, you can use the Print function, which prints information. This allows you to print information about certain properties of the formulated hypotheses. The format of the Print function: ``` Void Print( String text ) ``` The FlexiLayout language has global functions that are used to create string representations of various types and print debugging information (see the [table](/vantage/documentation/advanced-designer/activities/flexilayout/global-functions#string-operations)). To display debugging data, the FlexiLayout language offers global functions that create string representations of various types available in the language (see the table below). The global `Chr( Int char )` function is used to format the printed lines using tab characters, carriage returns, etc. This function returns a string representation of a character by its Unicode code. ## Examples of calling the Print function ``` Print: Str( Group1.Item1.Width ); ``` ``` Print: "Is Item1 Null ? - " + Str( Group1.Item1.IsNull ); ``` ``` Print: "Calculate formula: ( 5 * 18 );" + Chr( 13 ) +Chr( 10 ) + "Result is: " + Str( 5 * 18 ) + Chr( 9 ) + "// example"; ``` ``` Print: Str( Group1.Item1.Rect ); ``` Calling the **Print** function several times in a row in one of the Code Editor sections will print text consisting of several lines. # Controlling Searches Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/flexilayout/search-conditions/controlling-searches Functions for controlling FlexiLayout element searches: Optional, StopIfFound, DontFind, and MaxHypothesesCount for hypothesis generation and skipping. | Function | Description | | :-------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `Void Optional( Real q1, Real q2 )` | Makes an element optional. The q1 parameter sets the quality of the null hypothesis. The q2 parameter sets the criterion for formulating the null hypothesis: the null hypothesis will be formulated if no other hypotheses are created whose qualities exceed a certain threshold. | | `Void StopIfFound ( Logic Value=true )` | Stops generating hypothesis in the branch if it contains a non-null hypothesis for the given element. For more information, see the Required, optional, and prohibited elements section. | | `Void DontFind()` | Tells the program not to look for an element. If the element is optional, only the null hypothesis will be formulated. | | `Void MaxHypothesesCount( Int )` | Sets the maximum number of hypotheses for an element. | # Debugging Functions Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/flexilayout/search-conditions/debug-functions Functions that return information about the search area for debugging purposes The following functions are only available in the **Search Conditions** section. These functions can be used for debugging prints. You can run print commands after specifying a set of instructions limiting the search area in order to see the results of these instructions. | Function | Description | | :------------------------------------------------ | :-------------------------------------------------------------------------------------------- | | `FuzzyRect SearchArea()` | Created search area - a fuzzy rectangle. Read-only. | | `RectArray ExcludedRects()` | Array of rectangles excluded from the search area. Read-only. | | `PageArea PageSearchAreaLocal( Int PageNumber )` | Returns the search area that intersects the given page, in the local coordinates of the page. | | `PageArea PageSearchAreaGlobal( Int PageNumber )` | Returns the search area that intersects the given page, in global coordinates. | ## Example To print the search area of an element: In the Advanced pre-search relations section, type the following code for the selected element: ``` Print: Str(SearchArea); ``` or equivalent code ``` Print: Str(SearchArea ()); ``` The Str function converts the results into string format required for printing. # Functions that Create a Fuzzy Rectangle Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/flexilayout/search-conditions/fuzzy-functions Functions for building fuzzy rectangles to limit FlexiLayout search areas, including LeftBound, TopBound, RightBound, and BottomBound boundary constraints. The `RestrictSearchArea( FuzzyRect fuzzyRect )` function described in Functions which Limit the Search Area allows you to limit the search area to any fuzzy rectangle. The following table lists the functions that can be used to obtain a fuzzy rectangle. | Function | Description | | :----------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `HorSearchAreaBound LeftBound()` | Used to set a constraint for the left boundary of the search area. Expressions of type `LeftBound() > XCoordinate` return FuzzyRect. | | `VertSearchAreaBound TopBound()` | Used to set a constraint for the top boundary of the search area. Expressions of type `topBound() > YCoordinate` return FuzzyRect. | | `HorSearchAreaBound RightBound()` | Used to set a constraint for the right boundary of the search area. Expressions of type `RightBound () > XCoordinate` return FuzzyRect. | | `VertSearchAreaBound BottomBound()` | Used to set a constraint for the bottom boundary of the search area. Expressions of type `BottomBound () > YCoordinate` return FuzzyRect. | | `FuzzyRect AreaLeftOf( XInterval x, Distance offset = 0 )` | Returns a fuzzy rectangle in global coordinates, which is a vertical half-plane located to the left of the point x.End – offset. | | `FuzzyRect AreaLeftOf( FuzzyRect rect, Distance offset = 0 )` | Returns a fuzzy rectangle in global coordinates, which is a vertical half-plane located to the left of the point rect.Left.End – offset. | | `FuzzyRect AreaLeftOf( Hypothesis hyp, Distance offset = 0 )` | Returns a fuzzy rectangle in global coordinates, which is a vertical half-plane located to the left of the point hyp.Rect.Left.End – offset. | | `FuzzyRect AreaLeftOf( HypothesisInstances hyps, Distance offset = 0 )` | Returns a fuzzy rectangle in global coordinates, which is a vertical half-plane located to the left of the point hyp.Rect.Left.End – offset. | | `FuzzyRect AreaRightOf( XInterval x, Distance offset = 0 )` | Returns a fuzzy rectangle in global coordinates, which is a vertical half-plane located to the right of the point x.Start + offset. | | `FuzzyRect AreaRightOf( FuzzyRect rect, Distance offset = 0 )` | Returns a fuzzy rectangle in global coordinates, which is a vertical half-plane located to the right of the point rect.Right.Start + offset. | | `FuzzyRect AreaRightOf( Hypothesis hyp, Distance offset = 0 )` | Returns a fuzzy rectangle in global coordinates, which is a vertical half-plane located to the right of the point hyp.rect.Right.Start + offset. | | `FuzzyRect AreaRightOf( HypothesisInstances hyps, Distance offset = 0 )` | Returns a fuzzy rectangle in global coordinates, which is a vertical half-plane located to the right of the point hyp.Rect.Right.Start + offset. | | `FuzzyRect AreaAbove( YInterval y, Distance offset = 0 )` | Returns a fuzzy rectangle in global coordinates, which is a horizontal half-plane located above the point y.End - offset. | | `FuzzyRect AreaAbove( FuzzyRect rect, Distance offset = 0 )` | Returns a fuzzy rectangle in global coordinates, which is a horizontal half-plane located above the point rect.top.End - offset. | | `FuzzyRect AreaAbove( Hypothesis hyp, Distance offset = 0 )` | Returns a fuzzy rectangle in global coordinates, which is a horizontal half-plane located above the point hyp.rect.top.End - offset. | | `FuzzyRect AreaAbove( HypothesisInstances hyps, Distance offset = 0 )` | Returns a fuzzy rectangle in global coordinates, which is a horizontal half-plane located above the point hyp.Rect.top.End - offset. | | `FuzzyRect AreaBelow( YInterval y, Distance offset = 0 )` | Returns a fuzzy rectangle in global coordinates, which is a horizontal half-plane located below the point y.Start + offset. | | `FuzzyRect AreaBelow( FuzzyRect rect, Distance offset = 0 )` | Returns a fuzzy rectangle in global coordinates, which is a horizontal half-plane located below the point rect.Bottom.Start + offset. | | `FuzzyRect AreaBelow( Hypothesis hyp, Distance offset = 0 )` | Returns a fuzzy rectangle in global coordinates, which is a horizontal half-plane located below the point hyp.rect.Bottom.Start + offset. | | `FuzzyRect AreaBelow( HypothesisInstances hyps, Distance offset = 0 )` | Returns a fuzzy rectangle in global coordinates, which is a horizontal half-plane located below the point hyp.Rect.Bottom.Start + offset. | | `FuzzyRect ImageLeftOf( XInterval x, Distance offset = 0 )` | Returns a fuzzy rectangle, which is an intersection of the rectangle of the page and the vertical half-plane located to the left of the point x.End – offset. The function may only be used if the maximum and minimum numbers of pages in the document are set to 1. For a multi-page document, use the function `FuzzyRect AreaLeftOf( XInterval x, Distance offset = 0 )`. | | `FuzzyRect ImageLeftOf( FuzzyRect rect, Distance offset = 0 )` | Returns a fuzzy rectangle, which is an intersection of the rectangle of the page and the vertical half-plane located to the left of the point rect.Left.End – offset. The function may only be used if the maximum and minimum numbers of pages in the document are set to 1. For a multi-page document, use the function `FuzzyRect AreaLeftOf( FuzzyRect rect, Distance offset = 0 )`. | | `FuzzyRect ImageLeftOf( Hypothesis hyp, Distance offset = 0 )` | Returns a fuzzy rectangle, which is an intersection of the rectangle of the page and the vertical half-plane located to the left of the point hyp.Rect.Left.End – offset. The function may only be used if the maximum and minimum numbers of pages in the document are set to 1. For a multi-page document, use the function `FuzzyRect AreaLeftOf( Hypothesis hyp, Distance offset = 0)`. | | `FuzzyRect ImageRightOf( XInterval x, Distance offset = 0 )` | Returns a fuzzy rectangle, which is an intersection of the rectangle of the page and the vertical half-plane located to the left of the point x.Start + offset. The function may only be used if the maximum and minimum numbers of pages in the document are set to 1. For a multi-page document, use the function `FuzzyRect AreaRightOf( XInterval x, Distance offset = 0 )`. | | `FuzzyRect ImageRightOf( FuzzyRect rect, Distance offset = 0 )` | Returns a fuzzy rectangle, which is an intersection of the rectangle of the page and the vertical half-plane located to the right of the point rect.Right.Start + offset. The function may only be used if the maximum and minimum numbers of pages in the document are set to 1. For a multi-page document, use the function `FuzzyRect AreaRightOf( FuzzyRect rect, Distance offset = 0 )`. | | `FuzzyRect ImageRightOf( Hypothesis hyp, Distance offset = 0 )` | Returns a fuzzy rectangle, which is an intersection of the rectangle of the page and the vertical half-plane located to the right of the point hyp.rect.Right.Start + offset. The function may only be used if the maximum and minimum numbers of pages in the document are set to 1. For a multi-page document, use the function `FuzzyRect AreaRightOf( Hypothesis hyp, Distance offset = 0)`. | | `FuzzyRect ImageAbove( YInterval y, Distance offset = 0 )` | Returns a fuzzy rectangle, which is an intersection of the rectangle of the page and the horizontal half-plane located above the point y.End - offset. The function may only be used if the maximum and minimum numbers of pages in the document are set to 1. For a multi-page document, use the function `FuzzyRect AreaAbove( YInterval y, Distance offset = 0 )`. | | `FuzzyRect ImageAbove( FuzzyRect rect, Distance offset = 0 )` | Returns a fuzzy rectangle, which is an intersection of the rectangle of the page and the horizontal half-plane located above the point rect.top.End - offset. The function may only be used if the maximum and minimum numbers of pages in the document are set to 1. For a multi-page document, use the function `FuzzyRect AreaAbove( FuzzyRect rect, Distance offset = 0 )`. | | `FuzzyRect ImageAbove( Hypothesis hyp, Distance offset = 0 )` | Returns a fuzzy rectangle, which is an intersection of the rectangle of the page and the vertical half-plane located to the left of the point hyp.rect.top.End - offset. The function may only be used if the maximum and minimum numbers of pages in the document are set to 1. For a multi-page document, use the function `FuzzyRect AreaAbove( Hypothesis hyp, Distance offset = 0 )`. | | `FuzzyRect ImageBelow( YInterval y, Distance offset = 0 )` | Returns a fuzzy rectangle, which is an intersection of the rectangle of the page and the horizontal half-plane located above the point y.Start + offset. The function may only be used if the maximum and minimum numbers of pages in the document are set to 1. For a multi-page document, use the function `FuzzyRect AreaBelow( YInterval y, Distance offset = 0 )`. | | `FuzzyRect ImageBelow( FuzzyRect rect, Distance offset = 0 )` | Returns a fuzzy rectangle, which is an intersection of the rectangle of the page and the horizontal half-plane located below the point rect.Bottom.Start + offset. The function may only be used if the maximum and minimum numbers of pages in the document are set to 1. For a multi-page document, use the function `FuzzyRect AreaBelow( FuzzyRect rect, Distance offset = 0 )`. | | `FuzzyRect ImageBelow( Hypothesis hyp, Distance offset = 0 )` | Returns a fuzzy rectangle, which is an intersection of the rectangle of the page and the horizontal half-plane located below the point hyp.rect.Bottom.Start + offset. The function may only be used if the maximum and minimum numbers of pages in the document are set to 1. For a multi-page document, use the function `FuzzyRect AreaBelow( Hypothesis hyp, Distance offset = 0 )`. | # Fuzzy Rectangle Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/flexilayout/search-conditions/fuzzy-rect Understanding fuzzy rectangles and how they describe classes of rectangles with boundaries in allowed ranges **Fuzzy rectangle** is a structure that describes a class of rectangles whose boundaries lie within specific allowed ranges. A fuzzy rectangle consists of two rectangles - an external rectangle and an internal rectangle. In the FlexiLayout language, fuzzy rectangles are represented by type **FuzzyRect**. As can be seen in the figure below, in the general case, when constraints for all the boundaries are set, there is a part of the search area that must fall within any hypothesis for the element. It is this part that forms the internal rectangle. The maximum-size circumscribing rectangle of the possible hypothesis forms the external rectangle. Rectangle diagram showing internal and external rectangles Let the boundaries of the element be: ``` LeftBound: [L1, L2], where L1 <= L2 TopBound: [T1, T2], where T1 <= T2 RightBound: [R1, R2], where R1 <= R2 BottomBound: [B1, B2], where B1 <= B2 ``` Then the fuzzy rectangle containing the information about the specified boundaries will be formed as follows: `InternalRect: [L2, T2, R1, B1], ExternalRect: [L1, T1, R2, B2]`. If the user sets no constraints for the boundaries of the search area, the internal rectangle degenerates and makes no geometrical sense. In this case `L1=R1, L2=R2, T1=B1, T2=B2`. Suppose now that no constraints have been specified for the search area. Then, if the maximum and minimum allowed number of pages is 1, the fuzzy rectangle of the search area will be created as follows: ``` LeftBound: [PageRect.Left, PageRect.Right] TopBound: [PageRect.Top, PageRect.Bottom] RightBound: [PageRect.Left, PageRect.Right] BottomBound: [PageRect.Top, PageRect.Bottom] InternalRect: [PageRect.Right, PageRect.Bottom, PageRect.Left, PageRect.Top] ExternalRect: [PageRect.Left, PageRect.Top, PageRect.Right, PageRect.Bottom] and in the case of a multi-page document: LeftBound: [-INF, INF] TopBound: [-INF, INF] RightBound: [-INF, INF] BottomBound: [-INF, INF] InternalRect: [INF, INF, -INF, -INF] ExternalRect: [-INF, -INF, INF, INF] ``` As can be seen from the above expressions, the external rectangle coincides with the rectangle of the entire page, and the internal rectangle degenerates and has negative height and width. ## Operations on Fuzzy Rectangles Fuzzy rectangles can be united and intersected. When two fuzzy rectangles are intersected, their corresponding boundaries intersect: the right boundary of one rectangle intersects with the right boundary of the other, the left with the left, etc. This creates new ranges for the boundaries: ``` LeftBound: [L1', L2'] TopBound: [T1', T2'] RightBound: [R1', R2'] BottomBound: [B1', B2'] ``` The resulting fuzzy rectangle will be created using the resulting intervals: InternalRect: \[L2', T2', R1', B1'], ExternalRect: \[L1', T1', R2', B2']. If, as a result of the intersection, at least one of the conditions for creating the fuzzy rectangle `(L1 <= L2, T1 <= T2, R1 <= R2, B1 <= B2)` is not met, the resulting fuzzy rectangle will be nullified: InternalRect: \[0, 0, 0, 0], ExternalRect: \[0, 0, 0, 0]. Usually an empty fuzzy rectangle is created as a result of contradictory conditions, e.g. if you attempt to intersect two fuzzy rectangles whose external boundaries do not intersect. Fuzzy rectangles are united in the same way: first, the ranges of each boundary are united. As a result of uniting the two ranges, a minimum range is created which contains both specified ranges. After the boundaries have been united, a new fuzzy rectangle is formed. In practice you will most often encounter fuzzy rectangles with a degenerated internal rectangle. Only on rare occasions will you need to set constraints on a specific boundary. However, the search area for an element is always represented by a fuzzy rectangle and an array of excluded rectangles. # Nearest Functions Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/flexilayout/search-conditions/nearest-functions Nearest functions in FlexiLayout (NearestX, NearestY, Nearest by interval, page edge, or hypothesis) that select the hypothesis closest to a reference. **Nearest** functions tell the program that, other things being equal, it must select the hypothesis that is nearest to a certain element or point on the image that is specified by the parameters of the Nearest function. In the **Search Conditions** section of the element, you can use only one Nearest function. After the function is applied, only one hypotheses from a group of several hypotheses is selected. The selection occurs when hypotheses are being generated for the element, i.e. before the code entered in the **Hypotheses Evaluation** section is executed. Nearest functions can be used to select hypotheses for any kind of elements except Groups and Repeating Groups. | Function | Description | | :----------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `Void NearestX( XCoordinate x )` | Selects the hypothesis nearest to the vertical line which goes through the point ( x, 0 ). **Example:** The code below specifies that the sought element is horizontally nearest to the right boundary of the ElementName element. `NearestX: ElementName.Right.Start;` | | `Void NearestY( YCoordinate y )` | Selects the hypothesis nearest to the horizontal line which goes through the point ( 0, y ). **Example:** The code below specifies that the sought element is vertically nearest to the top boundary of the ElementName element. `NearestY: ElementName.Top.Start;` | | `Void Nearest( XInterval x, YInterval y )` | Selects the hypothesis nearest to the rectangle Rect( x.Start, y.Start, x.End, y.End ). **Example:** The code below specifies that the sought element is closest to the center of the ElementName element. `Nearest: ElementName.XCenter, ElementName.YCenter;` The code below specifies that the sought element is closest to the center of the page. `Nearest: Page(1).RectGlobal.XCenter, Page(1).RectGlobal.YCenter;` | | `Void Nearest( PageEdge )` | Selects the hypothesis on each page of the document that is nearest to one of the page edges - top, bottom, right or left. **Note:** If several hypotheses are at the same distance from the specified boundary, several hypotheses may be selected. **Example:** To specify that the current element is closest to the bottom edge of the page, write. `Nearest: PageBottom;` | | `Void Nearest( Hypothesis hyp )` | Selects the hypothesis nearest to the fuzzy rectangle hyp.Rect. **Example:** The code below specifies that the sought element is closest to the ElementName element. `Nearest: ElementName;` | | `Void Nearest( HypothesisInstances )` | Selects the hypothesis closest to the set of hypothesis for the specified Repeating Group element. | # Search Condition functions Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/flexilayout/search-conditions/search-condition-functions Index of FlexiLayout search-condition functions, covering controlling searches, specifying the search area, and selecting the nearest hypothesis. * [Controlling searches](/vantage/documentation/advanced-designer/activities/flexilayout/search-conditions/controlling-searches) * [Specifying the search area](/vantage/documentation/advanced-designer/activities/flexilayout/search-conditions/specifying-the-search-area) * [Nearest functions](/vantage/documentation/advanced-designer/activities/flexilayout/search-conditions/nearest-functions) # Search Constraints Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/flexilayout/search-conditions/search-constraints Understanding how search regions are formed using element properties and search conditions. An element's search region is formed using element properties set in the **Where to search** section and conditions set in the **Search Conditions** section. Before the properties and conditions are applied, the search area coincides with the page rectangle. First, the program applies element properties to the area. Next, the program applies additional restrictions set in the **Search Conditions** section. The following types of constraint can be set in the **Search Conditions** section: 1. The search area can be limited to a rectangle (`Rect` variable), to a region (i.e. a continuous array of rectangles – `Region` variable), or to an array of rectangles which, in the general case, need not be continuous (`RectArray` variable). This type of constraint is set using the `RestrictSearchArea` function and by specifying a parameter of the corresponding type. Any expressions which return values of the required type can be specified as parameters. 2. The search area can be limited to a half-plane located to the left of, to the right of, above, or below a particular point. Such constraints are set using the Leftof, Rightof, Above, and Below functions. 3. Sometimes you may wish to set constraints for an element boundary. For example, it may be known beforehand that the left boundary of an element is always located in the left-hand part of the image, whereas the right boundary may stretch indefinitely to the right. The FlexiLayout language allows you to set such constraints at the stage of calculating the search area, thereby narrowing the range of possible hypotheses for an element. Such constraints are set using the `LeftBound`, `RightBound`, `topBound`, and `BottomBound` functions and the operators `>` and `<`. The `LeftBound` and `RightBound` functions are used to access the left and right boundaries of the search area, and the `topBound` and `BottomBound` functions are used to access the top and bottom boundaries respectively. 4. You can set search constraints by excluding a rectangle, an array of rectangles, a hypothesis etc. from the search area. This can be done by using the `Exclude`, `ExcludeRect`, and `ExcludeSet` functions. You can specify any number of search constraints of the above types in the **Search Conditions** section. Each constraint will create a region on the image. All the regions created by the constraints will be intersected. Additionally, the calculated search area for the element will be intersected with the search area for the Group element of which this element is a member. # Functions that limit the search area Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/flexilayout/search-conditions/search-functions Reference for functions that specify fuzzy rectangles and limit search areas in the Search Conditions section. The functions listed in the table below can only be used in the **Search Conditions** section. Each function specifies a fuzzy rectangle for the search area or adds rectangles to an array of excluded rectangles. | Function | Description | | :-------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `Void LeftOf( XInterval x, Distance offset = 0 )` | Limits the search area to a rectangle which is the result of intersecting the rectangle of the page with the vertical half-plane located to the left of the point `x.End - offset`. | | `Void LeftOf( FuzzyRect fuzzyRect, Distance offset = 0 )` | Limits the search area by the vertical half-plane to the left of the point `fuzzyRect.Left.End – offset`. | | `Void LeftOf( Hypothesis hyp, Distance offset = 0 )` | Limits the search area to a rectangle which is the result of intersecting the rectangle of the page with the vertical half-plane located to the left of the point `hyp.Left.End - offset`. | | `Void LeftOf( HypothesisInstances hyps, Distance offset = 0 )` | Limits the search area by the vertical half-plane to the left of the point `hyp.Left.End – offset`. Global coordinates are used. | | `Void RightOf( XInterval x, Distance offset = 0 )` | Limits the search area to a rectangle which is the result of intersecting the rectangle of the page with the vertical half-plane located to the right of the point `x.Start + offset`. | | `Void RightOf( FuzzyRect fuzzyRect, Distance offset = 0 )` | Limits the search area by the vertical half-plane to the right of the point `hyp.Right.Start + offset`. **Example:** Look for the element to the right of the intersection of fuzzy rectangles Element1 and Element2. `FuzzyRect intersection = Element1.FuzzyRect AND Element2.FuzzyRect; RightOf: intersection;` | | `Void RightOf( Hypothesis hyp, Distance offset = 0 )` | Limits the search area to a rectangle which is the result of intersecting the rectangle of the page with the vertical half-plane located to the right of the point `hyp.Right.Start + offset`. **Example:** Look for the element to the right of the right boundary of the ElementName element with an offset of 100 dots. If the element is not found, the offset will be applied to the LEFT boundary of the search area of the element instead. `RightOf: ElementName.Right, 100dt;` | | `Void RightOf( HypothesisInstances hyps, Distance offset = 0 )` | Limits the search area by the vertical half-plane to the right of the point `hyp.Right.Start + offset`. Global coordinates are used. | | `Void Above( YInterval y, Distance offset = 0 )` | Limits the search area to a rectangle which is the result of intersecting the rectangle of the page with the horizontal half-plane located above the point `y.End - offset`. | | `Void Above( FuzzyRect fuzzyRect, Distance offset = 0 )` | Limits the search area by the horizontal half-plane above the point `hyp.Top.End – offset`. | | `Void Above( Hypothesis hyp, Distance offset = 0 )` | Limits the search area to a rectangle which is the result of intersecting the rectangle of the page with the horizontal half-plane located above the point `hyp.Top.End - offset`. | | `Void Above( HypothesisInstances hyps, Distance offset = 0 )` | Limits the search area by the horizontal half-plane above the point `hyp.Top.End – offset`. Global coordinates are used. | | `Void Below( YInterval y, Distance offset = 0 )` | Limits the search area to a rectangle which is the result of intersecting the rectangle of the page with the horizontal half-plane located below the point `y.Start + offset`. | | `Void Below( FuzzyRect fuzzyRect, Distance offset = 0 )` | Limits the search area by the horizontal half-plane below the point `hyp.Bottom.Start + offset`. | | `Void Below( Hypothesis hyp, Distance offset = 0 )` | Limits the search area to a rectangle which is the result of intersecting the rectangle of the page with the horizontal half-plane located below the point `hyp.Bottom.Start + offset`. | | `Void Below( HypothesisInstances hyps, Distance offset = 0 )` | Limits the search area by the horizontal half-plane below the point `hyp.Bottom.Start + offset`. Global coordinates are used. | | `Void Exclude( Hypothesis hyp )` | Excludes the region of the hyp hypothesis from the search area. If the hyp hypothesis is not found, excludes the internal rectangle of the search area of the hyp hypothesis. **Example:** Instruct the program to exclude the ElementName element from the search area. If ElementName is not found, calling this function will not modify the search area. `Exclude: ElementName;` | | `Void Exclude( Rect rect )` | Excludes the rect rectangle from the search area. **Example:** Instruct the program to exclude the rectangle of the ElementName element. If ElementName is not found, calling this function will exclude the ElementName search area from the search area for the current element. `Exclude: ElementName.Rect;` | | `Void Exclude( RectArray rectArray )` | Excludes the rectArray array of rectangles from the search area. **Example:** Instruct the program to exclude rectangles of elements ElementName1, ElementName2, and ElementName3. If any of these elements are not detected, their search areas will be excluded from the search area of the current element when calling this function. `Exclude: RectArray(ElementName1.Rect or ElementName2.Rect or ElementName3.Rect);` | | `Void ExcludeRect( XInterval left, YInterval top, XInterval right, YInterval bottom )` | Excludes the fuzzy rectangle described by the ranges left, top, right, and bottom from the search area. **Example:** Instruct the program to exclude a rectangle of absolute size left = 10 dot, top= 200 dot, right=100 dot, bottom=400 dot from the search area. `ExcludeRect: 10dt, 200dt, 100dt, 400dt;` | | `Void ExcludeSet( ImageObjectSet set )` | Excludes from the search area the array of rectangles of the *set* set of objects. **Example:** Instruct the program to exclude the object array of element ElementName from the search area for the current element. `ExcludeSet: ElementName.Set;` | | `Void Exclude( HypothesisInstances )` | Excludes from the search area the region of the instances of the hypothesis. | | `Void RestrictSearchArea( FuzzyRect fuzzyRect )` | Limits the search area to the fuzzy rectangle fuzzyRect. Global coordinates are used. | | `Void RestrictSearchArea( FuzzyRect, IntArray pages )` | Limits the search area by the fuzzy rectangle fuzzyRect. Specify the local coordinates and page range pages. | | `Void RestrictSearchArea( FuzzyRect, SearchAreaPageSetType )` | Limits the search area by the fuzzy rectangle fuzzyRect. Specify the local coordinates and page range of the type SearchAreaPageSetType. | | `Void RestrictSearchArea( RectArray rectArray )` | Limits the search area to the array of rectangles rectArray. Global coordinates are used. **Example:** You can specify that the boundaries of the search area of the current element are defined by the boundaries of the rectangles of the elements ElementName1, ElementName2, and ElementName3. If any of the elements are not detected, when accessing this function, the search area of the current element will be defined by the boundaries of the search areas of the corresponding elements. `RestrictSearchArea: RectArray(ElementName1.Rect or ElementName2.Rect or ElementName3.Rect);` | | `Void RestrictSearchArea( RectArray, IntArray pages )` | Limits the search area by the array of rectangles rectArray. Specify the local coordinates and page range pages. | | `Void RestrictSearchArea( RectArray, SearchAreaPageSetType )` | Limits the search area by the array of rectangles rectArray. Specify the local coordinates and page range of the type SearchAreaPageSetType. | | `Void RestrictSearchArea( Region region )` | Limits the search area to the region region. Global coordinates are used. **Example:** You can specify that the search area of the current element is limited by the region of the element ElementName. `RestrictSearchArea: ElementName.Region;` | | `Void RestrictSearchArea( Region, IntArray pages )` | Limits the search area by the region. Specify the local coordinates and page range pages. | | `Void RestrictSearchArea( Region, SearchAreaPageSetType )` | Limits the search area by the region. Specify the local coordinates and page range of the type SearchAreaPageSetType. **Example:** You can specify that the element must be searched for in the search area on even pages. `RestrictSearchArea: searchArea, EvenPages;` | | `Void RestrictSearchArea( SearchAreaPageRestriction pageRestriction, IntArray pages )` | Limits the page range on which to search without limiting the search area on the pages themselves. The pageRestriction parameter acquires the only value: WholePage. **Example:** You can specify that the element must be searched for on pages 2, 4, 7-9. `RestrictSearchArea: WholePage, 2 << 4 << 7 << 8 << 9;` | | `Void RestrictSearchArea( SearchAreaPageRestriction pageRestriction, SearchAreaPageSetType )` | Limits the page range on which to search without limiting the search area on the pages themselves. The pageRestriction parameter acquires the only value: WholePage. **Example:** You can specify that the element must be searched for on the last page. `RestrictSearchArea: WholePage, LastPage;` | You can use **RSA** alias instead of full name **RestrictSearchArea**. Different constraints for the same page are used jointly, and for different pages independently. (The search is carried out on the pages for which at least one constraint has been specified.) ## Auxiliary functions that define the search area | Function | Description | | :----------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `Rect PageRect()` | The rectangle of the current page in global coordinates used to specify a search area that depends on the page. The **PageRect** can only be used to specify a search area. **Example:** To specify that the element is located in the bottom half of a page (the exact page is not known in advance), write: `Below: PageRect.Top + PageRect.Height / 2;` In all other cases use the construction **Page( N ).Rect** to get the rectangle of the page number **N** or **DocumentRect** to get the rectangle of the entire document. You can also use the **PageNumber** function to specify a search area that depends on the page. | | `Int PageNumber()` | The number of the current page. Specifies a search area that depends on the page. **Example:** Suppose you have a repeating element SearchElements.PageHeader. To search on each page below the instances of this element, write: `Below: SearchElements.PageHeader.AllInstances.PageAreaGlobal( PageNumber ).FuzzyRect, 0 * dot;` | # Geometry of the search area Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/flexilayout/search-conditions/search-geometry How search area geometry is calculated using boundary constraints and coordinate ranges in FlexiLayout. Suppose, for the sake of convenience, that no search region constraints are set out on the element's (and any of its parent Group elements') Properties panel. In this case, before the program applies constraints from the **Search Conditions** section, the search area of the element will coincide with the page rectangle. If there are no additional constraints in the section, the program will look for the element on the entire page. Applying constraints of type 1, 2, and 4 described in [Search Constraints](/vantage/documentation/advanced-designer/activities/flexilayout/search-conditions/search-constraints) above will create a search area consisting of an array of rectangles. The program will take the search area to consist of one rectangle circumscribing the entire array, from which a specified set of rectangles (excluded rectangles) must be excluded. Applying the search constraints of type 3 described in Search Constraints above will create a range of allowed coordinates for each boundary of the hypotheses – left, right, top, and bottom. Each of the boundaries is characterized by a range of coordinates on the corresponding axis, e.g. \[x1, x2] or \[y1, y2]. Here x1 and x2 are of type `XCoordinate`, and y1 and y2 are of type `YCoordinate`. The section of the axis must meet the following condition: `x1 <= x2` for the X-coordinates, and `y1 <= y2` for the Y-coordinates. If several constraints are consecutively applied to a boundary, each constraint will change the range of allowed coordinates for the boundary. Let the Search Condition section contain the following constraints: * `LeftBound > 5mm`, * `LeftBound < 15mm`, * `LeftBound < 10mm`. Let the search area coincide with the rectangle of the page, i.e. `[PageRect.Left, PageRect.Top, PageRect.Right, PageRect.Bottom]`, before the above constraints are applied. Then the ranges of the coordinates of the element boundaries will be: Let the search area not be specified prior to executing these constraints. Then, in the case of a one-page FlexiLayout (the minimum and maximum allowed number of pages in a document is 1), the search area coincides with the rectangle of the page `[PageRect.Left, PageRect.Top, PageRect.Right, PageRect.Bottom]`. In the case of a multi-page FlexiLayout, the search area has the maximum size of `[-INF, -INF, INF, INF]`. The coordinate ranges of the element boundaries will be as follows: | Boundary | Range for one-page FlexiLayout | Range for multi-page FlexiLayout | | :------------ | :-------------------------------- | :------------------------------- | | `LeftBound` | `[PageRect.Left, PageRect.Right]` | `[-INF, INF]` | | `TopBound` | `[PageRect.Top, PageRect.Bottom]` | `[-INF, INF]` | | `RightBound` | `[PageRect.Left, PageRect.Right]` | `[-INF, INF]` | | `BottomBound` | `[PageRect.Top, PageRect.Bottom]` | `[-INF, INF]` | When the constraint `LeftBound > 5mm` is executed, only the left boundary changes. The range of its possible values becomes the segment `[5mm, PageRect.Right]` for one-page FlexiLayouts and the segment `[5mm, INF]` for multi-page FlexiLayouts. After the `LeftBound > 5mm` constraint is applied, only the left boundary will change – its allowed coordinates will be `[5mm, PageRect.Right]`. After the `LeftBound < 15mm` constraint is applied, the range of allowed coordinates of the left boundary will be `[5mm, 15mm]`. After the `LeftBound < 10mm` constraint is applied, the range of allowed coordinates of the left boundary will be `[5mm, 10mm]`. Similarly you can set constraints for other boundaries of the element. The specified boundaries of the search area from a so-called [fuzzy rectangle](/vantage/documentation/advanced-designer/activities/flexilayout/search-conditions/fuzzy-rect). # Specifying the Search Area Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/flexilayout/search-conditions/specifying-the-search-area Overview of methods and functions for defining and constraining search areas in FlexiLayout. * [Search constraints](/vantage/documentation/advanced-designer/activities/flexilayout/search-conditions/search-constraints) * [Geometry of the search area](/vantage/documentation/advanced-designer/activities/flexilayout/search-conditions/search-geometry) * [Fuzzy rectangle](/vantage/documentation/advanced-designer/activities/flexilayout/search-conditions/fuzzy-rect) * [Functions that limit the search area](/vantage/documentation/advanced-designer/activities/flexilayout/search-conditions/search-functions) * [Functions that create a fuzzy rectangle](/vantage/documentation/advanced-designer/activities/flexilayout/search-conditions/fuzzy-functions) * [Debugging functions which return information about the search area](/vantage/documentation/advanced-designer/activities/flexilayout/search-conditions/debug-functions) # User Dictionaries Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/flexilayout/user-dictionaries Using TXT and XML format user dictionaries in Advanced Designer for FlexiLayout. Advanced Designer supports user dictionaries in TXT and XML formats. ## TXT Dictionaries Usage A TXT dictionary is a simple list of search text variants for a Static Text search element. You can access a TXT user dictionary both from the element's **Properties** pane and from the code using the SearchTextFromFile function. Each line should contain one search text variant. You can use `|` (the OR operator) to construct phrases from words. For more information about specifying search text variants, see Static Text Element. ## XML Dictionaries Usage XML dictionaries are useful when you have different sets of data associated with the same entity and need to select a suitable set of data depending on the document's features. Here are some typical use cases: * You want to search for a keyword on documents in different languages. You can compile lists of possible keywords for each language and put them into a single XML file. Then you need to detect the language of each document and request the appropriate list of keywords when setting up a Static Text element. * You want to check the values of several elements against lists of allowed values. You can compile lists of allowed values and put them into a single XML file. Then you can request the corresponding list of values from the code of each element. * Your document set contains documents from different countries and you need to use some country-specific data, such as tax rates, to process the documents. You can put all country-specific data into a single XML file. Then you need to detect the country of origin of each document and request the corresponding data, which can then be used for searching, validating or suggesting values for fields. You can send xPath requests to XML files from the code of any search element using the ReadFromXML and ReadSingleStringFromXML functions. ## Managing User Dictionaries To manage your user dictionaries, click **More** on the toolbar and select **User Dictionaries**. In the dialog box that opens, you can see the list of all available dictionaries. This list will also contain dictionaries imported together with a FlexiLayout if you created a skill from a FlexyLayout project or imported a FlexiLayout into your Extraction Rules activity. To upload a new user dictionary, click **Add**, navigate to the file you want to upload, and click **Open**. To view or edit a user dictionary, select it in the list and click **Edit**. Changes will only be saved after you close the editor by clicking **OK**. You can also delete dictionaries and open the folder containing the selected dictionary. # Forms activity Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/forms/forms-activity Extract data from structured documents — questionnaires, applications, tax forms — with consistent field locations in Advanced Designer. The Forms activity is designed to extract data from structured documents where the location of the fields is the same in each document instance. Examples of such documents include questionnaires, application forms, and tax return forms. Add this activity to your document processing flow if you want to combine the processing of structured documents with other Vantage technologies. For example, if you want to extract data from structured documents containing barcodes or stamps, you need to combine the Forms activity with the Extraction Rules activity. For more detailed information about using the Forms activity in your document processing flow, see [Process structured documents in Advanced Designer](/vantage/documentation/advanced-designer/use-cases/process-structured). # Set up a Forms activity Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/forms/forms-activity-setup Add a Forms activity, upload sample blank forms for each variant, train it, and test against completed documents in Advanced Designer. On the **Activities** tab, add a Forms activity to the document processing flow. Click **Activity Editor**. On the **Blank Form** tab, upload one sample blank form for each variant of your document (we do not recommend uploading more than 10 different variants). Label the fields from which data must be extracted. For guidelines on labeling, see [Labeling guidelines](/vantage/documentation/advanced-designer/labeling/guidelines). Click **Train Activity**. Click the **Test Set** tab and upload completed test documents. Make sure that all the fields are labeled correctly on each document. If any field locations don't match those on any of the uploaded sample blank forms, add a sample blank form for that document variant. Click **Test Activity**. When the process completes, click the **Results** tab and review the results. If you are not satisfied with the results, adjust the labeling and train the activity again. # Hypothesis evaluation functions Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/hypothesis-eval-functions FlexiLayout functions for computing penalty coefficients that adjust hypothesis quality during element evaluation in Extraction Rules activities. | Function | Description | | :----------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `Quality FuzzyQuality( Area value, AreaFuzzyInterval interval )` | Specifies a function for computing a penalty coefficient by which the quality of a hypothesis for the element should be multiplied. The function is calculated as the result of checking if the value "value" belongs to the fuzzy interval "interval." | | `Quality FuzzyQuality( DistInterval value, DistFuzzyInterval interval )` | The function calculates the penalty coefficient by which the quality of the element hypothesis must be multiplied. The function checks whether the value "value" belongs to the fuzzy interval "interval." | | `Quality FuzzyQuality( Int value, IntFuzzyInterval interval )` | The function calculates the penalty coefficient by which the quality of the element hypothesis must be multiplied. The function checks whether the value "value" belongs to the fuzzy interval "interval." | | `Quality Quality( Real )` | Sets the penalty coefficient by which the quality of the element hypothesis must be multiplied. | # Named Entities (NER) activity Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/ner Extract named entities — people, organizations, locations, addresses, money, dates, durations — from unstructured documents using NLP in Advanced Designer. The Named Entities (NER) activity is designed to use Natural Language Processing (NLP) to extract named entities from unstructured documents, such as contracts, letters, orders, press releases, and other documents with no specific structure that can be described using rules. To process these documents using a Named Entities (NER) activity, you need to map the named entities to the skill fields into which the entity values will be extracted. This activity will then analyze the document and extract the named entities into their corresponding fields. You can also set up named entity extraction for fields extracted by other activities. Suppose you know that organization names and addresses that you need to extract are located in the first paragraph of each contract. You can extract the first paragraph using a Segmentation activity, and then extract company names and addresses from this paragraph using a Named Entities (NER) activity. This approach is more reliable than extracting named entities from the entire document, since you can control the specific area where those entities are extracted from. The activity only supports fields of type Text that have data type set to Text, Date, or Money. ## Set up a Named Entities (NER) activity On the **Activities** tab, add a Named Entities (NER) activity to the document processing flow. On the **Activity Properties** pane, use the **Source** drop-down list to select a source that the activity will use to extract named entities from — either the whole document or a single field extracted by another activity. In the **Output field**, select fields into which the named entities will be extracted. The output fields must be either on the same nesting level as the source field or one level below it. Click **Create Mapping**. In the dialog that opens, select which named entities will be extracted to each field in the **Entity to extract** list. Click **Save**. You can edit the mapping at any time by clicking **Edit Mapping**. Click **Test Skill** to run the skill and review the named entity extraction results on the **Results** tab. ## Supported named entities | Entity name | Description | Example | Supported data types | Supported languages | | :--------------- | :--------------------- | :---------------------------------------------------------------------------- | :---------------------------- | :----------------------------------------------------------------------------------------- | | **Person** | Names of people | John Doe, Jane Smith | **Text** | English, Russian, German, French, Spanish, Japanese, Italian, Portuguese (Standard), Dutch | | **Location** | Names of locations | Anytown, Corporate Place | **Text** | English, Russian, German, French, Spanish, Japanese, Italian, Portuguese (Standard), Dutch | | **Organization** | Names of organizations | ABBYY, Acme Corp. | **Text** | English, Russian, German, French, Spanish, Japanese, Italian, Portuguese (Standard), Dutch | | **Address** | Addresses | 123 Main Str., Anytown AB 45678, 950 Acacia Avenue 50, Anytown, AB 12345, USA | **Text** | English, Russian, German, French, Spanish, Japanese, Italian, Portuguese (Standard), Dutch | | **Money** | Amounts of money | \$2670.00, 199 dollars 99 cents | **Text**, **Amount of money** | English, Russian, German, French, Spanish, Japanese, Italian, Portuguese (Standard), Dutch | | **Date** | Dates | November 14, 2009, 11/14/2009 | **Text**, **Date** | English, Russian, German, French, Spanish, Japanese, Italian, Portuguese (Standard), Dutch | | **Duration** | Time periods | Twelve (12) months, 4 days | **Text** | English, Russian, German, French, Spanish, Italian, Portuguese (Standard), Dutch | # Additional check Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/nlp-extraction-rules/code-syntax/additional-check Additional-check operations in NLP Extraction Rules code — object equivalence, parent-group access, and reaching objects through token variables. | Operation | Syntax | Description | Example | | :--------------------- | :------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | object equivalence | `==` | A double equal sign means the two objects should be the same. | `n: Party.OrgName` `[ a: @Party.Address ]` `parent( n ) == parent( obj( a ) )` Checks that the Address and OrgName search elements are children of the same instance of the Party group. The variable **a** is a token variable, not an object, so we have to access its object before we can use it in the "parent" condition. `n: Party.OrgName` `[ a: @Party.Address ]` `parent( n ) ~= parent( obj( a ) )` Checks that the Address and OrgName search elements are children of different instances of the Party group. | | object non-equivalence | `~=` | A tilde sign followed by an equal sign means the two objects should not be the same. | See example above. | | access the object | `obj(token variable)` `obj(token variable, index)` | "obj" lets you access the object in the token variable. If there are several objects mentioned within the variable and you need to get only one of them, specify the token's index. | See example above. | | parent group | `parent(search element name)` | "parent" lets you access the parent group of a search element that was already mentioned in the rule. | See example above. | # Basic concepts Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/nlp-extraction-rules/code-syntax/basic-concepts Code structure for NLP extraction rules — left-hand and right-hand parts, existence conditions, token templates, and language-specific rules. For each search element, the code in an Extraction Rules activity contains a series of rules that are executed sequentially. Each rule consists of two parts and ends with a semicolon: ``` Left-hand part => Right-hand part; ``` The left-hand part checks a condition or finds values that fulfill a condition. The right-hand part creates new search element instances and assigns the values to them. ## Example The simple rule below finds a search element `kw_Contract` that contains the keyword "Contract": ``` [ t: "Contract" ] // looking for a word "Contract" and assigning the token to a new variable called t => kw_Contract( t ); // creating a new instance of the kw_Contract search element on each repetition of the word "Contract" ``` ## Left-hand part structure The left-hand part consists of up to three parts: ``` Existence_condition Token_template Additional_check ``` ### **Existence condition** (optional) Finds an object that has the specified attributes. We recommend assigning a name to the object if it exists, so that you can use it again within the same rule. The condition may also specify the absence of an object. **Examples** If you need to find only one instance of the `SellerName` search element, specify at the beginning of the rule that no instance has yet been found: ``` ~SellerName // checks that the SellerName search element hasn't yet been found ``` You may not assign a variable name when using negative conditions, because a negative condition means that there is no object. This condition checks the existence of an address named entity: ``` a: NERAddress // checks the existence of an address named entity and assigns it to a new variable called a ``` See [Existence condition](/vantage/documentation/advanced-designer/activities/nlp-extraction-rules/code-syntax/existence-condition) for details on the syntax used in this part. ### **Token template** (required) Consists of a sequence of tokens. A **token** is a word from a natural language or a punctuation mark. Tokens don't usually contain spaces, apart from some rare cases where the space is inside a set construction used as a single word: *such as*, *a lot*. **Example** For example, the following token template consists of one token matching the "Grantor" keyword, one token with a colon, and a repeating token with the **Person** named entity (specified as repeating because a person's name may consist of several words, each a separate token): ``` ["Grantor"] [":"] [p: @NERPerson]+ ``` The template will match a text string like "Grantor: Anne Smith" and assign the value "Anne Smith" to the variable `p`. See [Token template](/vantage/documentation/advanced-designer/activities/nlp-extraction-rules/code-syntax/token-template) for details on the syntax used in this part. ### **Additional check** (optional) Checks more conditions for objects that were already mentioned in the rule. **Example** For example, suppose you're looking for the parties of a contract, and have grouped the fields into two separate group instances, one for each party. Having found an organization name and an address, you can check whether these search elements have the same parent. If they do, this means that this address belongs to this organization. ``` n: Party.OrgName // the organization name search element was found earlier [ a: @Party.Address ] // finds the token on which the address search element was found // Checks that organization name and address search elements // are children of the same instance of the Party group element parent( n ) == parent( obj( a ) ) ``` See [Additional check](/vantage/documentation/advanced-designer/activities/nlp-extraction-rules/code-syntax/additional-check) for details on the syntax used in this part. ## Right-hand part structure The right-hand part consists of one or several comma-separated parts that create new instances of groups and search elements and assign values to the search elements: ``` Create_group_A, Create_element_B_and_assign_value ``` Usually, the left-hand part of the rule finds a token, a token sequence, or an object in the left part and assigns it to a variable. Then, the right-hand part can use this variable to write its value into one of the search elements. For example, the following code writes the value of `t` into the `Element1` search element: ### Example ``` [t: "Lease"] ["Agreement"] => Root.kw_AgreementType( t ); ``` See [Right-hand part](/vantage/documentation/advanced-designer/activities/nlp-extraction-rules/code-syntax/right-hand-part) for details on the syntax used in this part. Code only creates instances of search elements and group search elements that already exist in the Extraction Rules activity. No new search elements can be created using code. To create additional search elements in the structure, [use the Search Elements tab](/vantage/documentation/advanced-designer/activities/nlp-extraction-rules/search-elements) in the Activity Editor. ## Referencing search elements To access a search element in code, you need to use a name that will identify that element unambiguously. If an element has a unique name, you can refer to it simply by its name. If there are several elements with the same name, you need to specify a path that is long enough to identify the element. ### Example Consider the following nested structure of search elements: * Property * Type * Address * Buyer * FullName * Address To reference the name of the buyer in code, you can simply use "FullName", because the element with this name is unique. "Buyer.FullName" or "Root.Buyer.FullName" will work just as well. To reference the buyer's address, you will have to add at least the name of the parent group, because there are two elements called "Address". Here, you should use "Buyer.Address" or "Root.Buyer.Address". ## Language-specific rules You can specify the document language for which the rule should be executed. Doing so will skip the rule for other languages. Precede the rule by a hash (#) and the two-letter language code (ISO-639-1 standard). ### Codes for the supported languages | Language | Code | | :-------------------- | :--- | | English | `en` | | German | `de` | | French | `fr` | | Spanish | `es` | | Italian | `it` | | Portuguese (Standard) | `pt` | | Japanese | `ja` | | Russian | `ru` | For example, if you process documents in English and in Spanish, you may want to use language-specific keywords: ### Example ``` #en [ t: "Grantor" ] // the keyword for English documents => kw_landlord( t ); #es [ t: "Arrendador" ] // the keyword for Spanish documents => kw_landlord( t ); ``` # Code syntax for the Extraction Rules activity for NLP Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/nlp-extraction-rules/code-syntax/code-syntax Overview of the code language for the NLP Extraction Rules activity — search conditions, token templates, and value assignment. The Extraction Rules activity uses its own language for setting search conditions, finding objects, and assigning values to search elements. Code representation for search element properties is generated automatically and can be modified in the [code editor](/vantage/documentation/advanced-designer/activities/nlp-extraction-rules/editing-code) for the elements that look for named entities (**Person**, **Organization**, **Address**, **Location**, **Date**, **Duration**, and **Money**). * [Basic concepts](/vantage/documentation/advanced-designer/activities/nlp-extraction-rules/code-syntax/basic-concepts) * [Understanding generated rules](/vantage/documentation/advanced-designer/activities/nlp-extraction-rules/code-syntax/generated-rules) * [Sample extraction rules](/vantage/documentation/advanced-designer/activities/nlp-extraction-rules/code-syntax/sample-extraction-rules) * [Syntax](/vantage/documentation/advanced-designer/activities/nlp-extraction-rules/code-syntax/syntax) # Existence condition Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/nlp-extraction-rules/code-syntax/existence-condition Existence-condition operations in NLP Extraction Rules code — check object existence or absence, assign variable names, and combine conditions. | Operation | Syntax | Description | Example | | :--------------- | :------------ | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------ | | object existence | `object_name` | Checks that an object exists. | `Root.Group` Checks that the Group search element has been found. | | variable | `:` | A colon is used to assign a name to the object that follows it. **Note:** The variable will be available only within that same rule, that is, until the right-hand part is finished with a semicolon. | `t: Root.Group` Checks that the Group search element has been found and assigns it to a new variable t. | | object absence | `~` | A tilde sign negates a condition or specifies the absence of an object. Note that you can't assign a name if the object is specified as non-existent. `// INVALID STATEMENT:` `t: ~Root.Element` | `~Root.Element1` Checks that the Element1 search element has not been found. | | logical AND | `,` | A comma is used as a logical conjunction. | `Borrower.Name, Borrower.Address` Checks that both the Name and Address search elements were found in the Borrower group. | # Understand generated rules Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/nlp-extraction-rules/code-syntax/generated-rules Read auto-generated code for NLP search-element properties — full-path references, name simplification, and rule-by-rule explanation in Advanced Designer. When you create an element and set up its properties in the **Properties** pane, the program will automatically generate code for these properties. This section will help you understand the auto-generated code, so that you can modify it if needed. ## Search element structure Search element structure example with Parties group containing Organization and Address children The automatically generated code for the `Parties.Address` search element will look like this: ## Auto-generated rule ``` ~Root.Parties.Address, t1 : Root.Parties.Organization, t2 : Root.kw_PreNextParty [ t: @NERAddress( same, right_to( t1 ), left_to( t2 ) ) ~@Root.Parties.Address ]+ => Root.Parties.Address( t ); ``` As you can see, the auto-generated code always refers to each search element using the full path to make sure there is no name conflict. In this case, we can [trim down the element names](/vantage/documentation/advanced-designer/activities/nlp-extraction-rules/code-syntax/basic-concepts#referencing-search-elements), removing Root from each. ## Rule with shorter element names ``` ~Parties.Address, t1 : Parties.Organization, t2 : kw_PreNextParty [ t: @NERAddress( same, right_to( t1 ), left_to( t2 ) ) ~@Parties.Address ]+ => Parties.Address( t ); ``` We can now break down the meaning of each statement: ## Rule explained ``` // Check that the Address search element hasn't been found yet, because we need only the first instance ~Parties.Address, // Get the Organization search element and the next party keyword search element. They were found before Address t1 : Parties.Organization, t2 : kw_PreNextParty // Find the token sequence that contains one NERAddress named entity // ("same" keyword specifies that only one NERAddress should be matched if there are several) // The address should be located after organization name and before the keyword for the next party // The + sign means that the token sequence may consist of several words // The ~@Parties.Address condition at the end ensures // that the address won't be matched on the same tokens again [ t: @NERAddress( same, right_to( t1 ), left_to( t2 ) ) ~@Parties.Address ]+ => Parties.Address( t ); ``` # Right-hand part Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/nlp-extraction-rules/code-syntax/right-hand-part Right-hand-part operations in NLP Extraction Rules code — create search elements, create groups, and create child search elements within groups.
OperationSyntaxDescriptionExample
create a search elementsearch\_element\_name( value\_expression ) search\_element\_name( token\_variable1 + token\_variable2 )The search element is assigned the value specified in the brackets. The value can be specified by a variable created in the left-hand part of the rule, or it can be passed directly as text in quotation marks. The values of several variables can be concatenated using the plus sign.\[ t: "Contract" ] => kw\_Contract( t ); Assigns the value of the token t to the kw\_Contract search element. \[ "Contract" | "Contrato" ] => documentType( "Contract" ); Sets the document type to a constant string "Contract" if the specified keywords were found. \[ org1: @NEROrganization( same ) ]+ \[ kw\_doingBusinessAs: "d/b/a" | "d / b/ a" ] \[ org2: @NEROrganization( same )]+ => Supplier\_FullName( org1 + kw\_doingBusinessAs + org2 ); Finds two organization names joined by a "d/b/a" abbreviation and assigns the whole to the Supplier\_FullName search element.
create a groupgroup\_name idA new instance of a group is created and assigned to a variable. You can then use this variable to create nested search elements. Note: If you attempt to create a second instance of a non-repeating group, the whole rule will not be executed. When working with non-repeating groups, write two separate rules: for when an instance already exists and for when it does not.\["Grantor"] \[":"] \[p: @NERPerson]+ => Grantor group, group.FullName( p ); Creates a new instance of a Grantor group and assigns the person's name found in the left-hand part to the Grantor.FullName search element.
create a child search element in a groupid.search\_element\_name( value\_expression )The new search element is created within the group specified by a variable and receives the value specified in the brackets.See example above.
create a child search element in a group from left-hand partleft\_hand\_part\_object.search\_element\_name( value\_expression )The new search element is created within the group found in the left-hand part of the rule. The value for the new search element is specified in the brackets. Note: For a non-repeating groups, the left-hand part of your rule can both check that an instance exists and assign a variable name to that group. The right-hand part can then use this variable name to create nested elements.group: Tenant \[p: @NERPerson]+ \[]\{0,3} \["Tenant"] => group.FullName( p ); Accesses the existing instance of a Tenant group and assigns the person's name found in the left-hand part to the Tenant.FullName search element. \[org: @BuyerGroup.organization\_name]+ \[]\{3,9} \[addr: @NERAddress] => parent( obj( org ) ).buyer\_address( addr ); Finds an address named entity that is located close to the organization name and assigns this address to the buyer\_address search element in the same instance of BuyerGroup to which the organization\_name search element belongs.
# Sample extraction rules Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/nlp-extraction-rules/code-syntax/sample-extraction-rules Working examples of NLP extraction rules — last entity instance, money in words and digits, segment detection, party grouping, and date-and-time pairing. This section provides some sample extraction rules created using the code editor, which offers more flexibility than the graphical user interface (see the [Syntax](/vantage/documentation/advanced-designer/activities/nlp-extraction-rules/code-syntax/syntax) section for a detailed description of the syntax used). ## Finding the last instance of a named entity In this example, an extraction rule is used to find the name of the tenant's organization in a lease agreement. This name occurs after the names of all the other organizations and cannot be extracted using the settings in the GUI, where you can only select **Instances > First**. However, you can use an extraction rule to look for the name of the organization that closely precedes the word "Tenant" enclosed in brackets. First, we find the keyword "Tenant" as an auxiliary search element. Next, we look for the name of the organization that occurs before that keyword. In this example, there are two intervening tokens—an opening bracket and a quotation mark—so we limit the distance to three tokens, allowing a margin for safety. If your documents have more intervening tokens separating the keyword from the name of the organization, increase this number accordingly. ### Rule for extracting the last organization instance ``` // We are looking only for one instance ~TenantName // Find the organization name that occurs before the keyword "Tenant" // and is separated from it by no more than three tokens // The intervening tokens must not contain another organization's name [ t: @NEROrganization ]+ [ ~@NEROrganization ~@kw_Tenant ]{0,3} [ @kw_Tenant ] => TenantName( t ); ``` ### Example Lease agreement excerpt with the tenant's organization name extracted into the TenantName search element ## Extract an amount of money stated both in words and as a numeral In this example, an extraction rule with regular expressions is used to find an amount of money that is written out first in words and then in digits in round brackets, for example: Two Thousand One Hundred Forty-Seven Dollars and Sixty Cents (\$2,147.60) Two Thousand One Hundred Forty-Seven Dollars and Sixty Cents (in numbers: \$2,147.60) ### Rule for extracting an amount of money ``` // The variable a receives the Money named entity that is not in numbers // and has not yet been assigned to any other instance of the Money search element [ a: @NERMoney( same ) ~@Money ~/\d+/ ]+ [ br: '(' ] // The question mark means that the words "in numbers" are optional // The ^ and $ symbols mean that the entire string must match the regular expression // The i option means that matching is case-insensitive ( [ e1: /^in$/i ] [ e2: /^numbers$/i ] [ e3: ':' ]? )? // The variable b receives the Money named entity that is placed inside brackets [ b: @NERMoney( same ) ~@Money ]+ => Money( a + br + e1 + e2 + e3 + b ); ``` ### Example Money amount extracted as a single value combining the words form and the parenthesised digit form ## Finding segments by means of keywords In this example, extraction rules are used to find segments which cannot be reliably detected by the Segmentation activity. The rules look for keywords that start or end a segment and extract the text in between. We assume that our documents have numbered second-level headings written in all capitals, for example: 1.1 PREMISES, 2.3 LIABILITY AND INDEMNITY, and so on. We also assume that we have already extracted the first-level headings into a search element named "kw\_Heading1" (the respective extraction rule is omitted for the sake of brevity). First, we look for keywords that start each paragraph of the document and extract them into a search element named "kw\_Heading2." Next, we put the text between two consecutive keywords into a search element named "Segment." In the current version of Advanced Designer, the code editor is only available for search elements that are used to find named entities. As a workaround, to extract text like headings or segments by means of code, simply create a search element for any of the supported named entities (for example, **Organization**) and enter the code of the rule into the code editor of that element. ### Rule for extracting second-level headings into the kw\_Heading2 search element ``` // Look for a numbered second-level heading that has up to five words in all caps // The heading number can be found as one token: 1.1 [ t1: /\d{1,2}\.\d{1,2}/ ] [ t2: ]{1,5} => kw_Heading2( t1 + t2 ); // The heading number can be found as three separate tokens: 1, dot, 1 [ t1: /\d{1,2}/ ] [ t2: '.' ] [ t3: /\d{1,2}/ ] [ t4: ]{1,5} => kw_Heading2( t1 + t2 + t3 + t4 ); ``` ### Rule for extracting the segment into the Segment search element ``` // Find the text segment between two consecutive section headings // Exclude also any first-level headings [ @kw_Heading2 ] [ interval: ~@kw_Heading2 ~@kw_Heading1 ]+ => Root.Segment( interval ); ``` ### Example Document text with segments extracted between consecutive second-level headings into the Segment search element In this example, the words "3.1 FIRSTLY" and "3.2 SECONDLY" are extracted into the `kw_Heading2` search element, and then the text between any two consecutive instances of the `kw_Heading2` search element is extracted into an instance of the `Segment` search element. ## Grouping information about each entity In this example, extraction rules are used to make sure that the details about each party to an agreement are grouped correctly (that is, the name and address of each party belong to one group instance and are not split into several instances or mixed with the details of the other party). The idea is to find some identifying information about a party that always comes first. There are multiple ways to do this, depending on how agreements are drafted. In this example, we assume that the name of each organization always comes first, followed by its address and role in the agreement. Therefore, we will: 1. Look for organization names, create a new instance of the `Party_Group` group search element for each name found, and fill in its child search element named "`Organization_Name`." 2. Look for the address and role that are separated by no more than, say, 20 tokens from each instance of the organization name, access the instance of `Party_Group` that is the parent of the organization name and fill in the child search elements named "`Address`" and "`Role`" in that instance. Data will only be searched within the segment found by the Segmentation activity and passed to the Extraction Rules activity as an Input field named "Parties\_Segment." ### Rule for extracting the Organization\_Name search element ``` // Find organization name and create a new group instance for each [ org: @NEROrganization( same ) ~@Party_Group.Organization_Name @Parties_Segment ]+ => // Create a new instance of Party_Group and fill in Organization_Name Party_Group.Organization_Name( org ); ``` ### Rule for extracting the Address search element ``` // Now look for the address that is separated by no more than 20 tokens // from the organization name // and that has not yet been assigned to any of the organizations in Party_Group [ org: @Party_Group.Organization_Name( same ) ]+ [ ~@NERAddress ]{0,20} [ t: @NERAddress( same ) ~@Party_Group.Address @Parties_Segment ]+ => // Access the instance of Party_Group that is the parent of the organization name // and fill in its Address child parent( obj( org )).Address( t ); ``` ### Rule for extracting the Role search element ``` // Repeat the same for the role // To find the role, use keywords [ org: @Party_Group.Organization_Name( same ) ]+ [ ~("Tenant" | "Landlord" | "Broker") ]{0,20} [ t: "Tenant" | "Landlord" | "Broker" ~@Party_Group.Role @Parties_Segment ]+ => parent( obj( org )).Role( t ); ``` ### Example The search elements will be extracted as follows: Party_Group instances extracted with each party's organization name, address, and role correctly grouped On the data form, you can also see that the name, address, and role of each company is grouped under a separate group instance: Data form showing each company's name, address, and role under a separate Party_Group instance number The details of each organization are grouped together, as shown by the instance numbers in brackets. ## Finding the date and time together In this example, an extraction rule is used to find a combination of time and date. First, we use a search element named "Time" of type **Value from Regular Expression** (the regular expression used is `[1]?\d:\d{2}\s+(([ap]\.m\.)|([AP]M))?`). Next, we look for a **Date** named entity located close to it. Finally, we concatenate the token sequences found and assign the result to a search element named "TimeAndDate." ### Rule for extracting date and time combined ``` // Use a Value from Regular Expression search element to find the time // Use @NERDate to find a Date named entity close to the time [ time: @Time ~@TimeAndDate ]+ [ t: ~@NERDate ]{0,3} [ date: @NERDate( same ) ]+ => // Combine the values to write them in one field // Only consecutive token sequences can be combined, so the auxiliary token is also added TimeAndDate( time + t + date ); ``` ### Example Concatenated time and Date named entity extracted into a single TimeAndDate search element # Syntax Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/nlp-extraction-rules/code-syntax/syntax Code syntax reference for the NLP Extraction Rules activity — comments, existence conditions, token templates, and right-hand-part operations. * [Existence condition](/vantage/documentation/advanced-designer/activities/nlp-extraction-rules/code-syntax/existence-condition) * [Token template](/vantage/documentation/advanced-designer/activities/nlp-extraction-rules/code-syntax/token-template) * [Additional check](/vantage/documentation/advanced-designer/activities/nlp-extraction-rules/code-syntax/additional-check) * [Right-hand part](/vantage/documentation/advanced-designer/activities/nlp-extraction-rules/code-syntax/right-hand-part) | Operation | Syntax | Description | Example | | :-------- | :---------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------- | | comment | `//` or `/* comment */` | Usual comments syntax. Double slash specifies that no code to the right of it will be executed on that line. Slash + asterisk lets you comment out multiple lines at once. | `[ a: @NERAddress ]` `// checks the existence of an address named entity on a token and assigns it to a new variable called a` | # Token template Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/nlp-extraction-rules/code-syntax/token-template Token-template operations in NLP Extraction Rules code — token text, lemmas, regular expressions, predicates, object conditions, and repetition operators.
OperationSyntaxDescriptionExample
token\[]Square brackets enclose a single token.\[] Any word or punctuation mark.
token text""Quotation marks denote a token with the specified text.\["Grantor"] A token with the word "Grantor".
variable:A colon is used to assign a name to the token sequence that follows it. Note: The variable will be available only within that same rule, that is, until the right-hand part is finished with a semicolon.\[t: "Contract"] Finds a token that contains the word "Contract" and assigns it to the variable t.
lemmaL"word" Lemma"word""L" or "Lemma" before a word means that the search should find all forms of that word.\[L"rule"] Tokens such as "rule", "rules", "ruled", and "ruling" will all be found.
regular expression/regular expression/Single forward slashes enclose a regular expression. As with the Value from Regular Expression search elements, the PCRE2 regular expression syntax is used./\[1]?\d:\d\{2}\s+((\[ap].m.)|(\[AP]M))?/ The template will match the time in 12-hour format, for example, "2:00 p.m.", "9:34 AM".
option setting for regular expressions/regular expression/iThe option setting can be put after the forward slash that closes the regular expression. The "i" option, for example, means case-insensitive matching of the regular expression./\[1]?\d:\d\{2}\s+(\[ap].?m.?)?/i This template simplifies the example above with the help of case-insensitive matching. It will match the time in 12-hour format, for example, "2:00 p.m.", "9:34 AM".
token predicates\The token is first in a paragraph.\["Section" \] The word "Section" starts the paragraph. You can use this, for example, to extract the section number immediately following this token.
token predicates\The token is a punctuation mark.\["Tenant"] \[\]\{0,2} The word "Tenant" may be followed by up to two punctuators, for example a closing bracket and a comma.
token predicates\The token begins with a capital letter.\[L"agreement" \] This template will match "Agreement" and "Agreements", but not "agreement".
token predicates\Some, but not all, letters of the token are capitalized.\[L"letter" \] This template will match, for example, "Letters" and "letteR".
token predicates\The token is in all capital letters.\[t: @NEROrganization \]+ This template will match organization named entities written in all caps.
logical OR|A vertical bar is used to specify alternative token text or alternative conditions for the token.\["Lender" | "Co-Lender"] \["shall"] \["have"] This template will match either of these strings: "Lender shall have" or "Co-Lender shall have"
logical ANDspaceSpace is used as a logical conjunction for token conditions.\[t: "Section" \] Finds a token that contains the word "Section" AND starts a paragraph.
object condition@object\_nameAn at sign ("@") checks that the token is located within an object region. The following objects are supported: Named entity objects, the same types that are also available as specialized search elements, prefixed by "NER": NERPerson, NEROrganization, NERAddress, NERLocation, NERDate, NERDuration, NERMoney; Search elements; Sentence - A separate object is created for each sentence in the text flow; Paragraph - A separate object is created for each paragraph in the text flow.\[t: @NEROrganization]+ \["Lender"] Assigns the name t to a token sequence that contains a NEROrganization entity and is followed by the keyword "Lender". \[t: @NERPerson @Preamble\_Segment ]+ Finds a person's name in the preamble segment (represented by an Input field search element).
separating similar objects@object\_name( same )"same" means that on a repeating token, the same object is matched to the sequence of tokens instead of several objects of this type. If the object condition is using a logical OR, "same" should not be used.For example, if you have a list of people's names following one another, they will all be detected as NERPerson. To extract one person's name at a time, use the "same" condition. \[t: @NERPerson( same )]+ Assigns the name t to the first person found.
relative position@object\_name( right\_to( another\_object )) @object\_name( left\_to( another\_object ))"right\_to" means that object\_name is found after the another\_object specified in the brackets. "left\_to" means that object\_name is found before the another\_object specified in the brackets.\[ t: @NERAddress( same, right\_to( id1 ), left\_to( id2 ) )] Finds a NERAddress named entity between id1 and id2.
logical OR (as used in object conditions)|A vertical bar can also be used as a logical disjunction for object conditions.\[t: @NERPerson( right\_to( id1 ) | right\_to( id2 ) )] Assigns the name t to a person's name located either after id1 or after id2.
token sequencespaceTokens in a sequence are separated by spaces.\["Grantor"] \[":"] This template will match "Grantor:". Tokens may be specified simply for context, even if these words don't need to be extracted.
alternative token sequences\[token1]|(\[token2]\[token3])A vertical bar is used to specify alternative token sequences. Round brackets set the priority.\["will"] (\["start"] | (\["take"] \["place"])) \["on"] This template will match either of these strings: "will start on" or "will take place on". Note that if we had omitted the brackets, the template would also have matched "will start place on". The brackets ensure that the "take place" phrase is either present completely or not at all. Note: For more complex real-life cases of alternative token sequences, you may find it more convenient to write a separate rule for each alternative:

\["will"] \["start"] \["on"]
=>
...;
\["will"] \["take"] \["place"] \["on"]
=>
...;
optional token\[]?A question mark means that the token is optional.\["Tenant"] \["."]? The word "Tenant" may be followed by a dot.
optional repeating token\[]\*An asterisk means that the token is optional and may be repeated several times.\["Grantor"] \[]\* \["Tenant"] The keywords "Grantor" and "Tenant" may be separated by any number of tokens, or none.
required repeating token\[]+A plus sign means that the token should be found at least once and may be repeated.\[@NERPerson]+ Specifies that a person's name should be found, possibly over several tokens, because the name usually consists of several words.
token with specified number of repetitions\[]\{n,} \[]\{n,m}Numbers in curly brackets mean that the token should be repeated from n to m times. If the second number is not specified, the token should be repeated at least n times. Note: As you can see, \{0,} is equivalent to \*, while \{1,} is equivalent to +.\["Grantor"] \[]\{1,3} \["Tenant"] The keywords "Grantor" and "Tenant" should be separated by 1 to 3 tokens. This may be more useful than \*, because you will be able to specify that the two keywords are not too distant from each other.
# Debug the Extraction Rules activity Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/nlp-extraction-rules/debugging-extraction-rules Compile-and-match cycle for refining NLP extraction rules — element dependencies, regular-expression errors, dictionary connectivity, and code errors. Debugging the Extraction Rules activity includes the following steps: 1. Compile and match the activity. 2. Review the errors and refine the rules to improve object extraction. Repeat these steps until you are satisfied with the results. ## Step 1. Compile and match The Extraction Rules activity is compiled automatically when you exit the activity editor or when you click **Match** or **Test Activity**. If any compilation errors occur, matching cannot proceed. Any search elements with compilation errors will be marked with an error icon. Hover your mouse over this icon to see a detailed description of the error. Compilation errors may occur in the following: * **Element dependencies**: Elements are searched top down. This means that elements used in the search conditions of another element must precede that element in the list of elements. For example, if Element A is referenced in the search conditions for Element B, then Element A must precede Element B in the list of elements. If you disable Element A or move it below Element B in the list of elements, a compilation error will occur, and Element B will be marked with an error icon. * **Regular expressions**: If the regular expression in a **Value from Regular Expression** search element is invalid, an error will occur in this element. * **Dictionaries**: If the program is unable to connect to the dictionary used by a **Value from Dictionary** search element, an error will occur in this element. * **Code** (see [Code syntax for Extraction Rules activity for NLP](/vantage/documentation/advanced-designer/activities/nlp-extraction-rules/code-syntax/code-syntax)) **Matching** refers to finding objects that meet the conditions specified in the properties of the search elements. The program will go down the **Search Elements** list attempting to locate all the objects described by the elements, one by one. Matching is performed only for the active elements and fields. To reduce matching time while debugging, you can temporarily disable the elements that do not affect the results for the element you are currently debugging. To change the state of an element, use its shortcut menu. You can also select multiple elements and change their state with one click. The compilation and matching status of the Extraction Rules activity is displayed in the notification log (available by clicking the bell icon button in the upper right corner). You can navigate to the matching results by clicking the link in the appropriate notification. ## Step 2. Review and correct errors If a search element has not been found, check that you selected the correct element type and consider refining the conditions for more reliable search. For example, auxiliary search elements can be added to help locate the element. Once the errors have been corrected, match the activity once again, making sure that all the objects can be found on the problem pages and that the corrections have not interfered with the matching of the objects on other pages. # Edit the code of extraction rules Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/nlp-extraction-rules/editing-code Edit auto-generated code for named-entity search elements (Person, Organization, Address, Date, Money, etc.) in the NLP Extraction Rules activity. Rules for the search elements that look for named entities, that is, **Person**, **Organization**, **Address**, **Location**, **Date**, **Duration**, and **Money**, can also be edited as code. When you create such an element and set up its properties in the **Properties** pane, the program will automatically generate code for these properties. Click **Code** to review the auto-generated code and edit it if required (see Code syntax for Extraction Rules activity for NLP for the syntax). If you make any changes to the auto-generated code, you will no longer be able to continue editing the properties of the element in the **Properties** pane. Click **Discard Changes in Code** if you want to continue editing the properties of the element in the **Properties** pane. The properties of the **Value from Dictionary**, **Value from Regular Expression**, and **Text** search elements can only be edited via **Properties**. # Element properties Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/nlp-extraction-rules/element-properties Configure What-to-search-for and Where-to-search properties for NLP search elements — entity type, dictionary, regular expression, text, and search context. For most search elements of the Extraction Rules activity, the **Properties** pane has two sections: **What to search for** and **Where to search**. The exceptions are: * **Group** and **Repeating Group** elements, which have no properties of their own. * Input field elements, which are taken from other activities preceding the Extraction Rules activity and only provide the **Get region from** option to switch from one input field to another. ## What to search for The **What to search for** section contains properties specific to each element. ### Person, Organization, Address, Location, Date, Duration, Money For all the search elements that look for named entities, you can specify the following properties: * **Entities**: entity type. If you change the type, the icon against the search element will be updated automatically. * **Instances**: the number of instances. Either the first one or all instances found can be extracted. ### Value from Dictionary For a dictionary phrase, specify: * **Text source**: a TXT file with a list of words or phrases to find, one variant per line. * **Use morphology**: turn on this option to look for all word forms. * **Instances**: the number of instances. Either the first one or all detected instances can be extracted. ### Value from Regular Expression For a regular expression, specify: * **Regular expression**: a regular expression that defines the search. The program uses the [PCRE2](https://www.pcre.org/current/doc/html/pcre2syntax.html) regular expression syntax. * **Search for parts of words**: turn on this option to find the matches even if they are not separated by spaces from the rest of the text. * **Instances**: the number of instances. Either the first one or all detected instances can be extracted. ### Text For a text search element, click the edit icon and enter a list of words or phrases to find, or click on the document image to add recognized words from the document. Unlike the **Value from Dictionary** search element, keywords are listed directly instead of in a TXT file, and you also have the option to allow for some recognition errors. * **Text source**: a list of words or phrases to find, one variant per line. * **Use morphology**: turn on this option to look for all word forms. * **Allowed errors**: the percentage or the number of differing characters that will still allow the text to be found. May be helpful in case of recognition errors. This option will not be available if you turn on the **Use morphology** option. * **Instances**: the number of instances. Either the first one or all detected instances can be extracted. ## Where to search The **Where to search** section is identical for all elements. In this section, you can narrow down the area where the program will look for the search element. In the following settings, you can use the search elements located above the current element in the list: * **Search in**: the search element is located either within the **Whole Document** or inside another search element. **Example:** Look for the organization name in the preamble of the document. * **After**: the search element is located after another search element in the recognized text. * **Search in the same sentence**: turn on this option to find the element within the same sentence. **Example:** Look for the role of the organization after its name within the same sentence. * **Before**: the search element is located before another search element in the recognized text. * **Search in the same sentence**: turn on this option to find the element within the same sentence. For example, if you are looking for somebody's date of birth, you can first create an auxiliary search element with the "born" keyword, then specify that the **Date** entity is located somewhere after this keyword within the same sentence. You can add multiple **After** and **Before** elements, refining your search still more. # Extraction Rules activity for NLP Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/nlp-extraction-rules/extraction-rules Extract fields from unstructured documents in Advanced Designer using named entities, keywords, and regular expressions to set field-extraction conditions. The Extraction Rules activity works with the recognized text of unstructured documents. The rules use named entities, keywords, and regular expressions to set conditions for the fields you need to extract. ## Use cases Add this activity to your document processing flow in the following cases: * If you have extracted several objects of the same type with the help of a Named Entities (NER) activity and now need to find a particular instance. For example, several **Organization** entities can be extracted from a lease agreement. You can use an Extraction Rules activity to determine the landlord and the tenant. * If you don't have enough documents to use a Deep Learning activity. In this case, you can create an Extraction Rules activity and extract required objects by using keywords, regular expressions, or other business logic. * If you need to extract an object of a non-standard type. For example, you may want to extract a combination of date and time rather than date alone. * If you need to group several fields relating to the same object. For example, you can use an Extraction Rules activity to group together the name, date of birth, and address of each person. A Named Entities (NER) activity can also extract the names and addresses, but it won't let you match addresses to their respective names. ## How it works This activity uses Natural Language Processing (NLP) to find search elements in the text. Search elements are named entities and words or phrases matching keywords or regular expressions. Together with fields extracted by other activities, search elements can then be used as building blocks for extraction rules, which specify the position of fields relative to other text. The extraction rules can be easily created via UI and further customized using a special language. Search elements can be mapped to fields, so that the recognized text from the region of a search element will be used to fill in its mapped field. For more information, see [Setting up an Extraction Rules activity](/vantage/documentation/advanced-designer/activities/nlp-extraction-rules/extraction-rules-setup). # Set up an Extraction Rules activity for NLP Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/nlp-extraction-rules/extraction-rules-setup Add an NLP Extraction Rules activity, select fields, configure search elements, debug, and test it on supported languages in Advanced Designer. You will only be able to add this activity if at least one supported language is selected for the skill. The following languages are supported: English, Russian, German, French, Spanish, Italian, Portuguese (Standard), Japanese, and Dutch. On the **Activities** tab, add an Extraction Rules activity to the document processing flow. In the **Activity Properties** pane, select the fields to be extracted by the activity. All text fields are selected for a new Extraction Rules activity by default. You can add multiple field instances inside NLP Extraction Rules. All the extracted instances of elements are displayed in the **Result** section of the **Properties** pane. Click **Activity Editor**. 1. Create and configure search elements to locate auxiliary objects and field values. 2. Map search elements to fields you would like to extract. 3. Debug the Extraction Rules activity, adjusting the search element properties until all the required data is successfully extracted. Click **Test Activity**. When the operation completes, review the results. If you are not satisfied with the results, adjust the activity and test it again. # IF activity Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/nlp-extraction-rules/if-activity Branch a document processing flow on classification results or field values — choose the next activity using a Case Condition and an Else Condition. The IF activity lets you create workflow branches and use classification results and field values to select the next activity. A good example of when an IF activity needs to be used is a flow that contains a classify activities and different extraction activities for documents with different classes. In this case, the If activity acts as a condition for the following: if the document is classified into type A, it will be processed using extraction activity 1, if the document is classified into class B, extraction activity 2 will be used. To set up an IF activity: Add an IF activity to the document processing flow. In **Case Condition**, select an activity or the end of the flow as a branch for the flow. Click the settings icon next to the selected condition and use the dialog that opens to write a script that describes the branch condition, then click **Save**. In **Else Condition**, select an activity or the end of the flow as the other branch. If the Case Condition is true, the previous branch is selected in the flow; otherwise, the branch specified in Else Condition is selected. You can use the sample code below to create your own script: ```javascript theme={null} function checkClass() { for (var i = 0; i < Context.Transaction.Documents[0].Fields.length; i++) { if (Context.Transaction.Documents[0].Fields[i].Name === 'class' && Context.Transaction.Documents[0].Fields[i].Value === 'resume') return true; } return false; } checkClass(); ``` The CurrentDocument property is deprecated. Always points to the first document in a transaction. To get all transaction documents, use `Context.Transaction.Documents`. # Map search elements to fields Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/nlp-extraction-rules/map-search-fields Map NLP search elements to text fields using the Get region from drop-down — including the rules for repeating groups and Manage Fields enablement. On the **Fields** tab to the right of the document window, you will see a list of the fields selected for the activity. You can map each of these fields to one of the search elements using the **Get region from** drop-down list. The following restrictions apply: * Search elements may be mapped only to text fields. * Each search element may be mapped to only one field. * A repeating group search element and its children may be mapped only to a repeating group field and its children. If a search element is mapped to a non-repeating field, the first instance of the search element will be used to fill in the field, even if multiple instances were found. If you want to enable some fields that were not enabled when creating the activity, click the **Manage Fields** icon to see all fields extracted by the skill, then select the checkboxes next to the fields you want to enable. # Reserved names Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/nlp-extraction-rules/reserved-names Names reserved by the NLP Extraction Rules engine and not usable for custom search elements — Root, Reserved, NERPerson, NEROrganization, NERAddress, etc. The following names are reserved and cannot be used for your search elements: * `Root` * `Reserved` * `NERPerson` * `NEROrganization` * `NERAddress` * `NERDate` * `NERDuration` * `NERLocation` * `NERMoney` # Script activity Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/nlp-extraction-rules/script-activity Process or correct data extracted by other activities with custom JavaScript rules — normalize values, choose between fields, or compute calculated values. The Script activity is designed for implementing script rules in a skill aside from rules available in various extraction activities. A script can contain rules for processing or correcting data extracted by other activities. You may need to use script rules when doing the following: * Normalizing a field value, for example, separating an alpha code (a three-letter currency code) from a currency amount specified in the document. * Choosing one of several field values, for example, specifying which of several values should be selected and recorded in the result field if the value of a single field is extracted by more than one activity. * Calculating values of fields that could not be found in the document, e.g. calculating payable tax using a known tax rate when all fields with taxable amounts have been extracted. Unlike business rules, script rules do not highlight values that contain errors during manual review. This is because script rules are designed to complement and correct various data obtained when processing documents, and are an integral part of Document skills. ## Set up a Script activity Add a Script activity to the document processing flow in the **Activities** tab. Note that you should add the activity after any other field extraction activities that your rule may contain. In the **Activity Properties** pane, click **Script Editor**. In the dialog that opens, set up your rule in script form by using JavaScript to create a script that carries out all required actions. You can use the quick edit buttons in the upper part of the screen to add preset code snippets to your script. For sample script rules you can adapt, see [Sample script rules](#sample-script-rules) below. Click **Save**. The **Activity Properties** pane then displays a list of all fields used in the script. Verify that the list contains all required fields. Click **Test Activity** and analyze the extraction results. If the rule did not work as intended, check that the script has been written correctly. Additionally, check the extraction quality of all fields used in the script rule. ## Sample script rules * This script rule is designed to add a three-letter currency code to the value in the **Total** field. The rule first checks the value of the **Country** field. If the value of that field is either "USA" or "United States", a "USD" code is added to the numeric value in the **Total** field. If the value of the **Country** field is either "United Kingdom" or "Great Britain", a "GBP" code is added to the numeric value in the **Total** field. ```javascript theme={null} if ( Context.GetField("Country").Value == "USA"|"United States" ) { Context.GetField("Total").Value = Context.GetField("Total").Value + " USD"; } else if( Context.GetField("Country").Value == "United Kingdom"|"Great Britain" ) { Context.GetField("Total").Value = Context.GetField("Total").Value + " GBP"; } ``` * This script rule is designed to add the names of selected organizations to specified fields. The **Preamble Org** repeating field contains the names of all organizations listed in a document preamble, which are extracted by the Named Entities (NER) activity. The script rule is set up so that if the **Preamble Org** field contains the names of more than two organizations, the first extracted value will be placed in the **Party 1** field, while the last will be placed in the **Party 2** field. ```javascript theme={null} var preambleOrgsFields = Context.GetFields("Preamble Org"); if (preambleOrgsFields.length > 2) { Context.GetField("Party 1").Value = preambleOrgsFields[1].Value; Context.GetField("Party 2").Value = preambleOrgsFields[preambleOrgsFields.length - 1].Value; } ``` # Search elements Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/nlp-extraction-rules/search-elements Define what to extract from unstructured text using NLP search elements — Person, Organization, Address, Date, Money, dictionary, regex, text, and groups. A **search element** allows you to set conditions for the type and properties of an object you wish to extract. As NLP activities work with unstructured text, search conditions specify the position of objects in relation to other text rather than their geometric relationship. You can also use auxiliary search elements to narrow down the search, specifying that the target object can be found inside, before, or after such auxiliary elements. ## Create a search element * You can quickly create a search element by clicking one of the objects highlighted on the image. The new search element will be of the same type as the object you click. Use the **Show Image Objects** button on the toolbar to select the objects to be highlighted. ### Highlight objects The following types of objects can be highlighted: * **Person** * **Organization** * **Address** * **Location** * **Date** * **Duration** * **Money** * **Recognized words** All these objects will be highlighted by default with the exception of recognized words. You can also create a new search element using the menu: Go to the **Search Elements** tab to the right of the document window. Click **Create Element**. Select an element type from the list that opens. Once the element has been created, you need to set up its properties in the **Properties** pane (see Element properties for more information). The specified properties can also be viewed and edited in code format (see Code syntax for Extraction Rules activity for NLP for more information). ## Search element types When creating a search element, you need to specify its type, which will depend on the object you want to find. The available types of search elements are briefly described below. ### Person Names of people, for example: John Doe, Jane Smith. ### Organization Names of organizations, for example: ABBYY, Acme Corp. ### Address Addresses, for example: 123 Main Str., Anytown AB 45678. ### Location Names of locations, for example: Anytown, Corporate Place. ### Date Dates in different formats, for example: November 14, 2009, 11/14/2009. ### Duration Time periods, for example: twelve (12) months, 4 days. ### Money Amounts of money, for example: \$2670.00, 199 dollars 99 cents. The **Person**, **Organization**, **Address**, **Location**, **Date**, **Duration**, and **Money** elements correspond to the named entities that you can set up in the Named Entities (NER) activity and are extracted using the same technology. ### Value from Dictionary A word or phrase from a dictionary. The dictionary should be a plain TXT file with a list of search text variants, one variant per line of text. ### Value from Regular Expression A value that matches a regular expression you specified. ### Text A keyword or phrase, with the option to look for all word forms or to allow for some recognition errors. ### Group A collection of nested search elements. Elements making up a group can be both simple and group elements. A group element has no properties of its own. Data will be extracted based on the settings of its nested search elements. Group elements can be used to enforce a logical hierarchy of elements, for easier debugging and navigation. For example, grouping together a person's name, address, and date of birth will let you extract the data about each person in a consistent manner. ### Repeating Group This element is designed to look for repeating groups of elements. Repeating groups are intended for cases where an entity may have multiple instances, each with its own properties, but you do not know how many instances you are going to have. The properties of each instance are specified in the nested elements of the repeating group. For example, if you are processing résumés, you may want to create an "Education" repeating group with the following nested elements: "School\_name", "Degree", "Start\_date", and "Graduation\_date". On the other hand, if the data you are looking for relates to different entities with different roles, a repeating group won't be the right choice. For example, if you have only two parties to a contract, say, buyer and seller, create a "Party1\_Buyer" group and a "Party2\_Seller" group instead of one repeating "Party" group. ### Input field This element allows you to use a field extracted by another activity as a building block for the rules. For example, if an Extraction Rules activity is preceded by a Segmentation activity, you may want to use some of the segments to narrow down the search. ## Change an element's type, name, and position in the list To change the type of an element: * Right-click an element and select **Convert Element to** on the shortcut menu. * Select an element in the list and click a highlighted object on the image. This will let you convert the selected search element to the type of the highlighted object. If you click on a highlighted recognized word, you can convert the search element to **Text** and at the same time add the selected word to the list of keywords for this search element. * For search elements that correspond to named entities, use the **Entities** property to change the type of the named entity. Changing the type of an element won't convert non-group elements to group elements and vice versa. To change the name of an element: * Right-click an element, select **Rename** on the shortcut menu, and enter a new name. * Select an element, click on its name (or press F2), and enter a new name. An element name can contain English letters, numbers, and underscores. However, an element name cannot start with a number. Spaces, special symbols (.,:- \ /), and reserved names are not allowed. To move elements in the list: * Drag elements up or down to change their position in the list. * Drag elements onto a group element to put them inside the group. Elements are searched top down. This means that elements used in the search conditions of another element must precede that element in the list of elements. # View the results Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/nlp-extraction-rules/view-results Inspect Test Activity statistics for an NLP Extraction Rules activity on the Results tab and decide what to refine in Advanced Designer. On the **Results** tab of the Extraction Rules activity editor, you can view the statistics for the Extraction Rules activity. This data is gathered after the activity has been tested on all the documents in the set. Analyze the statistics and modify the activity if required. Statistics displayed on the **Results** tab in the Extraction Rules Activity Editor are the same as those displayed in the **Results** tab of the skill. For more information, see [Results](/vantage/documentation/advanced-designer/document-skills/results). # Segmentation activity Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/segmentation/segmentation-activity Split unstructured documents into paragraphs to narrow extraction regions or pull whole paragraphs into text fields in Advanced Designer. The Segmentation activity is designed to segment text in unstructured documents into paragraphs. This lets the program narrow down search regions for fields that need to be extracted by other activities. The activity can also be used to extract entire paragraphs into text fields (for example, if you want to extract comprising legal clauses and conditions from a contract). Sample Paragraph ## Use cases Add this activity to your document processing flow in the following cases: * When you know that the named entities you want to extract from the documents are always located in the same paragraph. For example, if you know that organization names and addresses that you need to extract are located in the first paragraph of each contract, you can extract the first paragraph using a Segmentation activity, and then extract company names and addresses from this paragraph using a [Named Entities (NER)](/vantage/documentation/advanced-designer/activities/ner) activity. This approach is more reliable than extracting named entities from the entire document, since you can control the specific area where those entities are extracted from. * When a paragraph needs to be extracted in its entirety because all of its contents are valuable, for example, a paragraph that contains the payment terms of a contract. ## How it works Segmentation activities are trained using reference labeling, so it is essential to correctly label as many documents as possible. If the training set contains enough documents, the activity is trained using cross-validation. The document set is divided into several subsets, and the activity is trained several times. Each time one subset is excluded from training and used for internal testing, which allows training results to be validated. This technique improves extraction accuracy, as well as detecting errors in labeling and suggesting corrections for them. The recommended number of sample documents is as follows: * For high-variability documents, at least 100 sample documents is required. * For low-variability documents, at least 20 sample documents is required. For more information, see [Setting up a Segmentation activity](/vantage/documentation/advanced-designer/activities/segmentation/segmentation-activity-setup). # Set up a Segmentation activity Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/segmentation/segmentation-activity-setup Add a Segmentation activity, select segment fields, train it in Fast or Thorough mode, and review extraction results in Advanced Designer. You can use a separate document set to train your Segmentation activity. To do so, select the Segmentation activity from the drop-down list next to the skill name. Then, in the drop-down list to the left of the **Upload** button, select the necessary document set or click **Create Set...** to create a new one. You can upload, delete, and rotate documents on this tab as described in the [Documents](/vantage/documentation/advanced-designer/document-skills/documents) section. On the **Activities** tab, add a Segmentation activity to the document processing flow. Please note that your Segmentation activity should precede the activity that will extract the fields from the text segments. On the **Activity Properties** pane, select all the fields that correspond to the segments to be extracted. Only fields of type Text that have data type set to Text are supported. Click **Activity Editor**. Make further modifications to the document labeling on the **Fields** tab if required. Click **Train Activity**. Training can be performed in **Fast** or **Thorough** mode. * **Fast** mode is selected by default. This mode will work even on small document sets, and the activity will be trained quickly. * If you are not satisfied with the results obtained in **Fast** mode, consider switching to **Thorough** mode that trains a Deep Learning model. This mode requires more documents in the training set and takes longer to train, but it will be able to perform better on a wide variety of documents. The document set must contain at least 50 labeled documents, but we recommend having at least 150 labeled documents. To switch to **Thorough** mode, use a drop-down menu next to the **Train Activity** button. * You may want to test both modes and choose the one that works best for your documents. **Thorough** mode will only work with English-language documents. Once the activity has been trained, activity testing will start automatically. After testing has completed, navigate to the **Results** tab and analyze the field extraction results for your activity. Statistics displayed on the **Results** tab are identical to the general statistics for the skill displayed on the Results tab. If required, make any necessary changes to your labeling and train the activity again. The activity can only be trained and tested using documents with confirmed labeling. Documents have unconfirmed labeling if the reference labeling was generated automatically based on the predicted labeling, unless you copy predicted labeling to reference using the corresponding option in the document context menu. You can check the labeling status for each document on the **Documents** tab. To confirm labeling for a document, you should review it on the **Fields** tab. Supported languages: English, Russian, German, French, Spanish, Italian, Portuguese (Standard), Japanese, and Dutch. # Context Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/splitter-script/context Context global object exposing all source pages of a transaction (Context.Pages) to a Splitter Script activity through the IScriptContext interface. A global object that provides access to pages of a transaction using the **IScriptContext** interface. ## Properties | Name | Type | Access Level | Description | | :------ | :----------------------------------------------------------------------------------------------- | :----------- | :---------------------------------------- | | `Pages` | [SourcePage](/vantage/documentation/advanced-designer/activities/splitter-script/source-page)\[] | Read-only | Returns a read-only list of source pages. | # DataType Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/splitter-script/data-type DataType enumeration constants identifying the kind of value a field holds — Amount, Binary, Boolean, Choice, Date, Number, Text — in Splitter Script. The enumeration constants specify the kind of data a field may contain. ## Constants | Constant | Supported Field Type | Description | | :-------- | :------------------- | :----------------------------------------------------------------------------------------------------------------------- | | `Amount` | Text | A sum of money. The value of `Field.Value` is an instance of `AmountOfMoney`. | | `Binary` | Picture | A binary value. Cannot be accessed directly using `Field.Value`. | | `Boolean` | Checkmark | A Boolean value describing the state of a checkmark (marked, not marked). | | `Choice` | CheckmarkGroup | A type of data describing the state of checkmarks in a checkmark group. Cannot be accessed directly using `Field.Value`. | | `Date` | Text | A type of data used to store the date and time. The value of `Field.Value` is a JavaScript Date object. | | `Number` | Text | A numerical data type that supports both integers and floating numbers. | | `None` | Table, Enum, Group | A type of data that specifies the absence of a value. | | `Text` | Text | A text (string) data type. Can contain both alphanumeric and special characters. | ## AmountOfMoney class A special class used to store values describing amounts of money. ### Properties | Name | Data Type | Access Level | Description | | :------------- | :-------- | :----------- | :--------------------------------------------- | | `Amount` | `decimal` | Read-only | The numerical value. | | `CurrencySign` | `string` | Read-only | Specifies the unit of currency in text format. | # Field Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/splitter-script/field Field class providing read-only access to a field's value, parameters, region, and child instances in a Splitter Script activity. Provides read-only access to a field, its value and parameters. ## Properties | Name | Type | Access Level | Description | | :-------------- | :---------------- | :----------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `Children` | `Field[]` | Read-only | The child field array. This property is only valid for containers of repeating fields. | | `DataType` | `DataType` | Read-only | The type of data in the field. | | `FieldType` | `FieldType` | Read-only | The type of the field. | | `FullName` | `string` | Read-only | The full path to the name from the document root. Uses a forward slash (/) as a separator, e.g. `Vendor/Address/Street`. | | `HasRegion` | `bool` | Read-only | Returns `true` if the field has been found on the document, i.e. if a corresponding region exists on the document. A value of `false` specifies that the image of the document does not contain a region that corresponds to this field. | | `Id` | `string` | Read-only | The field identifier from the document definition. | | `ImageRegions` | `ImageRegionList` | Read-only | An array of field regions on the image. | | `InstanceIndex` | `int` | Read-only | The index of the current instance of the repeating field. Only makes sense if `IsRepeatable` is `true`. Set to -1 in all other cases. | | `Instances` | `Field[]` | Read-only | The array of all instances of this field. Only makes sense if `IsRepeatable` is `true`. | | `IsConfirmed` | `bool` | Read-only | Returns `true` if the field has been verified by the operator or by a validation rule. | | `IsRepeatable` | `bool` | Read-only | Returns `true` if the field is repeating. | | `IsSuspicious` | `bool` | Read-only | Returns `true` if any characters of the field value have been recognized unreliably. The value of such a field should either be reviewed manually by an operator or checked by a rule. | | `IsValid` | `bool` | Read-only | Returns `true` if the recognized text of the field (the `Text` property) was successfully converted into the value of the necessary type (the `Value` property). | | `IsVisible` | `bool` | Read-only | Returns `true` if the field is visible on the document. | | `Name` | `string` | Read-only | The field name, unique inside its group. | | `Parent` | `Field` | Read-only | The parent field. | | `ReadOnly` | `bool` | Read-only | Returns `true` if the field is read-only and may not be edited by the manual review operator. | | `Symbols` | `Symbol[]` | Read-only | An array of characters that form the original value of a field in text format. | | `Text` | `string` | Read-only | The original value of a field in text format (generated when a document is recognized). | | `Value` | `object` | Read-only | The value of a field in the specified format (generated when converting recognized text). | ## Methods | Name | Description | | :------------------------------------------ | :--------------------------------------------------- | | `Field GetChild(string fieldDefinitionId);` | Returns a child field with the specified identifier. | # FieldType Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/splitter-script/field-type FieldType enumeration constants identifying the type of a field — Barcode, Checkmark, CheckmarkGroup, Enum, Group, Picture, Table, Text — in Splitter Script. The enumeration constants specify the possible field types. ## Constants | Constant | Supported Data Types | Description | | :--------------- | :------------------------- | :------------------------------------------------------- | | `Barcode` | Text | A barcode field. | | `Checkmark` | Boolean | A checkmark field. | | `CheckmarkGroup` | Choice | A group of several checkmarks. | | `Enum` | None | A field that can only store values from a specified set. | | `Group` | None | A group of fields. The child fields may be of any type. | | `Picture` | Binary | An image. | | `Table` | None | A table. It will contain many other fields as cells. | | `Text` | Text, Amount, Date, Number | A text field. | # ImageRegion Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/splitter-script/image-region ImageRegion class providing access to a field's rectangular regions on a document page in a Splitter Script activity, including the surrounding rectangle. Provides access to field regions. Field regions may consist of several different rectangular areas on the image. ## Properties | Name | Data Type | Access Level | Description | | :--------------------- | :-------------- | :----------- | :--------------------------------------------------------------------- | | `Field` | `Field` | Read-only | The field of the region. | | `Page` | `Page` | Read-only | The page of the region. | | `Rectangles` | `RectangleList` | Read-write | A list of all the rectangular areas on the image making up the region. | | `SurroundingRectangle` | `Rectangle` | Read-only | The rectangular area on the image that covers the entire region. | # ImageRegionList Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/splitter-script/image-region-list ImageRegionList class providing methods to add, remove, and clear field regions on document images in a Splitter Script activity. Provides access to region lists on an image. ## Methods | Name | Description | | :---------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `ImageRegion Add(ImageRegion imageRegion);` | Adds an existing region to a list. Returns the added region. | | `ImageRegion Add(Rectangle rectangle, Page page);` | Creates a new region using the passed rectangle and adds it to the field regions. Returns the added region. | | `ImageRegion Add(Rectangle[] rectangles, Page page);` | Creates a new region on the specified page using the passed rectangles and adds it to the field regions. Returns the added region. | | `ImageRegion Add(int left, int top, int right, int bottom, Page page);` | Creates a new region on the specified page using the passed rectangle boundary coordinates and adds the new region to the field regions. Returns the added region. | | `bool Remove(ImageRegion imageRegion);` | Removes a region from the list. Returns `true` if the region is removed successfully and returns `false` otherwise. | | `bool Remove(int imageRegionIndex);` | Removes a region with the specified index. Returns `true` if the region is removed successfully and returns `false` otherwise. | | `void Clear();` | Removes all regions from the list. | # Object model Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/splitter-script/object-model JavaScript object model for Splitter Script activities — Context, SourcePage, Field, ImageRegion, AssembledDocument, and other classes available in scripts. The Advanced Designer JavaScript interpreter supports ECMAScript 5.1 (ES5) and some other more recent standards. For more information, see [here](https://github.com/sebastienros/jint#ecmascipt-features). ## Data access * Scripts can be used to write custom functions. * Scripts cannot be used to send requests to databases and external services. * Scripts do not support third-party libraries like JQuery. ## Limits on system resource use Script rules are under restrictions with regard to the amount of memory and processing time they can take up, as well as with regard to the number of commands in the code and recursion depth. This is done to lower the risk of the script becoming unresponsive. If your script does not satisfy one or more restrictions, processing will be interrupted with an error. Currently, the default values are as follows: * memory: 256 MB * script runtime: 30 seconds * maximum recursion depth: 1,000 * maximum array size: 10,000 ## Object help Use the following objects to write your Splitter script: * [Context](/vantage/documentation/advanced-designer/activities/splitter-script/context) * [SourcePage](/vantage/documentation/advanced-designer/activities/splitter-script/source-page) * [SourceFile](/vantage/documentation/advanced-designer/activities/splitter-script/source-file) * [Parameter](/vantage/documentation/advanced-designer/activities/splitter-script/parameter) * [RuleError](/vantage/documentation/advanced-designer/activities/splitter-script/rule-error) * [Field](/vantage/documentation/advanced-designer/activities/splitter-script/field) * [FieldType](/vantage/documentation/advanced-designer/activities/splitter-script/field-type) * [DataType](/vantage/documentation/advanced-designer/activities/splitter-script/data-type) * [ImageRegionList](/vantage/documentation/advanced-designer/activities/splitter-script/image-region-list) * [ImageRegion](/vantage/documentation/advanced-designer/activities/splitter-script/image-region) * [RectangleList](/vantage/documentation/advanced-designer/activities/splitter-script/rectangle-list) * [Rectangle](/vantage/documentation/advanced-designer/activities/splitter-script/rectangle) * [Symbol](/vantage/documentation/advanced-designer/activities/splitter-script/symbol) * [AssembledDocument](/vantage/documentation/advanced-designer/activities/splitter-script/assembled-document) # Parameter Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/splitter-script/parameter Parameter class providing access to skill parameter names and values (read-only or read-write) inside a Splitter Script activity. Provides access to parameter values. ## Properties | Name | Data Type | Access Level | Description | | :----------- | :-------- | :----------- | :----------------------------------------------------------- | | `IsReadOnly` | `bool` | Read-only | A value of `true` specifies that the parameter is read-only. | | `Name` | `string` | Read-only | The name of the parameter. | | `Value` | `string` | Read-write | The value of the parameter. | # RectangleList Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/splitter-script/rectangle-list RectangleList class providing methods to add, remove, and clear rectangular areas on document images in a Splitter Script activity. Provides access to lists of rectangular areas on an image. ## Methods | Name | Description | | :--------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `Rectangle Add(int left, int top, int right, int bottom);` | Adds a rectangular area with the specified (left, top, right, bottom) boundaries to the region. Returns the added rectangle. | | `Rectangle Add(Rectangle rectangle);` | Adds the passed rectangle to the field region. Returns the added rectangle. | | `bool Remove(Rectangle rectangle);` | Removes the passed rectangle from the field region rectangle list. Returns `true` if removed successfully and returns `false` otherwise. | | `bool Remove(int rectangleIndex);` | Removes the rectangular area with the specified index from the field region rectangle list. Returns `true` if removed successfully and returns `false` otherwise. | | `void Clear();` | Removes all rectangular areas from the list. | # RuleError Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/splitter-script/rule-error RuleError class providing read-only access to errors generated by business rules — error type, message, parameters, field, and rule identifiers. Provides access to errors generated by business rules. ## Properties | Name | Data Type | Access Level | Description | | :---------------- | :-------- | :----------- | :------------------------------------------------------------------------------------------------------------------------------------ | | `CurrentFieldId` | `string` | Read-only | The identifier of the field that was checked by the rule when the error was detected. | | `CustomMessage` | `string` | Read-only | An error message defined by the user. For built-in rules and error messages that have not been set, this will return an empty string. | | `ErrorParameters` | `object` | Read-only | The error parameters. Returns values only for built-in rules. | | `ErrorType` | `string` | Read-only | The error type. | | `RuleId` | `string` | Read-only | The identifier of the rule that generated the error. | # SourceFile Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/splitter-script/source-file SourceFile class providing read-only access to a source file's name and parameter dictionary in a Splitter Script activity's processing context. Access source files in Splitter Script activities. ## Properties | Name | Data Type | Access Level | Description | | :----------- | :-------------------------- | :----------- | :------------------------------------------------------------------------------------------------------------------------------------------------ | | `Name` | `string` | Read-only | The name of the source file. | | `Parameters` | `Record` | Read-only | A dictionary consisting of keys that represent the file parameter names and key values that represent the values of the corresponding parameters. | # SourcePage Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/splitter-script/source-page SourcePage class providing access to a source page's identifier, dimensions, source file, fields, and rule errors in a Splitter Script activity. Provides access to source pages of documents. ## Properties | Name | Type | Access Level | Description | | :------------ | :------------ | :----------- | :----------------------------------------------------------------- | | `Id` | `string` | Read-only | The page identifier. | | `ImageHeight` | `uint` | Read-only | The height of the page image in pixels. | | `ImageWidth` | `uint` | Read-only | The width of the page image in pixels. | | `Index` | `int` | Read-only | The index of the page in the document. The indexing starts with 0. | | `SourceFile` | `SourceFile` | Read-only | The source file. | | `RuleErrors` | `RuleError[]` | Read-only | The list of rule errors detected on the page. | ## Methods | Name | Description | | :------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------ | | `Field GetField(string fieldDefinitionId);` | Gets the field by its identifier in the document definition. | | `Field GetFields(string fieldDefinitionId);` | Returns a list of fields by a field identifier in the document definition. This method gets all instances of a repeating field. | # Splitter Script activity Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/splitter-script/splitter-script Use a Splitter Script activity to split a transaction's pages into multiple output documents with custom JavaScript that runs over all pages at once. If you create a Document Splitter skill, the document processing flow will end with a Splitter Script activity. This final step serves for splitting the flow of pages in a transaction into a set of documents. Unlike other activities, this activity processes all pages in a transaction at once. ## Set up the activity Add possible document types by clicking the plus icon on the **Splitter Script Properties** pane and creating classes one by one. Click **Script Editor** on the **Splitter Script Properties** pane. Set up a script that will determine how pages are assembled into documents. The script has access to all pages of a transaction. The common scenario is to iterate through pages checking each time if a page starts a new document. If it doesn't, it is appended to the previous document. For a detailed description of objects that can be used in your script, see [Object model](/vantage/documentation/advanced-designer/activities/splitter-script/object-model). Click **Save**. ## Sample scripts In this section you will find sample scripts that correspond to a variety of Document Splitter skill use cases. All the following script examples assume that a field called "ResultClassId" exists in the document definition. This field should contain the document class. ### Separate documents of the same type The input file contains invoices from one vendor for a certain period. The first page of each invoice contains the invoice number. The first page of a document may contain specific data, e.g. a title or an invoice number. To determine that the current page is the first page of a new document, you need to check if the corresponding field was found on the page. You can also analyze the field values on the consecutive pages (e.g. page numbers or invoice numbers). In the following example, we compare the invoice numbers found on two consecutive pages and check if the "FirstPageMarker" field was found on the current page. If the field was found or if the invoice number differs, the current page is considered to be the first page of a new document. ```javascript theme={null} var documents = []; var currentDocument = null; var currentInvoiceNumber = ""; for (let i = 0; i < Context.Pages.length; i++) { const page = Context.Pages[i]; let invoiceNumberField = page.GetField("InvoiceNumber"); let invoiceNumberNormalized = invoiceNumberField.Text.replace(/[. -]/g, ''); let firstPageMarker = page.GetField("FirstPageMarker"); var hasInvoiceNumber = invoiceNumberField !== null && invoiceNumberNormalized !== ""; var hasNewInvoiceNumber = hasInvoiceNumber && invoiceNumberNormalized !== currentInvoiceNumber; var hasFirstPageMarker = firstPageMarker !== null && firstPageMarker.Text; if (!currentDocument || hasNewInvoiceNumber || (!hasInvoiceNumber && hasFirstPageMarker)) { currentDocument = new Document('invoice'); documents.push(currentDocument); } if (hasInvoiceNumber) { currentInvoiceNumber = invoiceNumberNormalized; } currentDocument.Pages.push(page); } return documents; ``` ### Separate documents and remove annexes The document contains an annex or empty pages which should be stored without extracting any data from them. To determine whether the document has an annex or empty pages, you need to check if there are any pages on which no valuable data can be found. For instance, add a field that looks for any word and consider all pages where no words could be found to be blank. In the following example, we separate empty pages from non-empty ones based on the text of a field. ```javascript theme={null} var empty = new Document('empty'); var invoice = new Document('invoice'); for (let i = 0; i < Context.Pages.length; i++) { const page = Context.Pages[i]; // Get the text value of the "Field" property of the current page var currentResult = page.GetField("Field").Text; // Check if the current result has a length greater than 0 if (currentResult.length > 0) { invoice.Pages.push(page); } else { empty.Pages.push(page); } } return [invoice, empty]; ``` ### Separate documents and determine their type #### Case 1. Each document type is represented by a single document A loan application contains documents of different types. Each type is represented by a single document. All documents are delivered in a single file. To determine that the current page is the first page of a new document, you can simply compare its class with the class of the previous page. ```javascript theme={null} var documents = []; var currentResultClassId = null; var currentDocument = null; for (let i = 0; i < Context.Pages.length; i++) { const page = Context.Pages[i]; const pageResultClassId = page.GetField('ResultClassId').Text; // Check if the current page has the same class as the previous page. If not, begin a new document. if (pageResultClassId != currentResultClassId || !currentDocument) { currentResultClassId = pageResultClassId; currentDocument = new Document(pageResultClassId); documents.push(currentDocument); } currentDocument.Pages.push(page); } return documents; ``` #### Case 2. Each document type is represented by one or several documents A loan application submitted by two co-applicants contains a large array of documents of different types. Each type may be represented by several documents in sequence. For example, an application can contain images of the IDs of both co-applicants, several bank statements, etc. To determine that the current page is the first page of a new document, you need to combine the two strategies described above. In the following example, we first compare the classes of the two consecutive pages. If the class has changed, the current page is considered to be the first page of a new document. If the pages belong to the same class, we check if the "Title" field was found on the current page. The page on which this field was found is considered to be the first page of a new document. ```javascript theme={null} var documents = []; var currentResultClassId = null; var currentDocument = null; for (let i = 0; i < Context.Pages.length; i++) { const page = Context.Pages[i]; const pageResultClassId = page.GetField('ResultClassId').Text; // Check if the current page has the same class as the previous page. If not, begin a new document. if (pageResultClassId != currentResultClassId) { currentResultClassId = pageResultClassId; currentDocument = new Document(pageResultClassId); documents.push(currentDocument); } // Begin a new document if the "Title" field was found on a current page. else if (page.GetField("Title").Text || !currentDocument) { currentDocument = new Document(pageResultClassId); documents.push(currentDocument); } currentDocument.Pages.push(page); } return documents; ``` ### Reorder pages and remove empty pages The document contains pages arranged in an incorrect order. Each page contains a field indicating its number (for example, "Page 1 of 10"). To organize the pages, you need to create a field which will extract page numbers. Additionally, you can also create a field that will indicate whether a page is blank or not by looking for any text on that page. This can be used to discard blank or garbage pages (e.g., those resulting from duplex scanning of page folds with empty back sides) as described in the [Separate documents and remove annexes](#separate-documents-and-remove-annexes) section. In the following example, we reorder pages according to their numbers. ```javascript theme={null} var documents = new Document('document'); var currentDocument = null; let arr = []; for (let i = 0; i < Context.Pages.length; i++) { arr[i] = Context.Pages[i]; } // Sort the "arr" array based on the numerical values of a specific field in each page arr.sort((page1, page2) => parseInt(page1.GetField("Field").Text) - parseInt(page2.GetField("Field").Text)); // Iterate over the sorted "arr" array and append each "page" object to the "Pages" property of the "documents" document for (let i = 0; i < arr.length; i++) { const page = arr[i]; documents.Pages.push(page); } return [documents]; ``` # AssembledDocument Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/splitter-script/assembled-document AssembledDocument class for grouping source pages into output documents in a Splitter Script activity, with read-only Pages and read-write ResultClassName. A class used to store output documents assembled from the source pages. A Splitter Script activity does not return the confidence values for a class. ## Properties | Name | Type | Access Level | Description | | :---------------- | :------- | :----------- | :--------------------------------------- | | `ResultClassName` | `string` | Read-write | The document class name set by the user. | | `Pages` | `Page[]` | Read-only | The list of pages in the document. | ## Constructors | Call | Description | | :-------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `AssembledDocument()` | Creates an instance of the `AssembledDocument` class with an empty list of pages and an empty `ResultClassName` property. | | `AssembledDocument(string ClassName)` | Creates an instance of the `AssembledDocument` class with an empty list of pages. Assigns the `ClassName` value to the `ResultClassName` property of the instance. | | `AssembledDocument(SourcePage page)` | Creates an instance of the `AssembledDocument` class with an empty `ResultClassName` property and a list of pages containing a single page passed as an argument. | | `AssembledDocument(SourcePage[] pages)` | Creates an instance of the `AssembledDocument` class with an empty `ResultClassName` property and a list of pages passed as an argument. | | `AssembledDocument(string resultClassName, SourcePage[] pages)` | Creates an instance of the `AssembledDocument` class with a list of pages passed as an argument. Assigns the `ClassName` value to the `ResultClassName` property of the instance. | # Manage fields in activities Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/splitter-script/managing-fields Add, configure, and organize fields for activity setup in Advanced Designer using the Manage Fields dialog — field types, nesting depth, and visibility. If you need to add new fields when setting up an activity (for example, a new field to record an extraction result) use the **Manage Fields** command in the main menu. In the dialog box that opens, you can see the field structure with a description of all the fields (including hidden fields) extracted by the skill. Fields can be moved around in the structure using the following buttons: **Move up**, **Move down**, **Move to group**, and **Delete**. New fields that you add to the activity will be automatically enabled. Field types available in the **Manage Fields** dialog box are the same as in Vantage: * **Text** field of one of four types: **Text**, **Date**, **Amount of money**, or **Number** * **Table** with columns represented as child text fields A Table field can only contain text columns and doesn't support nesting. To extract a table that contains other types of data or a table with nested tables, use a Group field with multiple items instead. * **Barcode** * **Checkmark** * **Checkmark Group** * **Image** * **Group** ## Field settings The following settings are accessible directly from the **Manage Fields** dialog box: * If you create a service field for transferring data between activities, you can hide it from the **Fields** tab, from the data form in Vantage, and from manual review by enabling the **Use in this activity** property. * You can enable and disable multiple items for any field except **Table**, **Checkmark Group**, and their child fields. If you change the **Allow Multiple Items** setting for a field that is used in an Extraction rules activity, also adjust the field mapping in this activity accordingly. To view and edit other settings, click the settings button next to a field. Some of the settings can only be edited in the data form on the Fields tab. ## Field nesting The maximum nesting depth is three levels, and no more than two elements in a branch can have multiple items. A table is essentially a group with text fields that can have multiple items, meaning that you can create the following structures: | Field structure | Fields that may have multiple items | | :----------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------- | | Nested group structure | One of the following: Any two groups; The field and any one group | | Nested table structure | Any one group (the table acts as the second group with multiple items). **Note:** Enabling multiple items for a field inside a table is not supported. | # Rectangle Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/splitter-script/rectangle Rectangle class providing read-write pixel coordinates (Left, Top, Right, Bottom) for rectangular areas on document images in a Splitter Script activity. Provides access to rectangular areas on an image. Coordinates are specified in pixels. ## Properties | Name | Data Type | Access Level | Description | | :------- | :-------- | :----------- | :------------------------------------------------------------- | | `Left` | `int` | Read-write | The x-coordinate of the left boundary of a rectangular area. | | `Top` | `int` | Read-write | The y-coordinate of the top boundary of a rectangular area. | | `Right` | `int` | Read-write | The x-coordinate of the right boundary of a rectangular area. | | `Bottom` | `int` | Read-write | The y-coordinate of the bottom boundary of a rectangular area. | # Symbol Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/activities/splitter-script/symbol Symbol class providing read-only access to individual characters of a field value, including a flag indicating unreliable recognition. Provides access to characters that form the initial value of a field in text format. ## Properties | Name | Data Type | Access Level | Description | | :------------- | :-------- | :----------- | :------------------------------------------------------------------------ | | `Symbol` | `char` | Read-only | The value of the character. | | `IsSuspicious` | `bool` | Read-only | A value of `true` specifies that the character was recognized unreliably. | # Labeling guidelines Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/labeling/guidelines Best practices for labeling fields in Advanced Designer — selection methods and per-type guidelines for structured and unstructured documents. To label a document, mark the regions that contain field values and tell the skill what data type each field holds. Before you start, pick the right selection method for the field shape, and then follow the per-type guidelines for [structured](#structured-documents), [semi-structured](#semi-structured-documents), or [unstructured](#unstructured-documents) documents. ## Selection methods | Method | Best for | | :---------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------ | | Hover and click a word | Single-word fields | | Drag a rectangle around words | [Semi-structured documents](/vantage/documentation/advanced-designer/use-cases/process-semi-structured) | | Click the first word, and then drag (left mouse button held) to the last word | [Unstructured documents](/vantage/documentation/advanced-designer/use-cases/process-unstructured) | ## Structured documents [Structured documents](/vantage/documentation/advanced-designer/use-cases/extracting-from-docs#structured-documents) (such as pre-formatted forms) always contain the same information in the same locations. You only need to label a few sample documents because there's no layout variation. * Specify each field's region accurately — field values alone aren't enough for training. * Mark the entire **placeholder**, not the value inside it. * If a field contains no value, mark the empty placeholder anyway. * For multi-part fields, hold **Shift** to add additional parts. All parts must be on the same page. * For tables on a fixed form, label every row, including empty rows. * If you add a new field after labeling, go back and label that field on every document in the training set. ## Semi-structured documents [Semi-structured documents](/vantage/documentation/advanced-designer/use-cases/extracting-from-docs#semi-structured-documents) — bills, payment orders, invoices — contain similar fields, but field locations, sizes, and counts vary across documents. * Specify each field's region accurately — field values alone aren't enough for training. * Click the field's value (the word or words it contains); the region is created automatically. * If a field contains no value, don't create a region for it. * Don't mark partial words — the trainer learns on whole words only. * For multi-part fields, hold **Shift** to add additional parts. All parts must be on the same page. * Do not instruct the program to find fields **inside** another field's region (whether an individual field like an address or a table cell like *Description*). To extract from a large region, chain activities: a semi-structured extraction activity to find the region, and then an [NLP Extraction Rules activity](/vantage/documentation/advanced-designer/activities/nlp-extraction-rules/extraction-rules) or a script rule to pull specific fields from it. * If you add a new field after labeling, go back and label that field on every document in the training set. ### Tables and repeating groups For repeating data, decide between a **table** and a **repeating group**: | Use this | When | | :--------------------------------------------------------- | :------------------------------------------------------------------------------ | | **Table** | Tabular data with a common header and values that have no keywords next to them | | **Repeating group** with the *Allow multiple items* option | Less-structured data where keywords sit next to the values | If different documents are organized differently, pick the option that fits the majority. To label a table, mark the first row's cells one at a time (each click creates a column), and then click **Continue table from this row** and verify the rest of the table is labeled correctly. For large tables on visually similar pages, you can delete the similar middle pages and label only the first page, the last page, and a few pages in between. ## Unstructured documents [Unstructured documents](/vantage/documentation/advanced-designer/use-cases/extracting-from-docs#unstructured-documents) — contracts, scientific articles, email messages — have no consistent structure. * Specify each field's region accurately — field values alone aren't enough for training. * For segments (fields trained by the [Segmentation activity](/vantage/documentation/advanced-designer/activities/segmentation/segmentation-activity)), include one or more whole paragraphs. A segment cannot include only part of a paragraph. * Click the field's value (the word or words it contains); the region is created automatically. * If a field contains no value, don't create a region for it. * Don't mark partial words — the trainer learns on whole words only. * If a word is followed by punctuation, adjust the region so the punctuation isn't enclosed. * A field region may span pages (for example, a contract clause). Label the first part on the first page, and then hold **Shift** while continuing on the next page. * To label a field **inside** another field's region (for example, a field inside a segment), select the inner field and start labeling — the action creates a new region rather than selecting the outer one. This is the opposite of the semi-structured guideline above: segments in unstructured documents are *designed* to contain inner fields, so labeling within them is intended. In semi-structured documents, the equivalent nesting creates training conflicts. ## Related topics * [Label documents in Advanced Designer](/vantage/documentation/advanced-designer/labeling/labeling) * [Import labeled documents from FlexiCapture](/vantage/documentation/advanced-designer/labeling/import-from-flexi) * [Extract data from documents in Advanced Designer](/vantage/documentation/advanced-designer/use-cases/extracting-from-docs) * [Segmentation activity](/vantage/documentation/advanced-designer/activities/segmentation/segmentation-activity) # Import labeled documents from FlexiCapture Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/labeling/import-from-flexi Export labeled documents from ABBYY FlexiCapture using FCAdminTools and import them into an Advanced Designer skill, with table-block conversion rules. Reuse documents already labeled in ABBYY FlexiCapture by exporting them to a folder, and then importing that folder into your Advanced Designer skill. ## Prepare the export folder Export labeled documents from FlexiCapture by running `FCAdminTools.exe`: ```bat theme={null} FCAdminTools.exe ExportLabeling [/LabelingSource=] [/BatchName=] [/DocumentDefinition=] [/Project=] [/TargetFolder=] ``` | Option | Description | | :---------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `/LabelingSource=` | Group of batches to export. Default: `LayoutTraining`. **Note:** Advanced Designer doesn't currently support importing `ClassifierTraining` batches. | | `/BatchName=` | Name of the batch to export. Must belong to the group given by `LabelingSource`. If empty, all batches in the group that reference the specified document definition are exported. May be empty if `LabelingSource = ClassifierTraining`. | | `/DocumentDefinition=` | Document definition to export. Required when the project contains multiple document definitions. May be empty if `LabelingSource = ClassifierTraining`. **Note:** Only single-section document definitions can be exported — multisection definitions are not supported. | | `/Project=` | Path to the project's `.fcproj` file. | | `/TargetFolder=` | Destination folder for the export. Created automatically. | The export folder contains: * `DocumentDefinition.json` * `SkillSettings.json` (only for `LayoutTraining` and `WorkBatches` groups) * A `` subfolder for each document, containing the TIFF image and `Labeling.json` (labeling in the extracted-data format) The `ExportLabeling` command requires FCAdminTools from FlexiCapture 12 Release 4 Update 2 Patch 3 or later. Upgrade FlexiCapture before exporting if your project was created in an older version. ## Import the folder into Advanced Designer Once the export folder is ready, follow the standard [Import labeled documents](/vantage/documentation/advanced-designer/labeling/labeling#import-the-labeled-documents) procedure on your Advanced Designer skill. ### Field merge behavior Imported labeling is merged with the existing labeling. Fields are matched by name and type, and any unmatched imported field is added to the skill as a new field. ### Table-block conversion Vantage tables can only contain text fields and don't support nesting. FlexiCapture table blocks are converted on import: | Has nested tables | Has non-text fields | Resulting field in Advanced Designer | | :---------------- | :------------------ | :--------------------------------------------------------------------------------------------------------- | | No | No | Table | | No | Yes | Group with multiple items | | Yes | No | Group with multiple items, with nested groups with multiple items and a table at the deepest nesting level | | Yes | Yes | Group with multiple items with nested groups | ## Related topics * [Label documents in Advanced Designer](/vantage/documentation/advanced-designer/labeling/labeling) * [Labeling guidelines](/vantage/documentation/advanced-designer/labeling/guidelines) # Label documents in Advanced Designer Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/labeling/labeling Label documents to train Advanced Designer skills — manually or by importing labeled documents from skill training sets, manual review, or ABBYY FlexiCapture. To train and test a skill, you need labeled documents — documents whose field locations and data types are explicitly marked. The fastest way to get a labeled set is to label documents manually, but that's time-consuming, especially for [Deep Learning activities](/vantage/documentation/advanced-designer/activities/deep-learning-semi-structured) that need large training sets. To save time, you can reuse labeled documents from skills you've already built, from manually reviewed processing results, or from ABBYY FlexiCapture. ## Label documents manually For each uploaded document, mark out the field locations and specify the data type each field is expected to contain. Follow the [labeling guidelines](/vantage/documentation/advanced-designer/labeling/guidelines) for reliable training results. ## Reuse labeled documents from another source You can import labeled documents from three sources. In each case, export the labeled documents from the source to a folder, and then import that folder into your skill on the **All Documents** set. | Source | Best for | Export action | | :----------------------------------- | :---------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------- | | Skill training set | Reusing your own labels for a new skill version | **Export Set with Labeling** on the document set | | Manually reviewed processing results | Labels created during operations | Configure field-data + image exports | | FlexiCapture | Reusing labels from earlier FlexiCapture work | See [Import labeled documents from FlexiCapture](/vantage/documentation/advanced-designer/labeling/import-from-flexi) | ### Skill training set When you publish a skill for production, you usually remove the training set and keep only a few sample documents in the published version. To reuse the same training set for a new version of the skill, export it before publishing. To export, click the more icon next to the document set name and choose **Export Set with Labeling**. The destination folder contains: * `documentdefinition.json` * `skillsettings.json` * A `` subfolder for each document, containing the document images, `documentinfo.json`, and `labeling.json` ### Manually reviewed processing results Manual review produces labeled documents as a side effect. Set up exports of: * **Field data** to JSON with the **Values, metadata, and field structure for each document** option enabled. * **Document images** in any supported image format. The destination folder contains one subfolder per transaction. Each `` subfolder contains: * `.json` with the field data. * Exported images: `.pdf`, `.tiff`, or a `/Pages` subfolder with `page_*.jpg` files. ### FlexiCapture You can reuse documents labeled earlier in ABBYY FlexiCapture — see [Import labeled documents from FlexiCapture](/vantage/documentation/advanced-designer/labeling/import-from-flexi) for the format and procedure. ### Import the labeled documents Once you have an export folder from any of the sources above, import it into your skill: On the **Documents** tab, select the **All Documents** set. Click the drop-down arrow next to **Upload** and choose **Import Labeled Documents From Folder…**. Select the folder you created with the export procedure for your source. Don't change the folder that was created during export. Renaming files or altering the subfolder structure can break the import. **If a document with the same name already exists,** Advanced Designer asks how to handle the duplicate: * **Update Labeling** — overwrites field locations and settings on identically-named fields, and adds any fields present only in the imported document. * **Import As New Documents** — renames the duplicates and imports them with their labeling intact. ## Related topics * [Labeling guidelines](/vantage/documentation/advanced-designer/labeling/guidelines) * [Import labeled documents from FlexiCapture](/vantage/documentation/advanced-designer/labeling/import-from-flexi) * [Documents tab in Document skills](/vantage/documentation/advanced-designer/document-skills/documents) * [Deep Learning activity for semi-structured documents](/vantage/documentation/advanced-designer/activities/deep-learning-semi-structured) # Manage skill versions in Advanced Designer Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/skill-versions Manage Advanced Designer skill versions — track published versions, roll back, edit older versions, and configure auto-deletion of older versions. Each time you publish a skill in Advanced Designer, it gets a new **version number**. A single skill can have many versions, letting you keep variants of the same skill instead of creating separate ones. The version number appears in the **Version** column next to the skill in the [Skill Catalog](/vantage/documentation/skill-catalog/skill-catalog); clicking the number opens the **Skill Versions** dialog with details for every existing version. ## Before and after publishing Review the skill's extraction statistics before publishing a new version. If the new version performs worse than the previous one: * **Before publishing** — on the start page, select the skill in the **Skill Catalog** and click the **Discard** icon next to the skill description. The pending changes are dropped and the previous published version remains the active one. * **After publishing** — edit the skill and publish again, or delete the new version. ## Auto-deletion of older versions By default, **only the last three versions are kept**. If a skill has more than three versions, older versions that aren't referenced by other skills or transactions are deleted automatically. Toggle off **Keep only 3 latest versions** to disable this and retain every version manually. ## Edit and copy versions Open the **Skill Versions** dialog (click the version number in the Skill Catalog) to work with specific versions. The latest version is selected by default; the **editable version** is also shown here. A skill can have only one editable version at a time. To work with a different version, click the more icon next to its number and choose: * **Edit skill version** — edit the selected version directly. * **Duplicate skill to create new version** — create a new skill (rather than a new version of the current one) and edit that. * **Create and Edit Derived Skill** — create a [derived skill](/vantage/documentation/advanced-designer/document-skills/derived) from the selected version. When you copy a skill, the latest version is copied by default. To copy a different version, click the copy-skill icon or **Duplicate skill to create new version** next to that version. A derived skill can be updated when a new version of its base skill ships. ## Import and export specific versions **Import.** When importing a skill that already exists in your tenant, you can either import it as a new skill or create a new version of the existing skill. The new version number is incremented from the latest existing version (numbering accounts for every version that has ever existed). Skills imported from another tenant keep their own version numbers. **Export.** The latest version is exported by default. To export a different version, duplicate the target version first (click the copy-skill icon or **Duplicate skill to create new version**), and then export the duplicate. ## Delete a version To delete a version, click the delete icon next to its number. You can only delete a version that isn't used by other skills or transactions. Deleted versions cannot be restored. Deleting a skill deletes every version of that skill. Deleted version numbers are reserved — no new version will ever reuse a deleted number. For example, if you delete version 3 (the latest), the next published version is numbered 4, not 3. ## Related topics * [Derived skills in Advanced Designer](/vantage/documentation/advanced-designer/document-skills/derived) * [Upgrade Advanced Designer Skill Technology Core](/vantage/documentation/advanced-designer/upgrading-to-new-version) * [Skill Catalog](/vantage/documentation/skill-catalog/skill-catalog) # Store a skill in a local folder Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/storing-locally Sync an Advanced Designer skill to a local folder for version control, snapshots, or as the source for a new skill — including ADPROJ project file support. Save a skill to a local folder so you can manage it in a version control system (such as Git), keep a static snapshot, or use it as the source for a new skill. Locally stored skills sync with the **Skill Catalog**: edits saved in Advanced Designer are mirrored to the local folder. ## Sync a skill with a local folder You can set up sync when you create the skill, or on an existing skill. * **At creation** — when creating a new skill, select **Create local folder to sync**. Advanced Designer creates the skill and the local folder together. * **On an existing skill** — select the skill in the **Skill Catalog** and click the sync folder button. A synced skill appears in the **Skill Catalog** with a sync icon; hover the skill to see the local folder path in the tooltip. Edits saved in the cloud are mirrored to the local folder. To bring a synced skill into a version-control system, point your VCS at the local folder. To stop syncing, select the skill in the **Skill Catalog** and click the sync folder button again. ## Save a one-time snapshot To save a static snapshot — a one-time export with no ongoing sync — select the skill in the **Skill Catalog** and click the folder download button. ## Create a new skill from a local folder Use a locally stored skill as the source for a new skill in the **Skill Catalog**. On the [start page](/vantage/documentation/advanced-designer/getting-started#create-a-new-skill), choose **Create Skill from Local Folder** — also available from the main menu. Specify the path to the Advanced Designer project file (ADPROJ). If a skill of the same name already exists in the **Skill Catalog**, Advanced Designer asks whether to replace it or create a new one. If the name matches a framework skill, you can only create a new skill — framework skills cannot be replaced. Local folders are intended for development workflows. The folder includes the structure of any data catalogs the skill uses, but **not** the data catalog records. To transfer records along with a skill, [export the skill](/vantage/documentation/skill-catalog/export-skill) instead of saving it locally. ## Related topics * [Getting started with Advanced Designer](/vantage/documentation/advanced-designer/getting-started) * [Export a skill](/vantage/documentation/skill-catalog/export-skill) * [Manage skill versions in Advanced Designer](/vantage/documentation/advanced-designer/skill-versions) # Advanced Designer tutorial Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/tutorial/tutorial Tutorial for building your first Advanced Designer Document skill, combining classification, Extraction Rules, and Fast Learning on sick-note documents. Build your first Document skill in Advanced Designer by following along with this end-to-end tutorial. You'll create a simplified version of the built-in [Sick Note skill](/vantage/documentation/skill-catalog/built-in-skills/sick-note) that extracts data from sick notes issued in Germany, Belgium, and the Netherlands. These documents vary in structure and content — more than a standard Vantage Document skill can handle. To work around the variation, you'll combine multiple Vantage technologies in Advanced Designer: classify the documents by layout, apply a separate set of Extraction Rules to each class, and then add a Fast Learning activity at the end of the flow to enable continued training. ## Start the tutorial Launch Advanced Designer, connect to your Vantage server, and create a new skill with the right OCR languages. # Step 1. Create a skill Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/tutorial/tutorial-step-1 Launch Advanced Designer and create a new skill with proper configuration. Launch Advanced Designer on your Windows machine. If you are already connected, skip this step. 1. Specify your Vantage server URL and click **Connect**. 2. Enter your corporate email and click **Proceed**. 3. Enter your password and click **Sign In**. The server stores only the published version of the skill, so having a local copy will prevent you from accidentally losing unpublished changes. 1. Click **Create Document Skill** at the top of the window. 2. Enter the name of the new skill and an optional description. 3. Click **Create local folder to sync**. 4. Click **Create** and select a folder in which the local copy of the skill will be stored. 5. Click **Select folder**. Because the skill processes sick notes in German, French, and Dutch, adjust the OCR language settings accordingly. 1. Click the icon to the right of the skill name. 2. Go to the **OCR Languages** tab. 3. Select the following languages: English (United States), French (Standard), Dutch (Standard), German (Standard), and German (New Spelling). 4. Deselect any other languages. 5. Click **Save**. You can change language settings at any time later, but the new settings will not be applied to documents that have already been uploaded. ## What's next Add classification, IF, Extraction Rules, and Fast Learning activities to the workflow. Back to the tutorial introduction. # Step 10. Test and publish the skill Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/tutorial/tutorial-step-10 Test the configured skill on sample documents and publish it to the connected Vantage server. You have now fully configured the skill. It's time to test it and review the results. Click **Test Skill Using Selected Documents** and examine the extraction results on the **Fields** tab. If necessary, switch to the **Reference** section and correct any issues. Remember to test the modified skill again after any changes. When you're satisfied with the results, go to the **Publish** tab. Adjust the skill name and enter an optional description if needed. After you click **Publish**, the skill becomes available on your connected Vantage server. ## What's next Dive deeper into Document skill features, training, and configuration. Back to the tutorial introduction. # Step 2. Configure the document processing flow Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/tutorial/tutorial-step-2 Set up the workflow with classification, IF, Extraction Rules, and Fast Learning activities. The documents fall into two layout classes, each with its own set of Extraction Rules. The skill also needs to support standard Vantage training. Configure the processing flow accordingly. Go to the **Activities** tab. First, determine the document class. Click the Classify By Text and Image activity on the **Activities** pane — it will be added to the workflow. When you add this activity, a new field is created in the skill structure to record the classification results. The field is hidden and not editable, but you can rename it in the **Activity Properties** pane on the **Activities** tab. Rename the field to "Layout". Documents should be routed to different activities based on classification results. 1. Click the Classify By Text and Image activity in the workflow. 2. In the pop-up window, select the IF item. It will be added to the workflow after the Classify By Text and Image activity. Instead of using the IF activity, you can create a workflow item containing two Extraction Rules activities and select the "Layout" field as a source field so that its values serve as conditions for choosing which activity will be applied to each document. For more information about this option, see [Several sets of Extraction Rules within a single activity](/vantage/documentation/advanced-designer/activities/extraction-rules-several-sets). Add the activities for extracting data from documents of different classes. 1. Select the Extraction Rules activity as the next item. Rename it to "Sick Note DE" — this activity will extract data from the German documents. 2. Click the IF activity and add another Extraction Rules activity. Rename it to "Sick Note BE-NL". This handles Belgian and Dutch documents (variants inside this class can be handled by a single activity). The IF activity should now be connected to both Extraction Rules activities and to **Finish**. The Fast Learning activity enables further skill training during production via Online Learning. 1. Click "Sick Note BE-NL" in the processing flow. 2. In the pop-up window, select the Fast Learning activity. It is added after "Sick Note BE-NL", but "Sick Note DE" is still connected to **Finish**. 3. Hover over the arrow connecting "Sick Note DE" and **Finish**. The arrow turns orange. 4. Drag and drop this arrow onto the Fast Learning activity. 5. Hover over the arrow connecting the IF activity and **Finish**. Drag and drop this arrow onto the Fast Learning activity as well. All documents are now forwarded to the Fast Learning activity. Your final setup should look like this: Document processing flow showing Classify By Text and Image, IF, Sick Note DE, Sick Note BE-NL, and Fast Learning activities The exclamation marks indicate that the activities haven't yet been configured. You'll configure them in the next steps. ## What's next Upload training documents, assign classes, and train the classification activity. Back to the tutorial introduction. # Step 3. Configure and train the Classify activity Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/tutorial/tutorial-step-3 Upload training documents, assign classes, and train the classification activity. The goal of this step is to teach Advanced Designer how to determine the class of a document. To do this, upload a document set for training, assign reference classes to the uploaded documents, and train the classification activity. Download the documents that will be used in the skill and unzip the archive. Double-click the Classify By Text and Image activity to open the **Activity Editor**. 1. Click the **Upload** button on the toolbar and select **Upload Documents...** 2. Select the documents you downloaded earlier and click **OK**. All documents are uploaded to the **No Class** list. Create two classes — "DE" for German documents and "BE" for Belgian and Dutch documents — and assign them. 1. Select all German documents in the list. 2. Click **Create Class** in the toolbar. 3. Enter the class name "DE" and click **Create and Assign**. 4. Select the rest of the documents in the **No Class** list. 5. Click **Create Class** again. 6. Enter the class name "BE" and click **Create and Assign**. There are many ways to upload documents and assign classes. If your documents are organized into subfolders by class, select the **Upload Folder Like Classes...** option in the **Upload** menu. Advanced Designer automatically creates a class for each subfolder and assigns it to all documents uploaded from that subfolder. Click **Train Activity** to train the classifier. After training finishes, classification statistics appear on the **Results** tab. Analyzing these statistics helps identify problem classes and evaluate the overall quality of the classifier. For metrics and methods for fixing classification errors, see [Train a classifier and view classification results](/vantage/documentation/advanced-designer/activities/classify-by-text-and-image#train-a-classifier-and-view-classification-results). Click the name of the skill to exit the **Activity Editor** and go back to the **Activities** tab. ## What's next Set up conditional routing based on document classification results. Back to the tutorial introduction. # Step 4. Configure the IF activity Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/tutorial/tutorial-step-4 Set up conditional routing based on document classification results using script-based case conditions. The IF activity routes documents to the correct Extraction Rules activity based on classification result. The processing flow is in place — now define the condition for each branch. Click the IF activity in the workflow. In the **Case Conditions** section of the **Activity Properties** pane, click the settings icon next to the "Sick Note DE" activity. The IF activity uses a script to select the next activity based on the document class determined by the Classify By Text and Image activity. The classification result is recorded to the "Layout" field, whose possible values are the names of the classes created in the Classify By Text and Image activity. Paste the following script to the script editor to forward all documents of class "DE" to the "Sick Note DE" activity: ```javascript theme={null} for (var i = 0; i < Context.Transaction.Documents[0].Fields.length; i++) { if (Context.Transaction.Documents[0].Fields[i].Name === 'Layout' && Context.Transaction.Documents[0].Fields[i].Value === 'DE') { return true; } } return false; ``` Click **Save**. Click the settings icon next to the "Sick Note BE-NL" activity and paste the following script in the script editor: ```javascript theme={null} for (var i = 0; i < Context.Transaction.Documents[0].Fields.length; i++) { if (Context.Transaction.Documents[0].Fields[i].Name === 'Layout' && Context.Transaction.Documents[0].Fields[i].Value === 'BE') { return true; } } return false; ``` Click **Save**. If the document is of an unknown class or if the "Layout" field doesn't exist (which means the document couldn't be processed by the classification activity), it will be forwarded directly to Fast Learning. To extract data from documents whose class couldn't be determined, create a special Extraction Rules activity for no-class documents, or forward them to an existing Extraction Rules activity. ## What's next Define the data form, label fields on German sick notes, and train the Fast Learning activity. Back to the tutorial introduction. # Step 5. Configure the Fast Learning activity Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/tutorial/tutorial-step-5 Define the data form, label fields on German sick notes, and train the Fast Learning activity. German documents share a similar layout, so the Fast Learning activity handles some of the common fields directly. Use this method to extract the following data: * Date when the sick note was issued. * The first day of sickness and the last day of the sick leave. * The name of the health insurance company. * Doctor's ID. * The following data for the patient: * Insurance ID * German insurance ID * Date of birth Fast Learning data form with Date, Start Date, End Date, Health Insurer fields and Patient group (Insurance ID, German Insurance ID, Date of Birth) and Doctor group (Doctor ID) 1. Double-click the Fast Learning activity in the pipeline. 2. Go to the **Fields** tab. You will see a window similar to the Document Skill Editor in Vantage. 3. Select the first German document. 1. Click the icon to add a text field on the data form. 2. Select the region containing the issue date on the document image. The field is filled with the text from the region. 3. Double-click the field name and change it to "Date". 4. Click the icon to the right of the field name and change the field type to **Date**. 5. Open Advanced field settings and select the **Day-Month-Year** option in the **Acceptable orders of components** section. 6. Click **Save**. Repeat the previous step for the "Start Date" and "End Date" fields. For the "Health Insurer" field, repeat only the first three sub-steps (add text field, select region, rename) — no date-type configuration is needed. 1. Click the icon to create a group. Rename it to "Patient". 2. Expand the "Patient" group and click the **First group item** placeholder. Select the region for the field and rename it to "Insurance ID". 3. Create and label the fields "German Insurance ID" and "Date of Birth" in the "Patient" group. Configure the "Date of Birth" field options the same way as the "Date" field (Date type, Day-Month-Year order). Following the same pattern as the Patient group, create a "Doctor" group and label the "Doctor ID" field inside it. 1. Select the next German document in the document set on the left side of the page. 2. Label the fields you created. 3. Repeat for all German documents in the document set. Click **Train Activity**. After training finishes, the achieved accuracy is displayed in the header of the **Results** tab. If the accuracy is too low, go to the **Results** tab and fix the extraction issues. This process is similar to fixing extraction issues for a Document skill in Vantage. Remember to retrain the activity to update the extraction results. Fast Learning isn't suitable for the remaining fields: * The patient's name and address share a single field. The name occupies one or two lines, and the address may be missing. * Checkmark locations for the sick note type vary across documents. These factors degrade Fast Learning accuracy or prevent it from locating the field at all. ## What's next Separate the German and Belgian-Dutch documents into their own training sets. Back to the tutorial introduction. # Step 6. Create document sets for Extraction Rules activities Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/tutorial/tutorial-step-6 Create separate document sets for the German and Belgian-Dutch Extraction Rules activities so each trains on the right class. Each Extraction Rules activity should train only on documents of its own class for better accuracy. By default, every activity uses **All Documents** — separate the documents into two activity-specific sets so each Extraction Rules activity trains only on the documents that match its class. 1. Open the "Sick Note DE" activity in the **Activity Editor**. 2. Click **All Documents**. 3. Select **Sick Note DE Document Set** from the drop-down list. 4. Repeat the same three actions for the "Sick Note BE-NL" activity. Click the name of the skill and then go to the **Documents** tab. The two document sets named after the Extraction Rules activities appear in the list on the left. 1. Select all German documents from the **All Documents** set and click **Add to Set**. 2. Select "Sick Note DE" from the drop-down list. Repeat the previous step for the remaining documents, selecting "Sick Note BE-NL" from the drop-down list. ## What's next Configure the Extraction Rules activity for German sick notes using search elements. Back to the tutorial introduction. # Step 7. Configure the Sick Note DE activity Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/tutorial/tutorial-step-7 Configure the Extraction Rules activity for German sick notes using search elements like Static Text, Separator, Paragraph, Object Collection, and Region. Continuing with the German documents, configure their Extraction Rules activity. Fast Learning has handled some fields already. This activity covers the rest. ## Before you begin 1. Open the "Sick Note DE" activity in the **Activity Editor**. 2. Select one of the documents from the document set. Make sure that the advanced mode for the element properties is enabled. To toggle this mode on or off, click the icon on the **Properties** pane. Two visual aids help while you configure search elements: * All uploaded documents have undergone pre-recognition. Click the icon (or click the more icon and select **Recognized Words** if the icon doesn't fit on your screen) to highlight detected objects on the document image. Switch between object types at any time — for example, **Recognized Lines** helps when looking for paragraphs, and **Separators** helps when configuring a Separator search element. * If a search element lies outside the search area, it won't be found. Enable the **Show search area** option in the document image context menu to highlight each element's search area in green when you evaluate the matching results. Keep in mind that it may be helpful to experiment with advanced properties of the search elements to improve extraction accuracy. Click **Match** often to check how your extraction rules work and to compare extraction results across documents in the set. To test a single element without relations to other elements, click **Match Element** in its context menu — in this case, the hypothesis quality of previous elements won't affect the matching results. ## Extract the patient's data Extract the missing patient data by creating several search elements. Group elements that relate to one entity. Search elements are matched one after another — if a top element fails, hypothesis quality drops for the rest of its chain. Groups, however, are processed independently with their own hypothesis, so grouping gives you control over how elements influence each other and lets you evaluate matching results at a glance. Grouping can also reduce matching time. 1. Click **Create Element** and select the **Group** element from the drop-down list. Change its name to "PatientDataArea". 2. In the **Under what conditions** section, change the **Element is** value to **Optional**. A new group search element is required by default. If a required element isn't found, the Activity Editor errors and matching is aborted — this lets unsuitable activities be skipped for a given document. In this tutorial, however, the activity must extract data from every incoming document, so make the group optional. In German documents, the paragraph containing the patient's name and address always appears in the field labeled "Name, Vorname ...". Find this text on the document and use it as a reference to locate the data you want to extract. 1. Click **Create Element** and select the **Static Text** element from the drop-down list. Change its name to "kwPatientTitle". 2. Enter the text "Name, Vorname" in the **Text to find** field on the **Properties** pane. 3. Click **Match**. When processing is finished, you will see the **Tree of Hypotheses** below the document. 4. Make sure that Advanced Designer has successfully found the static text — a green dot next to the element name indicates a successful match. 5. Click the element name in the **Tree of Hypotheses** to see a violet frame around the corresponding region on the document. If an element wasn't found, you will see an orange dot next to its name and an orange frame around the document image. Keep in mind that the hypothesis quality of an element affects the state of subsequent elements in the chain and the overall quality of a chain. For more information, see [Optimization of Hypothesis Matching](/vantage/documentation/advanced-designer/activities/flexilayout/hypotheses/hypothesis-optimization). Find the lower boundary of the cell that contains the patient's name and address using a **Separator** element. 1. Add a **Separator** element to the group and call it "SeparatorBottom". Set its minimum length to 200. 2. Right-click the element and select **Match Element** in the context menu. The **Tree of Hypotheses** contains many green dots — they correspond to different separators that fit the search criteria. Click each dot to see the corresponding object on the image. 3. To narrow down the search criteria, specify the search area for the separator: 1. Click **Match** to find the "kwPatientTitle" element, which will be used as an anchor element. 2. In the **Where to search** section of the **Properties** pane, click **Draw on Image**. 3. Select the "kwPatientTitle" element on the document. Click the down arrow icon to set the search area below the keyword, and click the nearest icon to search for the separator nearest to the keyword. 4. Click **Match** and check that Advanced Designer has found the separator below the "kwPatientTitle" element. A label and a separator are reliable reference elements for the patient's data. However, if the print quality is too low, the label text might not be recognized or the separator might not be found. To ensure good extraction results, search for a paragraph that lies between the label and the separator. A paragraph is a uniform block of text, so it can be found even when some boundary elements are missing. 1. Create a **Paragraph** search element and call it "NameAddressParagraph". 2. Change **Text alignment** to **Left**. 3. The patient's data occupies from two to five lines, so specify the **Line count** from 2 to 5. 4. Specify the search area for the paragraph using the **Add** menu in the **Where to search** section. The element should be located below the "kwPatientTitle" element and above the "SeparatorBottom" element. 5. Click **Match**. Create a new group element called "PatientGroup" to hold the search elements that extract the patient's data. The patient's name can occupy one or two lines. To capture several instances of an element, use a repeating group. 1. Create a **Repeating Group** search element and call it "NameGroup". Specify 2 as the maximum number of repetitions. Make the element optional. 2. To restrict the search area to the lines that are part of the "NameAddressParagraph" paragraph, click the code editor icon below the document image and paste the following script in the **Search Conditions** section of the **Code Editor**: ```text theme={null} RSA:PatientDataArea.NameAddressParagraph.Rect; ``` 3. Inside the repeating group, create a **Character String** element designed to capture a line of characters. Call it "NameLine". 4. The text you're looking for may contain upper- and lower-case letters and a set of punctuation marks. Configure two separate character sets: * The first set contains all Latin upper- and lower-case letters. To add characters with diacritical marks, change the Unicode subrange or paste the characters directly into the **Selected characters** field. * The second set contains the punctuation marks: ,-.()'. To prevent the string from containing only punctuation marks, set the **Portion in text, %** for the second set to 40%. 5. Disable the **Search for parts of words** option. 6. Specify the search area for the "NameLine" element: below the "kwPatientTitle" element and nearest to it. 7. Click **Match** and review the **Tree of Hypotheses**. Two character strings are found, but the second string contains the patient's address. 8. To exclude the address from the search results, add a script search condition: 1. Select the "NameLine" search element and open the **Search Conditions** code editor. 2. Paste the following script — it assumes that the first line contains a full name if it contains a comma and a whitespace, and if a full name is found, the repeating group stops searching for a second instance: ```text theme={null} if (NameGroup.HasInstances and LastFound.NameLine.Value.Find(", ") > 0) then DontFind; ``` 9. Click **Match** and make sure that the name is found correctly. The default settings allow the string to contain up to 30% of characters not included in any set. This helps find strings even when some characters are recognized incorrectly or are not included in the set (such as characters with diacritical marks). You can adjust this setting by changing the **Allowed errors** value on the **Properties** pane. You can't map a field to an element that has repeating instances, so create an auxiliary **Region** element that contains all regions of the "NameGroup" instances. 1. Create a **Region** search element in the "PatientGroup" group and rename it to "NameRegion". 2. Open the **Code Editor** and paste the following script in the **Search Conditions** section: ```text theme={null} RSA: NameGroup.AllInstances.NameLine.Rects; ``` The patient's name is now found, and the rest of the "NameAddressParagraph" paragraph is the address. To specify the region containing the address, exclude the "NameGroup" rectangles from the "NameAddressParagraph" region. Create another **Region** element in the "PatientGroup" group, rename it to "AddressRegion", and paste the following script in the **Search Conditions** section of the **Code Editor**: ```text theme={null} RSA: PatientDataArea.NameAddressParagraph.Rects; Exclude: NameGroup.AllInstances.NameLine.Rects; ``` The search element structure should look like this: Search element hierarchy for German patient data: PatientDataArea group containing kwPatientTitle, SeparatorBottom, NameAddressParagraph, and PatientGroup with NameGroup, NameRegion, and AddressRegion Open the **Manage Fields** dialog, create the corresponding fields, and map them to search elements as follows: | Name | Type | Search element | | :-------- | :-------------------------------- | :------------- | | Full Name | Text field in the "Patient" group | NameRegion | | Address | Text field in the "Patient" group | AddressRegion | Delete the search elements that were automatically created for the new fields. ## Extract the type of sick note The type of sick note field has two checkboxes. They are labeled as "Erstbescheinigung" and "Folgebescheinigung". The task is to find the labels and then to check whether there are filled checkmarks next to them. Create a "TypeOfSickNoteGroup" group. Inside it, create a "PrimaryGroup" group. Make both groups optional. 1. Inside the "PrimaryGroup" group, create a **Static Text** element called "kwCheckmark" (text to find: "Erstbescheinigung"). 2. This element isn't related to the elements searched for previously. Instead of matching the whole element tree, match only the new element by clicking **Match Element** in the "kwCheckmark" element context menu. Make sure the keyword is found successfully. 3. Now find the checkmark using an **Object Collection** element, which is used to find various graphic objects such as checkmarks, barcodes, and images. * Add an **Object Collection** element called "Checkmark". * In the **Type** drop-down list on the **Properties** pane, deselect all options except **Checkmark**. * Set the minimum width and height of the object to 30, and the maximum width and height of the object to 130. * Specify the search area for the checkmark to the left of the "kwCheckmark" element. * The checkmark should be located roughly on the same line as the keyword. Specify where the top and bottom borders of the element should be located with respect to the keyword by pasting the following code to the **Search Conditions** section of the **Code Editor**: ```text theme={null} RSA: TopBound > kwCheckmark.Top - 50dot; RSA: BottomBound < kwCheckmark.Bottom + 50dot; ``` * Click **Match**. 1. Copy the "PrimaryGroup" group and rename the copy to "SecondaryGroup". 2. When copying a group, you also copy all its elements with their properties. Select the "kwCheckmark" element in the "SecondaryGroup" group and change the text to find to "Folgebescheinigung". 3. The **Object Collection** search element finds a collection of all suitable objects within the search area. If the checkmarks are located on the same line, the "Checkmark" element of the "SecondaryGroup" may also find the Primary checkmark. To avoid this, exclude the primary checkmark ("Checkmark" element of the "PrimaryGroup") from the search area for the "Checkmark" element from the "SecondaryGroup". 4. Click **Match**. The search element structure should look like this: Search element hierarchy for German type-of-sick-note: TypeOfSickNoteGroup containing PrimaryGroup and SecondaryGroup, each with a kwCheckmark keyword and Checkmark elements Open the **Manage Fields** window, create the corresponding fields, and map them to search elements as follows: | Name | Type | Search element | | :---------------- | :--------------------------------------------------- | :-------------------------- | | Type of Sick Note | Checkmark group | | | Primary | Checkmark in the "Type of Sick Note" checkmark group | PrimaryGroup -> Checkmark | | Secondary | Checkmark in the "Type of Sick Note" checkmark group | SecondaryGroup -> Checkmark | Delete the search elements that were automatically created for the new fields. ## Extract the doctor's data The last block of data on these documents contains the doctor's data and signature. First find the box that holds the data, then extract a paragraph with the doctor's information and an image region containing the signature. 1. Create a **Group** element called "DoctorAreaGroup" and make the element optional. 2. To find the box label, create a **Static Text** element called "kwDoctorTitle" (text to find: "Unterschrift des Arztes"). 3. Inside the "DoctorAreaGroup" group, create another group called "DataArea". The box that contains the doctor's information and signature is a combination of four separators located around the "kwDoctorTitle" element. Configure the elements so Advanced Designer can find them even if "kwDoctorTitle" wasn't found. In the "DataArea" group, create four **Separator** search elements with the following properties: | Name | Orientation | Minimum length | Search area | | :-------------- | :---------- | :------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | SeparatorRight | Vertical | 180 | Right of "kwDoctorTitle", Nearest to the right page edge | | SeparatorLeft | Vertical | 180 | Left of "kwDoctorTitle", Left of "SeparatorRight" (in case "kwDoctorTitle" wasn't found), Nearest to "SeparatorRight", Below "SeparatorRight" (click the icon to the right of the separator name and select **Top Boundary of Region**), Exclude "SeparatorRight" | | SeparatorBottom | Horizontal | 200 | Below "kwDoctorTitle" (with adjustment of -10 points), Right of "SeparatorLeft", Left of "SeparatorRight", Nearest to the bottom page edge (this setting will be useful in case "kwDoctorTitle" wasn't found) | | SeparatorTop | Horizontal | 200 | Above "kwDoctorTitle", Right of "SeparatorLeft", Nearest to "TypeOfSickNoteGroup", Exclude "SeparatorBottom" | Disable the **Fits entirely within search area** option for all four elements. Create a **Region** search element called "BoxRegion" and specify the search area: left of "SeparatorRight", right of "SeparatorLeft", above "SeparatorBottom", and below "SeparatorTop". This region corresponds to the area bounded by the four separators — using it avoids having to specify search areas for the signature and doctor information manually. Create a new group called "DoctorGroup" inside "DoctorAreaGroup" to hold the signature and information elements. To locate the doctor's signature, create an **Object Collection** element inside the "DoctorGroup" with the following settings: | Property | Value | | :----------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Name | Signature | | Type | Picture | | Minimum width | 15 | | Minimum height | 15 | | Maximum width | 600 | | Maximum height | 350 | | **Search Conditions** section of the Code Editor | The signature may be partly located outside the box. To find the whole image, expand the search area by 100 dots in each direction: `RSA: DoctorAreaGroup.DataArea.BoxRegion.Rect.GetInflated(100dot,100dot);` | To extract the text information in the box, create a **Paragraph** element with the following settings: | Property | Value | | :----------------------------------------------- | :---------------------------------------------- | | Name | DoctorInformation | | Maximum line count | 6 | | Search area | Above "kwDoctorTitle", Exclude "Signature" | | **Search Conditions** section of the Code Editor | `RSA: DoctorAreaGroup.DataArea.BoxRegion.Rect;` | Click **Match** and make sure the elements are found correctly. The search element structure should look like this: Search element hierarchy for German doctor data: DoctorAreaGroup containing kwDoctorTitle and DataArea (with four boundary Separators and BoxRegion), plus DoctorGroup with Signature and DoctorInformation Open the **Manage Fields** dialog, create the corresponding fields, and map them to search elements as follows: | Name | Type | Search element | | :----------------- | :-------------------------------- | :---------------- | | Doctor Information | Text field in the "Doctor" group | DoctorInformation | | Signature | Image field in the "Doctor" group | Signature | Delete the search elements that were automatically created for the new fields. ## Test the activity All the necessary search elements and fields are now configured. Select all documents, click **Match**, and switch to the **Fields** tab to review the field regions on the document images. Keep in mind that a region is passed to a field only if it belongs to the hypothesis from the best path. Once you're satisfied with the results, click the copy icon above the document image to copy predicted labeling to reference labeling. ## What's next Configure the Extraction Rules activity for Dutch and Belgian sick notes. Back to the tutorial introduction. # Step 8. Configure the Sick Note BE-NL activity Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/tutorial/tutorial-step-8 Configure the Extraction Rules activity for Dutch and Belgian sick notes using Date, Key value, Character String, Object Collection, Paragraph, and Region elements. With the German activity configured, set up the second Extraction Rules activity for Dutch and Belgian sick notes. Dutch and Belgian sick notes have a different structure from the German documents and vary widely across the class, so Fast Learning isn't viable here. Some fields are unique to these documents — you'll add them to the data form as you configure the activity. Start with fields that appear on every document, and then extend the form for the new ones. Switch activities without closing the **Activity Editor** by clicking the current activity name next to the skill name and selecting "Sick Note BE-NL" from the drop-down. Then select the first document in the set. ## Extract the issue date Dates in these documents are easily extracted with the **Date** element, so this time use the search element that was created automatically for this field. 1. Open the **Manage Fields** dialog on the **Fields** tab and select a "Date" field to be used in this activity. Click **Save**. 2. Go to the **Search Elements** tab. A search element of type **Date** has been created for the "Date" field and mapped automatically. 1. Create a **Group** search element called "IssueDateGroup" and make it optional. 2. Add a **Static Text** element called "kwDate" inside the group — this finds the label that helps locate the actual date. 3. Since this document class contains documents in Dutch or French, enter the label text options on separate lines in the **Text to find** dialog: "Date" on the first line and "Datum" on the second line. 4. Disable the **Search for parts of words** option. Drag and drop the "Date" search element into the group and place it under the "kwDate" element. 1. Delete the **Nearest to** relation that was automatically added when the element was created. 2. Select the "kwDate" element as the one nearest to the element being searched for. 3. The date can be located to the right of the keyword or below it. Specify the search area below the "kwDate" element. 4. The search area should also include the line on which the keyword is located. Click the bottom boundary icon to the right of the element name and select **Top Boundary of Region**. The lines may be uneven, so set the **Below** value to -10 to extend the search area slightly above the line. Click **Match** to make sure the date is located correctly. The search element structure should look like this: Search element hierarchy for the Belgian-Dutch issue date: IssueDateGroup containing kwDate keyword and the Date element ## Extract the sickness dates Extract these dates using **Key value** elements. The **Key value** element can search for both a static text label and its value. However, it allows little variation in the value's location and properties. 1. Create a **Group** element called "SicknessDatesGroup". Make the element optional. 2. The static text for the start date can sometimes be omitted, so search for the end date first. Create and configure a **Key value** element called "EndDate": 1. Enter the lines "au", "jusqu'au", and "tot en met" in the **Text to find** field. 2. Disable the **Gap between key and value** option. 3. Set the value type to **Date**. 1. Copy and paste the "EndDate" element. Rename it to "StartDate". 2. Adjust the **Text to find**. This time, look for the word "du" or "van". 3. Click **Match** and make sure Advanced Designer has found the dates correctly. Select the second document in the set (called "BE-NL 02.png"). You will see that it contains information about the sick leave duration in addition to the dates. In addition, the start date doesn't have a label on this document. First, configure an additional element to extract the start date. 1. Create a **Date** element called "StartDateNoLabel". 2. Set the **Date format** to Day, month, year. 3. Specify the search area for the element to the left of "EndDate". 4. Find the date on the same line as the end date. To limit the search area to that line: 1. Specify that the element should be located above and below "EndDate". 2. Change the element boundary to search from by clicking the bottom-boundary and top-boundary icons near the corresponding relations. Position the search area below the top of "EndDate" and above its bottom, which limits the search to the line where "EndDate" is located. 5. You don't need to search for this element if the "StartDate" element was found. In the **Under what conditions** area of the **Properties** pane, click the plus icon to the right of **Do not find element if**. 6. In the drop-down menu, select **Other Element Is Found...** and then select the "StartDate" element. 7. Return to the "StartDate" element. If it's not found, the hypothesis quality for the following elements will decrease, and the corresponding regions won't be passed to the fields. To avoid this, go to the **Under what conditions** area of the **Properties** pane and set the **Min. hypothesis quality** for this element to 1. 1. Create a **Key value** element called "Duration". 2. Paste the strings "durée de :" and "Gedurand" in the **Text to find** field. 3. Disable the **Gap between key and value** option. 4. Set the value type to **Character String** and edit the character set. It should only contain digits. 5. Set maximum character count to 3. 6. Click **Match** and make sure that the value was successfully found. The search element structure should look like this: Search element hierarchy for the Belgian-Dutch sickness dates: SicknessDatesGroup containing EndDate, StartDate, StartDateNoLabel, and Duration Key value elements 1. Open the **Manage Fields** dialog and create a new text field called "Duration". Change its data type to Number. 2. Select the "Start Date" and "End Date" fields to be used in this activity. Click **Save**. 3. Map the fields: | Name | Search element | | :--------- | :------------- | | End Date | EndDate | | Duration | Duration | | Start Date | *Set by code* | For the "Start Date" field, two search elements may provide a region. Use code to check whether each element was found and pass the corresponding region to the field: select **Code** in the **Get region from** list and paste the following code in the Code Editor: ```text theme={null} if SicknessDatesGroup.StartDate.IsFound then OutputRegion = SicknessDatesGroup.StartDate.Rect; else if SicknessDatesGroup.StartDateNoLabel.IsFound then OutputRegion = SicknessDatesGroup.StartDateNoLabel.Rect; ``` 4. Delete the elements that were automatically created when enabling the fields. ## Extract the patient's data The patient's data in these documents is less structured than in the German sick notes. Many pieces of data may be missing. The only part that is always present is the patient's full name. 1. Create a **Group** element called "PatientParagraphGroup". Make the element optional. 2. The patient's data is preceded by the sentence where the doctor states that he has examined the patient. To locate this statement, search for the words that occur in it. Create a **Static Text** element called "kwExamined" (**Text to find**: "interrogé" or "ondervraagd"). 3. The patient's data is followed by the conclusion where the doctor states what the patient is incapable of. To locate this conclusion, create a **Static Text** element called "kwIncapable" (**Text to find**: "incapable", "niet in staat", "onbekwaam", "déclare que :"). 4. The paragraph containing the patient's data is located between the two keywords you just found. Create a **Paragraph** element with the following settings: | Property | Value | | :----------------- | :--------------------------------------------------------------- | | Name | NameAddressParagraph | | Minimum line count | 1 | | Maximum line count | 4 | | Minimum line width | 200 | | Search area | Below "kwExamined", Above "kwIncapable", Nearest to "kwExamined" | 5. Click **Match**. 1. Create an optional group called "PatientGroup" to extract data from the paragraph. 2. First, extract additional data that is easy to find and present on some documents. Create an optional group called "AdditionalDataGroup" inside the "PatientGroup" group. 3. To extract the patient's birth date, create a **Date** element called "BirthDate". Adjust its **Min. hypothesis quality** so that this element can be extracted successfully if data is missing from the document. 4. Use the code editor to specify the search area inside the "NameAddressParagraph": ```text theme={null} RSA: PatientParagraphGroup.NameAddressParagraph.Rects; ``` 5. In some cases the patient's name is followed by a numerical ID that consists of 11 digits and is usually enclosed in brackets. To extract this ID, create a **Character String** element with the following settings: | Property | Value | | :------------------------ | :------------------ | | Name | PatientID | | Method | Regular Expression | | Regular Expression | `("("\|)N{11}(")")` | | Character count | `{11, 11, 13, 13}` | | Search for parts of words | Disabled | The **Regular Expression Editor** uses specific syntax. For more information, see the [Character String](/vantage/documentation/advanced-designer/activities/extraction-rules/character-string) topic or click **Syntax help** in the editor. 1. Create an optional group called "NameGroup" inside the "PatientGroup" group. 2. First, exclude the label that occurs on some documents. Create a **Static Text** element called "NameLabel" (**Text to find**: "Nom, prénom du patient :" or "Patiente"). Enable the **Match case** option and change the **Min. hypothesis quality** to 1. 3. A name consists of 2 or 3 capitalized words, so search for it using a regular expression. Create a **Character String** element with the following settings: | Property | Value | | :----------------------------------------------- | :---------------------------------------------------------------- | | Name | Name | | Method | Regular Expression | | Regular Expression | `(([A-Z])(C\|"-"){1-}s)` | | Allowed errors | 0% | | Word count | `{2, 2, 3, 3}` | | Search for parts of words | Disabled | | Search area | Nearest to the top page edge, Exclude "PatientID" and "NameLabel" | | **Search Conditions** section of the Code Editor | `RSA: PatientParagraphGroup.NameAddressParagraph.Rects;` | If present, the patient's address is located within the "NameAddressParagraph" below all previously found elements. In the "PatientGroup" group, create a **Paragraph** search element with the following settings: | Property | Value | | :----------------------------------------------- | :------------------------------------------------------- | | Name | AddressParagraph | | Search area | Below "Name", "BirthDate", "AdditionalDataGroup" | | **Search Conditions** section of the Code Editor | `RSA: PatientParagraphGroup.NameAddressParagraph.Rects;` | The search element structure should look like this: Search element hierarchy for the Belgian-Dutch patient data: PatientParagraphGroup with kwExamined, kwIncapable, and NameAddressParagraph, and PatientGroup containing AdditionalDataGroup, NameGroup, and AddressParagraph 1. Open the **Manage Fields** dialog, select the following fields in the "Patient" group to be used in this activity, and map them to search elements as follows: | Name | Search element | | :------------ | :----------------------------------------------- | | Full Name | PatientGroup -> NameGroup -> Name | | Date of Birth | PatientGroup -> AdditionalDataGroup -> BirthDate | | Insurance ID | PatientGroup -> AdditionalDataGroup -> PatientID | | Address | PatientGroup -> AddressParagraph | 2. Delete the elements that were automatically created when enabling the fields. ## Extract the doctor's data Information about the doctor is usually located at the bottom of the sick note and usually includes an ID. First locate the signature, then search for the ID. Finally, search for the paragraph that contains the ID. 1. Create a **Group** element called "SignatureGroup". Make the element optional. 2. Most documents contain a label for the signature. To find it, create a **Static Text** element called "kwSignature" (**Text to find**: "Signature" or "handtekening"). 3. To locate the signature itself, create an **Object Collection** element with the following settings: | Property | Value | | :------------- | :---------------------------------------------------------------- | | Name | Signature | | Type | Picture | | Minimum width | 15 | | Minimum height | 15 | | Maximum width | 600 | | Maximum height | 350 | | Search area | Below the top boundary of "kwSignature", Nearest to "kwSignature" | 1. Create a **Group** element called "DoctorGroup". Make the element optional. 2. First, search for the doctor's ID, which has a strict format and can therefore be defined by a regular expression. Create a **Character String** element with the following settings: | Property | Value | | :----------------- | :------------------------------------------- | | Name | DoctorID | | Method | Regular Expression | | Regular Expression | `N{1-1}n{1-1}N{5-5}n{1-1}N{2-2}n{1-1}N{3-3}` | | Character count | `{13, 13, INF, INF}` | | Search area | Nearest to top page edge | 3. Some documents also contain the doctor's title. Locate it so it can be excluded from the paragraph with the doctor's data. Create a **Static Text** element with the following settings: | Property | Value | | :---------------------- | :------------------------------------------------------------------------------------------------------------ | | Name | kwDoctorTitle | | Text to find | Cachet du prescripteur, Médecin, Stempel van de voorschrijver, Identification du médecin (each on a new line) | | Match case | Enabled | | Allowed errors | 10% | | Null hypothesis quality | 1 | You may insert recognized text from the document into this field. To do this, draw an area that includes the words you want on the document image when the **Text to find** dialog is open. The text is automatically inserted on a new line. 4. To locate the doctor's data, create a **Paragraph** element with the following settings: | Property | Value | | :------------- | :--------------------------------------------------------------------- | | Name | DoctorInformationParagraph | | Text alignment | Left | | Line count | 4 - 6 | | Search area | Below "kwDoctorTitle", Nearest to "DoctorID", Exclude "IssueDateGroup" | The search element structure should look like this: Search element hierarchy for the Belgian-Dutch doctor data: SignatureGroup with kwSignature and Signature, and DoctorGroup with DoctorID, kwDoctorTitle, and DoctorInformationParagraph 1. Open the **Manage Fields** dialog, select all fields in the "Doctor" group to be used in this activity, and map them to search elements as follows: | Name | Search element | | :----------------- | :------------------------- | | Doctor Information | DoctorInformationParagraph | | Signature | Signature | | Doctor ID | DoctorID | 2. Delete the elements that were automatically created when enabling the fields. ## Extract the sick note type In contrast to German documents, in Dutch and Belgian sick notes this information is not presented in a uniform way. Some of the checkmark labels may be missing, and the checkmarks' appearance may vary. 1. Create a **Group** element called "TypeOfSickNote". Make the element optional. 2. Use the same algorithm to extract each checkmark. Configure one group of elements, then copy it and adjust the necessary properties. 1. Create an optional group called "PrimaryGroup". 2. First, locate the keyword. Create a **Static Text** element called "kwCheckmark" (**Text to find**: "le début de" or "Eerste ongeschiktheid"). 3. Make this element Required. If the keyword is not found, Advanced Designer will not search for the corresponding checkmark. Now search for the checkmark. First search for an actual checkmark, then for a character string containing the letter "x". Assign any rectangles found for the checkmark or the X mark to a **Region** search element that will be mapped to a field. Create the following elements to locate the Primary checkmark: | Property | Value | | :------------------------------------ | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **Object Collection** search element: | | | Name | Checkmark | | Type | Checkmark | | Maximum height | 100 | | Search area | Below the "kwCheckmark" top boundary, **Below** value = -15, Left of "kwCheckmark", Above the "kwCheckmark" bottom boundary, **Above** value = -15, Nearest to "kwCheckmark" | | Min. hypothesis quality | 1 (adjust this setting so the hypothesis chain quality doesn't decrease if the checkmark isn't found) | | **Character String** search element: | | | Name | XMark | | Method | Characters | | Character set | `[]\|Xx` | | Word count | `{1, 1, 1, 1}` | | Character count | `{1, 1, 3, 3}` | | Search for parts of words | Disabled | | Search area | Below the "kwCheckmark" top boundary, **Below** value = -15, Left of "kwCheckmark", Above the "kwCheckmark" bottom boundary, **Above** value = -15, Nearest to "kwCheckmark" | | Under what conditions | Do not find element if "Checkmark" is found | | **Region** search element: | | | Name | CheckmarkRegion | For the "CheckmarkRegion" element, paste the following code in the **Search Conditions** section of the Code Editor: ```text theme={null} if Checkmark.IsFound then RSA: Checkmark.Rect; else if XMark.IsFound then RSA: XMark.Rect; else DontFind; ``` 1. Create a copy of "PrimaryGroup" and rename it to "SecondaryGroup". Change the text to find of its "kwCheckmark" element to "prolongation", "verlenging". 2. German sick notes have two types, but Dutch and Belgian sick notes have three (with 'relapse' as an additional type). Create another copy of the "PrimaryGroup" group and rename it to "RelapseGroup". 3. Change the text to find of its "kwCheckmark" element to "Herval" and enable the **Match case** option to exclude words occurring in the middle of a sentence. The search element structure should look like this: Search element hierarchy for the Belgian-Dutch type-of-sick-note: TypeOfSickNote containing PrimaryGroup, SecondaryGroup, and RelapseGroup, each with kwCheckmark, Checkmark, XMark, and CheckmarkRegion elements 1. Open the **Manage Fields** window and add a "Relapse" checkmark to the "Type of Sick Note" checkmark group. Enable all checkmarks in the group to be used in the current activity and click **Save**. 2. Map the checkmarks to the corresponding **Region** elements and delete the elements that were automatically created when enabling the fields. ## Test the activity All the necessary search elements and fields are now configured. Select all documents, click **Match**, and switch to the **Fields** tab to review the field regions on the document images. Keep in mind that a region is passed to a field only if it belongs to the hypothesis from the best path. Once you're satisfied with the results, click the copy icon above the document image to copy predicted labeling to reference labeling. ## What's next Add business rules to validate and normalize extracted field values. Back to the tutorial introduction. # Step 9. Configure business rules Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/tutorial/tutorial-step-9 Add business rules to validate and normalize extracted field values — adjust doctor IDs with regex and check sick note validity with script rules. With the Extraction Rules activities configured, add business rules to validate and normalize the field values. ## Adjust the doctor's ID Adjust the **Doctor ID** field properties to clean up OCR errors and unwanted characters from the pre-recognition results. After the field region is found, a regular expression in the field properties re-extracts the data and removes OCR noise. 1. Click the skill name and go to the **Fields** tab. 2. Expand the "Doctor" group and open the "Doctor ID" field settings by clicking the settings icon next to it. 1. In the **Value** section of the field properties, click the add icon next to the **Regular expression** option. 2. Paste the following expression into the **Regular Expression Editor**: ``` [0-9]{1}[\/.-]{1}[0-9]{5}[\/.-]{1}[0-9]{2}[\/.-]{1}[0-9]{3} ``` This editor uses common notation that differs from the notation used in the Extraction Rules Activity Editor. For more information, click **Syntax help** in the **Regular Expression Editor**. Click **Save** to close the **Regular Expression Editor**, and then click **Save** again to close the field properties. ## Check whether the sick note is valid A patient must receive a sick note within 3 days of the sickness start date. In field terms: the issue date must be no more than 3 days after the start date. Use a script rule to enforce this constraint. Click the add icon under the data form. The **New Rule** dialog opens. If you don't see the add icon, switch to the **Reference** section above the document image. 1. Select **Advanced Script Rule** and click **Next**. 2. Rename the rule to "Check validity". 3. Select the "Start Date" and "Date" fields in the list of fields. 4. Click **Next**. Paste the following script in the script editor: ```javascript theme={null} // Create variables for all the fields you're going to access var startField = Context.GetField("Start Date") ; var dateField = Context.GetField("Date"); if (dateField && dateField.Value && startField && startField.Value) { var date = dateField.Value; var startDate = startField.Value; //Calculate the earliest possible start date date.setDate(date.getDate() - 3); if (startDate < date) { Context.CheckSucceeded = false; Context.ErrorMessage = "The sick note was issued too late"; } } ``` Click **Save** and examine how the rule works on different documents in the set. To check how the rule handles errors, enter test values in the fields on the data form manually — the rule re-applies each time you change the field value. ## Check the sick leave duration Calculate the sick leave duration from the start and end dates. If the document already specifies a duration, the rule verifies it matches. If not, the rule fills the duration field with the calculated value. Click the add icon under the data form to create a rule. 1. Select **Advanced Script Rule** and click **Next**. 2. Rename the rule to "Check duration". 3. Select the "Start Date", "End Date", and "Duration" fields in the list of fields. Select the fields in both columns — the rule both reads field values and corrects them if necessary. 4. Click **Next**. Paste the following script in the script editor: ```javascript theme={null} // Create variables for all the fields you're going to access var startField = Context.GetField("Start Date") ; var endField = Context.GetField("End Date"); var durationField = Context.GetField("Duration"); var startDate = startField.Value; var endDate = endField.Value; //Check if the "Start Date" and "End Date" fields were found on the document if (endField && endDate && startField && startDate) { //Calculate the sick leave duration var length = (1 + (endDate.getTime() - startDate.getTime()) / 3600000 / 24); //If the duration field was not found or could not be parsed as a number, pass the calculated value to the field if (!durationField.Value) durationField.Value = length; //If the duration field was found, compare its value with the calculated duration else if (durationField.Value != length) { Context.CheckSucceeded = false; Context.ErrorMessage = "The value of the \"Duration\" field does not match the actual sick leave duration"; durationField.AddSuggestion(length.toString()); } } ``` Click **Save** and examine how the rule works on different documents in the set. To check how the rule handles errors, enter test values in the fields on the data form manually — the rule re-applies each time you change the field value. ## What's next Test the configured skill and publish it to the Vantage server. Back to the tutorial introduction. # Upgrade Advanced Designer Skill Technology Core Source: https://docs.abbyy.com/vantage/documentation/advanced-designer/upgrading-to-new-version Upgrade an Advanced Designer skill to a newer Technology Core to unlock features like classification by company, deep-learning training, and script rules. Skills created in Advanced Designer versions before 2.2 can be upgraded to a newer **Technology Core** version to gain access to features that ship in later releases — for example, [Classify By Company](/vantage/documentation/advanced-designer/activities/classify-by-company), neural-network (deep-learning) training, and script rules. You can keep using and editing pre-2.2 skills without upgrading, but the newer features remain unavailable until you do. Upgrading retrains-from-scratch all activities that were trained on the previous Technology Core. Make a copy of every skill you plan to upgrade before you start, so you can fall back if the new training quality isn't acceptable. ## Upgrade the skill Select the skill in the **Skill Catalog** on the start page. Click the settings button next to the skill's name. In the **Technology Core Version** drop-down, select the most recent version, and then click **Apply**. On the **Activities** tab, every activity that was trained on the previous Technology Core is now marked as needing retraining. For each marked activity, open the **Activity Editor** and click **Train Activity**. Newer Technology Core versions ship updated OCR, which can change extraction results. Review every [Extraction Rules activity](/vantage/documentation/advanced-designer/activities/extraction-rules/extraction-rules), check that matching elements still resolve correctly, and adjust search elements as needed. ## Related topics * [Technology Core versions](/vantage/documentation/technology-core-versions) * [Manage skill versions in Advanced Designer](/vantage/documentation/advanced-designer/skill-versions) * [Document skills in Advanced Designer](/vantage/documentation/advanced-designer/document-skills/document-skills) * [Install and run Advanced Designer](/vantage/documentation/advanced-designer/install-and-run) # Scanning Station Source: https://docs.abbyy.com/vantage/documentation/scanning-station/about Batch-scan documents, check image quality, and prepare images for processing in ABBYY Vantage. Scanning Station is the entry point for getting paper documents into Vantage. It connects to your scanner, captures images, and lets an operator verify quality before batches are handed off for processing. Use Scanning Station to: * Run and configure your scanner. * Review and correct image quality before export. * Package images into batches for processing in ABBYY Vantage. ## Modes Scanning Station runs in one of two modes: * **Administrator mode** — full access, used to set up Scanning Station, create batch types, and configure export destinations. * **Operator mode** — day-to-day scanning, quality checks, and export. Some settings are hidden. ## Where to next Set up Scanning Station, create batch types, and manage permissions. Scan documents, check image quality, and export batches. Reference for dialog boxes and application windows. ## Related topics * [Install Scanning Station](/vantage/documentation/scanning-station/install-run) * [Main window](/vantage/documentation/scanning-station/main-window) * [Appendix](/vantage/documentation/scanning-station/appendix/appendix) # Administrator mode Source: https://docs.abbyy.com/vantage/documentation/scanning-station/admin/admin-mode Set up batch types, configure station-level settings, and extend Scanning Station with scripts. As an Administrator, you configure Scanning Station for the Operators who use it — defining batch types, setting station-level policies, and optionally extending behavior with scripts. ## Batch types * [Batch types](/vantage/documentation/scanning-station/admin/batch-types) * [Working with batch types](/vantage/documentation/scanning-station/admin/working-batch-types) ## Station configuration * [Local settings on Scanning Stations](/vantage/documentation/scanning-station/admin/using-local-settings) * [Storing internal data](/vantage/documentation/scanning-station/admin/storing-internal-data) * [Using scripts](/vantage/documentation/scanning-station/admin/using-scripts) ## Related topics * [Scanning Station](/vantage/documentation/scanning-station/about) * [Operator mode](/vantage/documentation/scanning-station/operator/operator-mode) * [Interface](/vantage/documentation/scanning-station/interface/interface) * [Appendix](/vantage/documentation/scanning-station/appendix/appendix) # Objects available from event scripts Source: https://docs.abbyy.com/vantage/documentation/scanning-station/admin/available-objects Interfaces that Scanning Station exposes to event scripts. Event scripts can address the following objects. ## Batches * [IBatchInfo](/vantage/documentation/scanning-station/admin/i-batch-info) * [IBatchType](/vantage/documentation/scanning-station/admin/i-batch-type) * [IBatchTypes](/vantage/documentation/scanning-station/admin/i-batch-types) ## Documents and pages * [IDocumentInfo](/vantage/documentation/scanning-station/admin/i-document-info) * [IPageInfo](/vantage/documentation/scanning-station/admin/i-page-info) * [IPageRect](/vantage/documentation/scanning-station/admin/i-page-rect) * [IPageSourceInfo](/vantage/documentation/scanning-station/admin/i-page-source-info) ## Registration * [IRegistrationProperties](/vantage/documentation/scanning-station/admin/i-registration-properties) * [IRegistrationProperty](/vantage/documentation/scanning-station/admin/i-registration-property) ## Settings * [IBarcodeFindingOptions](/vantage/documentation/scanning-station/admin/i-barcode-finding-options) * [IEmptyPageDetectionOptions](/vantage/documentation/scanning-station/admin/i-empty-page-detection) * [IImageSavingOptions](/vantage/documentation/scanning-station/admin/i-image-saving-options) ## Barcodes * [IScriptFoundBarcode](/vantage/documentation/scanning-station/admin/i-script-found-barcode) * [IScriptFoundBarcodes](/vantage/documentation/scanning-station/admin/i-script-found-barcodes) ## Script I/O * [IScriptProperties](/vantage/documentation/scanning-station/admin/i-script-properties) * [IScriptResult](/vantage/documentation/scanning-station/admin/i-script-result) * [IScriptValues](/vantage/documentation/scanning-station/admin/i-script-values) ## Related topics * [Using scripts](/vantage/documentation/scanning-station/admin/using-scripts) * [Events](/vantage/documentation/scanning-station/admin/events) * [Administrator mode](/vantage/documentation/scanning-station/admin/admin-mode) # Batch types Source: https://docs.abbyy.com/vantage/documentation/scanning-station/admin/batch-types A reusable set of scan, process, and export settings that shapes how each batch is handled. A **batch type** is a reusable collection of settings — scanner source, image processing profile, export options, and more — that determines how each batch of that type is scanned, processed, and exported. ## How Operators use batch types When creating a batch, an Operator picks a batch type to apply its settings. When no special settings are needed, the Operator can use the built-in **Unsorted** batch type, which processes images with the defaults. ## Why define batch types Batch types let you standardize processing across one or many Scanning Stations. Export a batch type to an XML file and import it on other stations to guarantee the same scan, image-processing, and export behavior everywhere — handy when you need consistent output quality or want to limit what Operators can change. See [Working with batch types](/vantage/documentation/scanning-station/admin/working-batch-types) for how to create, edit, import, and export batch types, and [Batch type settings](/vantage/documentation/scanning-station/interface/batch-type-settings) for the full settings reference. ## Related topics * [Working with batch types](/vantage/documentation/scanning-station/admin/working-batch-types) * [Batch Type Wizard](/vantage/documentation/scanning-station/interface/batch-type-wizard) * [Batch Type Properties dialog box](/vantage/documentation/scanning-station/interface/batch-type-properties-dbox) * [Batch type settings](/vantage/documentation/scanning-station/interface/batch-type-settings) * [Administrator mode](/vantage/documentation/scanning-station/admin/admin-mode) # Events Source: https://docs.abbyy.com/vantage/documentation/scanning-station/admin/events Reference of the events that can trigger Scanning Station scripts, and what each is typically used for. Scanning Station scripts run automatically in response to events, or when the Operator invokes them manually. Automatic scripts are configured per batch type, and don't run during Undo operations. ## Automatic events | Event | When it fires | Typical use | | :----------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------- | | **On station start** | After Scanning Station starts. | | | **Before station close** | Before Scanning Station closes. | | | **On scanning session end** | When the scanning session completes. | Modify the scanned batch according to custom rules. | | **On page added** | After a page is added to a batch. | Modify the page. | | **On batch created** | After a batch is created (manually or automatically during scanning). | Fill batch registration parameters; rename the batch per custom rules. | | **On document formed** | After a document is formed (manually or automatically during scanning). | Fill document registration parameters; rename the document; look up a barcode value via an external component. | | **Before workspace element deleted** | Before the user deletes an element. | Prevent deletion of important elements. | | **Before page operation** | Before a page modification is applied. | Prevent modifications to pages that have already been modified. Details about the operation are available in the script. | | **After page operation** | After a page modification is applied. | Save information about modified pages. Details about the operation are available in the script. | | **Before export** | After registration parameters are defined, before the export task moves to the background. If the script fails, export doesn't run and a predefined message is shown. | Modify the batch before it's sent. | | **After export** | After the background export task finishes. Runs in the main application — if the application is closed when export completes, the script runs on next start. | Modify the batch after export. | ## Manual events Each batch type declares a named list of user-invoked scripts. An Operator picks a script from this list to run it on the opened batch. You can add any script from these lists to the user scripts toolbar as a separate button. Toolbar customization is available both from the script list and from the main menu. Scripts in the list can also be associated with an automatic event, so they run on explicit invocation and when the event fires. ## Related topics * [Using scripts](/vantage/documentation/scanning-station/admin/using-scripts) * [Objects available from event scripts](/vantage/documentation/scanning-station/admin/available-objects) * [Configuring scripts](/vantage/documentation/scanning-station/interface/configuring-scripts) * [Administrator mode](/vantage/documentation/scanning-station/admin/admin-mode) # External assemblies Source: https://docs.abbyy.com/vantage/documentation/scanning-station/admin/external-assemblies Attach .NET assemblies to Scanning Station scripts and global modules — per batch type or globally. You can use external assemblies in scripts and global modules. Both standard and user-compiled assemblies are supported. Every class and method in an attached assembly becomes available to your scripts. ## Where to attach an assembly Assemblies can be attached in two places: * On the **Scripts** tab of the [Batch Type Properties](/vantage/documentation/scanning-station/interface/batch-type-properties-dbox) dialog box — the assemblies are available only to that batch type. * In **Tools > Options…** — the assemblies are available globally to all scripts and global modules. ## Attach an assembly 1. Open the **Project Properties** dialog box, click the **Scripts** tab, and then click **References .NET…**. 2. In the dialog that opens, click **Add…**. 3. In the **Add Assembly** dialog box, choose the source in the type field: * **Attached file** — specify the path to the file. * **Standard assembly name** — specify the standard name. ## Example Here's a sample assembly with a namespace, class, and method: ```csharp theme={null} namespace TestNameSpace { public class Test { public void Show(string text) { // Shows a message using the static method System.Windows.Forms.MessageBox.Show(string). System.Windows.Forms.MessageBox.Show(text); } } } ``` To use the class from a script: ```csharp theme={null} TestNameSpace.Test test = new TestNameSpace.Test(); // create an instance of Test test.Show("Hello world"); // call the Show method ``` ## Related topics * [Using scripts](/vantage/documentation/scanning-station/admin/using-scripts) * [Scripts in .NET languages](/vantage/documentation/scanning-station/admin/specific-net-scripts) * [Batch Type Properties dialog box](/vantage/documentation/scanning-station/interface/batch-type-properties-dbox) * [Administrator mode](/vantage/documentation/scanning-station/admin/admin-mode) # IBarcodeFindingOptions Source: https://docs.abbyy.com/vantage/documentation/scanning-station/admin/i-barcode-finding-options Options for detecting barcodes on a page. ## What it does Stores the options for detecting barcodes. ## Properties | Name | Type | Access | Description | | :------------- | :----------------------------------------------------------------------------- | :--------- | :------------------------------------------------------------------------------------------------------------------------------------------------- | | `Rect` | [IPageRect](/vantage/documentation/scanning-station/admin/i-page-rect) | Read/write | Rectangle restricting the barcode search area. If all dimensions are `0`, the whole page is searched. | | `Types` | [IScriptValues](/vantage/documentation/scanning-station/admin/i-script-values) | Read-only | Barcode types to detect. For valid values, see [IScriptFoundBarcode](/vantage/documentation/scanning-station/admin/i-script-found-barcode). | | `Orientations` | [IScriptValues](/vantage/documentation/scanning-station/admin/i-script-values) | Read-only | Barcode orientations to detect. For valid values, see [IScriptFoundBarcode](/vantage/documentation/scanning-station/admin/i-script-found-barcode). | ## Related topics * [IScriptFoundBarcode](/vantage/documentation/scanning-station/admin/i-script-found-barcode) * [IScriptFoundBarcodes](/vantage/documentation/scanning-station/admin/i-script-found-barcodes) * [IPageRect](/vantage/documentation/scanning-station/admin/i-page-rect) * [Supported barcode types](/vantage/documentation/scanning-station/appendix/supported-barcode-types) * [Objects available from event scripts](/vantage/documentation/scanning-station/admin/available-objects) # IBatchInfo Source: https://docs.abbyy.com/vantage/documentation/scanning-station/admin/i-batch-info Properties of a batch — type, page count, registration, export path, and export error. ## What it does Stores batch properties. ## Properties | Name | Type | Access | Description | | :----------------------- | :------------------------------------------------------------------------------------------------- | :--------- | :---------------------------------------------------------- | | `Type` | [IBatchType](/vantage/documentation/scanning-station/admin/i-batch-type) | Read-only | The type of the batch. | | `PageCount` | `int` | Read-only | The total number of pages in the batch. | | `RegistrationProperties` | [IRegistrationProperties](/vantage/documentation/scanning-station/admin/i-registration-properties) | Read-only | Registration properties of the batch. | | `ResultPath` | `string` | Read/write | Resultant export path. Writable only in pre-export scripts. | | `ExportError` | `string` | Read-only | Error message from the export. | ## Related topics * [IBatchType](/vantage/documentation/scanning-station/admin/i-batch-type) * [IRegistrationProperties](/vantage/documentation/scanning-station/admin/i-registration-properties) * [IDocumentInfo](/vantage/documentation/scanning-station/admin/i-document-info) * [Objects available from event scripts](/vantage/documentation/scanning-station/admin/available-objects) # IBatchType Source: https://docs.abbyy.com/vantage/documentation/scanning-station/admin/i-batch-type A single batch type — exposes the type's name and unique identifier. ## What it does Represents the type of a batch. ## Properties | Name | Type | Access | Description | | :----- | :------- | :-------- | :--------------------------------------- | | `Name` | `string` | Read-only | The name of the batch type. | | `UID` | `string` | Read-only | The unique identifier of the batch type. | ## Related topics * [IBatchInfo](/vantage/documentation/scanning-station/admin/i-batch-info) * [IBatchTypes](/vantage/documentation/scanning-station/admin/i-batch-types) * [Batch types](/vantage/documentation/scanning-station/admin/batch-types) * [Objects available from event scripts](/vantage/documentation/scanning-station/admin/available-objects) # IBatchTypes Source: https://docs.abbyy.com/vantage/documentation/scanning-station/admin/i-batch-types Collection of batch types with helpers for presence checks and UID lookup by name. ## What it does A collection of [IBatchType](/vantage/documentation/scanning-station/admin/i-batch-type) objects. See more in the [Working with collections](/vantage/documentation/scanning-station/admin/using-scripts#working-with-collections) section. ## Methods | Definition | Description | | :---------------------------- | :------------------------------------------------------------------- | | `Has (name: string) : bool` | Checks whether the collection contains a specified batch type. | | `UID (name: string) : string` | Returns the unique identifier of the batch type with the given name. | ## Related topics * [IBatchType](/vantage/documentation/scanning-station/admin/i-batch-type) * [Batch types](/vantage/documentation/scanning-station/admin/batch-types) * [Working with batch types](/vantage/documentation/scanning-station/admin/working-batch-types) * [Objects available from event scripts](/vantage/documentation/scanning-station/admin/available-objects) # IDocumentInfo Source: https://docs.abbyy.com/vantage/documentation/scanning-station/admin/i-document-info Properties and behavior of a document — barcode, type, registration properties, and type-change updates. ## What it does Stores document properties. ## Properties | Name | Type | Access | Description | | :----------------------- | :------------------------------------------------------------------------------------------------- | :--------- | :-------------------------------------------------------------------------------- | | `Barcode` | `string` | Read/write | The value of the document barcode. | | `RegistrationProperties` | [IRegistrationProperties](/vantage/documentation/scanning-station/admin/i-registration-properties) | Read-only | Registration properties of the document. | | `Type` | `string` | Read/write | The type of the document. | | `DefinedTypes` | [IScriptValues](/vantage/documentation/scanning-station/admin/i-script-values) | Read-only | The document type values allowed for this document, as defined on its batch type. | ## Methods | Definition | Description | | :------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `UpdateTypeRegistrationProperties (name: string) : bool` | Updates the document's registration parameters for the current document type. Preserves values from parameters that share a name with the previous type. Returns `false` if the document type is non-empty and not included in `DefinedTypes`. | If you change the document type in a script without calling `UpdateTypeRegistrationProperties`, the registration parameters from the previous type are preserved. ## Related topics * [IBatchInfo](/vantage/documentation/scanning-station/admin/i-batch-info) * [IRegistrationProperties](/vantage/documentation/scanning-station/admin/i-registration-properties) * [IScriptValues](/vantage/documentation/scanning-station/admin/i-script-values) * [IPageInfo](/vantage/documentation/scanning-station/admin/i-page-info) * [Objects available from event scripts](/vantage/documentation/scanning-station/admin/available-objects) # IEmptyPageDetectionOptions Source: https://docs.abbyy.com/vantage/documentation/scanning-station/admin/i-empty-page-detection Thresholds used to decide whether a page is empty — barcodes, black squares, text objects, and blackness percentage. ## What it does Stores the options for detecting empty pages. ## Properties Set any numeric threshold to `-1` to disable it. | Name | Type | Access | Description | | :----------------------- | :--------------------------------------------------------------------- | :--------- | :--------------------------------------------------------------------------------------------------------------------------- | | `KernelRect` | [IPageRect](/vantage/documentation/scanning-station/admin/i-page-rect) | Read/write | Relative rectangle of the page kernel, measured in twips. If all dimensions are `0`, the rectangle is defined automatically. | | `MaxBarcodesCount` | `int` | Read/write | Maximum number of barcodes allowed on an empty page. | | `MaxBlackSquaresCount` | `int` | Read/write | Maximum number of black squares allowed on an empty page. | | `MaxTextObjectsCount` | `int` | Read/write | Maximum number of text objects allowed on an empty page. | | `MaxBlacknessPercentage` | `int` | Read/write | Maximum blackness percentage allowed on an empty page. | ## Related topics * [IPageInfo](/vantage/documentation/scanning-station/admin/i-page-info) * [IPageRect](/vantage/documentation/scanning-station/admin/i-page-rect) * [Empty page detection](/vantage/documentation/scanning-station/interface/empty-page-detection) * [Objects available from event scripts](/vantage/documentation/scanning-station/admin/available-objects) # IImageSavingOptions Source: https://docs.abbyy.com/vantage/documentation/scanning-station/admin/i-image-saving-options Options for saving page images — format, codec, color scheme, quality, and more. ## What it does Stores image saving options. ## Properties String values are case-insensitive. | Name | Type | Access | Description | | :----------------- | :--------------------------------------------------------------------- | :--------- | :------------------------------------------------------------------------------------------------------------------------------------------ | | `AddProperFileExt` | `bool` | Read/write | If `true`, the file extension is set to match the image format when saving. | | `Codec` | `string` | Read/write | Codec to use when saving. Values: `CCITT4Fax`, `Zip`, `Lzw`, `Packbits`, `Jpg`, `J2k`, `None`. See the note below for format compatibility. | | `ColorType` | `string` | Read/write | Color scheme. Values: `FullColor`, `GrayScale`, `BlackAndWhite`. | | `Format` | `string` | Read/write | Image format. Values: `tif`, `dcx`, `jpg`, `bmp`, `jpg2000`, `pcx`, `png`, `pdf`, `pdfa`. | | `PdfAStandard` | `string` | Read/write | PDF/A level and version. Values: `1a`, `1b`, `2a`, `2b`, `2u`, `3a`, `3b`, `3u`. | | `Quality` | `int` | Read/write | Image quality for JPEG compression, as a percentage. | | `Rect` | [IPageRect](/vantage/documentation/scanning-station/admin/i-page-rect) | Read/write | Area to save. | | `ShouldOverwrite` | `bool` | Read/write | Whether to overwrite an existing file. | | `UseRawImage` | `bool` | Read/write | Whether to save the raw, unedited image instead of the current state. | `Codec` only applies when saving to **TIFF**, **non-black-and-white PDF**, or **non-black-and-white PDF/A**. It can't be used when saving to black-and-white PDF, black-and-white PDF/A, BMP, JPG, JPG2000, PNG, DCX, or PCX. ## Related topics * [IPageRect](/vantage/documentation/scanning-station/admin/i-page-rect) * [IPageInfo](/vantage/documentation/scanning-station/admin/i-page-info) * [Supported input formats](/vantage/documentation/scanning-station/appendix/supported-input-formats) * [Objects available from event scripts](/vantage/documentation/scanning-station/admin/available-objects) # IPageInfo Source: https://docs.abbyy.com/vantage/documentation/scanning-station/admin/i-page-info Physical and color properties of a page — dimensions, resolution, source, and color mode. ## What it does Stores the page properties. ## Properties | Name | Type | Access | Description | | :------------- | :---------------------------------------------------------------------------------- | :-------- | :---------------------------------------- | | `Height` | `int` | Read-only | The height of the page. | | `Width` | `int` | Read-only | The width of the page. | | `Resolution` | `int` | Read-only | The resolution of the page. | | `SourceInfo` | [IPageSourceInfo](/vantage/documentation/scanning-station/admin/i-page-source-info) | Read-only | Information about the source of the page. | | `IsBlackWhite` | `bool` | Read-only | Whether the page is black-and-white. | | `IsColor` | `bool` | Read-only | Whether the page is in color. | | `IsGrayscale` | `bool` | Read-only | Whether the page is grayscale. | ## Related topics * [IPageRect](/vantage/documentation/scanning-station/admin/i-page-rect) * [IPageSourceInfo](/vantage/documentation/scanning-station/admin/i-page-source-info) * [IDocumentInfo](/vantage/documentation/scanning-station/admin/i-document-info) * [Objects available from event scripts](/vantage/documentation/scanning-station/admin/available-objects) # IPageRect Source: https://docs.abbyy.com/vantage/documentation/scanning-station/admin/i-page-rect A rectangular region on a page, defined by left/right/top/bottom coordinates. ## What it does Represents a rectangle of the page. ## Properties | Name | Type | Access | Description | | :------- | :---- | :--------- | :--------------------- | | `Left` | `int` | Read/write | The left coordinate. | | `Right` | `int` | Read/write | The right coordinate. | | `Top` | `int` | Read/write | The top coordinate. | | `Bottom` | `int` | Read/write | The bottom coordinate. | ## Related topics * [IPageInfo](/vantage/documentation/scanning-station/admin/i-page-info) * [IBarcodeFindingOptions](/vantage/documentation/scanning-station/admin/i-barcode-finding-options) * [IImageSavingOptions](/vantage/documentation/scanning-station/admin/i-image-saving-options) * [Objects available from event scripts](/vantage/documentation/scanning-station/admin/available-objects) # IPageSourceInfo Source: https://docs.abbyy.com/vantage/documentation/scanning-station/admin/i-page-source-info Where a page image came from — scanner details or source file information. ## What it does Stores information about the source of the page image. ## Properties | Name | Type | Access | Description | | :-------------- | :------- | :--------- | :------------------------------------------------------------------------- | | `Details` | `string` | Read/write | Scanner details. Empty for images loaded from a file. | | `Path` | `string` | Read/write | Path to the file (without the file name). Empty for images from a scanner. | | `File` | `string` | Read/write | The name of the file. | | `FilePageIndex` | `int` | Read/write | Page index in the source file. `-1` for images from a scanner. | ## Related topics * [IPageInfo](/vantage/documentation/scanning-station/admin/i-page-info) * [Objects available from event scripts](/vantage/documentation/scanning-station/admin/available-objects) # IRegistrationProperties Source: https://docs.abbyy.com/vantage/documentation/scanning-station/admin/i-registration-properties Collection of registration properties with helpers to add, remove, and look up entries by name or position. ## What it does A collection of [IRegistrationProperty](/vantage/documentation/scanning-station/admin/i-registration-property) objects. See more in the [Working with collections](/vantage/documentation/scanning-station/admin/using-scripts#working-with-collections) section. ## Methods | Definition | Description | | :----------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------- | | `Has (name: string) : bool` | Checks whether the specified property exists. | | `Add (name: string) :` [IRegistrationProperty](/vantage/documentation/scanning-station/admin/i-registration-property) | Adds a new registration property. | | `InsertAt (name: string, pos: int) :` [IRegistrationProperty](/vantage/documentation/scanning-station/admin/i-registration-property) | Inserts a new registration property at the given position. | | `Delete (name: string)` | Deletes the registration property with the given name. | | `DeleteAt (pos: int)` | Deletes the registration property at the given position. | | `DeleteAll ( )` | Deletes all registration properties. | ## Properties | Name | Type | Access | Description | | :--------------------- | :------- | :-------- | :----------------------------------------------------- | | `Value (name: string)` | `string` | Read-only | Returns the value of the property with the given name. | ## Related topics * [IRegistrationProperty](/vantage/documentation/scanning-station/admin/i-registration-property) * [IBatchInfo](/vantage/documentation/scanning-station/admin/i-batch-info) * [IDocumentInfo](/vantage/documentation/scanning-station/admin/i-document-info) * [Specify registration parameters](/vantage/documentation/scanning-station/operator/specify-registration) * [Objects available from event scripts](/vantage/documentation/scanning-station/admin/available-objects) # IRegistrationProperty Source: https://docs.abbyy.com/vantage/documentation/scanning-station/admin/i-registration-property A single registration property — name, value, constraints, and its list of possible values. ## What it does Represents a registration property. ## Properties | Name | Type | Access | Description | | :--------------- | :----------------------------------------------------------------------------- | :--------- | :------------------------------------------------------------------------------------------------- | | `Name` | `string` | Read-only | The name of the registration property. | | `Value` | `string` | Read/write | The value of the registration property. | | `Comment` | `string` | Read/write | The comment. | | `IsReadOnly` | `bool` | Read/write | Whether the property is read-only. | | `IsRequired` | `bool` | Read/write | Whether the property is required. | | `PossibleValues` | [IScriptValues](/vantage/documentation/scanning-station/admin/i-script-values) | Read-only | Values offered in the drop-down list. If the list is empty, users enter a free-text value instead. | ## Related topics * [IRegistrationProperties](/vantage/documentation/scanning-station/admin/i-registration-properties) * [IScriptValues](/vantage/documentation/scanning-station/admin/i-script-values) * [Specify registration parameters](/vantage/documentation/scanning-station/operator/specify-registration) * [Objects available from event scripts](/vantage/documentation/scanning-station/admin/available-objects) # IScriptFoundBarcode Source: https://docs.abbyy.com/vantage/documentation/scanning-station/admin/i-script-found-barcode A barcode detected on a page — exposes its rectangle, value, type, and orientation. ## What it does Represents a found barcode. ## Properties | Name | Type | Access | Description | | :------------ | :--------------------------------------------------------------------- | :-------- | :------------------------------------------------------------ | | `Rect` | [IPageRect](/vantage/documentation/scanning-station/admin/i-page-rect) | Read-only | Rectangle of the barcode area on the page. | | `Value` | `string` | Read-only | Value of the found barcode. | | `Type` | `string` | Read-only | Barcode type. See [Barcode types](#barcode-types) below. | | `Orientation` | `string` | Read-only | Barcode orientation. See [Orientations](#orientations) below. | ## Barcode types Values are case-insensitive. * `Code39` * `CheckCode39` * `Interleaved25` * `CheckInterleaved25` * `EAN13` * `Code128` * `EAN8` * `PDF417` * `Codabar` * `CheckCodabar` * `UPCA` * `UPCE` * `Industrial25` * `IATA25` * `Matrix25` * `Code93` * `Postnet` * `UCC128` * `Patch` * `Code39WithoutAsterisk` * `Aztec` * `Datamatrix` * `QRCode` ## Orientations Values are case-insensitive. * `LeftToRight` * `DownToTop` * `RightToLeft` * `TopToDown` ## Related topics * [IScriptFoundBarcodes](/vantage/documentation/scanning-station/admin/i-script-found-barcodes) * [IBarcodeFindingOptions](/vantage/documentation/scanning-station/admin/i-barcode-finding-options) * [IPageRect](/vantage/documentation/scanning-station/admin/i-page-rect) * [Supported barcode types](/vantage/documentation/scanning-station/appendix/supported-barcode-types) * [Objects available from event scripts](/vantage/documentation/scanning-station/admin/available-objects) # IScriptFoundBarcodes Source: https://docs.abbyy.com/vantage/documentation/scanning-station/admin/i-script-found-barcodes Collection of IScriptFoundBarcode objects. ## What it does A collection of [IScriptFoundBarcode](/vantage/documentation/scanning-station/admin/i-script-found-barcode) objects. See more in the [Working with collections](/vantage/documentation/scanning-station/admin/using-scripts#working-with-collections) section. ## Related topics * [IScriptFoundBarcode](/vantage/documentation/scanning-station/admin/i-script-found-barcode) * [IBarcodeFindingOptions](/vantage/documentation/scanning-station/admin/i-barcode-finding-options) * [Objects available from event scripts](/vantage/documentation/scanning-station/admin/available-objects) # IScriptProperties Source: https://docs.abbyy.com/vantage/documentation/scanning-station/admin/i-script-properties Stores properties from script execution so they can be reused if the script is invoked again. ## What it does Stores information about the actions carried out during script execution. The information is available if the script runs again. ## Methods | Definition | Description | | :---------------------------------- | :----------------------------------------------------------------- | | `Has (name: string): bool` | Checks whether a property with the given name exists in the array. | | `Set (name: string, value: string)` | Sets the name and value of a property. | | `Delete (name: string)` | Deletes the property with the given name. | | `DeleteAll ( )` | Deletes all properties. | ## Properties | Name | Type | Access | Description | | :--------------------- | :-------- | :--------- | :------------------------------------------------------------------------------------ | | `Names` | `VARIANT` | Read-only | Array of property names specified by the user. | | `IsEmpty` | `bool` | Read-only | Whether the array of properties is empty. | | `Value (name: string)` | `bool` | Read/write | Value of the property with the given name. See [Shorthand syntax](#shorthand-syntax). | ### Shorthand syntax Instead of writing `params.Value("Name") = "newValue"`, you can use parentheses directly: ``` params("Name") = "newValue" ``` Both forms assign the value to the property with the given name. ## Related topics * [IScriptValues](/vantage/documentation/scanning-station/admin/i-script-values) * [IScriptResult](/vantage/documentation/scanning-station/admin/i-script-result) * [Using scripts](/vantage/documentation/scanning-station/admin/using-scripts) * [Objects available from event scripts](/vantage/documentation/scanning-station/admin/available-objects) # IScriptResult Source: https://docs.abbyy.com/vantage/documentation/scanning-station/admin/i-script-result Result of a script execution — success flag and an informational message. ## What it does Represents the result of the script execution. ## Properties | Name | Type | Access | Description | | :------------- | :------- | :--------- | :---------------------------------------------------------------- | | `Succeeded` | `bool` | Read/write | Whether the operation succeeded. | | `ErrorMessage` | `string` | Read/write | Informational message. Shown regardless of the `Succeeded` value. | ## Related topics * [IScriptProperties](/vantage/documentation/scanning-station/admin/i-script-properties) * [IScriptValues](/vantage/documentation/scanning-station/admin/i-script-values) * [Using scripts](/vantage/documentation/scanning-station/admin/using-scripts) * [Objects available from event scripts](/vantage/documentation/scanning-station/admin/available-objects) # IScriptValues Source: https://docs.abbyy.com/vantage/documentation/scanning-station/admin/i-script-values Collection of unique string values with helpers to add, check, and remove entries. ## What it does Represents an array of unique string values. For more information, see [Working with collections](/vantage/documentation/scanning-station/admin/using-scripts#working-with-collections). ## Methods | Definition | Description | | :-------------------------- | :------------------------------------------------------- | | `Has (name: string) : bool` | Checks whether the given value exists in the collection. | | `Add (name: string)` | Adds a new value. | | `Delete (name: string)` | Deletes the given value. | | `DeleteAll ( )` | Deletes all values. | ## Related topics * [IScriptProperties](/vantage/documentation/scanning-station/admin/i-script-properties) * [IScriptResult](/vantage/documentation/scanning-station/admin/i-script-result) * [Using scripts](/vantage/documentation/scanning-station/admin/using-scripts) * [Objects available from event scripts](/vantage/documentation/scanning-station/admin/available-objects) # Scripts in .NET languages Source: https://docs.abbyy.com/vantage/documentation/scanning-station/admin/specific-net-scripts Specifics for writing Scanning Station scripts in C#.Net, VisualBasic.Net, and JScript.Net. When you write scripts in .NET languages, a few things differ from VBScript and JScript. ## Accessing objects Use the `Workspace` and `ExportBatch` keywords to access Scanning Station object elements. ## Framework and assemblies * Compile .NET assemblies using **.NET Framework 4.0 or later**. Set the target framework in your Visual Studio project properties. * You can add external assemblies — standard or user-compiled — and every class inside becomes available in scripts and global modules. See [External assemblies](/vantage/documentation/scanning-station/admin/external-assemblies). * Scanning Station objects don't support multithreading. ## Debugging * Use the [`System.Diagnostics.Debugger.Break`](http://msdn.microsoft.com/en-us/library/system.diagnostics.debugger.break.aspx) method to break into the debugger. * Debugging also requires a `.pdb` file with debug information. These files can be very large — we recommend keeping them outside the project. Make sure the script is compiled with the debugging information included. In Microsoft Visual Studio, you can [attach to the process](http://msdn.microsoft.com/en-us/library/vstudio/3s68z0b3\(v=vs.100\).aspx) where the .NET code runs. ## `using` directives You can put `using`-style directives at the top of a script, alongside comments and blank lines. The syntax matches the language: * **C#.Net:** `using` * **JScript.Net:** `Import` * **VisualBasic.Net:** `Imports` For example, in C#.Net: ```csharp theme={null} using System.Drawing; Image img = Image.FromFile(@"D:\2.png"); ``` A `using` directive only works if it appears before the first line of executable code. For example: ```csharp theme={null} using System.IO; File.Create(@"C:\sample.txt"); ``` ## Functions and optional parameters * Functions from global modules are called directly in .NET scripts — you don't need to prefix them with the global module name. * To skip an optional parameter, pass `System.Type.Missing` instead. ## Related topics * [Using scripts](/vantage/documentation/scanning-station/admin/using-scripts) * [External assemblies](/vantage/documentation/scanning-station/admin/external-assemblies) * [Objects available from event scripts](/vantage/documentation/scanning-station/admin/available-objects) * [Administrator mode](/vantage/documentation/scanning-station/admin/admin-mode) # Storing internal data Source: https://docs.abbyy.com/vantage/documentation/scanning-station/admin/storing-internal-data Where Scanning Station stores scanned images, separation rules, and batch-type settings — and how to change the path. Scanning Station stores three kinds of internal data on each machine: * Scanned document images. * Rules for separating images into documents and batches. * Batch-type parameters for scanning, processing, and exporting. ## Default location By default, data is stored alongside the application settings for the current user: ``` %LOCALAPPDATA%\ABBYY\ScanStationVantage\5.0 ``` ## Change the storage path To store data somewhere else, add a registry value: 1. Open **Registry Editor** (`regedit`). 2. Navigate to `HKEY_CURRENT_USER\SOFTWARE\ABBYY\ScanStationVantage\5.0\Shell`. 3. Create a new **String Value** named `CustomDataFolder`. 4. Set its value data to the path you want — for example, `D:\ScanStationData`. ## Credential roaming When Scanning Station runs in a credential-roaming profile, keep internal data at the default path: `%LOCALAPPDATA%\ABBYY\ScanStationVantage\5.0` ## Related topics * [Local settings on Scanning Stations](/vantage/documentation/scanning-station/admin/using-local-settings) * [Install and run Scanning Station](/vantage/documentation/scanning-station/install-run) * [Administrator mode](/vantage/documentation/scanning-station/admin/admin-mode) # Local settings on Scanning Stations Source: https://docs.abbyy.com/vantage/documentation/scanning-station/admin/using-local-settings Let Operators manage their own batch types and export destinations, instead of inheriting them from the Administrator. Use **local settings** when you want Operators to work independently — creating their own batch types and choosing their own processing and export options, rather than inheriting everything from the Administrator. ## Who does what | | Administrator | Operator | | :------------------- | :--------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------- | | **Responsibilities** | Grants the Operator permissions for a project. | Creates batch types, configures their settings, scans images, and [exports batches](/vantage/documentation/scanning-station/operator/exporting-batches). | ## Related topics * [Storing internal data](/vantage/documentation/scanning-station/admin/storing-internal-data) * [Options dialog box](/vantage/documentation/scanning-station/interface/options-dialog-box) * [Differences between Administrator and Operator modes](/vantage/documentation/scanning-station/interface/differences-admin-operator) * [Administrator mode](/vantage/documentation/scanning-station/admin/admin-mode) # Using scripts Source: https://docs.abbyy.com/vantage/documentation/scanning-station/admin/using-scripts Extend Scanning Station with custom scripts that run on events or commands. Custom scripts let you add your own scenarios to Scanning Station. Typical examples: * Reorder pages after duplex scanning. * Auto-split oversized pages after scanning. * Fill in registration parameters automatically on newly created batches or documents. Scripts run in response to [events](/vantage/documentation/scanning-station/admin/events) or when an Operator invokes them explicitly. ## Supported languages * **JScript®** * **VBScript** * **C#.Net** * **VisualBasic.Net** * **JScript.Net** See [Specific .NET scripts](/vantage/documentation/scanning-station/admin/specific-net-scripts) for guidance on the .NET variants. ## Language notes In VBScript, use the keyword `Me` when referring to methods and fields of the current object. In JScript the equivalent is `this`; in VisualBasic.Net, use `Workspace`. ## Working with collections Every collection exposes these members: | Name | Type | Access | Description | | :----------------- | :-------------- | :-------- | :-------------------------------------------------------------- | | `Count` | `int` | Read-only | The number of items in the collection. | | `Item(index: int)` | `ItemInterface` | Read-only | Returns the item at the given index. Enumeration starts at `0`. | Instead of calling `Item`, you can use parentheses: ``` Items( 1 ).Text = "Hello" ``` In C#.Net, use square brackets instead: ```csharp theme={null} Items[1].Text = "Hello" ``` All collections can be used in `for each` loops and similar constructs. ## Related topics * [Events](/vantage/documentation/scanning-station/admin/events) * [Objects available from event scripts](/vantage/documentation/scanning-station/admin/available-objects) * [External assemblies](/vantage/documentation/scanning-station/admin/external-assemblies) * [Scripts in .NET languages](/vantage/documentation/scanning-station/admin/specific-net-scripts) * [Administrator mode](/vantage/documentation/scanning-station/admin/admin-mode) # Working with batch types Source: https://docs.abbyy.com/vantage/documentation/scanning-station/admin/working-batch-types Create, edit, delete, import, export, and password-protect batch types. If you don't need custom settings for different kinds of documents, you can use the built-in **Unsorted** batch type, which processes images with the default settings. To see those defaults, open **Tools > Options...** For the relationship between batch types and Administrator vs. Operator mode, see [Differences between the Administrator and Operator modes](/vantage/documentation/scanning-station/interface/differences-admin-operator). ## Create a batch type Choose **Tools > Batch Types...** and click **New\...** in the [Batch Types](/vantage/documentation/scanning-station/interface/batch-types-dialog-box) dialog box. The [Batch Type Wizard](/vantage/documentation/scanning-station/interface/batch-type-wizard) steps you through the configuration. To base a new batch type on an existing one, select it in the list and click **Copy**, and then edit the copy's properties. ## Edit a batch type Select the batch type in the **Batch Types** dialog box and click **Edit...**. Make changes in the [Batch Type Properties](/vantage/documentation/scanning-station/interface/batch-type-properties-dbox) dialog box and click **OK**. ## Delete a batch type Select the batch type and click **Delete**. Batches that belonged to the deleted type are reassigned to the **Unsorted** batch type. ## Export a batch type Select the batch type and click **Export...**. In the **Export Batch Types** dialog box, choose **Export all batch types** or **Export selected batch types**. To prevent later edits to the exported types, select **Prohibit editing batch types** and enter a password twice. Click **OK**, and then pick a destination file. ## Import a batch type Select the batch type list and click **Import...**. Pick the XML file and click **Open**. Importing batch types deletes all existing batch types. Batches that belonged to removed types are reassigned to the **Unsorted** batch type. If a batch type references external .NET assemblies, pass the `.spr` folder (which contains the `.asr` assembly files) alongside the XML file. When loading a batch type from the server, the `.spr` folder is imported automatically. ## Work with password-protected batch types When you import or edit a password-protected batch type, Scanning Station prompts for the password to switch into Administrator mode. Click **Cancel** to keep working in Operator mode. ## Import a batch type from the command line You can load a batch type automatically at launch using the `--BatchTypes` switch: ``` ".exe" --BatchTypes="\batches.xml" ``` When Scanning Station starts with `--BatchTypes`, the loaded batch type is available for the session but isn't imported into the station. To import it persistently, choose **Tools > Batch Types... > Import...** Persistent imports replace any existing batch types. ## Related topics * [Batch types](/vantage/documentation/scanning-station/admin/batch-types) * [Batch Type Wizard](/vantage/documentation/scanning-station/interface/batch-type-wizard) * [Batch Type Properties dialog box](/vantage/documentation/scanning-station/interface/batch-type-properties-dbox) * [Batch Types dialog box](/vantage/documentation/scanning-station/interface/batch-types-dialog-box) * [Differences between Administrator and Operator modes](/vantage/documentation/scanning-station/interface/differences-admin-operator) * [Administrator mode](/vantage/documentation/scanning-station/admin/admin-mode) # Appendix Source: https://docs.abbyy.com/vantage/documentation/scanning-station/appendix/appendix Reference materials including system requirements, keyboard shortcuts, supported formats and barcode types. Reference material for Scanning Station — system requirements, keyboard shortcuts, and lists of supported formats and barcodes. * [Hardware and software requirements](/vantage/documentation/scanning-station/appendix/hardware-software-reqs) * [Keyboard shortcuts](/vantage/documentation/scanning-station/appendix/keyboard-shortcuts) * [Supported barcode types](/vantage/documentation/scanning-station/appendix/supported-barcode-types) * [Supported input formats](/vantage/documentation/scanning-station/appendix/supported-input-formats) * [Alphabet used in regular expressions](/vantage/documentation/scanning-station/appendix/alphabet-regex) ## Related topics * [Scanning Station](/vantage/documentation/scanning-station/about) * [Administrator mode](/vantage/documentation/scanning-station/admin/admin-mode) * [Operator mode](/vantage/documentation/scanning-station/operator/operator-mode) * [Interface](/vantage/documentation/scanning-station/interface/interface) # Hardware and software requirements Source: https://docs.abbyy.com/vantage/documentation/scanning-station/appendix/hardware-software-reqs System requirements for ABBYY Vantage Scanning Station and ClickOnce Scanning Station. ## Scanning Station | Component | Requirement | | :--------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **CPU** | 2 GHz or faster | | **Operating System** | • Windows 8.1
• Windows 10
• Windows 11
• Windows Server 2008 R2 SP1 + Desktop Experience
• Windows Server 2012 + Desktop Experience
• Windows Server 2012 R2 + Desktop Experience
• Windows Server 2016 + Desktop Experience
• Windows Server 2019 + Desktop Experience | | **RAM** | 1 GB | | **Disk space** | 1 GB (including 200 MB for installation and sufficient disk space for scanned images) | | **Other requirements** | • A scanner with TWAIN or WIA support
• Video card and display with a resolution of 1024×768
• The computer where the station is installed must be connected to your domain
• Visual C++ 2015 Redistributable | ## ClickOnce Scanning Station | Component | Requirement | | :--------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **CPU** | 2 GHz or faster | | **Operating System** | • Windows 8.1
• Windows 10
• Windows 11
• Windows Server 2008 R2 SP1 + Desktop Experience
• Windows Server 2012 + Desktop Experience
• Windows Server 2012 R2 + Desktop Experience
• Windows Server 2016 + Desktop Experience
• Windows Server 2019 + Desktop Experience | | **RAM** | 1 GB | | **Disk space** | 1 GB (including 90 MB for installation and sufficient space for scanned images). The downloadable file is 70 MB. | | **Browser** | For ClickOnce deployment: Internet Explorer 11 | | **Other requirements** | • A scanner with TWAIN or WIA support
• Video card and display with a resolution of 1024×768
• Microsoft .NET Framework 4.5 or later | ## Related topics * [Install and run Scanning Station](/vantage/documentation/scanning-station/install-run) * [Scanning Station](/vantage/documentation/scanning-station/about) * [Appendix](/vantage/documentation/scanning-station/appendix/appendix) # Keyboard shortcuts Source: https://docs.abbyy.com/vantage/documentation/scanning-station/appendix/keyboard-shortcuts Complete list of keyboard shortcuts available in ABBYY Vantage Scanning Station. | Menu | Command | Keys | | :-------- | :----------------------------------- | :--------------- | | **File** | **New Batch** | Ctrl+N | | **File** | **Create Document** | Ctrl+Shift+C | | **File** | **Rename** | F2 | | **File** | **Disassemble Document** | Ctrl+Alt+D | | **File** | **Scan Pages** | Ctrl+S | | **File** | **Select and Scan...** | Ctrl+Shift+S | | **File** | **Insert Pages** | Ctrl+I | | **File** | **Stop** | Ctrl+Alt+S | | **File** | **Load Images...** | Ctrl+O | | **File** | **Check Batch Integrity** | F9 | | **File** | **Send Batch to Vantage** | Ctrl+E | | **File** | **Sending Options...** | Ctrl+Shift+E | | **File** | **Exit** | Alt+F4 | | **Edit** | **Undo** | Ctrl+Z | | **Edit** | **Redo** | Ctrl+Y | | **Edit** | **Cut** | Ctrl+X | | **Edit** | **Copy** | Ctrl+C | | **Edit** | **Paste** | Ctrl+V | | **Edit** | **Delete** | Del | | **Edit** | **Select All** | Ctrl+A | | **Edit** | **Separate Documents** | Ctrl+Alt+S | | **View** | **Show Processing Profiles** | Ctrl+Alt+P | | **View** | **Batch Registration Parameters** | Ctrl+B | | **View** | **Document Registration Parameters** | Ctrl+Shift+B | | **View** | **Go to Previous Page** | Ctrl+Shift+P | | **View** | **Go to Next Page** | Ctrl+P | | **View** | **Go to Previous Document** | Ctrl+Shift+D | | **View** | **Go to Next Document** | Ctrl+D | | **View** | **Scale → Zoom In** | Ctrl+Num+ | | **View** | **Scale → Zoom Out** | Ctrl+Num- | | **Page** | **Autocrop** | Ctrl+Alt+C | | **Page** | **Crop** | Alt+C | | **Page** | **Split** | Alt+S | | **Page** | **Rotate 90° Clockwise** | Ctrl+Shift+R | | **Page** | **Rotate 90° Counterclockwise** | Ctrl+Alt+R | | **Page** | **Rotate 180°** | Ctrl+Alt+Shift+R | | **Page** | **Invert** | Alt+I | | **Page** | **Remove Color Marks** | Alt+M | | **Page** | **Brightness and Contrast** | Alt+B | | **Page** | **Black & White** | Alt+W | | **Page** | **Apply Processing Profile** | Ctrl+Alt+Shift+P | | **Page** | **Load Full-Size Thumbnail** | Ctrl+F9 | | **Page** | **Properties...** | Alt+Enter | | **Tools** | **Batch Types...** | Ctrl+Shift+T | | **Tools** | **Processing Profiles...** | Alt+R | | **Help** | **Help Topics** | F1 | ## Related topics * [Main window menus](/vantage/documentation/scanning-station/interface/main-window-menus) * [Main window toolbars](/vantage/documentation/scanning-station/interface/main-window-toolbars) * [Appendix](/vantage/documentation/scanning-station/appendix/appendix) # Install Scanning Station Source: https://docs.abbyy.com/vantage/documentation/scanning-station/install-run Download, install, and connect Scanning Station to your Vantage server. ## Before you begin * Confirm your machine meets the [hardware and software requirements](/vantage/documentation/scanning-station/appendix/hardware-software-reqs). * Make sure you have a user account on the Vantage server you plan to connect to. ## Install Scanning Station Get the latest build on the [Scanning Station download page](https://vantage-us.abbyy.com/ss/latest). The page also shows the version number, build number, and release date. In the installation form, pick the UI language from the drop-down. Scanning Station is available in English, German, French, Spanish, Italian, Portuguese (Brazil), Japanese, Korean, and Chinese (Simplified). You can scan images as soon as the application opens. Authentication is only required when you send documents to Vantage. 1. Click the arrow next to **Send to Vantage**, and then select **Export Options…**. 2. In **Server**, enter the address of the Vantage server where the documents will be processed. 3. Click **Authentication…** and sign in with your Vantage account. Once you're signed in, you can send scanned documents to Vantage. For the full scan-to-export flow, see [Processing steps in detail](/vantage/documentation/scanning-station/operator/processing-docs). ## Related topics * [Scanning Station](/vantage/documentation/scanning-station/about) * [Hardware and software requirements](/vantage/documentation/scanning-station/appendix/hardware-software-reqs) * [Storing internal data](/vantage/documentation/scanning-station/admin/storing-internal-data) * [Processing documents](/vantage/documentation/scanning-station/operator/processing-docs) * [Export batches](/vantage/documentation/scanning-station/operator/exporting-batches) # Batch type name and description Source: https://docs.abbyy.com/vantage/documentation/scanning-station/interface/batch-name-and-description Set a name and optional description for a batch type when creating or editing it. Every batch type has a **name** (required) and a **description** (optional). You can set or edit both: * When creating a batch type with the [Batch Type Wizard](/vantage/documentation/scanning-station/interface/batch-type-wizard). * Later, on the **General** tab of the [Batch Type Properties](/vantage/documentation/scanning-station/interface/batch-type-properties-dbox) dialog box. ## Related topics * [Batch Type Wizard](/vantage/documentation/scanning-station/interface/batch-type-wizard) * [Batch Type Properties dialog box](/vantage/documentation/scanning-station/interface/batch-type-properties-dbox) * [General tab options](/vantage/documentation/scanning-station/interface/general-tab-options) * [Interface](/vantage/documentation/scanning-station/interface/interface) # Batch Properties dialog box Source: https://docs.abbyy.com/vantage/documentation/scanning-station/interface/batch-properties-dialog-box View and edit properties of a batch — name, type, registration parameters, and interrupted export tasks. The **Batch Properties** dialog box displays the properties of the selected batch. ## How to open Right-click the batch and choose **Properties**, select **Page > Properties...**, or press **Alt+Enter**. ## Tabs ### General Displays general properties of the batch: name, type, number of documents and pages, export destination, and export time (for exported batches). You can rename the batch and change its type. To change the type, click **Change...** and pick a type in the **Select Batch Type** dialog box. ### Interrupted Sending Tasks Shows properties of any interrupted export tasks: * **Destination** — destination of the task. * **Time** — when the task started. * **Progress** — task progress so far. * **Reason** — why the task was interrupted. Click **Resume** to retry an interrupted task or **Remove** to discard it. ### Registration Parameters Shows the batch's registration parameters: * **Name** — required parameters are marked with an asterisk (\*). A batch can't be sent until every required parameter has a value. * **Value** — enter the parameter's value. * **Comment** — optional comment about the parameter. ## Related topics * [Document Properties dialog box](/vantage/documentation/scanning-station/interface/document-properties-dialog-box) * [Page Properties dialog box](/vantage/documentation/scanning-station/interface/page-properties-dialog-box) * [Specify registration parameters](/vantage/documentation/scanning-station/operator/specify-registration) * [Sending Tasks tab options](/vantage/documentation/scanning-station/interface/sending-tasks-options) * [Interface](/vantage/documentation/scanning-station/interface/interface) # Batch Type Properties dialog box Source: https://docs.abbyy.com/vantage/documentation/scanning-station/interface/batch-type-properties-dbox Edit every setting of a batch type across nine configuration tabs. The **Batch Type Properties** dialog box edits every setting of a batch type, organized into tabs. ## How to open Select a batch type from the **Selected batch type** drop-down on the [main window toolbars](/vantage/documentation/scanning-station/interface/main-window-toolbars) and click **Batch Type Properties**. ## Tabs | Tab | Content | | :-------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **General** | [General settings](/vantage/documentation/scanning-station/interface/general-tab-options) | | **Scanning** | [Scanner settings](/vantage/documentation/scanning-station/interface/select-scanner-source) | | **Batch Options** | [Document and batch separation options](/vantage/documentation/scanning-station/interface/doc-and-batch-separation) | | **Image Processing** | [Image processing options](/vantage/documentation/scanning-station/interface/image-processing-params) | | **Send To** | [Export options](/vantage/documentation/scanning-station/interface/export-options) | | **Scripts** | [Scripts configuration options](/vantage/documentation/scanning-station/interface/configuring-scripts) | | **Batch Registration Parameters** | [Batch registration parameters](/vantage/documentation/scanning-station/interface/registration-params-batches) | | **Document Types** | [Document types](/vantage/documentation/scanning-station/interface/document-types) and [document registration parameters](/vantage/documentation/scanning-station/interface/registration-params-batches) | | **Page Size Control** | [Page Size Control options](/vantage/documentation/scanning-station/interface/page-size-controls) | ## Related topics * [Batch Types dialog box](/vantage/documentation/scanning-station/interface/batch-types-dialog-box) * [Batch Type Wizard](/vantage/documentation/scanning-station/interface/batch-type-wizard) * [Batch type settings](/vantage/documentation/scanning-station/interface/batch-type-settings) * [Working with batch types](/vantage/documentation/scanning-station/admin/working-batch-types) * [Interface](/vantage/documentation/scanning-station/interface/interface) # Batch type settings Source: https://docs.abbyy.com/vantage/documentation/scanning-station/interface/batch-type-settings Dialog boxes and settings for creating, configuring, and managing batch types. Batch types drive how Scanning Station handles scanning, image processing, separation, and export. Configure them through these dialog boxes and settings. ## Create and manage batch types * [Batch Type Wizard](/vantage/documentation/scanning-station/interface/batch-type-wizard) — step through creating a new batch type. * [Batch Types dialog box](/vantage/documentation/scanning-station/interface/batch-types-dialog-box) — manage existing batch types (edit, delete, import, export, password-protect). ## Configure a batch type All tabs and sections of the [Batch Type Properties](/vantage/documentation/scanning-station/interface/batch-type-properties-dbox) dialog box: * [Batch type name and description](/vantage/documentation/scanning-station/interface/batch-name-and-description) * [Selecting a scanner source](/vantage/documentation/scanning-station/interface/select-scanner-source) * [Setting up document and batch separation options](/vantage/documentation/scanning-station/interface/doc-and-batch-separation) * [Setting up image processing parameters](/vantage/documentation/scanning-station/interface/image-processing-params) * [Setting up export options for a batch type](/vantage/documentation/scanning-station/interface/export-options) * [Configuring scripts](/vantage/documentation/scanning-station/interface/configuring-scripts) * [Document types](/vantage/documentation/scanning-station/interface/document-types) * [Registration parameters of batches and documents](/vantage/documentation/scanning-station/interface/registration-params-batches) * [Page Size Control](/vantage/documentation/scanning-station/interface/page-size-controls) ## Advanced * [Empty Page Detection settings dialog box](/vantage/documentation/scanning-station/interface/empty-page-detection) ## Related topics * [Batch types](/vantage/documentation/scanning-station/admin/batch-types) * [Working with batch types](/vantage/documentation/scanning-station/admin/working-batch-types) * [Batch Type Properties dialog box](/vantage/documentation/scanning-station/interface/batch-type-properties-dbox) * [Batch Type Wizard](/vantage/documentation/scanning-station/interface/batch-type-wizard) * [Interface](/vantage/documentation/scanning-station/interface/interface) # Batch Type Wizard Source: https://docs.abbyy.com/vantage/documentation/scanning-station/interface/batch-type-wizard Step through creating a new batch type, one configuration section at a time. The **Batch Type Wizard** walks you through creating a new batch type. It opens when you click **New\...** in the [Batch Types dialog box](/vantage/documentation/scanning-station/interface/batch-types-dialog-box). ## Wizard steps The wizard prompts you to configure each part of the batch type: * [Scanner source](/vantage/documentation/scanning-station/interface/select-scanner-source) * [Batch and document separation](/vantage/documentation/scanning-station/interface/doc-and-batch-separation) * [Image processing](/vantage/documentation/scanning-station/interface/image-processing-params) * [Export options](/vantage/documentation/scanning-station/interface/export-options) * [Scripts](/vantage/documentation/scanning-station/interface/configuring-scripts) * [Batch registration parameters](/vantage/documentation/scanning-station/interface/registration-params-batches) * [Document registration parameters](/vantage/documentation/scanning-station/interface/document-types) * [Page size control](/vantage/documentation/scanning-station/interface/page-size-controls) * [Batch type name and description](/vantage/documentation/scanning-station/interface/batch-name-and-description) Once the wizard finishes, the new batch type becomes available for selection as the current batch type. To edit it later, open the [Batch Types dialog box](/vantage/documentation/scanning-station/interface/batch-types-dialog-box), select the batch type, and click **Edit...**. ## Related topics * [Batch Types dialog box](/vantage/documentation/scanning-station/interface/batch-types-dialog-box) * [Batch Type Properties dialog box](/vantage/documentation/scanning-station/interface/batch-type-properties-dbox) * [Batch type settings](/vantage/documentation/scanning-station/interface/batch-type-settings) * [Batch types](/vantage/documentation/scanning-station/admin/batch-types) * [Interface](/vantage/documentation/scanning-station/interface/interface) # Batch Types dialog box Source: https://docs.abbyy.com/vantage/documentation/scanning-station/interface/batch-types-dialog-box Create, copy, edit, delete, import, and export batch types. The **Batch Types** dialog box manages all batch types on the Scanning Station. The list shows each batch type's name and the scanner source it uses. ## How to open Choose **Tools > Batch Types...**. ## Buttons | Button | Description | | :------------ | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **New\...** | Opens the [Batch Type Wizard](/vantage/documentation/scanning-station/interface/batch-type-wizard) to create a new batch type. | | **Copy** | Copies the selected batch type. | | **Edit...** | Edits the selected batch type. | | **Delete** | Deletes the selected batch type. | | **Export...** | Opens the **Export Batch Types** dialog box. Choose **Export all batch types** or **Export selected batch types**, and optionally select **Prohibit editing batch types** with a password to require that password whenever the batch types are later imported or edited. Click **OK**, and then pick a location for the XML file. | | **Import...** | Imports batch types from an XML file. In the **Open** dialog box, point to the XML file. | | **Reset** | Resets all created batch types. | | **Close** | Closes the dialog box. | Importing batch types deletes all existing batch types. Export them first if you want to preserve them. If a batch type references external .NET assemblies, pass the `.spr` folder (which contains the `.asr` assembly files) alongside the XML file. When loading a batch type from the server, the `.spr` folder is imported automatically. ## Related topics * [Batch Type Wizard](/vantage/documentation/scanning-station/interface/batch-type-wizard) * [Batch Type Properties dialog box](/vantage/documentation/scanning-station/interface/batch-type-properties-dbox) * [Batch types](/vantage/documentation/scanning-station/admin/batch-types) * [Working with batch types](/vantage/documentation/scanning-station/admin/working-batch-types) * [Interface](/vantage/documentation/scanning-station/interface/interface) # Batches window Source: https://docs.abbyy.com/vantage/documentation/scanning-station/interface/batches-window Tree view of batches, documents, and pages. Use it to review, reorganize, and select items for editing. The **Batches** window shows the tree of batches, documents, and pages, and lets you reorganize them using the buttons on the [main window toolbars](/vantage/documentation/scanning-station/interface/main-window-toolbars). For details on reorganizing batches, see [Working with batches, documents, and pages](/vantage/documentation/scanning-station/operator/working-with-batches). ## Warning markers A yellow triangle next to a page means its resolution or dimensions don't match the batch's specified values. To see the warning for a specific page, open the [Page Properties](/vantage/documentation/scanning-station/interface/page-properties-dialog-box) dialog box. For guidance on changing page resolution, see [Editing images](/vantage/documentation/scanning-station/operator/editing-images). ## Show, hide, and resize * **Resize** — drag the right-hand border of the window. * **Hide** — double-click the left-hand border of the window. * **Restore** — double-click the left-hand border of the [Image window](/vantage/documentation/scanning-station/interface/image-window), or choose **View > Show Batches**. ## Related topics * [Image window](/vantage/documentation/scanning-station/interface/image-window) * [Registration Parameters window](/vantage/documentation/scanning-station/interface/registration-params-window) * [Main window toolbars](/vantage/documentation/scanning-station/interface/main-window-toolbars) * [Working with batches, documents, and pages](/vantage/documentation/scanning-station/operator/working-with-batches) * [Interface](/vantage/documentation/scanning-station/interface/interface) # Configuring scripts Source: https://docs.abbyy.com/vantage/documentation/scanning-station/interface/configuring-scripts Add, edit, delete, and run scripts that run on events or manual user commands for a batch type or batch. You can configure scripts in two places: * **For a batch type** — when creating the batch type with the [Batch Type Wizard](/vantage/documentation/scanning-station/interface/batch-type-wizard), or later on the **Scripts** tab of the [Batch Type Properties](/vantage/documentation/scanning-station/interface/batch-type-properties-dbox) dialog box. * **For individual batches** — on the **Scripts** tab of the [Options](/vantage/documentation/scanning-station/interface/options-dialog-box) dialog box. The Scripts tab lists the names of the configured scripts and the events that trigger them. ## Manage scripts * **Add...** — add a new script. * **Edit...** — open the selected script in the [Script Editor](/vantage/documentation/scanning-station/interface/script-editor). * **Delete** — remove the selected script. * **Customize Toolbar...** — open the [Toolbar Customization](/vantage/documentation/scanning-station/interface/toolbar-customization-dialog-box) dialog box. **Customize Toolbar...** is disabled if the current batch type has no scripts. ## Run a script * Choose **Edit > Run Script**, pick a script from the list in the **Run Script** dialog box, and click **OK**. * Or click the button for that script on the **Scripts** toolbar. For more on scripting, see [Using scripts](/vantage/documentation/scanning-station/admin/using-scripts). ## Related topics * [Script Editor](/vantage/documentation/scanning-station/interface/script-editor) * [Using scripts](/vantage/documentation/scanning-station/admin/using-scripts) * [Events](/vantage/documentation/scanning-station/admin/events) * [Toolbar Customization dialog box](/vantage/documentation/scanning-station/interface/toolbar-customization-dialog-box) * [Interface](/vantage/documentation/scanning-station/interface/interface) # Differences between the Administrator and Operator modes Source: https://docs.abbyy.com/vantage/documentation/scanning-station/interface/differences-admin-operator How Administrator and Operator modes differ, and how Scanning Station picks between them. Scanning Stations run in one of two modes: Administrator or Operator. ## What each mode can do * **Administrator mode** — create, edit, import, and export batch types. * **Operator mode** — import batch types only. Batch type settings can't be changed, and the built-in **Unsorted** batch type is unavailable. ## How the mode is chosen The mode depends on the batch type settings: * If the default settings are in use, the station runs in **Administrator** mode but only the default batch type is available. * If password-protected batch types are imported from a file, the station runs in **Operator** mode unless the user provides the password. Operator mode doesn't require a password. ## Related topics * [Administrator mode](/vantage/documentation/scanning-station/admin/admin-mode) * [Operator mode](/vantage/documentation/scanning-station/operator/operator-mode) * [Working with batch types](/vantage/documentation/scanning-station/admin/working-batch-types) * [Local settings on Scanning Stations](/vantage/documentation/scanning-station/admin/using-local-settings) * [Interface](/vantage/documentation/scanning-station/interface/interface) # Document and batch separation Source: https://docs.abbyy.com/vantage/documentation/scanning-station/interface/doc-and-batch-separation Configure how Scanning Station names and splits batches and documents during scanning. You can configure batch and document separation in two places: * **For a batch type** — when creating the batch type with the [Batch Type Wizard](/vantage/documentation/scanning-station/interface/batch-type-wizard), or later on the **Batch Options** tab of the [Batch Type Properties](/vantage/documentation/scanning-station/interface/batch-type-properties-dbox) dialog box. * **For individual batches** — on the **Batch Options** tab of the [Options](/vantage/documentation/scanning-station/interface/options-dialog-box) dialog box. ## Batch separation ### Batch naming scheme Click **Naming Scheme...** to open the **Batch Name** dialog box and define the template used for new batch names. A batch name can combine static text with dynamic tokens. Tokens appear in the rule wrapped in angle brackets (`<>`); any plain text outside the brackets is used as-is. Available tokens: * Current time * Current date * Batch type * Automatic numbering — by default, uses unique batch identifiers. An identifier isn't reused even if the batch it was assigned to is deleted. * Registration parameters **Example:** `Batch_