Dewarping

Geometric distortions is a very common case when dealing with photos of books, magazines, multi-page documents, and similar content. They can be caused by physical page curvature or camera lens distortion (ultra-wide and fisheye lenses, as well as entry-level smartphone lenses).

Warped images are very hard to be processed by most OCR algorithms. Thus, image straightening and distortion removal is critical to the recognition process as it directly affects the reliability and efficiency of segmentation and text extraction. Aspose.OCR for Python via .NET implements a processing filter for automated correction of geometric distortions before proceeding to recognition.

Important considerations

  • Dewarping one image may take up to 45 seconds.
  • Dewarping is very resource-intensive (CPU and RAM).
  • After removing the image curvature, text lines will have some wave-like distortion. Thus, it is highly recommended to use DetectAreasMode.CURVED_TEXT areas detection mode to extract text from the dewarped image. Other area detection modes may produce inaccurate results.
  • Dewarping also corrects image tilt. We recommend disabling automatic skew correction - it will have no effect and may even result in severe image distortion.

Dewarping

To straighten the curved image, run it through auto_dewarping processing filter.

# Instantiate Aspose.OCR API
api = AsposeOcr()
# Initialize image processing
filters = PreprocessingFilter()
filters.add(PreprocessingFilter.auto_dewarping())
# Add image to the recognition batch and apply processing filter
input = OcrInput(InputType.SINGLE_IMAGE, filters)
input.add("source.png")
# Save processed image to the "result" folder
ImageProcessing.save(input, "result")
# Recognize the image
result = api.recognize(input)
# Print recognition result
print(result[0].recognition_text)
Curved page photo Dewarped image

Usage scenarios

Automatic dewarping is recommended for:

  • Photos of book pages, magazines.
  • Curved paper.
  • Ultra wide-angle and fisheye photos.