Improving OCR Accuracy with AdvancedScan

OCR results in IronOCR depend heavily on the input document: a configuration, setting, or filter that works well for one image may fall short on another. When accuracy is the problem, adding the IronOcr.Extensions.AdvancedScan package often makes the difference.

Why AdvancedScan Differs from Standard IronOCR

The main distinction is the OCR engine behind each package:

  • Standard IronOCR: runs on the Tesseract engine.
  • IronOcr.Extensions.AdvancedScan: runs on PaddleOCR, which adds machine learning capabilities.

That machine learning layer makes AdvancedScan effective on noisy images such as screenshots, and on structured inputs like passports and license plates. The package exposes specialized methods for these cases:

Solution

Start with ReadDocumentAdvanced() and EnhanceResolution()

Before trying other configurations, pair the ReadDocumentAdvanced() method with the EnhanceResolution() preprocessing filter. In most cases this combination clears up the accuracy problems seen with the standard read.

ReadDocumentAdvanced() uses the PaddleOCR machine-learning engine to parse layout-aware, text-heavy documents. EnhanceResolution() upscales and sharpens low-resolution input before the read, which is a common root cause of poor results. Apply the filter to the OcrInput, then pass that same input to ReadDocumentAdvanced():

var ocr = new IronTesseract();
using var input = new OcrInput();
input.LoadPdf("document.pdf");
// Upscale and sharpen low-resolution input before reading
input.EnhanceResolution();
var result = ocr.ReadDocumentAdvanced(input);
Console.WriteLine(result.Text);
var ocr = new IronTesseract();
using var input = new OcrInput();
input.LoadPdf("document.pdf");
// Upscale and sharpen low-resolution input before reading
input.EnhanceResolution();
var result = ocr.ReadDocumentAdvanced(input);
Console.WriteLine(result.Text);
Imports IronOcr

Dim ocr As New IronTesseract()
Using input As New OcrInput()
    input.LoadPdf("document.pdf")
    ' Upscale and sharpen low-resolution input before reading
    input.EnhanceResolution()
    Dim result = ocr.ReadDocumentAdvanced(input)
    Console.WriteLine(result.Text)
End Using
$vbLabelText   $csharpLabel

Configure .NET Framework Projects as x64

On .NET Framework, set the project to build for x64. AdvancedScan needs a significant amount of memory, and running it under a different architecture can trigger runtime errors.

For the full walkthrough, see the Advanced Scan on .NET Framework troubleshooting guide.

Limitations

AdvancedScan delivers strong accuracy, but there are trade-offs to know about:

  • Fewer result features: the result objects returned by AdvancedScan methods carry fewer features than the standard OcrResult object.
  • No searchable PDFs yet: creating searchable PDFs from AdvancedScan output is not currently supported. This feature is under development.
  • Varying return types: different read methods return different result object types, so check the API Reference for the specifics of each.
  • Limited language support: currently English, Chinese, Japanese, Korean, and LatinAlphabets.

For customers hitting accuracy problems with standard IronOCR, adding IronOcr.Extensions.AdvancedScan is worth trying. Its PaddleOCR engine and machine learning enhancements make it a strong alternative for complex image processing tasks.

Curtis Chau
Technical Writer

Curtis Chau holds a Bachelor’s degree in Computer Science (Carleton University) and specializes in front-end development with expertise in Node.js, TypeScript, JavaScript, and React. Passionate about crafting intuitive and aesthetically pleasing user interfaces, Curtis enjoys working with modern frameworks and creating well-structured, visually appealing manuals.

...

Read More
Ready to Get Started?
Nuget Downloads 6,211,838 | Version: 2026.8 just released
Still Scrolling Icon

Still Scrolling?

Want proof fast? PM > Install-Package IronOcr
run a sample watch your image become searchable text.