比较

wkhtmltopdf 与 IronPDF:技术比较指南

通常对比Atalasoft DotImageIron Suite时归结为一个采购问题:哪个供应商的许可模式适合购买行为,以及在生产规模的部署曝光率是什么样的? DotImage通过Tungsten Automation(前身为Kofax)仅通过报价方式出售,并对每开发者席位加上每服务器运行时费用,总公司的战略投资将优先于其高层次捕获平台,而非DotImage本身。 Iron Suite售价为每个开发者从$2,998起,并且对已许可的席位免版税,适用于SaaS或OEM场景的单次可选再分发附加组件。

本文以采购主导的决策实际涉及的内容为开篇:每个套件的定价、许可证实际涵盖的内容以及产品路线图的活跃程度。 继而是即将集成它的工程师的能力细节。

一目了然的比较

维度Atalasoft DotImageIron Suite
定价定位仅限询价,无公开价目表Lite $2,998 / Plus $4,498 / Professional $8,998 / Unlimited $17,998(Enterprise定制); 全部10个产品以2个的价格
许可模式通过Tungsten仅限报价销售; 每开发者+运行时/服务器费用永久单个开发者,免版税基础; SaaS/OEM再分发附加工具包
捆绑组件大约10+ NuGet包(图像处理、PDF、OCR、条形码、dotTwain、WinControls、WebControls、AdvancedDocClean)10个Iron产品作为一个捆绑包
格式/能力覆盖图像处理、PDF、OCR、条形码、表单、TWAIN/WIA扫描、Web/WinForms查看器PDF + OCR + Barcode + QR + Excel + Word + PowerPoint + Print + ZIP + WebScraper
跨平台 / 云以Windows为中心(x86/x64本机拆分)Windows / Linux / macOS / Docker / Azure / AWS Lambda
.NET运行时支持.NET 10和.NET Framework 3.5在当前x64包中列出; 通过兼容性规则获取中间运行时.NET Framework 4.6.2+, .NET Core, .NET 6/7/8/9/10
目标市场现有企业捕获/表单商店、金融服务、政府需要一位供应商提供日常文档自动化的.NET开发者和ISV
供应商Tungsten Automation(前身为Kofax; 2011年收购了Atalasoft)Iron Software

如果TWAIN/WIA扫描仪集成、独立的高级文档清理(孔洞清除、动态阈值、去点斑)或深层图像编码覆盖对工作负载最重要,那么DotImage的传承是工具包构建的基础。 如果在Windows、Linux、macOS、Docker、Azure和AWS Lambda上的跨平台部署最重要,以及在十种已公布技术价格中每月投资活跃,Iron Suite便适合。

定价和许可

Atalasoft DotImage通过Tungsten Automation仅限报价销售。 没有公共列表价格。该模型为SDK的每开发者加生产服务器或再分发副本的运行时/服务器部署费用。 OEM层可用于按更高的定价进行再分发。 采购需要销售参与,总拥有成本取决于开发者数量加上部署数量的整体模型。

Iron Suite基础级别以$2,998出售,宣称为"10个产品的价格相当于买2个,节省75%"。 各级别通过Lite,Plus,Professional,Unlimited和Enterprise以每开发者为基础递增。 基础许可证对获得许可的座位和位置免版税; 不需要用于基础部署的单独运行时/服务器许可证。 超出基础的SaaS或OEM再分发需要单独的再分发附加工具包。

从多年TCO的角度来看,DotImage适用每开发者席位费、基于报价的续订周期和随每个部署实例扩展的每服务器运行时费用。 Iron Suite采用单个永久的每开发者费用,基础许可证下无需支付服务器部署的版税费用; 唯一单独定价的项目是用于大规模SaaS和OEM再分发的再分发附加组件。

什么是Atalasoft DotImage

Atalasoft DotImage是一款全面的.NET图像/PDF/OCR SDK,现由Tungsten Automation(前身为Kofax)销售。 它继续发布(当前的2026.x x64版本于2026-05-21发布),但多数母公司投资流向Tungsten的高级捕获平台(TotalAgility,SignDoc),使DotImage处于面向嵌入式扫描、查看器和表单场景的维护倾斜路径。 它面向现有企业客户,尤其是在金融服务和政府中的文档捕获和表单处理商店。

