开始使用 .NET OCR 示例

C# + VB.NET: 自动OCR 自动OCR
using IronOcr;

string imageText = new IronTesseract().Read(@"images\image.png").Text;
Imports IronOcr

Private imageText As String = (New IronTesseract()).Read("images\image.png").Text

<p>IronOCR 在其自动检测和读取来自扫描不完美的图像和 PDF 文档中的文本的能力方面具有独特性。 <code>IronTesseract</code> 类提供了最简单的 API。</p> <p>尝试其他代码示例以精细控制您的C# OCR操作。</p> <p>IronOCR 提供了目前任何平台上最先进的 Tesseract 构建。 具有更高的速度、准确性以及原生的DLL和API。</p> <p>支持适用于 .NET Framework、Standard、Core、Xamarin 和 Mono 的 Tesseract 3、Tesseract 4 和 Tesseract 5。</p> <div class="hsg-featured-snippet"> <h2>如何在 VB.NET 中进行 OCR</h2> <ol> <li><a class="js-modal-open" data-modal-id="trial-license-after-download" href="https://nuget.org/packages/IronOcr/" target="_blank" rel="nofollow noopener noreferrer">安装 VB.NET 库,对图像或 PDF 进行 OCR 识别</a></li> <li>实例化 <code>钢铁魔方</code> 使用直观的应用程序接口</li> <li>利用 <code>读取</code> 方法在 VB.NET 中执行 OCR</li> <li>通过访问 `Text` 属性获取 OCR 结果</li> <li>在一行代码中执行 2、3 和 4 个操作。</li> </ol> </div>

C# + VB.NET: 国际语言 国际语言
using IronOcr;
using System;

var ocrTesseract = new IronTesseract();

ocrTesseract.Language = OcrLanguage.Arabic;

using (var ocrInput = new OcrInput())
{
    ocrInput.LoadImage(@"images\arabic.gif");
    var ocrResult = ocrTesseract.Read(ocrInput);
    Console.WriteLine(ocrResult.Text);
}

// Example with a Custom Trained Font Being used:

var ocrTesseractCustomerLang = new IronTesseract();
ocrTesseractCustomerLang.UseCustomTesseractLanguageFile("custom_tesseract_files/custom.traineddata");
ocrTesseractCustomerLang.AddSecondaryLanguage(OcrLanguage.EnglishBest);

using (var ocrInput = new OcrInput())
{
    ocrInput.LoadPdf(@"images\mixed-lang.pdf");
    var ocrResult = ocrTesseractCustomerLang.Read(ocrInput);
    Console.WriteLine(ocrResult.Text);
}
Imports IronOcr
Imports System

Private ocrTesseract = New IronTesseract()

ocrTesseract.Language = OcrLanguage.Arabic

Using ocrInput As New OcrInput()
	ocrInput.LoadImage("images\arabic.gif")
	Dim ocrResult = ocrTesseract.Read(ocrInput)
	Console.WriteLine(ocrResult.Text)
End Using

' Example with a Custom Trained Font Being used:

Dim ocrTesseractCustomerLang = New IronTesseract()
ocrTesseractCustomerLang.UseCustomTesseractLanguageFile("custom_tesseract_files/custom.traineddata")
ocrTesseractCustomerLang.AddSecondaryLanguage(OcrLanguage.EnglishBest)

Using ocrInput As New OcrInput()
	ocrInput.LoadPdf("images\mixed-lang.pdf")
	Dim ocrResult = ocrTesseractCustomerLang.Read(ocrInput)
	Console.WriteLine(ocrResult.Text)
End Using

<p>IronOCR支持125种国际语言。</p> <p>除了默认安装的英语外,还可以通过NuGet添加语言包到您的.NET项目中,或者从我们的网站下载。<a href="/csharp/ocr/languages/" target="_blank" rel="nofollow noopener noreferrer">语言页面</a>.</p> <p>大多数语言都有快速和标准版本可用。(推荐)和最佳质量。 最好可能更准确,但也更慢。</p>

C# + VB.NET: 结果对象 结果对象
using IronOcr;
using IronSoftware.Drawing;

// We can delve deep into OCR results as an object model of
// Pages, Barcodes, Paragraphs, Lines, Words and Characters
// This allows us to explore, export and draw OCR content using other APIs/
var ocrTesseract = new IronTesseract();

