跳至页脚内容

从.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
Install-Package IronOcr

IronOCR 的独特之处在于它能够自动检测和读取不完全扫描图像和 PDF 文档中的文本。 IronTesseract 类提供了最简单的 API。

尝试其他代码示例,以获得对 C# OCR 操作的精细控制。

IronOCR 在任何平台上都提供了目前已知的最先进的 Tesseract 版本,速度更快、精度更高,并提供了本地 DLL 和 API。

支持 Tesseract 3、Tesseract 4 和 Tesseract 5,适用于 .NET Framework、Standard、Core、Xamarin 和 Mono。

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
Install-Package IronOcr

IronOCR 语言支持

使用 IronOCR 探索多种语言的 OCR。

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
Install-Package IronOcr

IronOCR 使用 Tesseract 5(魔方 5)为其扫描的每个页面返回一个高级结果对象。 其中包含每个符号的位置数据、图像、文本、统计置信度、替代符号选择、字体名称、字体大小装饰、字体权重和位置

  • 页码
  • 段落
  • 文本行
  • 字数
  • 个性
  • BarCode

探索如何使用 IronOCR 阅读 OCR 结果

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接收和识别文本文件、条形码、QR内容等。但是,IronOCR还提供了许多方法,允许您将OCR读取和图像中的文本添加到web、windows桌面或控制台.NET项目中,可以支持几乎无限的图像格式和文件,例如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支持获取更多语言。

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

下载语言包
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框架内的应用程序不同,您会发现IronOCR的软件包管理器控制台和识别文本控制台中的高级光学字符识别赋予您的用户读取多种字体(从Times New Roman到任何花哨或难以理解的字体)、粗细和样式的能力, 从完整图像或扫描图像中准确读取文本。我们能够选择图像的某些区域以提高速度和准确性。从几行到几段的多线程加快了OCR引擎的速度,并允许在多核机器上读取多个文件。

始终如一的性能支持

我们对于速度和准确性的声称不仅限于字符识别的过程。事实上,性能改进从安装开始,因为IronOCR的.NET OCR引擎易于安装,是一个完整且文档详尽的.NET软件库。在Visual Studio中有一个单独的NuGet包管理器安装,并与MVC、WebApp、桌面、控制台和服务器应用程序兼容。

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

我们为寻求提升其编码的开发人员提供最佳选择,因为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 图标
  • NuGet 安装程序支持 Visual Studio
  • JetBrains ReSharper C# 语言助手兼容
  • Microsoft Azure C# .NET 托管平台兼容

许可和定价

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

项目 C# + VB.NET 库授权

项目

开发者C# + VB.NET库许可

开发者

组织C# + VB.NET库许可

组织

代理商C# + VB.NET库许可

代理商

SaaS C# + VB.NET库许可

SaaS

OEM C# + VB.NET库许可

OEM

查看完整的许可证选项  

来自 .NET 社区的 OCR 教程

.NET Tesseract OCR | IronOCR

C# Tesseract OCR

Jim Baker 是 Iron 为 OCR 产品进行开发的开发工程师

IronOCR 与 Tesseract 在 .NET 中的比较

Jim 一直是 IronOCR 开发的领导人物。 Jim 设计和构建 OCR 的图像处理算法和读取方法。

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

C# OCR ASP.NET

Gemma Beckford - Microsoft 解决方案工程师

用于 .NET 的图像文本提取

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

图像转文本 .NET 教程
成千上万的开发者使用 IronOcr 来…

会计和金融系统

  • # 收据
  • # 报告
  • # 发票打印
向ASP.NET会计和金融系统添加PDF支持

业务数字化

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

企业内容管理

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

数据和报告应用程序

  • # 性能跟踪
  • # 趋势映射
  • # 报告
C# PDF报告
Iron Software企业.NET组件开发者

数千家企业、政府、中小企业和开发者信赖Iron软件产品。

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

GE
Equinor
Medcode
Nexudus
Vireq
Marval
Foley
ANZ