C#で画像の特定の OCR 領域を定義する方法

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

C#で画像の特定の領域からテキストを抽出するには、IronOCRのRectangleオブジェクトを使って、x/y座標、widthheightを指定して正確な領域を定義し、それをLoadImageメソッドに渡してOCR処理を行います。

クイックスタート: 特定の画像領域からテキストを抽出するとして

Nuget Icon今すぐ NuGet で PDF を作成してみましょう:

  1. NuGet パッケージ マネージャーを使用して IronOCR をインストールします

    PM > Install-Package IronOcr

  2. このコード スニペットをコピーして実行します。

    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);
  3. 実際の環境でテストするためにデプロイする

    今すぐ無料トライアルでプロジェクトに IronOCR を使い始めましょう
    arrow pointer

多くの場合、請求書の合計金額やフォームの特定のフィールドなど、画像の小さな部分からテキストを抽出するだけで済みます。 ドキュメント全体をスキャンするのは非効率的であり、無関係なテキストをキャプチャすることでエラーが発生する可能性があります。

IronOCR を使用すると、スキャンする正確な長方形領域を指定することにより、精度、パフォーマンス、正確性を向上させることができます。 このガイドでは、特定の OCR 領域を定義し、そこからテキストを抽出し、OCR タスクに対して座標が正しいことを視覚的に確認する方法について、ステップバイステップで説明します。

IronOCRを使い始める

今日あなたのプロジェクトでIronOCRを無料トライアルで使用開始。

最初のステップ:
green arrow pointer


特定の地域で OCR を実行するにはどうすればよいですか?

特定の OCR 領域を定義するには、Iron Software.Drawing 名前空間からRectangleオブジェクトを作成します。 このオブジェクトには、x座標、y座標、高さの4つの値が必要です。 (x, y) 座標は、希望する領域の左上隅を表します。

LoadImage使用して画像を読み込むときは、このRectangle 2 番目のパラメータとして渡します。 IronOCR は、OCR プロセスをその境界ボックス内のピクセルのみに制限します。

請求書スキャンしたフォームアイデンティティ文書のように、特定の情報が常に予測可能な場所に表示されるような構造化された文書を扱う場合、地域 OCR は特に便利です。 OCRを関連する領域だけに限定することで、処理速度を大幅に向上させ、無関係なテキストによる誤検出を減らすことができます。

矩形の座標を見つけるには、MS Paint のような簡単な画像エディタを使用できます。 入力画像を開き、指定した領域の左上隅と右下隅にマウスカーソルを合わせ、(x, y)ピクセル座標に注目してください。 ここで、width = x2-x1height = y2-y1です。

テストにはどのような画像を使用すればよいですか?

3つの段落を含むサンプル画像を使用します。目標は、2番目の段落のみを抽出し、残りのテキストを無視することです。 これは、大きな文書から特定のフィールドやセクションを抽出する必要がある一般的なシナリオを示しています。

Region Input related to テストにはどのような画像を使用すればよいですか?

コードで地域 OCR を実装するにはどうすればよいですか?

実装は、OcrInputオブジェクトを作成し、指定された矩形領域で画像をロードすることを含みます。 このアプローチは、JPG、PNG、GIF、TIFF、BMPを含むさまざまな画像フォーマットに対応しています。

:path=/static-assets/ocr/content-code-examples/how-to/ocr-region-of-an-image.cs
using IronOcr;
using IronSoftware.Drawing;
using System;

var ocrTesseract = new IronTesseract();
using var ocrInput = new OcrInput();

// Define the specific region as a Rectangle
// (x, y) is the top-left corner.
var ContentArea = new Rectangle(x: 215, y: 1250, width: 1335, height: 280);

ocrInput.LoadImage("region-input.png", ContentArea);

var ocrResult = ocrTesseract.Read(ocrInput);

// Print the extracted text
Console.WriteLine(ocrResult.Text);
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

より複雑なシナリオでは、同じ画像内に複数のリージョンを定義することができます。 これは、複数のフィールドを持つフォームや、ドキュメント内のテーブルを処理する場合に特に役立ちます:

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}");
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}");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

どのような結果を期待できますか?

コンソール出力からわかるように、OCR によって処理されるのは 2 番目の段落のみです。 このようなターゲットを絞ったアプローチにより、画像の他の部分から無関係なテキストが翻訳結果を邪魔することがなくなります。

OCR 出力.

地域OCRの精度は、いくつかの要因に左右されます:

  • 画質:一般的に、解像度の高い画像の方が良い結果が得られます。 DPI設定を使用して画像を最適化することを検討してください。
  • テキストの向き: テキストが適切に配置されていることを確認してください。 必要に応じて、ページ回転検出を使用してください。
  • コントラストと明瞭さ画像補正フィルターを適用して、テキストの読みやすさを向上させます。

座標が正しいことを確認するにはどうすればよいですか?

