Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.
The accuracy and reliability of text recognition is highly dependent on the quality of the original image. Aspose.OCR offers a large number of fully automated and manual image processing filters that enhance an image before it is sent to the OCR engine.
Each filter increases recognition time. The approximate amount of additional time required for preprocessing (as a percentage of the minimum OCR pipeline) is listed in the Performance Impact column.
Filter | Action | Performance impact | Usage scenarios |
---|---|---|---|
Skew correction | Automatically straighten images aligned at a slight angle to the horizontal. | 12% | Skewed images |
Rotation | Manually rotate severely skewed images. | 7.5% | Rotated images |
Noise removal | Automatically remove dirt, spots, scratches, glare, unwanted gradients, and other noise from photos and scans. | 175% extra time; 38% more memory (1) |
Photos Old books Newspapers Postcards Documents with stains and dirt |
Contrast correction | Automatically adjust the image contrast. | 7.5% | Photos Old papers Text on a background |
Resizing | Proportionally scale images up / down, or manually define the width and height of the image. | up to 100% (2) | Medication guides Food labels Full-sized photos from modern cameras and smartphones Scanned images at very high DPI |
Binarization | Convert images to black and white automatically or manually adjust the criteria that determines whether a pixel is considered black or white. | 0.9% | Always used for text detection and most automatic image corrections |
Conversion to grayscale | Discard color information from images and leave only shades of gray. | 0.5% | Photos Scanned ID cards Full-color scans |
Color inversion | Swap image colors so that light areas appear dark and dark areas appear light. | 0.25% | White text on black background Advertisements Business cards Screenshots |
Dilation | Increase the thickness of characters in an image by adding pixels to the edges of high-contrast objects, such as letters. | 3.1% | Receipts Printouts with very thin font |
Median filter | Blur noisy images while preserving the edges of high-contrast objects like letters. | 6.25% | Photos taken in low light conditions Poor quality printouts Highly compressed JPEG’s |
Dewarping | Straighten page curvature and fix camera lens distortion for page photos. This method requires significant resources and time! Consider using it only if the image has geometric distortions preventing accurate recognition. |
30-40 seconds; Up to 4 times more memory (3) |
Photos of curved pages Ultra wide-angle and fisheye photos Photos from entry-level smartphones |
Notes
Multiple processing filters can be applied to the same image to further improve the recognition quality. The filters are applied one by one in the order they are added to PreprocessingFilter
object.
Note that each filter requires additional time and resources on the computer running the application. Do not add extra filters if you are satisfied with the recognition accuracy, especially when developing web applications.
Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter filters = new Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter();
filters.Add(Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter.Threshold({THRESHOLD}));
filters.Add(Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter.AutoSkew());
filters.Add(Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter.Rotate({ANGLE}));
filters.Add(Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter.AutoDenoising());
filters.Add(Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter.ContrastCorrectionFilter());
filters.Add(Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter.Scale({RATIO}));
filters.Add(Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter.Resize({WIDTH}, {HEIGHT}));
filters.Add(Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter.ToGrayscale());
filters.Add(Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter.Invert());
filters.Add(Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter.Dilate());
filters.Add(Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter.Median());
Approximate increase of processing time: 0%
Most processing filters can be applied to specific regions of an image. For example, you can invert a newspaper headline written in white on black, leaving the rest of the article unchanged.
Multiple processing 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 Aspose.Drawing.Rectangle
object. If the region is omitted, the filter is applied to the entire image.
Aspose.Drawing.Rectangle blackRectangle = new Aspose.Drawing.Rectangle(5, 161, 340, 113);
Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter filters = new Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter();
// (1) Invert black region
filters.Add(Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter.Invert(blackRectangle));
// (2) Denoise entire image
filters.Add(Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter.AutoDenoising());
The following filters can be applied to regions:
Aspose.OCR for .NET offers an easy way to access or save processed images using the methods of the static Aspose.OCR.ImageProcessing
class:
Method | Return value | Description |
---|---|---|
Render |
OcrInput |
Applies processing filters to all images in a batch and returns a new batch with processed images. This batch can later be submitted for recognition or used for optimization. |
Save |
OcrInput |
Applies processing filters to all images in batch and saves the resulting images in the specified folder. That method also returns a new batch with processed images, that can be later submitted for the recognition. |
You can use these methods to analyze the effectiveness of processing filters, exclude unnecessary filters that consume resources without affecting the result, or show the result of image processing in the user interface.
OcrInput
object will contain several single-page images, one image per page.// Set processing filters
Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter filters = new Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter();
filters.Add(Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter.AutoDewarping());
filters.Add(Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter.ContrastCorrectionFilter());
// Add all pages from a scanned PDF to OcrInput object and apply processing filters
Aspose.OCR.OcrInput input = new Aspose.OCR.OcrInput(Aspose.OCR.InputType.PDF, filters);
input.Add("source.pdf");
// Save processed images from the provided PDF to the folder
Aspose.OCR.ImageProcessing.Save(input, @"C:\images");
Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.