Frequently Asked Questions
Using the Engine object
How to work with read-only object properties in raw C++?
Certain ABBYY FlexiCapture SDK objects have read-only object properties. Such properties cannot be changed directly in raw C++. If you want to change such a property, you need to pass a reference to the property object to a new variable, and then use this variable to change it. Below you can see a C++ sample for the IProject::Batches property which is represented by a read-only collection:
IProject* pProject = 0; IBatches* pBatches = 0; IBatch* pBatch = 0; ... // The pBatches variable receives a reference to the batches collection from the Project pProject->get_Batches( &pBatches ); // Add one more element to the batches collection pBatches->AddNew( L"BatchName", &pBatch ); ...
What should I do, if an “access to remote object” error occurs when accessing one of the FlexiCapture SDK objects?
Make sure that parent objects of this object have not been released before the method which leads to the error is called. Pointers to child object's interfaces are valid until their parent objects exist. An attempt to access a child object after its parent object has been destroyed may result in error. Please see Working with Properties for details.
Is it possible to run and use Engine object in several threads?
Yes, it is possible. You should use the InprocLoader or OutprocLoader object when creating the Engine object. See Different Ways to Load the Engine Object for details.
Is it possible to create and run the Engine object on a multi-processor system?
Yes, it is possible. You should use the OutprocLoader object when creating the Engine object. See Different Ways to Load the Engine Object for details.
What should I do if the “Engine deinitialization failed” exception is thrown during deinitialization of the Engine object?
This exception is thrown if not all the objects which were created and used by the application have been deleted before the Engine object deinitialization. If all the objects have been deleted the exception may be caused by the scavenger operation. If the application is developed in Visual Basic .Net, all objects with the Nothing value are not deleted, they are only marked for deletion. The exact moment when the garbage collector deletes the object is not known. Therefore, you should call the following methods before the deinitialization of the Engine object so that the garbage collector deletes the object:
If the application is developed in Delphi, see the Using ABBYY FlexiCapture SDK in Delphi section.
You can use the StartLogging method of the Engine object to get a list of objects that have not been deleted.
How can I create a log file to keep track of all errors, warnings and method calls of ABBYY FlexiCapture SDK?
To do this, you need to call the StartLogging method of the Engine object. As input parameters, specify the log file name and the Boolean variable which determines whether method calls messages should be logged or not. Once you have called this method, all messages will be logged. To stop logging, call the StopLogging method of the Engine object.
What should I do if a message saying “A reference to FCEngine.tlb could not be added” appears in .NET development tools?
This may happen if for some reason the type library has not been registered properly. In this case you can register the library manually:
- From the command line, use the Regtlib utility together with the full path to the FCEngine.tlb type library.
- Then try to add the FCEngine.tlb library as a reference to your project again.
Data capture-related questions
Is it possible to modify Document Definitions using ABBYY FlexiCapture 12 SDK?
Yes, it is possible for any Document Definitions.
How can I identify a page as “Unprocessed” or “Unknown” in ABBYY FlexiCapture 12 SDK?
In ABBYY FlexiCapture 12 such definitions as “Unprocessed” and “Unknown” pages exist. “Unknown” page is a page that has been processed but none of the Document Definitions has matched the page; “Unprocessed” page is a page that has been added to the batch, but has not been processed yet.
ABBYY FlexiCapture 12 SDK defines page types differently. All possible types of pages are described in the PageTypeEnum enumeration constants:
- PT_Unknown corresponds to “Unprocessed” page in terms of ABBYY FlexiCapture 12
- PT_Delimeter — documents delimiter
- PT_MeetsDocumentDefinition — analyzed page for which some page definition was applied
- PT_Attachment — annex page
When a document has assembly errors, ABBYY FlexiCapture 12 shows information about the correct structure of the document (including the information if the document should contain some annex pages and how many). How can I get this information from ABBYY FlexiCapture 12 SDK?
It is not possible to get exactly the same information as shown in ABBYY FlexiCapture 12. To get the information on possible document’s assembly errors, you can use AssemblingError object.
How can I increase the speed of processing with ABBYY FlexiCapture SDK?
The speed of processing depends on the quality of images and on the settings used during processing. Refer to Increasing Processing Speed.
Licensing and distribution
Is there a special installation program for distributing ABBYY FlexiCapture SDK on a workstation?
ABBYY FlexiCapture 12 SDK does not have a special installation program for distribution. You can install the ABBYY FlexiCapture SDK library on a workstation in automatic mode from the command line. See Distribution of Applications Which Use the ABBYY FlexiCapture SDK Library for details.
What license is required for compiling an application?
The functions which load the Engine require Customer Project ID which will be shared by all Developer and Runtime licenses. You need only the correct Customer Project ID for your application to work with corresponding Developer and Runtime licenses. See Distribution of Applications Which Use the ABBYY FlexiCapture SDK Library.
What license is required for activating ABBYY FlexiCapture SDK on a workstation?
You should activate a Runtime License on the workstation. See Distribution of Applications Which Use the ABBYY FlexiCapture SDK Library.
Which folders should be accessible from the workstation?
The following registry branches should be accessible from the workstation:
- HKEY_CURRENT_USER\Software\ABBYY\SDK\12\FlexiCapture SDK — full control
- HKEY_CURRENT_USER\Software\ABBYY\SDK\12 — full control for installation only
- HKEY_LOCAL_MACHINE\Software\ABBYY\SDK\12 — full control for installation only
The following folders should be accessible from the workstation:
- Folder with ABBYY FlexiCapture SDK binary files — access for reading
- %TEMP% folder — full control access
The application runs on a workstation with an activated Runtime License. The message saying “ABBYY FlexiCapture SDK is not licensed” is displayed. What should I do?
Please, make sure that the Runtime License you are using has the same Customer Project ID that is passed to the methods which load FlexiCapture SDK as one of the input parameters. Make sure that the Customer Project ID used by the methods is correct.
See also Licensing, Distribution of Applications Which Use the ABBYY FlexiCapture SDK Library.
If you cannot find the answer to your question, please contact the ABBYY Technical Support.
3/24/2023 8:48:38 AM