入力画像の正しい座標を選択したことを確認するには、定義したContentArea を視覚化します。 これを行う簡単な方法は、入力画像に四角形を描画し、 StampCropRectangleAndSaveAsを使用して新しいファイルとして保存することです。 これにより、座標をデバッグして微調整し、最適なパフォーマンスを実現できます。

この視覚化テクニックは、複雑なレイアウトで作業するときや、品質保証の目的で特定のテキストエリアを強調表示する必要があるときに特に役立ちます。

これは、上記の入力画像の例に指定された境界ボックスを描画した後の出力画像です。

選択した領域を視覚化するにはどうすればよいですか?

:path=/static-assets/ocr/content-code-examples/how-to/ocr-region-of-an-image-highlighted.cs
using IronOcr;
using IronSoftware.Drawing;

var ocrTesseract = new IronTesseract();
using var ocrInput = new OcrInput();

// Define the specific rectangular area to scan within the image.
// The coordinates are in pixels: (x, y) is the top-left corner of the rectangle.
var ContentArea = new Rectangle(x: 4, y: 59, width: 365, height: 26);

ocrInput.LoadImage("region-input.png", ContentArea);

var ocrResult = ocrTesseract.Read(ocrInput);

// Draws the rectangle from above in a blue bounding box on the image for visualization.
ocrInput.StampCropRectangleAndSaveAs(ContentArea, Color.Aqua, "region-input.png");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

視覚化はどのように見えますか?

OCR ハイライト出力.

水色の四角形は、処理のために 2 番目の段落を正しく分離したことを確認します。

地域 OCR はいつ使用すべきですか?

地域OCRは、いくつかの一般的なシナリオに最適です:

1.フォーム処理:データが一貫した場所に表示される標準化されたフォームから特定のフィールドを抽出する場合。 2.請求書処理: ドキュメント全体を処理することなく、合計、日付、請求書番号などの特定の値を抽出します。 3.ライセンスプレートナンバープレート認識を使用するときは、プレートの領域だけに注目してください。 4.身分証明書: パスポートまたはIDカードから特定のフィールドを抽出します。 5.スクリーンショットスクリーンショットで特定のUI要素からテキストをキャプチャする場合。

地域 OCR のベストプラクティス

地域OCRで最適な結果を得る

1.パディングを追加する: 文字が端で切れてしまわないように、テキストの周囲に小さなバッファを含めます。 2.サンプル画像でテストする:大きなバッチを処理する前に、常に代表的なサンプルで座標を検証してください。 3.バリエーションを扱う:スキャンした文書のわずかな位置のばらつきを考慮して、領域を必要以上に少し大きくしてください。 4.パフォーマンスを最適化するマルチスレッド処理では、異なる領域を並行して処理します。 5.自信を監視する結果の信頼度スコアをチェックし、正確さを確認します。

OCR処理を特定の領域に集中させることで、テキスト抽出タスクの速度と精度の両方を大幅に向上させることができます。 この的を絞ったアプローチは、.NETアプリケーションで効率的な文書処理ワークフローを構築するために不可欠です。

よくある質問

C#で画像の特定の部分のみからテキストを抽出するにはどうすればよいですか?

IronOCRでは、x/y座標、幅、高さの値を持つRectangleオブジェクトを作成することで、特定の領域からテキストを抽出することができます。このRectangleをLoadImageメソッドの2番目のパラメータとして渡すと、IronOCRはその定義された領域のみにOCR処理を制限する。

画像全体をスキャンする代わりにOCR領域を定義する利点は何ですか?

IronOCRで特定のOCR領域を定義することにより、処理速度を向上させ、精度を高め、無関係なテキストを取り込むことによるエラーを減らすことができます。これは、情報が予測可能な場所に現れる構造化された文書に特に有効です。

地域OCR用の矩形を作成するには、どのようなパラメータが必要ですか?

IronOCRの地域OCR用の矩形を作成するには、ピクセル単位でx座標、y座標、幅、高さの4つの値が必要です。(x, y)座標は希望するスキャン領域の左上隅を表します。

OCR 領域用の Rectangle オブジェクトを含む名前空間はどれですか?

IronOCRでOCR領域を定義するRectangleオブジェクトはIronSoftware.Drawing名前空間にあります。

地域別OCR処理が最も有効な文書の種類は?

IronOCRのリージョナルOCRは、請求書、スキャンしたフォーム、IDドキュメントなど、特定の情報が一貫して同じ場所に現れるような構造化されたドキュメントに特に効果的です。

カーティス・チャウ
テクニカルライター

Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。

開発以外にも、CurtisはIoT(Internet of Things)への強い関心を持ち、ハードウェアとソフトウェアの統合方法を模索しています。余暇には、ゲームをしたりDiscordボットを作成したりして、技術に対する愛情と創造性を組み合わせています。

準備はできましたか?
Nuget ダウンロード 5,246,844 | バージョン: 2025.12 リリース