PDFTron OCR 的替代方案 - IronOCR
在云托管的 OCR 服务和本地.NET库之间进行选择,会影响到从延迟和成本到数据安全性和部署复杂性等方方面面。 本文对比了 Azure Vision 和IronOCR的光学字符识别功能,为.NET开发人员提供了选择适合生产工作负载的 OCR 引擎所需的信息。
在正式购买之前,您可以免费试用IronOCR ,在实际项目中测试文本提取功能。
Azure 中的光学字符识别 (OCR) 工作原理是什么?
Azure 中的 OCR 通过 Azure AI 服务中的两个主要服务提供:Azure Vision(Foundry Tools 的一部分)和 Azure Document Intelligence。 两者都采用相同的 Read OCR 模型,具备从文档图像、PDF 和 TIFF 文件以及一般图像文件中提取印刷文本和手写文本的基本功能。
Azure Vision 服务专注于非文档图像场景,例如路标、产品标签和照片,而 Document Intelligence 则针对扫描和数字文档,例如发票、收据和表格。 文档智能包括针对文档优化的 Read OCR 模型版本,并叠加了智能文档处理功能,可以提取结构、键值对以及其他以文档为中心的见解,而不仅仅是提取原始文本。
读取 API 接受图像和文档作为输入,支持的文件格式包括 JPEG、PNG、BMP、PDF 和 TIFF。 对于 PDF 和 TIFF 文件,每次请求最多可处理 2,000 页(免费套餐仅限前两页)。 同步 API 适用于小型、仅包含单张图像的场景,而异步读取操作则处理更大的、多页的工作负载。 Azure Vision 支持范围包括置信度评分、混合语言支持以及一次性识别印刷体或手写体文本。
| 翻译类别 | Azure Vision OCR | IronOCR |
|---|---|---|
| 结构 | 云 REST API(Azure AI 服务) | 本地.NET库(NuGet) |
| OCR引擎 | 微软读取 OCR 模型 | 针对.NET优化的定制版 Tesseract 5 引擎 |
| 印刷文本支持英语及其他语言 | 拉丁字母、西里尔字母、阿拉伯字母、梵文天城体字母——多种语言,包括法语、德语、西班牙语、中文、日语、韩语、俄语、阿拉伯语、印地语 | 通过NuGet语言包支持 127 种语言——包括拉丁字母、中日韩字母、阿拉伯字母、梵文天城体字母等等。 |
| 手写文本支持英语及其他语言 | 英语、简体中文、法语、德语、意大利语、日语、韩语、葡萄牙语、西班牙语 | 英语和部分语言可通过高级扫描模式获取 |
| 支持的格式 | JPEG、PNG、BMP、PDF、TIFF | JPEG、PNG、GIF、TIFF、BMP、PDF(单页和多页) |
| 部署 | 云优先;本地环境可使用 Docker 容器(之前的正式版 v3.2) | 完全本地化——Windows、macOS、Linux、Docker、Azure、AWS |
| 数据安全 | 在微软云端处理的图像; 受 Azure 数据策略约束 | 所有OCR任务均在本地运行——客户数据绝不会离开机器。 |
| 定价 | 免费套餐:每月 5,000 笔交易; 标准层的每页费用(见Azure定价) | 一次性许可证从$999开始; 无限本地处理 |
| 结构化输出 | 页数、文本行数、单词数、边界框、置信度 | 页面、段落、文本行、单词、字符、条形码、可搜索的PDF |
| 离线能力 | 需要网络连接(Docker容器除外) | 完全离线 |
Azure 文档智能是否执行光学字符识别 (OCR)?
是的。 Azure 文档智能使用读取 OCR 模型作为其基础技术,然后委托给专门的模型进行更高级别的智能文档处理,例如表格提取、键值对识别和实体检测。 因此,它是从扫描文档、数字文档、HTML 文档和混合内容文件中提取文本的推荐方法。 文档智能功能不仅限于文本识别,还能提供其他以文档为中心的洞察,例如布局分析和表单字段映射。
对于专注于文本提取而无需 Azure 更广泛文档分析流程的开发人员而言, IronOCR提供了一种精简的替代方案。它可以读取扫描文本、打印文本和手写文本,支持所有相同的文档格式,并且完全在.NET运行时环境中运行,无需依赖云服务,无需配置资源组,也无需管理存储帐户。
##Azure Vision OCR可以免费使用吗?
Azure 为其 Azure Vision 服务提供免费层级 (F0),每月包含 5,000 次 OCR 交易,费率为每分钟 20 次。 这对于实验和轻量开发来说已经足够,但生产工作负载需要具有每交易费用的标准(S1)层。 请查阅Azure定价页以获取当前费率。 随着数量的增加,费用会累积,再加上任何阶段性文件的Azure Blob Storage费用以及在Azure门户中管理资源组的开销。
IronOCR采用不同的方法:一个单一的永久许可证(起价$999),没有每次交易费用,也没有重复成本。 对于预算可预测性至关重要的大批量文本提取或 OCR 辅助用户体验,该模型完全消除了成本的不确定性。 免费试用 30 天,提供全部功能供评估。
云端OCR和本地OCR在文本提取方面有何区别?
两种解决方案都能处理多种语言的印刷体和手写体文本,但开发者的体验却大相径庭。
Azure Vision:云端 OCR API
Azure Vision 读取 API 需要预配计算机视觉资源,通过 API 密钥启用访问,并发出 HTTP 调用。 结果以 JSON 格式返回,包含页面、文本行、单词和边界框。 印刷文本的OCR识别支持英语、法语、德语、意大利语、葡萄牙语、西班牙语、中文、日语、韩语以及其他多种使用拉丁字母、西里尔字母、阿拉伯字母和梵文的国际语言。手写文本提取支持英语、简体中文、法语、德语、意大利语、日语、韩语、葡萄牙语和西班牙语。 整张图像被发送到 API,读取的 OCR 模型确定每个文本块的最佳处理方法。
//Azure Vision OCR— text extraction from a document image (requires Azure SDK)
using Azure;
using Azure.AI.Vision.ImageAnalysis;
var endpoint = new Uri("https://<your-resource>.cognitiveservices.azure.com/");
var credential = new AzureKeyCredential("<your-api-key>");
var client = new ImageAnalysisClient(endpoint, credential);
// Read operation analyzes the whole image for printed and handwritten text
var result = client.Analyze(
BinaryData.FromStream(File.OpenRead("invoice.png")),
VisualFeatures.Read);
foreach (var block in result.Value.Read.Blocks)
foreach (var line in block.Lines)
Console.WriteLine(line.Text);Imports Azure
Imports Azure.AI.Vision.ImageAnalysis
Dim endpoint As New Uri("https://<your-resource>.cognitiveservices.azure.com/")
Dim credential As New AzureKeyCredential("<your-api-key>")
Dim client As New ImageAnalysisClient(endpoint, credential)
' Read operation analyzes the whole image for printed and handwritten text
Dim result = client.Analyze(BinaryData.FromStream(File.OpenRead("invoice.png")), VisualFeatures.Read)
For Each block In result.Value.Read.Blocks
For Each line In block.Lines
Console.WriteLine(line.Text)
Next
NextAzure OCR 输出

