如何使用 IronOCR 在 C# 中讀取照片

This article was translated from English: Does it need improvement?
Translated
View the article in English

處理大量文檔,特別是像 TIFF 文件這樣的掃描圖像時,手動提取文字既費時又容易出錯。 光學字元辨識 (OCR) 技術正是在這種情況下發揮作用,它提供了一種自動方法,可以準確地將影像中的文字轉換為數位資料。 OCR 技術可以處理影像的複雜性,例如掃描的文件或照片,並將其轉換為可搜尋、可編輯的文字。 這不僅加快了文件處理速度,而且與人工轉錄相比,還能確保更準確的資料擷取。

使用 OCR 技術處理 TIFF 等格式的資料(由於其尺寸、色彩深度或壓縮等原因,這些資料可能難以閱讀),可以讓企業和開發人員快速地將大量資料數位化和管理。 借助 IronOCR 的ReadPhoto功能等 OCR 解決方案,開發人員可以從圖像中提取文本,甚至可以執行高級操作,例如搜尋關鍵字或將掃描資料轉換為可搜尋的 PDF。 這項技術對於處理法律文件、檔案或收據的行業尤其有用,因為在這些行業中,高效的資料檢索至關重要。

在本教程中,我們將簡要介紹如何使用ReadPhoto以及如何操作結果物件。 我們還將討論開發人員可能更喜歡使用ReadPhoto而不是 IronOCR 的標準Read的場景。

若要使用此功能,您還必須安裝IronOcr.Extension.AdvancedScan軟體套件。

快速入門:使用 ReadPhoto 從複雜圖像中提取文字

快速上手:使用 IronOCR 的 ReadPhoto 方法對加載了圖像幀的 OcrInput 進行操作,即可一次提取所有文字和區域。 它針對 TIFF、GIF 和類似的圖片密集型格式進行了最佳化,可提供流暢的 OCR 體驗。

Nuget Icon立即開始使用 NuGet 建立 PDF 檔案:

  1. 使用 NuGet 套件管理器安裝 IronOCR

    PM > Install-Package IronOcr

  2. 複製並運行這段程式碼。

    var result = new IronTesseract().ReadPhoto(new OcrInput().LoadImageFrame("photo.tiff", 0));
  3. 部署到您的生產環境進行測試

    立即開始在您的專案中使用 IronOCR,免費試用!
    arrow pointer

閱讀照片範例

使用 IronOCR 讀取tiffgif等高品質照片格式相對簡單。 首先,我們建立一個新變數並將其賦值為OcrInput ,然後使用LoadImageFrame載入映像。 最後,我們使用ReadPhoto方法並得到結果。