ocrTesseract.Configuration.ReadBarCodes = true;

using var ocrInput = new OcrInput();
var pages = new int[] { 1, 2 };
ocrInput.LoadImageFrames("example.tiff", pages);

OcrResult ocrResult = ocrTesseract.Read(ocrInput);
foreach (var page in ocrResult.Pages)
{
    // Page object
    int PageNumber = page.PageNumber;
    string PageText = page.Text;
    int PageWordCount = page.WordCount;
    // null if we dont set Ocr.Configuration.ReadBarCodes = true;
    OcrResult.Barcode[] Barcodes = page.Barcodes;
    AnyBitmap PageImage = page.ToBitmap(ocrInput);
    double PageWidth = page.Width;
    double PageHeight = page.Height;
    double PageRotation = page.Rotation; // angular correction in degrees from OcrInput.Deskew()

    foreach (var paragraph in page.Paragraphs)
    {
        // Pages -> Paragraphs
        int ParagraphNumber = paragraph.ParagraphNumber;
        string ParagraphText = paragraph.Text;
        AnyBitmap ParagraphImage = paragraph.ToBitmap(ocrInput);
        int ParagraphX_location = paragraph.X;
        int ParagraphY_location = paragraph.Y;
        int ParagraphWidth = paragraph.Width;
        int ParagraphHeight = paragraph.Height;
        double ParagraphOcrAccuracy = paragraph.Confidence;
        OcrResult.TextFlow paragrapthText_direction = paragraph.TextDirection;
        foreach (var line in paragraph.Lines)
        {
            // Pages -> Paragraphs -> Lines
            int LineNumber = line.LineNumber;
            string LineText = line.Text;
            AnyBitmap LineImage = line.ToBitmap(ocrInput);
            int LineX_location = line.X;
            int LineY_location = line.Y;
            int LineWidth = line.Width;
            int LineHeight = line.Height;
            double LineOcrAccuracy = line.Confidence;
            double LineSkew = line.BaselineAngle;
            double LineOffset = line.BaselineOffset;
            foreach (var word in line.Words)
            {
                // Pages -> Paragraphs -> Lines -> Words
                int WordNumber = word.WordNumber;
                string WordText = word.Text;
                AnyBitmap WordImage = word.ToBitmap(ocrInput);
                int WordX_location = word.X;
                int WordY_location = word.Y;
                int WordWidth = word.Width;
                int WordHeight = word.Height;
                double WordOcrAccuracy = word.Confidence;
                foreach (var character in word.Characters)
                {
                    // Pages -> Paragraphs -> Lines -> Words -> Characters
                    int CharacterNumber = character.CharacterNumber;
                    string CharacterText = character.Text;
                    AnyBitmap CharacterImage = character.ToBitmap(ocrInput);
                    int CharacterX_location = character.X;
                    int CharacterY_location = character.Y;
                    int CharacterWidth = character.Width;
                    int CharacterHeight = character.Height;
                    double CharacterOcrAccuracy = character.Confidence;
                    // Output alternative symbols choices and their probability.
                    // Very useful for spellchecking
                    OcrResult.Choice[] Choices = character.Choices;
                }
            }
        }
    }
}
Imports IronOcr
Imports IronSoftware.Drawing

' We can delve deep into OCR results as an object model of
' Pages, Barcodes, Paragraphs, Lines, Words and Characters
' This allows us to explore, export and draw OCR content using other APIs/
Private ocrTesseract = New IronTesseract()

ocrTesseract.Configuration.ReadBarCodes = True

Dim ocrInput As New OcrInput()
Dim pages = New Integer() { 1, 2 }
ocrInput.LoadImageFrames("example.tiff", pages)