此代码使用 Azure Vision 终结点和密钥创建 ImageAnalysisClient,然后使用 VisualFeatures.Read 标志调用 Analyze 来提取文本。 结果以数据块和文本行的形式呈现,每个数据块和文本行都包含位置数据和置信度分数。 文件大小有限制(免费套餐为 4 MB,标准套餐为 500 MB),每次 API 调用都算作一次计费交易。 OCR 云 API 可以自动处理扩展,但会引入网络延迟,并且需要互联网连接。
IronOCR:本地.NET OCR 引擎
IronOCR完全在本地机器上运行,无需 API 密钥,无需云设置,也无需按页付费。 通过NuGet安装,加载图像或 PDF,并提取文本:
//IronOCR— local text extraction from a scanned document with preprocessing
using IronOcr;
var ocr = new IronTesseract();
ocr.Language = OcrLanguage.English;
using var input = new OcrInput();
input.LoadPdf("invoice.pdf");
// Preprocessing filters improve accuracy on low-quality scans
input.Deskew();
input.DeNoise();
OcrResult result = ocr.Read(input);
// Structured output: pages, paragraphs, lines, words with confidence data
foreach (var page in result.Pages)
foreach (var line in page.Lines)
Console.WriteLine($"{line.Text} (Confidence: {line.Confidence:P})");
// Export to searchable PDF for archival
result.SaveAsSearchablePdf("invoice_searchable.pdf");Imports IronOcr
' IronOCR— local text extraction from a scanned document with preprocessing
Dim ocr As New IronTesseract()
ocr.Language = OcrLanguage.English
Using input As New OcrInput()
input.LoadPdf("invoice.pdf")
' Preprocessing filters improve accuracy on low-quality scans
input.Deskew()
input.DeNoise()
Dim result As OcrResult = ocr.Read(input)
' Structured output: pages, paragraphs, lines, words with confidence data
For Each page In result.Pages
For Each line In page.Lines
Console.WriteLine($"{line.Text} (Confidence: {line.Confidence:P})")
Next
Next
' Export to searchable PDF for archival
result.SaveAsSearchablePdf("invoice_searchable.pdf")
End UsingIronOCR输出

