跳過到頁腳內容

開始使用 .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。

支持 .NET Framework、Standard、Core、Xamarin 和 Mono 上的 Tesseract 3、Tesseract 4 和 Tesseract 5。

探索 IronTesseract C# OCR 中文指南

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 支援125種國際語言。 除了預設安裝的英語外,其他語言包可以通過NuGet添加到您的 .NET 專案中,或從我們的語言頁面下載。

大多數語言有快速、標準(推薦)和最佳品質可供選擇。 最佳品質選項可能提供更準確的結果,但處理時間也會較長。

探索使用 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 掃描的每個頁面返回一個先進的結果對象。 這包含位置數據、圖像、文本、統計置信度、替代符號選擇、字體名稱、字體大小裝飾、字體粗細和位置,每個項目如下:

  • 頁面
  • 段落
  • 文本行
  • 單詞
  • 個別字符
  • 條形碼

探索如何使用 IronOCR 讀取 OCR 結果

Human Support related to OCR 在 .NET Core 中

直接從我們的開發團隊獲得人性化支持

無論是產品、集成還是許可問題,Iron 產品開發團隊隨時支持您的所有問題。與 Iron 取得聯繫,開始對話,以便在項目中充分利用我們的庫。

提問
Image To Text related to OCR 在 .NET Core 中

光學字符識別 (OCR) 閱讀引擎 — 圖像到文字,使用 OCR .NET SDK

IronOCR(光學字符識別)庫讓開發人員在將圖像轉換為文字時快速高效。 IronOCR 與 .NET、VB .NET 和 C# 一起工作。我們的頂級 .NET 應用程式針對 .NET 框架專門設計,支持開發者在項目中獲得最佳性能。

OCR 接收並識別文字文件、條碼、QR 內容等。不過,IronOCR 也提供了多種方法,允許您將 OCR 閱讀和來自圖像的文字添加到網絡、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 OCR 在 .NET Core 中

支持多種國際語言

軟件並不局限於地理邊界——企業跨越國界運作並依賴多種語言來達成成果。同樣,一個僅在單一語言中執行文件識別的光學字符識別(OCR)工具在各方面都是一個重大否定!

多語言 OCR 支持對你意味著什麼?

擁有一個提供多種 OCR 功能的多語言 OCR 庫,您可以從掃描的 PDF 或掃描的圖像中創建一個可搜索的 PDF 文檔(從法語到中文!)。 您的時間和精力將變得更加高效,您、您的客戶或您的組織可以無限次使用和重用這個動態的、可搜索的 PDF 文檔。

我們以您、您的業務和您的 OCR 需求為重點,無論是內建還是應要求,IronOCR 庫支持眾多語言。 您的下一個 .NET 項目可以不再為語言兼容性問題擔憂!

無論是阿拉伯語、西班牙語、法語、德語、希伯來語、意大利語、日語、簡體中文、繁體中文(國語)、丹麥語、英語、芬蘭語、葡萄牙語、俄語、瑞典語,只要您命名我們便為您提供! 您可以下載您偏好的語言包或聯繫我們的 24/7 支持以獲得更多語言。

第一步是使用我們的 NuGet 包安裝程序安裝於 Windows Visual Studio。

下載語言包
Advanced Image related to OCR 在 .NET Core 中

圖像處理以準確讀取不完美的掃描

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 圖像、二進制圖像數據(字節 [])等一切之外的支持感到失望!

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

快速且準確 —— 從掃描的 PDF 到掃描旋轉的圖像

不同於 .NET 框架中的其他 .NET 應用,您會發現 在 IronOCR 的包管理器控制台和識別文本控制台中的高級光學字符識別,給您的用戶提供了讀取多個單詞字體(從 Times New Roman 到任何花俏或難以理解的字體)字重和樣式的能力,讓 整圖像或掃描圖像的準確文本閱讀變得更好。我們選擇圖像某些區域的能力有助於提高速度和準確性。從幾行到幾段的多線程加速了 OCR 引擎的運行,並允許在多核心機器上讀取多份文件。

由始至終性能支持

我們對於速度和準確性的要求不僅限於字符識別過程。相反,從安裝開始就有所改善,因為 IronOCR 的 .NET OCR 引擎是一個易於安裝,完整且文檔完備的 .NET 軟件庫。 Visual Studio 上有一個單一的 NuGet 包管理器安裝,以及與 MVC、WebApp、桌面、控制台和服務器應用程序的多線程兼容性。

您可以實現 99.8-100% 的 OCR 準確性無需任何外部 web 服務,持續的費用或發送機密文檔到互聯網上。 IronOCR 在需要時候,是滿足您所需的完整 PDF OCR 支持的明智選擇,能夠支持多字符、字詞、行、段落、文本和文檔,而不需要繁瑣的 C++ 編碼。

我們為尋求完善代碼的開發人員提供了最好的選擇,因為 IronOCR 開箱即用無需性能調優或對輸入圖像進行大量修改。 最新版本的 IronOCR 工作速度驚人 —— 比以前的構建快十倍,且 產生的錯誤數量减少了 250%。 我們更新我們自己的構建以支持您的目標提供完美的平台,以便實現 OCR!

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

直接將 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 - 微軟解決方案工程師

.NET 的圖像文本

學習 Gemma 的團隊如何使用 IronOCR 從影像中讀取文本以用於他們的檔案存檔軟件。Gemma 分享了她自己的代碼樣本。

.NET 教程中的圖片到文本
數以千計的開發者使用 IronOcr 用於...

會計和財務系統

  • # 收據
  • # 報告
  • # 發票打印
向 ASP.NET 會計和財務系統添加 PDF 支持

商務數字化

  • # 文件
  • # 訂單和標籤
  • # 紙質替代
C# 商務數字化用例

企業內容管理

  • # 內容生產
  • # 文档管理
  • # 內容分發
.NET CMS PDF 支持

數據和報告應用

  • # 性能跟踪
  • # 趨勢映射
  • # 報告
C# PDF 報告
Iron Software 企業 .NET 組件開發者

數千個公司、政府、中小型企業和開發人員都信任 Iron 軟件產品。

Iron 的團隊有超過 10 年的 .NET 軟件組件市場經驗。

ANZ
Nexudus
Vireq
Marval
Foley
GE
Equinor
Medcode