Dim ocrResult As OcrResult = ocrTesseract.Read(ocrInput)
For Each page In ocrResult.Pages
	' Page object
	Dim PageNumber As Integer = page.PageNumber
	Dim PageText As String = page.Text
	Dim PageWordCount As Integer = page.WordCount
	' null if we dont set Ocr.Configuration.ReadBarCodes = true;
	Dim Barcodes() As OcrResult.Barcode = page.Barcodes
	Dim PageImage As AnyBitmap = page.ToBitmap(ocrInput)
	Dim PageWidth As Double = page.Width
	Dim PageHeight As Double = page.Height
	Dim PageRotation As Double = page.Rotation ' angular correction in degrees from OcrInput.Deskew()

	For Each paragraph In page.Paragraphs
		' Pages -> Paragraphs
		Dim ParagraphNumber As Integer = paragraph.ParagraphNumber
		Dim ParagraphText As String = paragraph.Text
		Dim ParagraphImage As AnyBitmap = paragraph.ToBitmap(ocrInput)
		Dim ParagraphX_location As Integer = paragraph.X
		Dim ParagraphY_location As Integer = paragraph.Y
		Dim ParagraphWidth As Integer = paragraph.Width
		Dim ParagraphHeight As Integer = paragraph.Height
		Dim ParagraphOcrAccuracy As Double = paragraph.Confidence
		Dim paragrapthText_direction As OcrResult.TextFlow = paragraph.TextDirection
		For Each line In paragraph.Lines
			' Pages -> Paragraphs -> Lines
			Dim LineNumber As Integer = line.LineNumber
			Dim LineText As String = line.Text
			Dim LineImage As AnyBitmap = line.ToBitmap(ocrInput)
			Dim LineX_location As Integer = line.X
			Dim LineY_location As Integer = line.Y
			Dim LineWidth As Integer = line.Width
			Dim LineHeight As Integer = line.Height
			Dim LineOcrAccuracy As Double = line.Confidence
			Dim LineSkew As Double = line.BaselineAngle
			Dim LineOffset As Double = line.BaselineOffset
			For Each word In line.Words
				' Pages -> Paragraphs -> Lines -> Words
				Dim WordNumber As Integer = word.WordNumber
				Dim WordText As String = word.Text
				Dim WordImage As AnyBitmap = word.ToBitmap(ocrInput)
				Dim WordX_location As Integer = word.X
				Dim WordY_location As Integer = word.Y
				Dim WordWidth As Integer = word.Width
				Dim WordHeight As Integer = word.Height
				Dim WordOcrAccuracy As Double = word.Confidence
				For Each character In word.Characters
					' Pages -> Paragraphs -> Lines -> Words -> Characters
					Dim CharacterNumber As Integer = character.CharacterNumber
					Dim CharacterText As String = character.Text
					Dim CharacterImage As AnyBitmap = character.ToBitmap(ocrInput)
					Dim CharacterX_location As Integer = character.X
					Dim CharacterY_location As Integer = character.Y
					Dim CharacterWidth As Integer = character.Width
					Dim CharacterHeight As Integer = character.Height
					Dim CharacterOcrAccuracy As Double = character.Confidence
					' Output alternative symbols choices and their probability.
					' Very useful for spellchecking
					Dim Choices() As OcrResult.Choice = character.Choices
				Next character
			Next word
		Next line
	Next paragraph
Next page

<p>IronOCR使用Tesseract 5为它扫描的每个页面返回一个高级结果对象。 此包括每个项目的<strong>位置数据、图像、文本、统计置信度、备选符号选择、字体名称、字体大小、字体装饰、字体粗细和位置</strong>。</p> <ul> <li>页次</li> <li>段落</li> <li>文本行</li> <li>字词</li> <li>单个字符</li> <li>和条形码</li> </ul>

Human Support related to 在 .NET Core 中进行 OCR

直接来自我们开发团队的人工支持

无论是产品、集成还是许可查询,Iron产品开发团队随时准备支持您的所有问题。请联系我们并与Iron开启对话,以便在您的项目中最大限度地利用我们的库。

提问
Image To Text related to 在 .NET Core 中进行 OCR

光学字符识别 (OCR) 读取引擎 — 图像转文本在 OCR .NET SDK

IronOCR (光学字符识别)库使开发人员在将图像转换为文本时获得快速高效的结果。IronOCR 适用于 .NET, VB .NET 和 C#。我们顶级的 .NET 应用程序专为 .NET 框架而设计,专为您 ——开发人员,支持您为项目实现最佳性能。

OCR接收和识别文本文件、条形码、二维码内容等。然而,IronOCR还提供了许多方法,允许您在网络、Windows桌面或控制台.NET项目中添加OCR读取和图像文本,支持几乎无限的图像格式和文件,例如JPG、PNG、GIF、TIFF、BMP、JPEG或PDF。

引擎内部 - IronOCR 提供完美的结果

