IronOCR 开始 C# PDF 光学字符识别 如何使用 IronOCR 构建 Azure OCR 服务 Curtis Chau 已更新:七月 2, 2025 下载 IronOCR NuGet 下载 DLL 下载 Windows 安装程序 免费试用 法学硕士副本 法学硕士副本 将页面复制为 Markdown 格式,用于 LLMs 在 ChatGPT 中打开 向 ChatGPT 咨询此页面 在双子座打开 向 Gemini 询问此页面 在双子座打开 向 Gemini 询问此页面 打开困惑 向 Perplexity 询问有关此页面的信息 分享 在 Facebook 上分享 分享到 X(Twitter) 在 LinkedIn 上分享 复制链接 电子邮件文章 This article was translated from English: Does it need improvement? Translated View the article in English Iron Software 创建了一个 OCR(光学字符识别)库,解决了 Azure OCR 集成中的互操作性问题。 对于开发人员来说,在 Azure 上使用 OCR 库一直有点麻烦。 IronOCR 可以解决这个问题以及许多其他 OCR 难题。 IronOCR 为 Microsoft Azure 提供的功能 IronOCR 包含以下功能,可用于在 Microsoft Azure 上构建 OCR 服务: 将 PDF 文件转换为可搜索文档,以便轻松提取文本。 通过从图像中提取文本,将图像转换为可搜索的文档 可读取条形码和二维码 极高的准确性 可在本地运行,无需 SaaS(软件即服务),SaaS 是一种软件分发模式,其中云提供商(例如 Microsoft Azure)托管各种应用程序,并将这些应用程序提供给最终用户。 闪电般的速度 让我们来看看最好的 OCR 引擎——Iron Software 的 IronOCR——是如何让开发人员更容易地从任何输入文档中提取文本的。 让我们开始使用 Azure OCR 服务吧。 要开始使用该示例,我们需要先安装 IronOCR。 使用 C# 创建一个新的控制台应用程序。 通过 NuGet 安装 IronOCR,输入:Install-Package IronOcr或搜索 IronOCR。 如下所示。 编辑Program.cs文件,使其内容如下所示: 我们导入 IronOcr 命名空间,利用其 OCR 功能读取和提取 PDF 文件的内容。 我们创建一个新的 IronTesseract 对象,以便从图像中提取文本。 using IronOcr; using System; namespace IronOCR_Ex { class Program { static void Main(string[] args) { var ocr = new IronTesseract(); using (var Input = new OcrInput("..\\Images\\Purgatory.PNG")) { var result = ocr.Read(Input); // Read PNG image File Console.WriteLine(result.Text); // Output extracted text to console Console.ReadLine(); } } } } using IronOcr; using System; namespace IronOCR_Ex { class Program { static void Main(string[] args) { var ocr = new IronTesseract(); using (var Input = new OcrInput("..\\Images\\Purgatory.PNG")) { var result = ocr.Read(Input); // Read PNG image File Console.WriteLine(result.Text); // Output extracted text to console Console.ReadLine(); } } } } Imports IronOcr Imports System Namespace IronOCR_Ex Friend Class Program Shared Sub Main(ByVal args() As String) Dim ocr = New IronTesseract() Using Input = New OcrInput("..\Images\Purgatory.PNG") Dim result = ocr.Read(Input) ' Read PNG image File Console.WriteLine(result.Text) ' Output extracted text to console Console.ReadLine() End Using End Sub End Class End Namespace $vbLabelText $csharpLabel 接下来,我们打开名为 Purgatory.PNG 的图像。 这幅图出自但丁的《神曲》——我最喜欢的书之一。 这张图片看起来像下一张图片。 图 2 - 使用 IronOCR 的光学字符识别功能提取的文本 从上述输入图像文本中提取出上述文本后的输出。 提取的文本 图 3 - 提取的文本 让我们对 PDF 文档执行同样的操作。 PDF 文档包含与图 2 相同的待提取文本。 唯一的区别是我们将使用PDF文档而不是图像。 请输入以下验证码: var OCR = new IronTesseract(); using (var input = new OcrInput()) { input.Title = "Divine Comedy - Purgatory"; // Give title to input document // Supply optional password and name of document input.AddPdf("..\\Documents\\Purgatorio.pdf", "dante"); var result = OCR.Read(input); // Read the input file result.SaveAsSearchablePdf("SearchablePDFDocument.pdf"); } var OCR = new IronTesseract(); using (var input = new OcrInput()) { input.Title = "Divine Comedy - Purgatory"; // Give title to input document // Supply optional password and name of document input.AddPdf("..\\Documents\\Purgatorio.pdf", "dante"); var result = OCR.Read(input); // Read the input file result.SaveAsSearchablePdf("SearchablePDFDocument.pdf"); } Dim OCR = New IronTesseract() Using input = New OcrInput() input.Title = "Divine Comedy - Purgatory" ' Give title to input document ' Supply optional password and name of document input.AddPdf("..\Documents\Purgatorio.pdf", "dante") Dim result = OCR.Read(input) ' Read the input file result.SaveAsSearchablePdf("SearchablePDFDocument.pdf") End Using $vbLabelText $csharpLabel 这段代码与之前从图像中提取文本的代码几乎相同。 这里我们使用OcrInput方法来读取当前的 PDF 文档,在本例中为:Purgatorio.pdf。 如果 PDF 文件中包含元数据,例如标题或密码,我们也可以将其输入。 结果会保存为可搜索的 PDF 文档,我们可以在其中搜索文本。 注意:如果 PDF 文件过大,可能会抛出异常。 Windows 应用程序就介绍到这里吧; 让我们来看看如何将 OCR 与 Microsoft Azure 结合使用。 IronOCR 的优点在于它可以作为微服务架构中的 Azure 函数与 Microsoft Azure 完美配合。 以下是一个与 IronOCR 配合使用的 Microsoft Azure 函数的简要示例。此 Microsoft Azure 函数用于从图像中提取文本。 public static class OCRFunction { public static HttpClient hcClient = new HttpClient(); [FunctionName("IronOCRFunction_EX")] public static async Task<IActionResult> Run([HttpTrigger] HttpRequest hrRequest, ExecutionContext ecContext) { var URI = hrRequest.Query["image"]; var saStream = await hcClient.GetStreamAsync(URI); var ocr = new IronTesseract(); using (var inputOCR = new OcrInput(saStream)) { var outputOCR = ocr.Read(inputOCR); return new OkObjectResult(outputOCR.Text); } } } public static class OCRFunction { public static HttpClient hcClient = new HttpClient(); [FunctionName("IronOCRFunction_EX")] public static async Task<IActionResult> Run([HttpTrigger] HttpRequest hrRequest, ExecutionContext ecContext) { var URI = hrRequest.Query["image"]; var saStream = await hcClient.GetStreamAsync(URI); var ocr = new IronTesseract(); using (var inputOCR = new OcrInput(saStream)) { var outputOCR = ocr.Read(inputOCR); return new OkObjectResult(outputOCR.Text); } } } Public Module OCRFunction Public hcClient As New HttpClient() <FunctionName("IronOCRFunction_EX")> Public Async Function Run(<HttpTrigger> ByVal hrRequest As HttpRequest, ByVal ecContext As ExecutionContext) As Task(Of IActionResult) Dim URI = hrRequest.Query("image") Dim saStream = Await hcClient.GetStreamAsync(URI) Dim ocr = New IronTesseract() Using inputOCR = New OcrInput(saStream) Dim outputOCR = ocr.Read(inputOCR) Return New OkObjectResult(outputOCR.Text) End Using End Function End Module $vbLabelText $csharpLabel 这会将函数接收到的图像直接提供给 OCR 引擎,以输出提取的文本。 以下是微软对 Microsoft Azure 的简要概述: Microsoft Azure 微服务是一种构建应用程序的架构方法,其中每个核心功能或服务都是独立构建和部署的。 微服务架构是分布式且松耦合的,因此一个组件的故障不会导致整个应用程序崩溃。独立的组件协同工作,并通过定义完善的 API 契约进行通信。 构建微服务应用程序,以满足快速变化的业务需求,并更快地将新功能推向市场。 IronOCR 与 .NET 或 Microsoft Azure 结合使用时还具有以下一些特性: 能够对几乎任何文件、图像或 PDF 执行 OCR 操作。 处理 OCR 输入的速度极快 极高的准确性 读取条形码和二维码 本地运行,无需 SaaS 服务 可以将 PDF 和图像转换为可搜索的文档 微软认知服务提供的 Azure OCR 的绝佳替代方案 用于提高OCR性能的图像过滤器 OcrInput.Rotate - 将图像顺时针旋转若干度。逆时针旋转请使用负数。 OcrInput.Binarize() - 此图像滤镜将每个像素变为黑色或白色,没有中间色。 这提高了OCR识别性能。 OcrInput.ToGrayScale() - 此图像滤镜将每个像素转换为灰度阴影。 这样可以提高OCR识别速度。 OcrInput.Contrast() - 自动增加对比度。 该滤镜可提高低对比度扫描图像的 OCR 速度和准确性。 OcrInput.DeNoise() - 去除数字噪声。此滤镜仅应用于预期输入文档中存在噪声的情况。 OcrInput.Invert() - 反转所有颜色。 OcrInput.Dilate() - 膨胀操作会向图像中任何对象的边界添加像素。 OcrInput.Erode() - 腐蚀操作会移除对象边界上的像素。 OcrInput.Deskew() - 将图像旋转,使其方向正确且正交。 这对于 OCR 非常有用,因为 Tesseract 对倾斜扫描的容差可以低至 5 度。 OcrInput.DeepCleanBackgroundNoise() - 去除严重的背景噪音。 OcrInput.EnhanceResolution - 提高低质量图像的分辨率。 速度性能 以下是一个例子: var OCR = new IronTesseract(); OCR.Configuration.BlackListCharacters = "~`$#^*_}{][|\\"; OCR.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.Auto; OCR.Configuration.TesseractVersion = TesseractVersion.Tesseract5; OCR.Configuration.EngineMode = TesseractEngineMode.LstmOnly; OCR.Language = OcrLanguage.EnglishFast; using (var Input = new OcrInput("..\\Images\\Purgatory.PNG")) { var Result = OCR.Read(Input); Console.WriteLine(Result.Text); } var OCR = new IronTesseract(); OCR.Configuration.BlackListCharacters = "~`$#^*_}{][|\\"; OCR.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.Auto; OCR.Configuration.TesseractVersion = TesseractVersion.Tesseract5; OCR.Configuration.EngineMode = TesseractEngineMode.LstmOnly; OCR.Language = OcrLanguage.EnglishFast; using (var Input = new OcrInput("..\\Images\\Purgatory.PNG")) { var Result = OCR.Read(Input); Console.WriteLine(Result.Text); } Dim OCR = New IronTesseract() OCR.Configuration.BlackListCharacters = "~`$#^*_}{][|\" OCR.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.Auto OCR.Configuration.TesseractVersion = TesseractVersion.Tesseract5 OCR.Configuration.EngineMode = TesseractEngineMode.LstmOnly OCR.Language = OcrLanguage.EnglishFast Using Input = New OcrInput("..\Images\Purgatory.PNG") Dim Result = OCR.Read(Input) Console.WriteLine(Result.Text) End Using $vbLabelText $csharpLabel 定价和许可选项 基本上有三个付费许可级别,都是一次性购买,终身使用。 是的,这些资源可以免费用于开发目的。 更多信息 更多资源请点击以下链接: 资源 API 参考文档请见此处: API 参考文档 IronOCR 产品支持信息请访问:支持 联系 Iron Software:联系信息 IronOCR 为在 Azure 和其他系统上运行 OCR 的 .NET 应用程序提供功能 IronOCR 支持 125 种国际语言。 每种语言均提供快速、标准和最佳三种质量版本。 部分可用的语言包包括: 保加利亚语 亚美尼亚语 克罗地亚语 南非荷兰语 丹麦语 捷克语 菲律宾语 芬兰语 法语 德语 还有更多语言包可供选择,要查看它们,请点击以下链接。 IronOCR 语言包 它在 .NET 中开箱即用。 支持 Xamarin 支持 Mono 支持 Microsoft Azure 支持 Microsoft Azure 上的 Docker 支持 PDF 文档 支持多帧 TIFF 格式 支持所有主流图像格式 支持以下 .NET Framework: .NET Framework 4.5 及更高版本 .NET Standard 2 .NET Core 2 .NET Core 3 .NET Core 5 即使没有安装 Tesseract(一个支持 Unicode 和 100 多种语言的开源 OCR 引擎),IronOCR 也能正常工作。 与 Tesseract 相比,精度有所提高。 速度比 Tesseract 更快。 校正低质量的文档或文件扫描件。 校正低质量、倾斜的文档或文件扫描件。 什么是光学字符识别(OCR)? 根据维基百科的定义:光学字符识别是将打印文本的图像(无论是扫描文档、文档照片、场景照片还是叠加在图像上的字幕文本)电子或机械地转换为机器编码文本的过程。 OCR是光学字符识别的缩写。 光学字符识别主要有四种类型: OCR - 光学字符识别,目标是从输入文档中识别打字文本,一次识别一个字符或字形(一组约定的符号中的基本符号,例如不同字体中的"a")。 OWR - 光学单词识别,目标是从输入文档中逐个识别打印文本。 ICR - 智能字符识别,目标是印刷文本,例如印刷体(不与其他字母连接的字符)和草书文本,一次识别一个字符或字形。 IWR - 智能单词识别,针对草书文本。 常见问题解答 我如何在Azure上的C#应用程序中集成OCR功能? 您可以通过创建一个新的控制台应用程序并通过NuGet安装IronOCR来在Azure上的C#应用程序中集成OCR功能。请使用命令Install-Package IronOcr或在NuGet包管理器中搜索IronOCR。 使用IronOCR而不是Azure的本地OCR服务有什么好处? IronOCR提供了几个Azure本地OCR服务无法比拟的优势,包括更高的准确性、更快的处理速度以及无需SaaS即可本地运行。它还支持多种语言,并提供图像滤镜以增强OCR性能。 我如何设置一个用于OCR文本提取的Microsoft Azure函数? 要设置一个用于OCR文本提取的Microsoft Azure函数,您可以使用IronOCR创建一个从图像中提取文本的函数。这是微服务架构的一部分,让您可以无缝地将OCR功能集成到Azure应用中。 IronOCR能否在OCR处理过程中支持多种语言? 是的,IronOCR支持125种国际语言,每种语言均提供快速、标准和最佳质量,使其对于全球应用非常通用。 IronOCR有哪些图像处理选项可以提高OCR准确性? IronOCR提供多种图像处理选项,如旋转、二值化、灰度化、对比度、去噪、反转、膨胀、腐蚀、去偏斜、深度清理背景噪声和增强分辨率,以提高OCR结果的准确性和可靠性。 IronOCR与各种.NET框架兼容以进行Azure部署吗? 是的,IronOCR与.NET Framework 4.5及更高版本、.NET Standard 2、.NET Core 2、.NET Core 3和.NET Core 5兼容。它还支持Xamarin、Mono,并且可以在Microsoft Azure上使用Docker进行部署。 在Azure上运行IronOCR是否需要任何附加软件? 在Azure上运行IronOCR不需要任何附加软件。相比Tesseract而言,它无需安装即可单独运行,并提供更高的准确性和速度。 IronOCR 提供哪些授权选项? IronOCR提供三种付费许可层级,基于一次性购买、终身许可模式。这些许可证对于开发目的免费,提供了项目扩展的灵活性。 我如何使用IronOCR将图像和PDF转换为可搜索文档? IronOCR允许您通过利用其OCR功能提取和识别文本,将图像和PDF转换为可搜索文档,使其易于搜索和索引。 使用IronOCR读取条形码和二维码的过程是什么? IronOCR可以利用其内置功能读取条形码和二维码,通过扫描和提取这些代码中的数据,便利其在Azure上的C#应用中的集成。 Curtis Chau 立即与工程团队聊天 技术作家 Curtis Chau 拥有卡尔顿大学的计算机科学学士学位,专注于前端开发,精通 Node.js、TypeScript、JavaScript 和 React。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。除了开发之外,Curtis 对物联网 (IoT) 有浓厚的兴趣,探索将硬件和软件集成的新方法。在空闲时间,他喜欢玩游戏和构建 Discord 机器人,将他对技术的热爱与创造力相结合。 准备开始了吗? Nuget 下载 5,167,857 | Version: 2025.11 刚刚发布 免费 NuGet 下载 总下载量:5,167,857 查看许可证