如何使用IronOCR讀取照片
在處理大量文件時,特別是 TIFF 檔這類的掃描影像,人工擷取文字可能會耗時且容易產生人為錯誤。 這裡是光學文字識別的地方(光學字符識別)提供了一種自動化的方法,可以準確地將圖像中的文字轉換為數位資料。 OCR 技術可以處理來自掃描文件或照片等圖像的複雜性,並將它們轉換為可搜尋、可編輯的文字。 這不僅加快了文件處理速度,還確保比人工轉錄提取更準確的數據。
使用 OCR 處理像 TIFF 這樣的格式,可能由於其大小、色深或壓縮而難以閱讀,使企業和開發人員能夠快速數位化和管理大量數據。 使用像 IronOCR 的 ReadPhoto
功能這樣的光學字符識別解決方案,開發人員可以從圖像中提取文本,甚至可以執行高級操作,例如搜索關鍵字或將掃描的數據轉換為可搜尋的 PDF。 這項技術特別適用於處理法律文件、檔案或收據的行業,因為在這些領域中,有效的數據檢索至關重要。
在本教程中,我們將簡要提供輸入和一個示例,說明如何使用 ReadPhoto
以及如何操作結果對象。 以及開發人員可能在某些情況下使用 ReadPhoto
而不是 IronOCR 的標準 Read
。
如何使用IronOCR讀取照片
- 下載用於讀取照片的 C# 庫
- 匯入影像進行處理
- 根據圖像類型使用適當的匯入方法
- 使用
讀取照片
從影像中提取資料的方法 - 訪問OcrPhotoResult查看和操作提取數據的屬性
立即在您的專案中使用IronOCR,並享受免費試用。
若要使用此功能,您還需要安裝IronOcr.Extension.AdvancedScan套件。
讀取照片範例
使用 IronOCR 讀取高品質的照片格式,例如 tiff
和 gif
,相對來說是很簡單的。 首先,我們創建一個新變數並將其指定為 OcrInput
,然後使用 LoadImageFrame
加載圖像。 最後,我們使用 ReadPhoto
方法並獲取結果。
[{我(
- 由於 Tiff 在單一圖像中包含多個幀,因此需要使用
frameNumber
參數。 此外,索引從 0 開始,而不是從 1 開始。 - 該方法目前僅適用於英語、中文、日語、韓語和拉丁字母。
-
使用高級掃描功能在 .NET Framework 上運行需要項目在 x64 架構上運行。
)}]
輸入
由於大多數瀏覽器不本地支持TIFF格式,您可以下載TIFF輸入這裡. 為了顯示 TIFF 檔案,我將其轉換為 WEBP。
代碼
: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].FrameNumber;
// 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).FrameNumber
' 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)
輸出
從OCR輸入中提取的文本。
信心:一個「雙精度浮點」屬性,表示每個字元平均的統計準確性信心水平,其中1表示最高,0表示最低。
TextRegions:屬性「TextRegions」的列表,指示 OCR 文本及其在輸入中的位置。 在上面的例子中,我們打印了幀號以及包含文本的矩形。
ReadPhoto
與 Read
的差異
readPhoto
方法與標準 read
方法的主要區別在於其結果物件和接受的檔案格式。 LoadImageFrame
專門只接受 tiff
和 gif
格式,不接受像 Jpeg
這樣的格式,這有幾個原因。
Tiff 和 Jpg 圖像之間的比較
Tiff 作為一種文件格式是無損的,通常用於將多個頁面和多個幀壓縮成一個單一的格式。 通常用於高品質的多圖像存儲(例如法律文件、醫療圖像). 它比標準的 jpg 格式要複雜得多,因此需要以不同的方式從中完整提取文本。
此外,Tiff 圖像僅使用不同的壓縮方式,因此 IronOCR 必須使用專門的方法來解析文本。
以下是對tiff和jpg的進一步比較。
功能 | TIFF(標記圖像文件格式) | JPG/JPEG(聯合圖像專家小組) |
---|---|---|
壓縮 | 無損或未壓縮(保留品質) | 有損壓縮(降低品質以減小文件大小) |
檔案大小 | 大(由於高品質和可選的無壓縮選項) | 更小,優化用於網頁使用和快速加載 |
圖像品質 | 高(適合專業使用,保留所有細節) | 較低(由於有損壓縮,某些品質會受損) |
色深 | 支援高色深(每通道高達 16 位元或 32 位元) | 24位元色彩(1670萬種顏色) |
使用案例 | 專業攝影、出版、掃描、存檔 | 網頁圖片、社交媒體、日常照片 |
透明度 | 支援透明度與 Alpha 通道 | 是否不是支持透明度 |
編輯 | 適合多次編輯(重新保存不會降低品質) | 品質在反覆編輯和儲存中下降 |
相容性 | 在專業軟體中廣泛支援 | 在所有平台和設備上普遍支援 |
動畫 | 不支持動畫 | 不支持動畫 |
中繼資料 | 儲存廣泛的中繼資料(EXIF、圖層等)。 | 儲存 EXIF 元數據,但功能較為有限 |
不同情景
開發人員必須考慮每個生產環境的使用情況,以進一步優化並使他們的應用程式有效地運行。 儘管 readPhoto
適合處理如上所述的複雜圖像,例如 Tiff
,但結果處理會較慢。 另一方面,jpg
可能质量较低,但操作通常会更快。 然而,影像品質如有噪點可能會導致OCR的信心度較低。
使用 OcrPhotoResults
或任何使用接口 IOcrResult
的類別中的 confidence
屬性,可以讓您了解結果的準確性,讓開發人員可以根據需要進行測試、重複和優化。
開發者應該在效率與準確性之間找到一個適當的平衡,確保影像達到一定的一致性閾值。