如何在 C# 中定義影像的特定 OCR 區域;。
要在 C# 中從圖像的特定區域擷取文字,請使用 IronOCR 的 Rectangle 物件,透過指定 x/y 座標、width 和 height 來定義精確的區域,然後將其傳送至 LoadImage 方法,以進行有針對性的 OCR 處理。
快速入門:從特定影像區域擷取文字。
立即開始使用 NuGet 建立 PDF 檔案:
使用 NuGet 套件管理器安裝 IronOCR
複製並運行這段程式碼。
using IronOcr; using IronSoftware.Drawing; // 1. Install IronOCR via NuGet: Install-Package IronOcr var ocr = new IronTesseract(); using var input = new OcrInput(); // 2. Create a Rectangle with coordinates var region = new Rectangle(x: 215, y: 1250, width: 1335, height: 280); // 3. Load image with region input.LoadImage("image.png", region); // 4. Extract text var result = ocr.Read(input); Console.WriteLine(result.Text);部署到您的生產環境進行測試
通常情況下,你只需要從圖像的一小部分中提取文本,例如發票上的總金額或表單中的特定欄位。 掃描整個文件效率低下,並且可能因捕獲無關文字而引入錯誤。
IronOCR 可讓您透過指定要掃描的精確矩形區域來提高精確度、效能和準確性。 本指南提供了逐步演練,指導您如何定義特定的 OCR 區域、從中提取文本,並透過視覺方式驗證您的座標是否適用於您的 OCR 任務。
IronOCR 入門指南
!{--01001100010010010100001001010010010000010101001001011001010111110101001101010100010001010101010 10100010111110101010001010010010010010100000101001100010111110100001001001100010011111010000100100110001001111010101
如何定義影像中的特定OCR區域
- 下載用於定義 OCR 區域的 C# 庫
- 實例化 OCR 引擎
- 以矩形框標示OCR區域。
- 使用
LoadImage載入圖像以及定義的矩形區域 - 存取
OcrResult屬性,以檢視和操作擷取的資料
如何在特定區域執行 OCR? 若要定義特定的 OCR 區域,您可以從 IronSoftware.Drawing 命名空間建立一個`Rectangle`物件。 此物件需要四個值:`x`座標、`y`座標、`width`和`height`,全部以像素為單位。 (`x`, `y`) 座標代表您所需區域的左上角。 當您使用`LoadImage`載入映像時,您需要將此`Rectangle`作為第二個參數傳遞。 IronOCR 隨後會將 OCR 過程限制在該邊界框內的像素範圍內。 區域 OCR 在處理結構化文件時特別有用,例如 [發票](https://ironsoftware.com/csharp/ocr/examples/read-table-in-document/)、[掃描表單](https://ironsoftware.com/csharp/ocr/examples/read-scanned-document/),或 [身分證明文件](https://ironsoftware.com/csharp/ocr/troubleshooting/identity-documents/),在這些文件中,特定資訊總是出現在可預測的位置。 透過將 OCR 限制在相關區域,您可以大幅提升處理速度,並降低不相關文字所造成的誤判。 若要尋找 `Rectangle` 的座標,您可以使用 MS Paint 等簡單的影像編輯器。 開啟輸入的影像,將滑鼠懸停在指定區域的左上角和右下角,並記下 (`x`, `y`) 像素座標。 然後您可以計算矩形的屬性:(`x1`, `y1`, `width`, `height`), 其中 `width` = `x2`-`x1` 和 `height` = `y2`-`y1`.測試時應使用何種圖像? 我們將使用一張包含三個段落的範例圖片。我們的目標是只提取第二個段落,忽略其餘文本。 這展示了一種常見的情況,您需要從較大的文件中抽取特定欄位或部分。
如何在程式碼中實現區域 OCR? 實作包括建立一個 [`OcrInput` 物件](https://ironsoftware.com/csharp/ocr/examples/csharp-ocr-input-for-iron-tesseract/),並載入您的圖片與指定的矩形區域。 此方法適用於各種影像格式,包括 [JPG、PNG、GIF、TIFF 和 BMP](https://ironsoftware.com/csharp/ocr/how-to/input-images/)。 ```csharp :path=/static-assets/ocr/content-code-examples/how-to/ocr-region-of-an-image.cs ``` 針對更複雜的情況,您可以在同一個影像中定義多個區域。 這在處理多欄位的表單或文件中的 [ 表格](https://ironsoftware.com/csharp/ocr/how-to/read-table-in-document/)時特別有用: ```csharp using IronOcr; using IronSoftware.Drawing; var ocr = new IronTesseract(); using var input = new OcrInput(); // Define multiple regions for different form fields var nameField = new Rectangle(x: 100, y: 200, width: 300, height: 50); var dateField = new Rectangle(x: 100, y: 300, width: 200, height: 50); var amountField = new Rectangle(x: 400, y: 500, width: 150, height: 50); // Load the same image multiple times with different regions input.LoadImage("form.png", nameField); var nameResult = ocr.Read(input); input.Clear(); input.LoadImage("form.png", dateField); var dateResult = ocr.Read(input); input.Clear(); input.LoadImage("form.png", amountField); var amountResult = ocr.Read(input); // Process each field separately Console.WriteLine($"Name: {nameResult.Text}"); Console.WriteLine($"Date: {dateResult.Text}"); Console.WriteLine($"Amount: {amountResult.Text}"); ```我可以期待什麼結果? 從控制台輸出可以看出,只有第二個段落被 OCR 處理了。 這種有針對性的方法可確保影像其他部分的不相關文字不會干擾您的成果。
區域 OCR 的精確度取決於幾個因素: - **影像品質**:解析度較高的影像通常會產生較好的結果。 請考慮使用 [DPI 設定](https://ironsoftware.com/csharp/ocr/how-to/dpi-setting/)來最佳化您的圖像。 - **文字方向**:確保文字正確對齊。 如有需要,請使用 [頁面旋轉偵測](https://ironsoftware.com/csharp/ocr/how-to/detect-page-rotation/)。 - **對比和清晰度**:套用[影像修正篩選器](https://ironsoftware.com/csharp/ocr/how-to/image-quality-correction/)來增強文字的可讀性。如何驗證我的座標是否正確? 為了確保您已為輸入影像選擇了正確的座標,您可以視覺化您定義的**ContentArea** 。 一個簡單的方法是在輸入影像上繪製矩形,然後使用`StampCropRectangleAndSaveAs`將其另存為新檔案。 這有助於您調試和微調坐標,以獲得最佳性能。 當您處理 [ 複雜佈局](https://ironsoftware.com/csharp/ocr/examples/read-table-in-document/),或需要 [ 高亮特定文字區域](https://ironsoftware.com/csharp/ocr/how-to/highlight-texts-as-images/)以確保品質時,此視覺化技術尤其有用。 這是在上面的範例輸入影像上繪製指定邊界框後的輸出影像。我該如何視覺化選取的區域? ```csharp :path=/static-assets/ocr/content-code-examples/how-to/ocr-region-of-an-image-highlighted.cs ```視覺化會是什麼樣子?
淺藍色矩形框表示我們已經正確地提取第二個段落進行處理。何時應該使用區域 OCR? 區域 OCR 是幾種常見情況的理想選擇: 1.**表單處理**:從資料出現在一致位置的標準化表格中抽取特定欄位時。 2.**發票處理**:在不處理整個文件的情況下,擷取特定值,例如總計、日期或發票號碼。 3.**授權牌**:使用 [車牌辨識](https://ironsoftware.com/csharp/ocr/how-to/read-license-plate/)時,請僅著重於車牌區域。 4.**身分證明文件**:從[護照](https://ironsoftware.com/csharp/ocr/how-to/read-passport/)或身分證中擷取特定欄位。 5.**螢幕截圖**:在 [ 螢幕快照](https://ironsoftware.com/csharp/ocr/how-to/read-screenshot/)中擷取特定 UI 元素的文字時。 ## 區域 OCR 的最佳實務 為了達到區域 OCR 的最佳效果: 1.**加入襯墊**:在您的文字周圍加入一小段緩衝區,以確保不會在邊緣切掉任何字元。 2.**使用樣本影像進行測試**:在進行大批量處理之前,請務必使用具有代表性的樣品來驗證您的座標。 3.**處理變化**:考慮到掃描文件中輕微的位置變化,請將您的區域做得比需要的稍微大一些。 4.**最佳化效能**:對於 [多執行緒處理](https://ironsoftware.com/csharp/ocr/how-to/async/),請平行處理不同的區域。 5.**監控信心**:檢查[結果置信度分數](https://ironsoftware.com/csharp/ocr/how-to/tesseract-result-confidence/)以確保準確性。 透過將 OCR 處理集中在特定區域,您可以大幅提升文字擷取任務的速度與精確度。 這種有針對性的方法對於在您的 .NET 應用程式中建立有效率的文件處理工作流程至關重要。

如何在程式碼中實現區域 OCR? 實作包括建立一個 [`OcrInput` 物件](https://ironsoftware.com/csharp/ocr/examples/csharp-ocr-input-for-iron-tesseract/),並載入您的圖片與指定的矩形區域。 此方法適用於各種影像格式,包括 [JPG、PNG、GIF、TIFF 和 BMP](https://ironsoftware.com/csharp/ocr/how-to/input-images/)。 ```csharp :path=/static-assets/ocr/content-code-examples/how-to/ocr-region-of-an-image.cs ``` 針對更複雜的情況,您可以在同一個影像中定義多個區域。 這在處理多欄位的表單或文件中的 [ 表格](https://ironsoftware.com/csharp/ocr/how-to/read-table-in-document/)時特別有用: ```csharp using IronOcr; using IronSoftware.Drawing; var ocr = new IronTesseract(); using var input = new OcrInput(); // Define multiple regions for different form fields var nameField = new Rectangle(x: 100, y: 200, width: 300, height: 50); var dateField = new Rectangle(x: 100, y: 300, width: 200, height: 50); var amountField = new Rectangle(x: 400, y: 500, width: 150, height: 50); // Load the same image multiple times with different regions input.LoadImage("form.png", nameField); var nameResult = ocr.Read(input); input.Clear(); input.LoadImage("form.png", dateField); var dateResult = ocr.Read(input); input.Clear(); input.LoadImage("form.png", amountField); var amountResult = ocr.Read(input); // Process each field separately Console.WriteLine($"Name: {nameResult.Text}"); Console.WriteLine($"Date: {dateResult.Text}"); Console.WriteLine($"Amount: {amountResult.Text}"); ```我可以期待什麼結果? 從控制台輸出可以看出,只有第二個段落被 OCR 處理了。 這種有針對性的方法可確保影像其他部分的不相關文字不會干擾您的成果。
區域 OCR 的精確度取決於幾個因素: - **影像品質**:解析度較高的影像通常會產生較好的結果。 請考慮使用 [DPI 設定](https://ironsoftware.com/csharp/ocr/how-to/dpi-setting/)來最佳化您的圖像。 - **文字方向**:確保文字正確對齊。 如有需要,請使用 [頁面旋轉偵測](https://ironsoftware.com/csharp/ocr/how-to/detect-page-rotation/)。 - **對比和清晰度**:套用[影像修正篩選器](https://ironsoftware.com/csharp/ocr/how-to/image-quality-correction/)來增強文字的可讀性。如何驗證我的座標是否正確? 為了確保您已為輸入影像選擇了正確的座標,您可以視覺化您定義的**ContentArea** 。 一個簡單的方法是在輸入影像上繪製矩形,然後使用`StampCropRectangleAndSaveAs`將其另存為新檔案。 這有助於您調試和微調坐標,以獲得最佳性能。 當您處理 [ 複雜佈局](https://ironsoftware.com/csharp/ocr/examples/read-table-in-document/),或需要 [ 高亮特定文字區域](https://ironsoftware.com/csharp/ocr/how-to/highlight-texts-as-images/)以確保品質時,此視覺化技術尤其有用。 這是在上面的範例輸入影像上繪製指定邊界框後的輸出影像。我該如何視覺化選取的區域? ```csharp :path=/static-assets/ocr/content-code-examples/how-to/ocr-region-of-an-image-highlighted.cs ```視覺化會是什麼樣子?
淺藍色矩形框表示我們已經正確地提取第二個段落進行處理。何時應該使用區域 OCR? 區域 OCR 是幾種常見情況的理想選擇: 1.**表單處理**:從資料出現在一致位置的標準化表格中抽取特定欄位時。 2.**發票處理**:在不處理整個文件的情況下,擷取特定值,例如總計、日期或發票號碼。 3.**授權牌**:使用 [車牌辨識](https://ironsoftware.com/csharp/ocr/how-to/read-license-plate/)時,請僅著重於車牌區域。 4.**身分證明文件**:從[護照](https://ironsoftware.com/csharp/ocr/how-to/read-passport/)或身分證中擷取特定欄位。 5.**螢幕截圖**:在 [ 螢幕快照](https://ironsoftware.com/csharp/ocr/how-to/read-screenshot/)中擷取特定 UI 元素的文字時。 ## 區域 OCR 的最佳實務 為了達到區域 OCR 的最佳效果: 1.**加入襯墊**:在您的文字周圍加入一小段緩衝區,以確保不會在邊緣切掉任何字元。 2.**使用樣本影像進行測試**:在進行大批量處理之前,請務必使用具有代表性的樣品來驗證您的座標。 3.**處理變化**:考慮到掃描文件中輕微的位置變化,請將您的區域做得比需要的稍微大一些。 4.**最佳化效能**:對於 [多執行緒處理](https://ironsoftware.com/csharp/ocr/how-to/async/),請平行處理不同的區域。 5.**監控信心**:檢查[結果置信度分數](https://ironsoftware.com/csharp/ocr/how-to/tesseract-result-confidence/)以確保準確性。 透過將 OCR 處理集中在特定區域,您可以大幅提升文字擷取任務的速度與精確度。 這種有針對性的方法對於在您的 .NET 應用程式中建立有效率的文件處理工作流程至關重要。

如何驗證我的座標是否正確? 為了確保您已為輸入影像選擇了正確的座標,您可以視覺化您定義的**ContentArea** 。 一個簡單的方法是在輸入影像上繪製矩形,然後使用`StampCropRectangleAndSaveAs`將其另存為新檔案。 這有助於您調試和微調坐標,以獲得最佳性能。 當您處理 [ 複雜佈局](https://ironsoftware.com/csharp/ocr/examples/read-table-in-document/),或需要 [ 高亮特定文字區域](https://ironsoftware.com/csharp/ocr/how-to/highlight-texts-as-images/)以確保品質時,此視覺化技術尤其有用。 這是在上面的範例輸入影像上繪製指定邊界框後的輸出影像。我該如何視覺化選取的區域? ```csharp :path=/static-assets/ocr/content-code-examples/how-to/ocr-region-of-an-image-highlighted.cs ```視覺化會是什麼樣子?
淺藍色矩形框表示我們已經正確地提取第二個段落進行處理。何時應該使用區域 OCR? 區域 OCR 是幾種常見情況的理想選擇: 1.**表單處理**:從資料出現在一致位置的標準化表格中抽取特定欄位時。 2.**發票處理**:在不處理整個文件的情況下,擷取特定值,例如總計、日期或發票號碼。 3.**授權牌**:使用 [車牌辨識](https://ironsoftware.com/csharp/ocr/how-to/read-license-plate/)時,請僅著重於車牌區域。 4.**身分證明文件**:從[護照](https://ironsoftware.com/csharp/ocr/how-to/read-passport/)或身分證中擷取特定欄位。 5.**螢幕截圖**:在 [ 螢幕快照](https://ironsoftware.com/csharp/ocr/how-to/read-screenshot/)中擷取特定 UI 元素的文字時。 ## 區域 OCR 的最佳實務 為了達到區域 OCR 的最佳效果: 1.**加入襯墊**:在您的文字周圍加入一小段緩衝區,以確保不會在邊緣切掉任何字元。 2.**使用樣本影像進行測試**:在進行大批量處理之前,請務必使用具有代表性的樣品來驗證您的座標。 3.**處理變化**:考慮到掃描文件中輕微的位置變化,請將您的區域做得比需要的稍微大一些。 4.**最佳化效能**:對於 [多執行緒處理](https://ironsoftware.com/csharp/ocr/how-to/async/),請平行處理不同的區域。 5.**監控信心**:檢查[結果置信度分數](https://ironsoftware.com/csharp/ocr/how-to/tesseract-result-confidence/)以確保準確性。 透過將 OCR 處理集中在特定區域,您可以大幅提升文字擷取任務的速度與精確度。 這種有針對性的方法對於在您的 .NET 應用程式中建立有效率的文件處理工作流程至關重要。
視覺化會是什麼樣子?
淺藍色矩形框表示我們已經正確地提取第二個段落進行處理。何時應該使用區域 OCR? 區域 OCR 是幾種常見情況的理想選擇: 1.**表單處理**:從資料出現在一致位置的標準化表格中抽取特定欄位時。 2.**發票處理**:在不處理整個文件的情況下,擷取特定值,例如總計、日期或發票號碼。 3.**授權牌**:使用 [車牌辨識](https://ironsoftware.com/csharp/ocr/how-to/read-license-plate/)時,請僅著重於車牌區域。 4.**身分證明文件**:從[護照](https://ironsoftware.com/csharp/ocr/how-to/read-passport/)或身分證中擷取特定欄位。 5.**螢幕截圖**:在 [ 螢幕快照](https://ironsoftware.com/csharp/ocr/how-to/read-screenshot/)中擷取特定 UI 元素的文字時。 ## 區域 OCR 的最佳實務 為了達到區域 OCR 的最佳效果: 1.**加入襯墊**:在您的文字周圍加入一小段緩衝區,以確保不會在邊緣切掉任何字元。 2.**使用樣本影像進行測試**:在進行大批量處理之前,請務必使用具有代表性的樣品來驗證您的座標。 3.**處理變化**:考慮到掃描文件中輕微的位置變化,請將您的區域做得比需要的稍微大一些。 4.**最佳化效能**:對於 [多執行緒處理](https://ironsoftware.com/csharp/ocr/how-to/async/),請平行處理不同的區域。 5.**監控信心**:檢查[結果置信度分數](https://ironsoftware.com/csharp/ocr/how-to/tesseract-result-confidence/)以確保準確性。 透過將 OCR 處理集中在特定區域,您可以大幅提升文字擷取任務的速度與精確度。 這種有針對性的方法對於在您的 .NET 應用程式中建立有效率的文件處理工作流程至關重要。

常見問題解答
如何在 C# 中僅從圖像的特定部分擷取文字?
使用 IronOCR,您可以透過建立一個具有 x/y 座標、寬度和高度值的 Rectangle 物件,從特定區域擷取文字。將此 Rectangle 作為 LoadImage 方法的第二個參數傳送給 IronOCR,IronOCR 就會將其 OCR 處理限制在僅限於該定義的區域。
定義 OCR 區域而非掃描整個影像有什麼好處?
透過 IronOCR 定義特定的 OCR 區域,您可以提高處理速度、增加精確度,並減少擷取無關文字所造成的錯誤。這對於資訊出現在可預測位置的結構化文件尤其有用。
我需要哪些參數才能建立區域 OCR 的矩形?
要為 IronOCR 的區域 OCR 建立一個矩形,您需要四個像素值:x 座標、y 座標、寬度和高度。(x, y) 座標代表您所需掃描區域的左上角。
哪個命名空間包含用於 OCR 區域的 Rectangle 物件?
IronOCR 中用於定義 OCR 區域的矩形物件位於 IronSoftware.Drawing 命名空間中。
哪些類型的文件最受益於區域 OCR 處理?
IronOCR 的區域 OCR 對於結構化文件尤其有效,例如發票、掃描表格和身份文件,這些文件中的特定資訊會持續出現在相同的位置。