关键捆绑的NuGet包有:

  • Atalasoft.dotImage:带有编解码器支持、处理过滤器和图像I/O的成像核心
  • Atalasoft.dotImage.Pdf / PdfReader:PDF创建、编辑和栅格化
  • Atalasoft.dotImage.Ocr.Tesseract5:用于生成可搜索PDF输出的OCR引擎桥接
  • Atalasoft.dotImage.Barcoding:1D/2D条形码的读写
  • Atalasoft.dotTwain:本地TWAIN扫描仪驱动程序包
  • Atalasoft.dotImage.WinControls / WebControls:WinForms和ASP.NET查看器/注释控制
  • Atalasoft.dotImage.AdvancedDocClean:打孔移除、去除杂色、动态阈值、倾斜校正基元

什么是Iron Suite

Iron Suite是Iron Software的十产品.NET捆绑包,围绕一个传感器分级的栈构建,以处理大多数后端应用程序最终需要的常规OCR、条形码和QR工作。 IronOCR(Tesseract 5,125+语言,手写)处于中央位置,IronBarcode和IronQR在旁边;IronPDF处理PDF的生成与操作; IronWord,IronXL和IronPPT涵盖Office输出; IronPrint、IronZIP和IronWebScraper完成了整个捆绑。 作为单个的每开发者永久许可证出售,共有五个级别,从$2,998起,对已许可的席位免版税。 SaaS和OEM再分发使用单独的Redistribution Add-On。