IronTesseract 类封装了一个针对.NET优化的定制 Tesseract 5 OCR 引擎。 OcrInput 可以加载 PDF 文件、TIFF 文件或单个图像; Deskew() 和 DeNoise() 滤波器可以校正扫描文档的旋转并减少背景噪声。 OcrResult 对象公开了一个丰富的结构——页面、段落、文本行、单词和单个字符——每个结构都有置信度分数。 SaveAsSearchablePdf 方法将 OCR 输出转换为可搜索的索引文档,用自动化处理取代手动数据输入工作流程。 IronOCR通过专用的NuGet包支持超过 127 种 OCR 支持的语言,包括简体中文、阿拉伯语和使用梵文的语言。对于单个文档中混合使用的多种语言,可以组合使用多个语言包。
OCR数据隐私和灵活部署方面又该如何保障呢?
对于处理敏感记录的行业而言,OCR 数据隐私是一个至关重要的问题。 使用 Azure Vision OCR,文档图像会被传输到微软的云基础架构进行处理。 微软的政策声明客户数据不会用于训练模型,但这些数据仍然会通过外部网络传输。 对于有严格合规性要求的组织,Azure 提供用于本地部署的 Docker 容器,但这仅限于 Azure Vision 服务的先前正式版 (v3.2),而不是最新的 Foundry Tools 版本。
IronOCR完全避免了这个问题。 由于每个 OCR 任务都保留在您自己的环境中(无论是开发笔记本电脑还是私人服务器),因此您的数据实际上永远不会离开您的系统。 这使得医疗保健或金融等行业的合规性大大提高,因为在这些行业中,数据隐私不仅仅是一种偏好,而是法律规定。 这种灵活的部署模型支持 Windows、macOS、Linux、Azure Functions、AWS Lambda 和 Docker,在不牺牲可移植性的前提下确保数据安全。 由于无需外部 API 调用,因此消除了延迟、服务中断和第三方数据处理方面的担忧。
对于构建 OCR 辅助用户体验或智能文档处理管道的.NET团队,请参阅IronOCR入门指南了解更多信息,或探索如何在 C# 中读取扫描文档。
哪种解决方案最能处理非文档和复杂场景?
Azure Vision 在非文档、纯图像场景中表现出色,能够识别路标、产品标签和自然场景中的书写风格中的文本。 Azure AI Foundry Tools 平台提供统一的体验,可将 Azure Vision 服务与其他 Azure AI 功能(如自定义模型、空间分析和内容审核)相结合。 对于已经投资 Azure AI 平台的组织而言,这种生态系统优势至关重要。
与此同时, IronOCR在 .NET 特定的工作流程中占据主导地位。 它支持读取条形码和二维码以及文本,提供图像预处理过滤器以纠正低质量扫描,并将结果输出为包含段落、行和单词的结构化数据。 IronOCR可以大规模处理 PDF 文件,处理多页 PDF 文件,没有页数限制或按交易计费,并且可以生成可搜索的 PDF 文件,作为任何扫描输入的数字版本。
如何选择合适的OCR方法
对于评估两个平台上 OCR 通用功能的.NET开发人员来说,最终的决定通常取决于三个因素:
*成本模式:Azure 的按交易付费定价模式适合低量或零星使用。IronOCR的永久许可更经济实惠,适用于持续、大批量的文本提取。 *数据驻留:如果客户数据必须保留在本地或私有云中,IronOCR 的完全本地处理是更直接的途径。 *生态系统契合度:与 Azure AI 服务和 Foundry Tools 深度集成的团队可能更喜欢统一的云平台。 构建独立.NET应用程序的团队可以受益于IronOCR的零依赖性、基于 NuGet 的设置。
这两个平台都提供强大的文本识别功能,并支持多种语言,但IronOCR结合了本地处理、一次性定价、127 种语言包和 .NET 原生 API,对于想要完全控制其 OCR 流程的开发人员来说,具有明显的优势。
准备好观看IronOCR 的精彩表现了吗? 立即开始 30 天免费试用,或探索各种许可选项,找到最适合生产部署的方案。
