Aspose.OCR for Java 22.8 - Release Notes
This article contains a summary of recent changes, enhancements and bug fixes in Aspose.OCR for Java 22.8 (August 2022) release.
GPU version: 21.6.0
What was changed
Key | Summary | Category |
---|---|---|
OCRJAVA-268 | Added support for text recognition from images provided as an array of bytes. | New feature |
OCRJAVA-269 | Preprocessing filters can now be applied to specific areas of an image. | New feature |
OCRJAVA-267 | Aspose.OCR for Java is now displayed in the properties of generated PDF documents instead of Aspose.OCR for .NET. | Fix |
OCRJAVA-266 | Fixed black page output when recognizing scanned PDF files. | Fix |
Public API changes and backwards compatibility
This section lists all public API changes introduced in Aspose.OCR for Java 22.8 that may affect the code of existing applications.
Added public APIs:
The following public APIs have been introduced in this release:
Recognize image from byte array
The image for recognition can be provided as a flat byte array representing the amount of each color per pixel or the degree of pixel saturation for grayscale images. The amount can range from 0 to 255, where 0 means no that color and 255 is the maximum amount of that color.
To recognize an image represented as an array of pixel colors, pass the following parameters to RecognizePage
method of AsposeOCR
class:
- Byte array representing pixels from left to right (by line), and each line is added to the array from top to bottom.
- Image width and height.
- Image color depth (number of bits per pixel).
- Recognition settings (optional).
Updated public APIs:
The following public APIs have been updated in this release:
Applying preprocessing filters to image regions
The following preprocessing filters can be applied to specific regions of an image:
- Skew correction
- Noise removal
- Contrast correction
- Binarization
- Color inversion
- Dilation
- Median filter
Multiple preprocessing filters can be applied to different regions of the same image. If the regions intersect each other, filters are applied to the intersection in their chaining order in PreprocessingFilter
object.
To apply a filter to an area, specify its top left corner along with width and height as a Rectangle
object. If the region is omitted, the filter is applied to the entire image.
Removed public APIs:
No changes.
Usage examples
The examples below illustrates the changes introduced in this release:
Recognizing an image provided as byte array
// Create instance of OCR API
AsposeOCR api = new AsposeOCR();
// Load image
URL resFile = getClass().getClassLoader().getResource("source.bmp");
com.aspose.imaging.Image image = com.aspose.imaging.Image.load(resFile.getFile());
// Recognize the image and output text
try {
com.aspose.imaging.RasterImage rasterImage = (com.aspose.imaging.RasterImage) image;
int[] pixels = rasterImage.loadArgb32Pixels(rasterImage.getBounds());
RecognitionResult res = api.RecognizePage(pixels, rasterImage.getWidth(), rasterImage.getHeight(),
rasterImage.getBitsPerPixel(), new RecognitionSettings());
System.out.println(res.recognitionText);
} finally {
image.dispose();
}
Applying preprocessing filter to image region
// Create instance of OCR API
AsposeOCR api = new AsposeOCR();
// Invert a region of an image
PreprocessingFilter filters = new PreprocessingFilter();
filters.add(PreprocessingFilter.Invert(new Rectangle(5, 161, 340, 113)));
// Save preprocessed image
BufferedImage img = api.PreprocessImage(file, filters);
File outputSource = new File("preview.png");
ImageIO.write(img, "png", outputSource);