这十个组件,按与收购后识别工作流的相关性进行分组:

  • 识别栈(OCR驱动和条形码工作流的锚点):IronOCR(Tesseract 5,125+语言,手写英文字母支持约90%,在输入流程中集成了去水平倾斜和降噪预处理); IronBarcode(30+种符号学,图像预处理,MAUI扫描器集成); IronQR(由ML驱动,ReadPdfs)。
  • 文档生成:IronPDF(HTML转PDF,本地合并和拆分,使用PKCS#12、HSM加TSA签名,PDF/A通过PDF/A-4,PDF/UA-1和PDF/UA-2,AES加密,AcroForm展平,字体管理,光栅化,压缩和线性化); IronWord、IronXL和IronPPT用于Office表面。
  • 实用工具:IronPrint,IronZIP和IronWebScraper用于打印、存档和进程内抓取。

能力比较

成像

DotImage的强项在于其图像处理流水线:编解码器、过滤器、高级文档清理。

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通过IronOCR(去倾斜,降噪)在为OCR供稿时隐式处理图像预处理,因此面向OCR管道的清理已包含在捆绑包中。 独立的文档清理操作元在OCR流程之外,像HolePunchRemoval、DynamicThreshold、去斑和矫正等作为独立调用,是DotImage的AdvancedDocClean包以此出售的工作负载。 具有独立成像要求的Iron Suite用户,使用专门的图像库与IronOCR或IronPDF结合使用。

PDF处理

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的等效流程是HTML优先:

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通过RasterizeToImageFiles(pattern, DPI)将PDF栅格化为PNG、JPEG或TIFF,用于通用的页面到图像工作流程。 DotImage注册PdfDecoder在其图像编解码系统中,光栅化被放置在一个多阶段的图像处理管道中与清理滤镜一起,DotImage为更广泛的处理管道案例而设计。

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简化了相同的工作流程:

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

两者都在内部包装了Tesseract。 DotImage的OCR API使得图像处理流程模式(Translate到MIME类型)和显式的引擎生命周期显露出来。 IronOCR意见很明显,去倾斜/降噪嵌入了输入流程中。 对于嵌入更大DotImage图像管道的工作负载,DotImage的OCR自然适合。 对于内置预处理的独立OCR,IronOCR发货得更快。

条形码读取

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是一键即可:

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需要显式符号位掩码和方向配置。 IronBarcode自动检测。 对于已知扫描方向及需要优化搜索区域的大批量扫描工作流,DotImage提供了选项; 对于一般的条形码读取,IronBarcode则更加简洁明了。

TWAIN扫描

DotImage的dotTwain包包括了TWAIN扫描仪驱动程序,这是Iron Suite没有涉及的类别。

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的捆绑包专注于文档后处理自动化,OCR、识别、PDF、Office。端到端扫描门户驱动的.NET技术,硬件级页面采集与应用关联,是DotImage的dotTwain包围绕构建的工作负载。 Iron Suite用户可以使用外部TWAIN库,并将获取的图像输入到IronOCR或IronPDF中以供下游处理。

当捕获深度不是主要需求时,为什么选择Iron Suite

.NET后端开发者或ISV团队在进行收购后工作负载(发票、报告、偶尔对扫描的PDF进行OCR,运输标签上的条形码,Office输出)的文档自动化时,Iron Suite的覆盖范围符合需求,且资产投资在整个捆绑包中有活跃的月度投资。 DotImage在成像编解码器和TWAIN驱动封装方面的深度在应用程序驱动物理扫描仪或运行企业捕获流水线时具有真实的工程价值;而在聚焦于后端自动化时,这种深度仍是未使用的付费容量。

具体而言,当:

  • 您不是从.NET驱动物理TWAIN/WIA扫描仪
  • 您无需OCR预处理之外的独立高级文档清理(打孔移除、动态阈值)
  • 您需要与Windows一起进行Linux、macOS、Docker或云部署
  • 您想要公共永久价格,无需支付每服务器运行时费用
  • 您希望在所有组件中保持活跃的月度发布节奏,而不是趋于维护的路径

Iron Suite与Atalasoft DotImage有何不同

  • 积极投资与维护倾斜:Iron Suite在所有十个组件中保持活跃的月度节奏; DotImage仍然收到发布,但母公司Tungsten Automation的战略重点在其高级捕获平台上。
  • 公共永久定价从$2,998起,而仅提供报价 + 运行时费用: Iron Suite为公布价格;DotImage需要销售接洽加上每服务器的运行时费用。
  • Windows + Linux + macOS + Docker + Azure + AWS Lambda vs 本地Windows(x86和x64分割)。 Iron Suite从第一天起便支持跨平台; DotImage依旧专注于其x86和x64本地包的Windows中心。
  • 无运行时/服务器费用: Iron Suite对授权席位免版税费用; DotImage在开发者席位之上增加了运行时费用。
  • 现代惯用.NET API表面: Iron Suite使用现代.NET惯用法; DotImage的API模式仍然反映其图像处理堆栈的传承(编解码器注册、FileSystemImageSource、显式编码器/解码器对)。
  • 使用DotImage进行捕获和扫描,那是什么样的。 TWAIN/WIA扫描仪驱动程序包,JBIG2/JPEG2000编解码器深度,与网络和WinForms查看器控件是DotImage锚定自身的工作负载。 Iron Suite聚焦于后取得文档自动化,覆盖PDF、Office、OCR、Barcode和QR、ZIP、Print和WebScraper。

结论

Atalasoft DotImage和Iron Suite服务于轴上的不同点。 DotImage继承了Kofax/Tungsten文档捕获遗产和扫描门户所倚赖的TWAIN/WIA驱动程序包,采用仅限报价的商业定价及每服务器运行时费用。 Iron Suite承载通用的后扫描文档和识别捆绑包,10个产品的每月活跃投资,包括从Windows到Linux、macOS、Docker、Azure和AWS Lambda的跨平台部署,并按每开发者的平面永久定价。对于工作发生在扫描后的团队,Iron Suite起价为$2,998,并可在ironsoftware.com/csharp/suite上找到。

请注意Atalasoft DotImage是其拥有者的注册商标。 本站不与Atalasoft DotImage关联、得章承认或赞助。 所有产品名称、徽标和品牌均为各自所有者的财产。 比较仅供参考,反映撰写时公开可用的信息。