COMPARISON

Iron Suite vs Atalasoft DotImage

Choosing between Atalasoft DotImage and Iron Suite usually comes down to a procurement question: which vendor's licensing model fits the buying motion, and what does deployment exposure look like at production scale? DotImage is sold quote-only through Tungsten Automation (formerly Kofax) with a per-developer seat plus per-server runtime fees layered on top, and the parent company's strategic investment is going to its higher-level capture platforms rather than DotImage itself. Iron Suite is sold at a published perpetual price from $2,998 per developer, royalty-free for the licensed seats, with a single optional Redistribution Add-On for SaaS or OEM scenarios.

This article leads with what a procurement-led decision actually hangs on: how each suite is priced, what the license actually covers, and how active the product roadmap is. The capability-by-capability developer detail follows for the engineers who will integrate it.

At-a-Glance Comparison

DimensionAtalasoft DotImageIron Suite
Pricing positioningQuote-only, no public list priceLite $2,998 / Plus $4,498 / Professional $8,998 / Unlimited $17,998 (Enterprise custom); all 10 products for the price of 2
License modelQuote-only commercial through Tungsten; per-developer + runtime/server feesPerpetual per-developer, royalty-free base; Redistribution Add-On for SaaS/OEM
Components in bundle~10+ NuGet packages (imaging, PDF, OCR, Barcoding, dotTwain, WinControls, WebControls, AdvancedDocClean)10 Iron products as a single bundle
Format/capability coverageImaging, PDF, OCR, Barcode, Forms, TWAIN/WIA scanning, Web/WinForms viewerPDF + OCR + Barcode + QR + Excel + Word + PowerPoint + Print + ZIP + WebScraper
Cross-platform / cloudWindows-centric (x86/x64 native splits)Windows / Linux / macOS / Docker / Azure / AWS Lambda
.NET runtime support.NET 10 and .NET Framework 3.5 listed on current x64 packages; intermediate runtimes via compat rules.NET Framework 4.6.2+, .NET Core, .NET 6/7/8/9/10
Target marketExisting enterprise capture/forms shops, financial services, government.NET developers and ISVs needing one vendor for everyday document automation
VendorTungsten Automation (formerly Kofax; Atalasoft acquired 2011)Iron Software

If TWAIN/WIA scanner integration, standalone advanced document cleanup (HolePunchRemoval, DynamicThreshold, despeckle), or deep imaging codec coverage matters most to the workload, DotImage's heritage is what the toolkit is built around. If cross-platform deployment across Windows, Linux, macOS, Docker, Azure, and AWS Lambda matters most, alongside active monthly investment across ten products at a published per-developer price, Iron Suite is the fit.

Pricing and Licensing

Atalasoft DotImage is sold quote-only through Tungsten Automation. There is no public list price. The model is per-developer for the SDK plus runtime/server deployment fees per production server or per redistributable copy. OEM tiers are available for redistribution at higher pricing. Procurement requires sales engagement and the total cost of ownership depends on developer count plus deployment count modelled together.

Iron Suite ships at $2,998 for the entry tier, marketed as "all 10 products for the price of 2, save 75%". Tiers escalate through Lite, Plus, Professional, Unlimited, and Enterprise on a per-developer basis. The base license is royalty-free for the licensed seats and locations; no separate runtime/server license is required for the base deployment. SaaS or OEM redistribution beyond the base requires the separate Redistribution Add-On.

On a multi-year TCO horizon, DotImage applies a per-developer seat fee, a quote-based renewal cycle, and per-server runtime fees that scale with every deployed instance. Iron Suite applies a single perpetual per-developer fee with royalty-free server deployment under the base license; the only separately-priced item is the Redistribution Add-On for SaaS and OEM redistribution at scale.

What is Atalasoft DotImage

Atalasoft DotImage is a comprehensive .NET imaging/PDF/OCR SDK now sold under Tungsten Automation (formerly Kofax). It continues to ship (the current 2026.x x64 NuGet was released 2026-05-21), though most parent-company investment goes to Tungsten's higher-level capture platforms (TotalAgility, SignDoc), leaving DotImage on a maintenance-leaning trajectory for embedded scanning, viewer, and forms scenarios. It is positioned for existing enterprise customers, especially document-capture and forms-processing shops in financial services and government.