尽管从图像输出中识别纯文本、字符、行和段落的结果似乎并不那么直观,但你会发现,IronOCR 的结果实际上比你最初想象的要容易得多。IronOCR 扫描图像的对齐情况,使用其噪声去除和滤波器来检查质量和分辨率。它查看其属性,优化 OCR 引擎,并使用经过训练的人工智能网络来识别文本(来自图像)以及任何人类。

即使对计算机来说,OCR也不是一个简单的过程。然而,IronOCR使创建可搜索文档的整体过程变得更快更简单,具有100%的准确性且只需极少的代码行。

兼容 .NET, VB.NET, C#

阅读教程
Support For Languages related to 在 .NET Core 中进行 OCR

支持多种国际语言

软件不受地域限制——企业在跨越国界的同时依靠多种语言来实现他们的成果。同样,只有识别单一语言的光学字符识别(OCR)工具在各方面都是不可接受的!

多语言OCR支持对您意味着什么?

通过提供多种 OCR 功能的多语言 OCR 库,您可以从扫描的 PDF 或扫描的图像创建可搜索的 PDF 文档,并支持多种语言(从法语到中文!)。动态的、可搜索文字的 PDF 文档可以大大节省您的时间和精力,您、您的客户或您的组织可以无限次地使用和重复使用这些文档。

专注于你、你的业务和你的OCR需求,无论是内置还是按需,IronOCR库支持多种语言。你的下一个.NET项目将不再需要担心语言兼容性问题!

无论是阿拉伯语、西班牙语、法语、德语、希伯来语、意大利语、日语、简体中文、繁体中文(普通话)、丹麦语、英语、芬兰语、葡萄牙语、俄语、西班牙语还是瑞典语,您只需告诉我们您所需要的语言,我们就可以为您提供!您可以下载您喜欢的 语言包 或联系我们的24/7支持以获取更多语言。

第一步是使用我们的 NuGet 包安装程序来安装 Windows Visual Studio。

下载语言包
Advanced Image related to 在 .NET Core 中进行 OCR

用于准确读取不完美扫描的图像处理

IronOCR 与其竞争对手有何不同?除了让您轻松添加 OCR 功能、提取文本和扫描旋转的图像外,它还能够从不完美的扫描中进行 OCR 识别!相反,今天市场上的许多现成产品通常是死板且不准确的,注定会在实际的个人和企业应用中失败,因为它们中的大多数只能处理机器打印的、高分辨率的和完全调整好的文本。

IronOCR通过其强大的IronTesseract DLL扩展了Google Tesseract的功能——这是一个本机C# OCR库,具有比免费Tesseract库更高的稳定性和准确性。

放心 - IronOCR 为你覆盖所有需求!

有了最好的工具,即使您有一个不太完美的扫描图像或存储文件夹中的存储图像——IronOCR的图像处理库会清除噪声、旋转、减少失真和偏斜对齐,并提高分辨率和对比度。高级光学字符识别 (OCR) 设置为您——编程人员——提供了生成最佳可搜索结果的工具和代码,一次又一次。

搜索您需要的单词,欣赏高达99.8-100%的准确结果,并且支持无限制的PDF文档、多帧TIFF文件、JPEG和JPEG2000、GIF、PNG、BMP、WBMP、System.Drawing.Image、System.Drawing.Bitmap、System.IO.Streams图像、二进制图像数据(byte[])和更多其他格式!

Tesseract的替代方案
Fast And Polite Behavior related to 在 .NET Core 中进行 OCR

快速且准确 — 从扫描的PDF到扫描旋转的图像

与其他 .NET 框架中的 .NET 应用程序不同,您会发现 IronOCR 的高级光学字符识别在包管理器控制台和识别文本控制台中,使您的用户能够读取多种字体(从 Times New Roman 到任何花哨的或看似难以理解的字体)、粗细和样式,从整张图片或扫描图像中准确读取文本。我们选择图像中某些区域的能力有助于提高速度和准确性。从几行到几段的多线程加速了 OCR 引擎,并允许在多核心机器上读取多个文档。

全程性能支持

我们对速度和准确性的要求不仅限于字符识别过程。实际上,从安装开始,IronOCR 的 .NET OCR 引擎就表现出极高的性能。它是一个易于安装、完整且有详细文档的 .NET 软件库。Visual Studio 有单一的 NuGet 包管理器安装,并且兼容 MVC、WebApp、桌面、控制台和服务器应用程序的多线程操作。

