ABBYY FineReader Engine 12 and 11 Compatibility
ABBYY FineReader Engine 12 is not binary compatible with ABBYY FineReader Engine 11. Applications that were compiled using ABBYY FineReader Engine 11 should be recompiled using ABBYY FineReader Engine 12 headers and library. Some changes of the source code may be necessary because of the ABBYY FineReader Engine API improvements.
This article contains a full list of changes, together with suggestions on rewriting your code to work under the new version.
Main changes:
- The obsolete DocumentAnalyzer and Exporter objects have been removed, together with the processing methods of the Engine object. Use the more efficient methods of the FRDocument and FRPage objects, which take care of all the information needed for full document processing. You are no longer required to maintain the DocumentInfo object on all processing stages, keep track of all the image documents with the corresponding layouts, or implement the IRecognizedPages interface.
- The API which provided access to the logical structure of the document (DocumentStructure, PageStructure and their subobjects) has been removed. Editing the properties and contents of the document via the deleted objects could have led to unpredictable results on export. If you need to verify or postprocess the recognition results, work with the data via the Layout subobject of each FRPage and call any of the methods which perform document synthesis when done. The logical structure of the document will then be recreated and used at the export stage, although it will no longer be available for editing via FineReader Engine API. The future versions of ABBYY FineReader Engine may provide read-only access to some of the document logical structure.
- The Classification API has been completely replaced, using new improved algorithms and providing built-in cross-validation techniques.
- The Engine object must now be loaded by InitializeEngine function. The GetEngineObject and GetEngineObjectEx functions for Engine loading are removed from ABBYY FineReader Engine.
Engine object
Property/Method/Constant | What has happened? | Comment |
---|---|---|
CreateDocumentAnalyzer CreateDocumentInfo CreateExporter |
Removed | The methods are not necessary anymore as the objects they created have been removed. |
CreateExportFileWriter | Signature changed | The deprecated PagesCount parameter has been removed. |
CreateLayout | Removed | The Layout object can no longer be used apart from the page it corresponds to. |
CreateMultipageImageWriter | Behavior changed | This method now accepts extended image saving parameters for JPEG and TIFF formats. |
CreateMultipageImageWriterEx | Renamed | This method is now called CreateMultipageImageWriter. The old implementation of the CreateMultipageImageWriter method has been removed. |
ExportPage | Removed | Use the IFRPage::Export method instead. |
ExportPagesEx | Removed | Use the IFRDocument::Export method instead. |
InjectTextLayer | Behavior changed | This method now provides additional parameters of text layer injection, as well as the option to select the pages of the PDF file to be processed and a callback interface to handle warnings and errors. |
InjectTextLayerEx InjectTextLayerEx2 |
Removed | The new version of the InjectTextLayer method now provides all the options formerly available in these methods. |
OpenImageFile | Removed | Use the IFRDocument::AddImageFile method to open an image file and add it to the document for processing. The ImageDocument object will be accessible via the corresponding FRPage. |
PrepareImageFile | Removed | Use the IFRDocument::AddImageFile method to open an image file and add it to the document for processing. The ImageDocument object will be accessible via the corresponding FRPage and can be saved on disk later. |
ProcessPage | Removed | Use the IFRDocument::Process method instead. |
ProcessPagesEx | Removed | Use the IFRDocument::Process method instead. |
SynthesizePagesEx | Removed | Use the IFRDocument::Synthesize method instead. |
OpenMemoryImageFormat10 | Removed | This method was provided only for compatibility with ABBYY FineReader Engine 10. |
OpenBitmapBits |
Deprecated | These properties are now deprecated and will be deleted in future versions. |
Image-related objects
Object/Enumeration | Property/Method/Constant | What has happened? | Comment |
---|---|---|---|
ImageDocument | SuppressColorObjects | Removed | Instead use the RemoveColorObjectsEx method, which allows you to remove objects of several specified hues at once, and also receive the image of removed objects. |
RemoveGarbage | Behavior changed | This method still searches for garbage on the black-and-white plane, but removes it from all color planes of the image. | |
RemoveGarbageEx | Renamed | This method is now called RemoveGarbage. The old implementation of that method has been removed. | |
PrepareImageMode | ImageCompression | Renamed, type changed | This property is now called CompressImage and is of the ThreeStatePropertyValueEnum type. The default functions as before. |
KeepOriginalCoordinatesInfo | Deprecated | This property is now deprecated and will be deleted in future versions. | |
ImageCompressionEnum | Removed | The property that used this enumeration now has another type. | |
Image | Deprecated | These properties are now deprecated and will be deleted in future versions. | |
TrainingImage | SetBitmapBits | Deprecated | This property is now deprecated and will be deleted in future versions. |
Layout-related objects
Object/Enumeration | Property/Method/Constant | What has happened? | Comment |
---|---|---|---|
Block | BackgroundColor | Behavior changed | This property is now read-only. |
BlockLayerType | Behavior changed | This property is now read-only. For RasterPictureBlock and VectorPictureBlock, the layer type can be changed using the SetBlockLayerType method. | |
BlockLayerTypeEnum | BLT_Unknown | Removed | This constant is no longer in use. |
Text-related objects
Object/Enumeration | Property/Method/Constant | What has happened? | Comment |
---|---|---|---|
Paragraph |
HasOverflowedHead HasOverflowedTail |
Removed | These properties are no longer supported: detecting the paragraph split over two pages is not possible anymore. |
InlinePictureID | Removed | This property returned the ID of PageElement corresponding to the picture, and is no longer useful because PageElement object has been removed with the rest of document structure API. | |
DeleteBookmark | Behavior changed | This method now requires the specification of user bookmark name in the format "UserDefinedBookmark:<my_user_bookmark>". | |
ParagraphStyle | ParagraphParams | Removed | The paragraph properties can now be accessed only via the Paragraph object. |
Behavior changed | These properties are now read-only. No properties of paragraph style may be edited. | ||
CopyFrom | Removed | No properties of paragraph style may be edited or copied from another object. | |
FontStyle | ParagraphStyle | Removed | The paragraph style may be accessed via the Paragraph object. |
TabPositions | AddNewEx | Renamed | This method is now called AddNew. The old implementation of the AddNew method has been removed. |
AddNew | Behavior changed | This method now allows you to set all the properties of the tab leader at creation. | |
TabPosition | CopyFrom | Removed | All the properties of a tab stop should be specified on the object's creation with the help of the AddNew method of the TabPositions object. They may not be changed or copied from another object. |
Alignment Position TabLeaderType |
Behavior changed | The properties are now read-only. They should be specified on the object's creation with the help of the AddNew method of the TabPositions object and may not be changed or copied from another object. | |
TextOrientation | IsVerticallyMirrored | Removed | This property was deprecated in the previous version. |
Text | TextRole | Removed | This property has been removed due to the removal of document logical structure API, as it is no longer possible to access the parts of document by their role in the logical structure. |
TextRoleEnum | Removed | The property that used this enumeration has been removed. | |
CharParams | IsWordStart | Removed | This property was deprecated and scheduled for removal. It was replaced by two properties: IsWordLeftmost, which specifies the first character in the word if read from left to right, and IsWordFirst, which specifies the logically first character for whichever reading direction is used in the language. |
CharacterFlags | CFL_Picture | Removed | The property which used this constant has been removed. |
BarcodeSymbol |
Bottom Left Right Top |
Deprecated | These properties are now deprecated and will be deleted in future versions. |
Hyperlink | Target | Behavior changed | This property now requires the specification of user bookmark name in the format "UserDefinedBookmark:<my_user_bookmark>" for creating a hyperlink. |
Document-related objects
Object/Enumeration | Property/Method/Constant | What has happened? | Comment |
---|---|---|---|
IFRDocumentEventsEx | Renamed | This interface is now called IFRDocumentEvents. The old version of that interface has been removed. | |
IFRDocumentEvents | OnWarning | Parameters changed | This method now has an additional parameter which specifies the index of the page in the document to which the warning refers. |
Artefact BackgroundLayer Caption Captions DocumentElement DocumentSection DocumentStream DocumentStructure Footnote Footnotes FootnoteSeries FootnoteSeriesArray GlobalStyleStorage Incut IncutGroup IncutGroups MainText PageBlackSeparator PageElement PageElements PageSection PageSections PageStream PageStructure RunningTitle RunningTitleSeries RunningTitleSeriesArray RunningTitleSeriesText StreamElementLocationParams TextBarcode TextPicture TextTable TextTableCell |
Removed | These objects represented the logical structure of the document and its various parts. Editing the document structure is no longer supported, as its incorrect use could affect the appearance of the exported document, and any text verification or other modifications may be performed via the document API (FRDocument, FRPage and subobjects). The future versions of ABBYY FineReader Engine may provide read-only access to some of the document logical structure. | |
BorderFlags CaptionPositionEnum DocumentElementTypeEnum FootnoteNumberingTypeEnum FrameHorizontalReferenceEnum FrameVerticalReferenceEnum PageBlackSeparatorRoleEnum PageBlackSeparatorTypeEnum PageElementTypeEnum StreamElementAlignmentEnum StreamTypeEnum TableCellVertAlignmentEnum TextTableSeparatorTypeEnum TextWrappingEnum |
Removed | These enumerations were used by the document structure objects that are no longer available. | |
FRPage | IsEmpty | Behavior changed | This method now provides extended parameters of empty page detection. |
IsEmptyEx | Renamed | This method is now called IsEmpty. The old implementation of the IsEmpty method has been removed. | |
Classify ClassifyEx |
Removed | Page classification can now be performed by the Classify method of the Model object. It requires as an input parameter a ClassificationObject, which may be created using the IClassificationEngine::CreateObjectFromPage method. | |
FRDocument | SourceHasTextualContent | Deprecated | This property is now deprecated and will be deleted in future versions. Use the CheckTextLayer method to find out if a file has textual content. |
Mechanism objects
Object/Enumeration | Property/Method/Constant | What has happened? | Comment |
---|---|---|---|
DocumentAnalyzer | Removed | The object is obsolete. Its methods were replaced by more efficient methods of the FRDocument and FRPage objects, which do not require you to maintain the DocumentInfo object on all processing stages, or implement the IRecognizedPages interface. | |
AddWordsToCacheDictionary AddWordToCacheDictionary CleanCacheDictionary |
Removed | Use the IFRPage::AddWordsToCacheDictionary, IFRPage::AddWordToCacheDictionary, IFRPage::CleanCacheDictionary methods for working with cache dictionaries. | |
AnalyzePage | Removed | Use the IFRPage::Analyze method instead. | |
AnalyzePagesEx | Removed | Use the IFRDocument::Analyze method instead. | |
AnalyzeRegion | Removed | Use the IFRPage::AnalyzeRegion method instead. | |
AnalyzeTable | Removed | Use the IFRPage::AnalyzeTable method instead. | |
AutoCleanRecognizerSession | Removed | Use the IEngine::AutoCleanRecognizerSession property, which works in exactly the same way. | |
CleanRecognizerSession | Removed | Use the IEngine::CleanRecognizerSession method, which works in exactly the same way. | |
CorrectGeometricalDistortions | Removed | Use the IFRPage::CorrectGeometricalDistortions method instead. | |
DetectOrientation | Removed | Use the IFRPage::DetectOrientation method instead. | |
ExtractBarcodes | Removed | Use the IFRPage::ExtractBarcodes method instead. | |
FindPageSplitPosition | Removed | Use the IFRPage::FindPageSplitPosition method instead. | |
LearnCheckmarks | Removed | Use the IFRPage::LearnCheckmarks method instead. | |
PreprocessAnalyzeRecognizePage | Removed | Use the IFRPage::PreprocessAnalyzeRecognize method instead. | |
PreprocessAnalyzeRecognizePagesEx | Removed | Use the IFRDocument::Process method instead. It performs full processing of the document, including document synthesis. | |
PreprocessPage | Removed | Use the IFRPage::Preprocess method instead. | |
PreprocessPagesEx | Removed | Use the IFRDocument::Preprocess method instead. | |
RecognizeBlocks | Removed | Use the IFRPage::RecognizeBlocks method instead. | |
RecognizeImageAsPlainText | Removed | To recognize an image as plain text create the FRDocument from the image with the help of the IEngine::CreateFRDocumentFromImage method, use the IFRDocument::Process method to recognize the document, then access the IFRDocument::PlainText property. | |
RecognizeImageDocumentAsPlainText | Removed | To recognize the page as plain text, use the IFRPage::PreprocessAnalyzeRecognize method, then access the IFRPage::PlainText property. | |
RecognizePage | Removed | Use the IFRPage::Recognize method instead. | |
RecognizePagesEx | Removed | Use the IFRDocument::Recognize method instead. | |
Exporter | Removed | The object is obsolete. Its methods were replaced by more efficient methods of the FRDocument and FRPage objects, which do not require you to maintain the DocumentInfo object on all processing stages, or implement the IRecognizedPages interface. | |
ExportPage | Removed | Use the IFRPage::Export method instead. | |
ExportPagesEx | Removed | Use the IFRDocument::Export method instead. | |
IDocumentAnalyzerEvents | Removed |
This interface is no longer necessary because the object which reported events has been removed. The IFRDocumentEvents and IFRPageEvents interfaces provide similar information on progress and errors for the objects which replaced DocumentAnalyzer. |
|
IExporterEvents | Removed |
This interface is no longer necessary because the object which reported events has been removed. The IFRDocumentEvents and IFRPageEvents interfaces provide similar information on progress and errors for the objects which replaced Exporter. |
|
IRecognizedPages | Removed | The methods which required an object of this type have been removed. | |
FREngineModuleEnum | FREM_DocumentAnalyzer | Removed | This constant is no longer in use. |
Parameter objects
Object/Enumeration | Property/Method/Constant | What has happened? | Comment |
---|---|---|---|
ObjectsExtractionParams | FlexiFormsDA | Removed | This property is obsolete since FineReader Engine 11. Use the EnableAggressiveTextExtraction property and the IPageAnalysisParams::EnableTextExtractionMode property instead. |
FullTextIndexDA | Removed | This property is obsolete since FineReader Engine 11. Use the DetectTextOnPictures property instead. | |
SynthesisParamsForPage | InsertEmptyParagraphsForBigInterlines | Removed | Use the ITextExportParams::RetainLayout property to emulate the original text layout with the help of spaces. |
WritingStyleEnum | WS_Default | Removed |
We recommend using WS_Auto to ensure the best recognition quality. If you need to select the writing style corresponding to the current operating system language, use WS_DetectByLocale. |
RTFExportParams | KeepPages | Removed | Use the KeepPageBreaks property instead. |
ParagraphExtractionModeEnum | PEM_SingleLineParagraphsWithSpaceFormatting | Removed | Use the ITextExportParams::RetainLayout property to emulate the original text appearance with the help of spaces while exporting to TXT format. |
PDFEncryptionInfo | UseAES | Removed | Use the EncryptionAlgorithm property to select the encryption type. |
RecognizerParams | DetectLanguage | Removed | Use the LanguageDetectionMode property to manage automatic detection of recognition languages. |
ErrorHighlightLevel | Removed | Use the new HighlightSuspiciousCharacters property, which dispenses with various levels of confidence and allows you a simple choice: either highlight uncertainly recognized characters or not. If you need a finer distinction, use the CharConfidence property of the selected CharacterRecognitionVariant, although matching recognition confidences for different characters against the same threshold may not always provide consistent results. | |
Deprecated | Use the Mode property to set the recognition mode with the RecognitionModeEnum constants (RM_Normal corresponds to BalancedMode = TRUE and RM_Fast corresponds to FastMode = TRUE). | ||
AvailableEngineModulesFlags |
AEM_FastMode AEM_BalancedMode |
Deprecated | The modules which used these constants are deprecated. |
ErrorHighlightLevelEnum | Removed | The property which used this enumeration has been removed. | |
PagePreprocessingParams |
GeometryCorrectionMode ResolutionCorrectionMode |
Renamed, type changed | These properties are now called CorrectGeometry and CorrectResolution, and are of the ThreeStatePropertyValueEnum type. The defaults function as before. |
PDFExportFeatures |
WriteTaggedPDFMode WriteXmpMetadataMode |
Renamed, type changed | These properties are now called WriteTaggedPDF, WriteXmpMetadata, and are of the ThreeStatePropertyValueEnum type. The defaults function as before. |
PDFMRCParams | PicturesInBackground | Renamed, type changed | This property is now called ProcessPicturesAsBackground and is of the ThreeStatePropertyValueEnum type. By default, pictures are not treated as part of the background. |
GeometryCorrectionModeEnum ResolutionCorrectionModeEnum WriteTaggedPDFModeEnum WriteXmpMetadataModeEnum |
Removed | The properties which used these enumerations now have another type. | |
TextExportParams | RetainLayout | Deprecated | This property is now deprecated and will be deleted in future versions. The same results will be achieved by setting the LayoutRetentionMode property to TXTLRM_ExactCopy. |
PageAnalysisParams | ProhibitModelAnalysis | Deprecated | This property is now deprecated and will be deleted in future versions. Use the IPageAnalysisParams::EnableTextExtractionMode property instead. |
EnableExhaustiveAnalysisMode | Deprecated | This property is now deprecated and will be deleted in future versions. | |
BarcodeParams | Deprecated | These properties are now deprecated and will be deleted in future versions. | |
Classification-related objects
Object/Enumeration | Property/Method/Constant | What has happened? | Comment |
---|---|---|---|
ClassificationEtalon ClassificationParams ClassificationClass ClassificationClasses ClassificationTrainer ClassificationTrainerError ClassificationTrainerErrors ClassificationTrainerErrorTypeEnum ClassificationModeEnum |
Removed |
The old Classification API has been removed. Classification model training is now performed via the Trainer object, with the settings specified in TrainingParams and ValidationParams, and the input data provided as TrainingData. Classifying documents or pages is possible via the Model object. Both training and classification require previously turning a document or a page into a ClassificationObject, which can be achieved with the methods of the ClassificationEngine object. See also Classification-Related Objects and Classification scenario description. |
Supplementary objects
Object/Enumeration | Property/Method/Constant | What has happened? | Comment |
---|---|---|---|
DocumentInfo | Removed | The methods which required an object of this type have been removed. | |
DocumentContentInfo | Removed | The object containing information about the author, keywords, subject and title of the document, can be obtained via the DocumentContentInfo property of the FRDocument object. |
7/3/2024 8:50:10 AM