Key bundled NuGet packages:

  • Atalasoft.dotImage: imaging core with codec support, processing filters, and image I/O
  • Atalasoft.dotImage.Pdf / PdfReader: PDF creation, editing, and rasterization
  • Atalasoft.dotImage.Ocr.Tesseract5: OCR engine bridge for searchable PDF output
  • Atalasoft.dotImage.Barcoding: 1D/2D barcode reading and writing
  • Atalasoft.dotTwain: native TWAIN scanner driver wrapper
  • Atalasoft.dotImage.WinControls / WebControls: WinForms and ASP.NET viewer/annotation controls
  • Atalasoft.dotImage.AdvancedDocClean: HolePunchRemoval, Despeckle, DynamicThreshold, Deskew primitives

What is Iron Suite

Iron Suite is Iron Software's ten-product .NET bundle, structured around a recognition stack that handles the routine OCR, barcode, and QR work most backend applications eventually need. IronOCR (Tesseract 5, 125+ languages, handwriting) sits at the centre, with IronBarcode and IronQR alongside; IronPDF handles PDF generation and manipulation; IronWord, IronXL, and IronPPT cover Office output; IronPrint, IronZIP, and IronWebScraper close out the bundle. Sold as a single perpetual per-developer license at five tier levels from $2,998, royalty-free for the licensed seats. SaaS and OEM redistribution use a separate Redistribution Add-On.