您可以实现 99.8-100% 的 OCR 准确率,无需任何外部网络服务、持续费用或将机密文件发送到互联网。无需繁琐的 C++ 编码,当您需要对多个字符、单词、行、段落、文本和文档进行完整的 PDF OCR 支持时,IronOCR 是明确的选择。

我们为开发者提供最佳选择,帮助他们完善编码,因为IronOCR开箱即用,无需性能调优或大幅修改输入图像。最新版本的IronOCR速度惊人快——速度提升多达十倍,而且错误减少了超过250%。我们升级自己的构建版本,以支持您的目标,提供完美的OCR平台!

查看完整功能列表
Output Content related to 在 .NET Core 中进行 OCR

将OCR结果数据直接导出到您的应用程序

即使在使用移动设备时,我们完美的.NET OCR库也使开发人员能够“无忧无虑”地编写代码,因为IronOCR支持将内容导出为一组简单的直接和复杂文本、机器编码文本、条码数据或结构化对象模型数据。您可以将内容拆分为段落、行、单词、字符和图像字符串结果,直接在您的.NET应用程序中使用。

轻松导出到您的目标应用程序和格式 — XHTML、可搜索文档、HOCR 和 HTML

从源代码到最终结果——如果你不能将结果数据导出到你的应用程序,这些数据将毫无用处。IronOCR了解这一点,并允许你将OCR结果导出为XHTML,以便能够跨更广泛的应用程序范围使用可持续的格式,并集成到复杂的网站中,更不用说更快的加载时间了!

然而,支持并不限于此。将OCR导出为可搜索的PDF文件的功能使您、您的客户和组织能够在需要时轻松存储和检索PDF文件!这尤其有利于当您有一个30页的合同,您可以通过几个关键词在数据库中进行搜索,还使您的公司在展示合规性方面表现良好,因为可搜索的PDF文件被证明对视力受损者是有利的。

除了上述内容外,您还可以将结果导出为OCR格式,该格式表示OCR输出、布局信息和样式信息,并将相关信息嵌入标准HTML中。

了解更多
支持:
  • .NET Framework 4.0及以上版本支持C#、VB、F#
  • Microsoft Visual Studio .NET 开发IDE图标
  • Visual Studio 的 NuGet 安装程序支持
  • JetBrains ReSharper C#语言助手兼容
  • 与Microsoft Azure C# .NET托管平台兼容

许可与定价

免费 社区开发许可证。商业许可证起价$749。

项目 C# + VB.NET 库许可

项目

开发人员 C# + VB.NET 库许可

开发者

组织 C# + VB.NET 库许可

组织

代理C# + VB.NET库授权

机构

SaaS C# + VB.NET库许可

软件即服务

OEM C# + VB.NET 库授权

原始设备制造商

查看完整的许可选项  

来自我们 .NET 社区的 OCR 教程

.NET Tesseract OCR | IronOCR

C# Tesseract 光学字符识别

Jim Baker是Iron公司的开发工程师,负责开发OCR产品。

IronOCR 和 Tesseract 在 .NET 中的比较

吉姆一直是IronOCR开发的领军人物。吉姆设计和构建用于OCR的图像处理算法和读取方法。

查看比较
将文本转换为图像在 .NET 中 | 教程

C# 光学字符识别 ASP.NET

杰玛·贝克福德 - 微软解决方案工程师

从图像中提取文本适用于.NET

了解 Gemma 的团队如何使用 IronOCR 从图像中读取文本以用于他们的归档软件。Gemma 分享了她自己的代码示例。

图像转文本 .NET 教程
数以千计的开发者使用IronOCR来...

会计和财务系统

  • # 收据
  • # 报告
  • # 发票打印
将 PDF 支持添加到 ASP.NET 会计和财务系统中

业务数字化

  • # 文档
  • # 订购与标签
  • # 纸张替代
C# 业务数字化用例

企业内容管理

  • # 内容制作
  • # 文档管理
  • # 内容分发
.NET CMS PDF支持

数据和报告应用程序

  • # 性能跟踪
  • # 趋势图绘制
  • # 报告
C# PDF报告
企业级 .NET 组件开发商 Iron Software

成千上万的公司、政府、中小企业和开发人员都信任Iron软件产品。

Iron的团队在.NET软件组件市场拥有超过10年的经验。

通用电气
福莱
Nexudus
马瓦尔
Equinor
医疗代码
Vireq
澳新