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
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
OcrResultobject. - 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.

