Latest release (March 2023)
This article contains a summary of recent changes, enhancements and bug fixes in Aspose.OCR for C++ 23.3.0 (March 2023) release.
GPU version: 23.2.0
Deprecation warning
The release 23.3.0 introduces a slimmer, faster and more straightforward API that can significantly simplify your code. Unfortunately, the major reorganization of functions, structures and enumerations result in “breaking changes”.
To make it easier to upgrade your code, we have kept all existing API elements fully functional, but marked them as deprecated. All of your existing code will continue to work and you can even make minor updates to it, but be aware that all deprecated elements are scheduled to be removed in release 24.1.0 (January 2024) in favor of the new API.
Time to deprecation: 9 months left.
What was changed
Key | Summary | Category |
---|---|---|
OCRCPP‑427 | Logging support. | New feature |
OCRCPP‑428 | Tracking of recognition progress. | New feature |
OCRCPP‑432 | A slimmer, faster and more straightforward API has been introduced. See Added public APIs for details. | New feature |
OCRCPP‑432 | Most of the existing API elements have been marked as deprecated to remind you to update your existing code. They remain functional but will be removed in release 24.1.0 (January 2024) in favor of the new API introduced in this release. See Deprecated APIs for details. | Enhancement |
Public API changes and backwards compatibility
This section lists all public API changes introduced in Aspose.OCR for C++ 23.3.0 that may affect the code of existing applications.
Added public APIs:
The following public APIs have been introduced in this release:
AsposeOCRInput
structure
A universal structure for providing any type of data (images, PDF documents, archives, folders, arrays, and so on) to the new image recognition functions.
AsposeOCRRawDataType
enumerator
Color models of an image provided as an array of pixels:
Value | Color model | Image pixel structure |
---|---|---|
ASPOSE_OCR_RGB |
Red-Green-Blue (RGB) | image_pixels[{vertical position of a pixel}][{horizontal position of a pixel]}][{amount of red}] image_pixels[{vertical position of a pixel}][{horizontal position of a pixel]}][{amount of green}] image_pixels[{vertical position of a pixel}][{horizontal position of a pixel]}][{amount of blue}] |
ASPOSE_OCR_GRAYSCALE |
Monochrome (grayscale) | image_pixels[{vertical position of a pixel}][{horizontal position of a pixel]}][{saturation}] |
This enumerator is used as a replacement for the channels_size
member of the ImageDescriptor
structure.
asposeocr_recognize
function
Recognize one or more files provided as AsposeOCRInput
structure. It is a universal replacement for the following recognition functions:
Function | Action |
---|---|
asposeocr_page() |
Read the image with automatic text areas detection and skew angle correction. |
asposeocr_page_settings() |
Fine-tune recognition settings and read the image. |
asposeocr_page_all() |
Read the entire image without text areas detection. |
asposeocr_page_abc() |
Read only the predefined list of characters from the image. |
asposeocr_page_abc_all() |
Read only the predefined list of characters from the image without text areas detection. |
asposeocr_page_tiff() |
Extract text from a single-page or a multi-page TIFF image. |
asposeocr_page_from_uri() |
Extract text from an image provided with the web link. |
asposeocr_pages_multi() |
Read images provided as a folder, or a ZIP archive. |
asposeocr_pages_multi_array() |
Read images provided as an array or paths. |
asposeocr_pages_multi_array_from_raw_bytes() |
Read images provided as pixel arrays. |
asposeocr_page_from_raw_bytes() |
Read the array with image pixels, using automatic text areas detection and skew angle correction. |
asposeocr_page_settings_from_raw_bytes() |
Fine-tune recognition settings and read the array with image pixels. |
asposeocr_page_all_from_raw_bytes() |
Read the entire array with image pixels. |
asposeocr_page_abc_from_raw_bytes() |
Read only predefined list of characters from the array with image pixels. |
asposeocr_page_abc_all_from_raw_bytes() |
Read only predefined list of characters from the array with image pixels without text areas detection. |
asposeocr_page_rect() |
Extract text from specified image areas. |
asposeocr_page_rect_from_raw_bytes() |
Extract text from specified areas of an image provided as an array of pixels. |
asposeocr_page_rect_abc() |
Read only the predefined list of characters from specified image areas. |
asposeocr_page_rect_abc_from_raw_bytes() |
Read only the predefined list of characters from specified areas of an image provided as an array of pixels. |
AsposeOCRRecognitionArea
structure
Describes the detected text area and the text extracted from it.
AsposeOCRRecognizedPage
structure
Describes the result of single image recognition. Contains all detected text areas, represented by AsposeOCRRecognitionArea
structures.
AsposeOCRRecognitionResult
structure
Describes the result of multiple images recognition. Contains all detected images, represented by AsposeOCRRecognizedPage
structures.
This structure is returned from asposeocr_recognize
function, regardless of the source data type.
asposeocr_serialize_result
function
Converts AsposeOCRRecognitionResult
structure into plain text, JSON or XML.
asposeocr_free_result
function
Releases the memory allocated by the asposeocr_recognize
function.
AsposeOCRLogSettings
structure
Describes logging options.
ASPOSE_OCR_LOG_LEVEL
enumerator
Logging severity levels:
Level | Description |
---|---|
ASPOSE_OCR_LOG_NONE |
Disable logging. |
ASPOSE_OCR_LOG_ERROR |
Error events of considerable importance that will affect normal program execution. |
ASPOSE_OCR_LOG_WARNING |
Errors and potentially harmful situations that might still allow the application to continue running. |
ASPOSE_OCR_LOG_TRACE |
Errors, warnings and detailed trace messages useful for debugging and optimization. |
asposeocr_configure_logging
function
Apply logging parameters, provided as AsposeOCRLogSettings
structure.
asposeocr_set_progress_tracker
function
Assign the custom function that will be called when the recognition progress is updated.
AsposeOCRProgress
structure
Describes recognition progress, reported to the custom tracking function.
ASPOSE_OCR_IMAGE_PROCESSING_STATE
enumerator
Recognition process stages:
Value | Stage |
---|---|
ASPOSE_OCR_START |
The recognition process is started. |
ASPOSE_OCR_LOADED |
The image is passed to OCR. |
ASPOSE_OCR_PREPROCESSED |
Preprocessing filters has been applied to the image. |
ASPOSE_OCR_REGIONS_DETECTED |
Text regions has been detected. |
ASPOSE_OCR_TEXT_RECOGNIZED |
Recognition is finished. |
Updated public APIs:
No changes.
Removed public APIs:
No changes.
Deprecated APIs
The following public APIs have been marked as deprecated and will be removed in 24.1.0 (January 2024) release:
ImageDescriptor
structure
Replaced by a universal and more versatile AsposeOCRInput
structure.
asposeocr_page()
function
Replaced with an universal asposeocr_recognize
function.
asposeocr_page_settings()
function
Replaced with an universal asposeocr_recognize
function.
asposeocr_page_all()
function
Replaced with an universal asposeocr_recognize
function.
asposeocr_page_abc()
function
Replaced with an universal asposeocr_recognize
function.
asposeocr_page_abc_all()
function
Replaced with an universal asposeocr_recognize
function.
asposeocr_page_tiff()
function
Replaced with an universal asposeocr_recognize
function.
asposeocr_page_from_uri()
function
Replaced with an universal asposeocr_recognize
function.
asposeocr_pages_multi()
function
Replaced with an universal asposeocr_recognize
function.
asposeocr_page_from_raw_bytes()
function
Replaced with an universal asposeocr_recognize
function.
asposeocr_page_settings_from_raw_bytes()
function
Replaced with an universal asposeocr_recognize
function.
asposeocr_page_all_from_raw_bytes()
function
Replaced with an universal asposeocr_recognize
function.
asposeocr_page_abc_from_raw_bytes()
function
Replaced with an universal asposeocr_recognize
function.
asposeocr_page_abc_all_from_raw_bytes()
function
Replaced with an universal asposeocr_recognize
function.
asposeocr_page_rect()
function
Replaced with an universal asposeocr_recognize
function.
asposeocr_page_rect_from_raw_bytes()
function
Replaced with an universal asposeocr_recognize
function.
asposeocr_page_rect_abc()
function
Replaced with an universal asposeocr_recognize
function.
asposeocr_page_rect_abc_from_raw_bytes()
function
Replaced with an universal asposeocr_recognize
function.
Usage examples
The examples below illustrates the changes introduced in this release:
Migrating to the new API
Original code (Aspose.OCR for C++ 23.2.0 and below):
// Provide the image
string file = current_dir + "/source.png";
const size_t len = 4096;
wchar_t buffer[len] = { 0 };
// Set recognition language
RecognitionSettings settings;
settings.language_alphabet = language::eng;
// Extract text from the image
size_t result = asposeocr_page_all(file.c_str(), buffer, len, settings);
// Output the recognized text
std::wcout << buffer;
New code (Aspose.OCR for C++ 23.3.0 and above):
// Provide the image
string file = current_dir + "/source.png";
AsposeOCRInput source;
source.url = file.c_str();
std::vector<AsposeOCRInput> content{ source };
// Set recognition language
RecognitionSettings settings;
settings.language_alphabet = language::eng;
// Extract text from the image
auto result = asposeocr_recognize(content.data(), content.size(), settings);
// Output the recognized text
wchar_t* buffer = asposeocr_serialize_result(result, buffer_size, export_format::text);
std::cout << std::wstring(buffer) << std::endl;
// Release the resources
asposeocr_free_result(result);
Log errors to a file
AsposeOCRLogSettings log_settings;
log_settings.console_output_enabled = false;
log_settings.logging_level = ASPOSE_OCR_LOG_ERROR;
log_settings.output_path = "errors.log";
asposeocr_set_log_settings(log_settings);
Track recognition progress
void progress_tracker(const AsposeOCRProgress& input)
{
std::cout << "Number of images: " << input.images_amount
<< " current image: " << input.current_image_number
<< " current state: " << input.current_state << std::endl;
}
<...>
asposeocr_set_progress_tracker(&progress_tracker);