[{i:(

  • 由於 Tiff 格式影像包含多個幀,因此需要PageNumber參數。 此外,該索引從 0 開始,而不是從 1 開始。
  • 目前此方法僅適用於英文、中文、日文、韓文和拉丁字母。
  • 在 .NET Framework 上使用進階掃描功能需要專案在 x64 架構上運作。 @@--括號關閉--@@

輸入

由於大多數瀏覽器本身不支援 TIFF 格式,您可以從這裡下載 TIFF 輸入檔。 為了顯示 TIFF 文件,我將其轉換為 WEBP 格式。

Input

程式碼

:path=/static-assets/ocr/content-code-examples/how-to/read-photo-read-photo.cs
using IronOcr;
using IronSoftware.Drawing;
using System;

// Instantiate OCR engine
var ocr = new IronTesseract();

using var inputPhoto = new OcrInput();
inputPhoto.LoadImageFrame("ocr.tiff", 0);

// Read photo
OcrPhotoResult result = ocr.ReadPhoto(inputPhoto);

// Index number refer to region order in the page
int number = result.TextRegions[0].PageNumber;

// Extract the text in the first region
string textinregion = result.TextRegions[0].TextInRegion;

//Extract the co_ordinates of the first text region
Rectangle region = result.TextRegions[0].Region;

var output = $"Text in First Region: {textinregion}\n"
             + $"Text Region:\n"
             + $"Starting X: {region.X}\n"
             + $"Starting Y: {region.Y}\n"
             + $"Region Width: {region.Width}\n"
             + $"Region Height: {region.Height}\n"
             + $"Result Confidence: {result.Confidence}\n\n"
             + $"Full Scnned Photo Text: {result.Text}";

Console.WriteLine(output);
Imports Microsoft.VisualBasic
Imports IronOcr
Imports IronSoftware.Drawing
Imports System

' Instantiate OCR engine
Private ocr = New IronTesseract()

Private inputPhoto = New OcrInput()
inputPhoto.LoadImageFrame("ocr.tiff", 0)

' Read photo
Dim result As OcrPhotoResult = ocr.ReadPhoto(inputPhoto)

' Index number refer to region order in the page
Dim number As Integer = result.TextRegions(0).PageNumber

' Extract the text in the first region
Dim textinregion As String = result.TextRegions(0).TextInRegion

'Extract the co_ordinates of the first text region
Dim region As Rectangle = result.TextRegions(0).Region

Dim output = $"Text in First Region: {textinregion}" & vbLf & $"Text Region:" & vbLf & $"Starting X: {region.X}" & vbLf & $"Starting Y: {region.Y}" & vbLf & $"Region Width: {region.Width}" & vbLf & $"Region Height: {region.Height}" & vbLf & $"Result Confidence: {result.Confidence}" & vbLf & vbLf & $"Full Scnned Photo Text: {result.Text}"

Console.WriteLine(output)
$vbLabelText   $csharpLabel

輸出

output

Text :從 OCR 輸入中提取的文字。 Confidence :一個"雙精度"屬性,表示每個字元平均值的統計準確度置信度,1 為最高,0 為最低。 TextRegions :一個" TextRegions "屬性的列表,指示 OCR 文字及其在輸入中的位置。 在上面的範例中,我們列印了影格編號以及包含文字的矩形。


ReadPhotoRead的差別

ReadPhoto方法與標準Read的主要差異在於結果物件及其接受的檔案格式。 LoadImageFrame函數僅接受tiffgif ,基於多種原因不支援jpeg等格式。

TIFF 和 JPEG 影像的比較

TIFF 檔案格式是無損的,通常用於將多個頁面和多個幀壓縮成單一格式。 它通常用於高品質、多影像儲存(例如法律文件、醫學影像)。 它比標準 JPEG 格式複雜得多,因此需要採用不同的方法才能從中完全提取文字。

此外,TIFF 影像使用不同的壓縮方法,因此 IronOCR 必須使用專門的方法來破解文字。

以下是TIFF和JPEG格式的進一步比較。

特點 TIFF(帶標籤的圖像檔案格式) JPG/JPEG(聯合影像專家小組)
壓縮 無損或未壓縮(保持音質) 有損壓縮(以降低品質為代價減少檔案大小)
文件大小 大號(由於品質高且可選無壓縮) 體積更小,針對網頁使用進行了最佳化,載入速度更快
影像品質 高品質(非常適合專業用途,保留所有細節) 較低(因有損壓縮,部分音質有所損失)
色深 支援高色彩深度(每聲道最高可達 16 位元或 32 位元) 24 位元色彩(1670 萬種顏色)
用例 專業攝影、出版、掃描、存檔 網路圖片、社群媒體、日常照片
透明度 支援透明度和 Alpha 通道 支援透明度
編輯 適合多次編輯(重新儲存不會損失品質) 反覆編輯和保存會導致品質下降。
相容性 專業軟體廣泛支持 在所有平台和裝置上通用
卡通 不支援動畫 不支援動畫
元數據 儲存大量元資料(EXIF、圖層等) 儲存 EXIF 元數據,但功能較為有限。

不同場景

開發人員必須考慮生產環境中的每一個使用場景,以進一步優化並使應用程式高效運作。 雖然ReadPhoto適用於像上面這樣的TIFF等複雜影像,但處理結果的速度會很慢。 另一方面, JPEG影像品質可能較低,但處理速度通常更快。 但是,如果影像品質不佳(例如存在雜訊),則 OCR 的置信度會很低。

使用OcrPhotoResults或任何使用IOcrResult介面的類別中的confidence屬性,可以了解結果的準確程度,從而使開發人員能夠根據需要進行測試、迭代和最佳化。

開發人員應在效率和準確性之間找到平衡點,確保影像達到一定的一致性閾值。

常見問題解答

C# 中的 ReadPhoto 方法是什麼?

IronOCR for C# 中的 ReadPhoto 方法旨在從 TIFF 和 GIF 等複雜圖像格式中提取文字,並使用光學字元識別 (OCR) 將其轉換為可搜尋的數位資料。

為什麼要使用 ReadPhoto 而不是標準的讀取功能?

ReadPhoto 已針對處理 TIFF 和 GIF 等複雜影像格式進行最佳化,這些格式因其壓縮和品質特性而需要特殊處理,因此相較於標準的讀取功能,ReadPhoto 更適合處理這些類型的影像。

如何確保在 C# 中使用 OCR 進行最佳的文字擷取?

為了確保在 C# 中使用 OCR 擷取最佳的文字,請考慮影像品質與格式。使用 IronOCR 的 ReadPhoto 方法來處理高品質和複雜的格式,例如 TIFF,可以提高準確性和效率。

ReadPhoto 方法支援哪些影像格式?

IronOCR 中的 ReadPhoto 方法支援 TIFF 和 GIF 等複雜圖像格式,非常適合高品質的文字擷取任務。

使用 OCR 轉換 TIFF 檔案有什麼好處?

使用 IronOCR 的 ReadPhoto 方法使用 OCR 轉換 TIFF 檔案,可以將高品質影像轉換為可搜尋、可編輯的數位資料,有利於文件管理和歸檔。

OCR 技術如何增強文件處理能力?

OCR 技術可將影像中的文字自動轉換為數位資料,大幅提升處理速度與精確度,尤其是在管理大量文件時。

哪些因素會影響 OCR 中影像處理方法的選擇?

影響選擇的因素包括影像格式與品質、處理速度以及特定使用個案需求。IronOCR 的 ReadPhoto 非常適合高品質、複雜的影像,而其他方法對於較簡單的格式可能更有效率。

IronOCR 的 ReadPhoto 方法可以用於彩色影像嗎?

是的,IronOCR 的 ReadPhoto 方法可以處理彩色圖像,特別是 TIFF 和 GIF 等格式的圖像,可以在全彩文件中準確提取文字。

置信度 "屬性在 OCR 結果中扮演什麼角色?

OCR 結果中的「置信度」屬性可提供文字擷取精確度的統計量度,協助開發人員評估數位化資料的可靠性。

開發人員如何在應用程式中使用 ReadPhoto 的 OCR 結果?

開發人員可透過存取 OcrPhotoResult 屬性來使用 IronOCR 的 ReadPhoto 所產生的 OCR 結果,其中包括擷取的文字、置信度分數以及文字區域,進而進行進一步的資料處理與應用程式整合。

Curtis Chau
技術作家

Curtis Chau 擁有卡爾頓大學計算機科學學士學位,專注於前端開發,擅長於 Node.js、TypeScript、JavaScript 和 React。Curtis 熱衷於創建直觀且美觀的用戶界面,喜歡使用現代框架並打造結構良好、視覺吸引人的手冊。

除了開發之外,Curtis 對物聯網 (IoT) 有著濃厚的興趣,探索將硬體和軟體結合的創新方式。在閒暇時間,他喜愛遊戲並構建 Discord 機器人,結合科技與創意的樂趣。

準備好開始了嗎?
Nuget 下載 5,167,857 | Version: 2025.11 剛發表