The ten components, grouped by relevance to a post-acquisition recognition workflow:

  • Recognition stack (anchor for OCR-driven and barcode workflows): IronOCR (Tesseract 5, 125+ languages, handwriting at ~90% English, deskew and denoise preprocessing built into the input pipeline); IronBarcode (30+ symbologies, image preprocessing, MAUI scanner integration); IronQR (ML-powered, QrStyleOptions for branded codes, batch ReadPdfs).
  • Document generation: IronPDF (HTML-to-PDF, native merge and split, signing with PKCS#12 plus HSM plus TSA, PDF/A through PDF/A-4, PDF/UA-1 and PDF/UA-2, AES encryption, AcroForm flattening, font management, rasterization, compression and linearization); IronWord, IronXL, and IronPPT for the Office surface.
  • Utility: IronPrint, IronZIP, and IronWebScraper for printing, archives, and in-process scraping.

Capability Comparison

Imaging

DotImage's strength is its imaging pipeline: codecs, filters, advanced document cleanup.

RegisteredDecoders.Decoders.Add(new TiffDecoder());
RegisteredDecoders.Decoders.Add(new JpegDecoder());
using (FileStream fs = new FileStream("scan.tif", FileMode.Open))
using (AtalaImage image = new AtalaImage(fs))
{
    new DespeckleCommand(2).ApplyToImage(image);
    AutoDeskewCommand deskew = new AutoDeskewCommand();
    deskew.ApplyToImage(image);
    using (FileStream outFs = new FileStream("scan-clean.jpg", FileMode.Create))
        image.Save(outFs, new JpegEncoder(85), null);
}
RegisteredDecoders.Decoders.Add(new TiffDecoder());
RegisteredDecoders.Decoders.Add(new JpegDecoder());
using (FileStream fs = new FileStream("scan.tif", FileMode.Open))
using (AtalaImage image = new AtalaImage(fs))
{
    new DespeckleCommand(2).ApplyToImage(image);
    AutoDeskewCommand deskew = new AutoDeskewCommand();
    deskew.ApplyToImage(image);
    using (FileStream outFs = new FileStream("scan-clean.jpg", FileMode.Create))
        image.Save(outFs, new JpegEncoder(85), null);
}
Imports System.IO

RegisteredDecoders.Decoders.Add(New TiffDecoder())
RegisteredDecoders.Decoders.Add(New JpegDecoder())

Using fs As New FileStream("scan.tif", FileMode.Open)
    Using image As New AtalaImage(fs)
        Dim despeckleCommand As New DespeckleCommand(2)
        despeckleCommand.ApplyToImage(image)

        Dim deskew As New AutoDeskewCommand()
        deskew.ApplyToImage(image)

        Using outFs As New FileStream("scan-clean.jpg", FileMode.Create)
            image.Save(outFs, New JpegEncoder(85), Nothing)
        End Using
    End Using
End Using
$vbLabelText   $csharpLabel

Iron Suite handles image preprocessing implicitly through IronOCR (deskew, denoise) when feeding scans for OCR, so cleanup that targets OCR pipelines is covered in-bundle. Standalone document-cleanup primitives outside an OCR flow, things like HolePunchRemoval, DynamicThreshold, despeckle, and deskew as independent calls, are the workloads DotImage's AdvancedDocClean package is sold for. Iron Suite users with standalone-imaging requirements compose with a dedicated imaging library alongside IronOCR or IronPDF.

PDF Processing

PdfDecoder decoder = new PdfDecoder();
RegisteredDecoders.Decoders.Add(decoder);
using (FileStream pdfStream = new FileStream("input.pdf", FileMode.Open))
{
    int pageCount = decoder.GetImageInfo(pdfStream).FrameCount;
    for (int i = 0; i < pageCount; i++)
    {
        pdfStream.Position = 0;
        using (AtalaImage page = decoder.Read(pdfStream, i, null))
        using (FileStream outFs = new FileStream($"page_{i + 1}.png", FileMode.Create))
            page.Save(outFs, new PngEncoder(), null);
    }
}
PdfDecoder decoder = new PdfDecoder();
RegisteredDecoders.Decoders.Add(decoder);
using (FileStream pdfStream = new FileStream("input.pdf", FileMode.Open))
{
    int pageCount = decoder.GetImageInfo(pdfStream).FrameCount;
    for (int i = 0; i < pageCount; i++)
    {
        pdfStream.Position = 0;
        using (AtalaImage page = decoder.Read(pdfStream, i, null))
        using (FileStream outFs = new FileStream($"page_{i + 1}.png", FileMode.Create))
            page.Save(outFs, new PngEncoder(), null);
    }
}
Imports System.IO

Dim decoder As New PdfDecoder()
RegisteredDecoders.Decoders.Add(decoder)
Using pdfStream As New FileStream("input.pdf", FileMode.Open)
    Dim pageCount As Integer = decoder.GetImageInfo(pdfStream).FrameCount
    For i As Integer = 0 To pageCount - 1
        pdfStream.Position = 0
        Using page As AtalaImage = decoder.Read(pdfStream, i, Nothing)
            Using outFs As New FileStream($"page_{i + 1}.png", FileMode.Create)
                page.Save(outFs, New PngEncoder(), Nothing)
            End Using
        End Using
    Next
End Using
$vbLabelText   $csharpLabel

IronPDF's equivalent flow is HTML-first:

var renderer = new ChromePdfRenderer();
string html = @"<h1>Invoice 2026-0428</h1><p>Customer: Acme Corp</p><p>Total due: $1,240.00</p>";
using var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("invoice.pdf");
var renderer = new ChromePdfRenderer();
string html = @"<h1>Invoice 2026-0428</h1><p>Customer: Acme Corp</p><p>Total due: $1,240.00</p>";
using var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("invoice.pdf");
Dim renderer As New ChromePdfRenderer()
Dim html As String = "<h1>Invoice 2026-0428</h1><p>Customer: Acme Corp</p><p>Total due: $1,240.00</p>"
Using pdf = renderer.RenderHtmlAsPdf(html)
    pdf.SaveAs("invoice.pdf")
End Using
$vbLabelText   $csharpLabel

IronPDF rasterizes PDFs to PNG, JPEG, or TIFF via RasterizeToImageFiles(pattern, DPI) for the common page-to-image workflow. DotImage registers PdfDecoder with its imaging codec system, where rasterization sits inside a multi-stage imaging pipeline with cleanup filters, that broader pipeline case is what DotImage is designed for.

OCR

using (OcrEngine engine = new Tesseract5Engine())
{
    engine.Initialize();
    engine.Languages.Add(engine.GetSupportedLanguages()[0]);
    using (FileSystemImageSource src = new FileSystemImageSource(new[] { "multi-page.tif" }, true))
    {
        engine.Translate(src, "application/pdf", "searchable.pdf",
                         new OcrTranslationSettings { MimeType = "application/pdf" });
    }
    engine.Shutdown();
}
using (OcrEngine engine = new Tesseract5Engine())
{
    engine.Initialize();
    engine.Languages.Add(engine.GetSupportedLanguages()[0]);
    using (FileSystemImageSource src = new FileSystemImageSource(new[] { "multi-page.tif" }, true))
    {
        engine.Translate(src, "application/pdf", "searchable.pdf",
                         new OcrTranslationSettings { MimeType = "application/pdf" });
    }
    engine.Shutdown();
}
Imports System

Using engine As New Tesseract5Engine()
    engine.Initialize()
    engine.Languages.Add(engine.GetSupportedLanguages()(0))
    Using src As New FileSystemImageSource(New String() {"multi-page.tif"}, True)
        engine.Translate(src, "application/pdf", "searchable.pdf", 
                         New OcrTranslationSettings With {.MimeType = "application/pdf"})
    End Using
    engine.Shutdown()
End Using
$vbLabelText   $csharpLabel

IronOCR reduces the same workflow:

var ocr = new IronTesseract();
using var input = new OcrInput("scanned-document.png");
input.Deskew();
input.DeNoise();
var result = ocr.Read(input);
Console.WriteLine($"Confidence: {result.Confidence}");
var ocr = new IronTesseract();
using var input = new OcrInput("scanned-document.png");
input.Deskew();
input.DeNoise();
var result = ocr.Read(input);
Console.WriteLine($"Confidence: {result.Confidence}");
Imports IronTesseract

Dim ocr As New IronTesseract()
Using input As New OcrInput("scanned-document.png")
    input.Deskew()
    input.DeNoise()
    Dim result = ocr.Read(input)
    Console.WriteLine($"Confidence: {result.Confidence}")
End Using
$vbLabelText   $csharpLabel

Both wrap Tesseract under the hood. DotImage's OCR API surfaces the imaging-pipeline pattern (FileSystemImageSource, Translate to MIME type) and explicit engine lifecycle. IronOCR is opinionated with deskew/denoise baked into the input flow. For workloads embedded in a larger DotImage imaging pipeline, the DotImage OCR fits naturally; for standalone OCR with preprocessing built in, IronOCR ships faster.

Barcode Reading

BarCodeReader reader = new BarCodeReader();
reader.Symbology = Symbologies.Qr | Symbologies.DataMatrix |
                   Symbologies.Pdf417 | Symbologies.Code128 | Symbologies.Upca;
reader.Direction = Directions.All;
using (AtalaImage image = new AtalaImage("barcoded.png"))
{
    BarCode[] results = reader.ReadBars(image);
    foreach (BarCode bc in results)
        Console.WriteLine($"{bc.Symbology}: {bc.DataString}");
}
BarCodeReader reader = new BarCodeReader();
reader.Symbology = Symbologies.Qr | Symbologies.DataMatrix |
                   Symbologies.Pdf417 | Symbologies.Code128 | Symbologies.Upca;
reader.Direction = Directions.All;
using (AtalaImage image = new AtalaImage("barcoded.png"))
{
    BarCode[] results = reader.ReadBars(image);
    foreach (BarCode bc in results)
        Console.WriteLine($"{bc.Symbology}: {bc.DataString}");
}
Imports System

Dim reader As New BarCodeReader()
reader.Symbology = Symbologies.Qr Or Symbologies.DataMatrix Or Symbologies.Pdf417 Or Symbologies.Code128 Or Symbologies.Upca
reader.Direction = Directions.All

Using image As New AtalaImage("barcoded.png")
    Dim results As BarCode() = reader.ReadBars(image)
    For Each bc As BarCode In results
        Console.WriteLine($"{bc.Symbology}: {bc.DataString}")
    Next
End Using
$vbLabelText   $csharpLabel

IronBarcode is one call:

var results = BarcodeReader.Read("shipment-label.png");
foreach (var barcode in results)
{
    Console.WriteLine($"Value: {barcode.Value}");
    Console.WriteLine($"Format: {barcode.BarcodeType}");
}
var results = BarcodeReader.Read("shipment-label.png");
foreach (var barcode in results)
{
    Console.WriteLine($"Value: {barcode.Value}");
    Console.WriteLine($"Format: {barcode.BarcodeType}");
}
Dim results = BarcodeReader.Read("shipment-label.png")
For Each barcode In results
    Console.WriteLine($"Value: {barcode.Value}")
    Console.WriteLine($"Format: {barcode.BarcodeType}")
Next
$vbLabelText   $csharpLabel

DotImage requires explicit symbology bitmask and direction configuration. IronBarcode auto-detects. For high-volume scanning workflows where the scan direction is known and search regions need optimisation, DotImage exposes the knobs; for general barcode reading, IronBarcode is more concise.

TWAIN Scanning

DotImage's dotTwain package wraps the TWAIN scanner driver, a category Iron Suite does not address.

Form host = new Form();
Device device = AvailableDevices.Default;
device.UI.UseDefaultUI = false;
device.Pages = 0; // 0 = all pages from ADF
using (TiffEncoder encoder = new TiffEncoder(TiffCompression.CcittGroup4))
using (TiffMultiFrameStream output = new TiffMultiFrameStream(
    new FileStream("scanned.tif", FileMode.Create), encoder))
{
    device.ImageAcquired += (s, e) => output.AppendImage(e.Image);
    device.Acquire(host);
}
Form host = new Form();
Device device = AvailableDevices.Default;
device.UI.UseDefaultUI = false;
device.Pages = 0; // 0 = all pages from ADF
using (TiffEncoder encoder = new TiffEncoder(TiffCompression.CcittGroup4))
using (TiffMultiFrameStream output = new TiffMultiFrameStream(
    new FileStream("scanned.tif", FileMode.Create), encoder))
{
    device.ImageAcquired += (s, e) => output.AppendImage(e.Image);
    device.Acquire(host);
}
Imports System.IO

Dim host As New Form()
Dim device As Device = AvailableDevices.Default
device.UI.UseDefaultUI = False
device.Pages = 0 ' 0 = all pages from ADF

Using encoder As New TiffEncoder(TiffCompression.CcittGroup4)
    Using output As New TiffMultiFrameStream(New FileStream("scanned.tif", FileMode.Create), encoder)
        AddHandler device.ImageAcquired, Sub(s, e) output.AppendImage(e.Image)
        device.Acquire(host)
    End Using
End Using
$vbLabelText   $csharpLabel

Iron Suite's bundle stays focused on post-acquisition document automation, OCR, recognition, PDF, Office. End-to-end scanning portals where a physical TWAIN/WIA scanner is driven from .NET, with hardware-level page acquisition tied to the application, are the workloads DotImage's dotTwain package is built around. Iron Suite users compose with an external TWAIN library and feed acquired images into IronOCR or IronPDF for downstream processing.

Why Choose Iron Suite When Capture Depth Is Not the Primary Requirement

For the .NET backend developer or ISV team running document automation against post-acquisition workloads (invoices, reports, occasional OCR on scanned PDFs, barcode on shipping labels, Office output), Iron Suite's surface area matches the workload at a published price with active monthly investment across the bundle. DotImage's depth in imaging codecs and TWAIN driver wrapping is real engineering value when the application drives physical scanners or runs an enterprise capture pipeline; on backends focused on post-acquisition automation, that depth remains paid unused capacity.

Specifically, Iron Suite is the better pick when:

  • You are not driving physical TWAIN/WIA scanners from .NET
  • You do not need standalone advanced document cleanup (HolePunchRemoval, DynamicThreshold) outside of OCR preprocessing
  • You need Linux, macOS, Docker, or cloud deployment alongside Windows
  • You want public perpetual pricing with no per-server runtime fees
  • You want active monthly release cadence across all components rather than a maintenance-leaning trajectory

How is Iron Suite Different from Atalasoft DotImage

  • Active investment vs maintenance-leaning: Iron Suite ships on active monthly cadence across all ten components; DotImage continues to receive releases but the parent Tungsten Automation's strategic focus is on its higher-level capture platforms.
  • Public perpetual pricing from $2,998 vs quote-only + runtime fees: Iron Suite is published-price; DotImage requires sales engagement plus per-server runtime fees.
  • Windows + Linux + macOS + Docker + Azure + AWS Lambda vs Windows-native (x86 and x64 splits). Iron Suite ships cross-platform from day one; DotImage stays Windows-centric across its x86 and x64 native packages.
  • No runtime/server fees: Iron Suite is royalty-free for licensed seats; DotImage layers runtime fees on top of developer seats.
  • Modern idiomatic .NET API surface: Iron Suite uses modern .NET idioms; DotImage's API pattern still reflects its imaging-stack heritage (codec registration, FileSystemImageSource, explicit encoder/decoder pairs).
  • Capture and scanning with DotImage, what does that look like. TWAIN/WIA scanner driver wrapper, JBIG2/JPEG2000 codec depth, and Web and WinForms viewer controls are the workloads DotImage anchors itself on. Iron Suite stays focused on post-acquisition document automation across PDF, Office, OCR, Barcode and QR, ZIP, Print, and WebScraper.

Conclusion

Atalasoft DotImage and Iron Suite serve different points on the same axis. DotImage carries the Kofax/Tungsten document-capture heritage and the TWAIN/WIA driver wrapper that scanning portals lean on, with quote-only commercial pricing and per-server runtime fees. Iron Suite carries the generalist post-acquisition document and recognition bundle, with active monthly investment across ten products, cross-platform deployment from Windows to Linux, macOS, Docker, Azure, and AWS Lambda, and a flat per-developer perpetual price. For teams whose work happens after the scan, Iron Suite starts at $2,998 and is at ironsoftware.com/csharp/suite.

Please noteAtalasoft DotImage is a registered trademark of its respective owner. This site is not affiliated with, endorsed by, or sponsored by Atalasoft DotImage. All product names, logos, and brands are property of their respective owners. Comparisons are for informational purposes only and reflect publicly available information at the time of writing.