C#でSystem.Drawingオブジェクトから読み取る方法
IronOCRは、OcrImageInputでラップすることでテキストを読み取り、Windows、macOS、Linuxの各プラットフォームにおける.NETアプリケーション向けにシームレスなOCR機能を提供します。
System.Drawing.Bitmap は、ビットマップ画像の処理に使用される .NET Framework のクラスです。 ビットマップ イメージを作成、操作、表示するためのメソッドとプロパティを提供します。
System.Drawing.Image は、.NET Framework におけるすべての GDI+ 画像オブジェクトの基底クラスです。 これは、System.Drawing.Bitmapを含む様々な画像タイプの親クラスです。
IronSoftware.Drawing.AnyBitmap は、Iron Software が開発したオープンソースライブラリである IronDrawing 内のビットマップクラスです。 これは、Windows、macOS、およびLinuxプラットフォーム上 for .NETプロジェクトにおいて、C#ソフトウェアエンジニアがSystem.Drawing.Commonを置き換えるのに役立ちます。
クイックスタート: System.Drawing.Bitmapからテキストを読む
1つのステートメントで、OcrImageInputで囲んで渡すことで、すべてのテキストを抽出します。 このクイックスタート例では、IronOCRが最小限のセットアップで画像を読みやすいテキストに変換する方法を示します。
C#でSystem.Drawingオブジェクトから読み取る方法
- System.Drawing オブジェクトを読み取るための C# ライブラリをダウンロードします。
BitmapやImageなどのSystem.Drawingオブジェクトを取得する。- 取得したデータを使用して
OcrImageInputクラスを構築する。 - Linux および macOS では、Iron Software の
AnyBitmapを利用してください。 - 切り抜き領域を指定して読み込みエリアを定義する
System.Drawing.Bitmapから読み取るには?
まず、OCRを実行するためにクラスをインスタンス化します。 さまざまなメソッドのいずれかを使用して、を作成します。 コード例では、ファイルパスが使用されています。
次に、オブジェクトから画像を渡します。 最後に、OCRを実行するには メソッドを使用してください。
:path=/static-assets/ocr/content-code-examples/how-to/input-system-drawing-read-bitmap.cs
using IronOcr;
using System.Drawing;
// Instantiate IronTesseract
IronTesseract ocrTesseract = new IronTesseract();
// Read image file to Bitmap
Bitmap bitmap = new Bitmap("Potter.tiff");
// Import System.Drawing.Bitmap
using var imageInput = new OcrImageInput(bitmap);
// Perform OCR
OcrResult ocrResult = ocrTesseract.Read(imageInput);
Imports IronOcr
Imports System.Drawing
' Instantiate IronTesseract
Private ocrTesseract As New IronTesseract()
' Read image file to Bitmap
Private bitmap As New Bitmap("Potter.tiff")
' Import System.Drawing.Bitmap
Private imageInput = New OcrImageInput(bitmap)
' Perform OCR
Private ocrResult As OcrResult = ocrTesseract.Read(imageInput)
なぜOcrImageInputではusing文が重要なのですか?
using ステートメントは、OcrImageInput を使用する際に不可欠です。これは、適切なリソース管理とメモリのクリーンアップを保証するためです。 IDisposableを実装しており、これは、オブジェクトの使用が終了した際に解放する必要がある非管理リソースを保持していることを意味します。 using ステートメントがない場合、これらのリソースが適切に解放されず、メモリリークやファイルロックの原因となる可能性があります。 これは、バッチ操作で複数の画像を処理する場合に特に重要です。 IronOCRにおける適切なリソース管理の詳細については、API Referenceドキュメントをご覧ください。
一般的なビットマップの読み込み方法は何ですか?
Bitmap は、この例で使用したファイルパスコンストラクタ以外にも、いくつかの読み込み方法を提供しています。 ストリーム(Bitmap)を作成することも可能です。 Web アプリケーションを扱う場合、アップロードされたファイルを処理するために、ストリームからの読み込みが特に役立ちます。 埋め込みリソースには、Resourcesを使用できます。 IronOCRは、Bitmapソースをシームレスに処理します。 さまざまな入力方法については、画像 (jpg, png, gif, tiff, bmp)ガイドをご覧ください。
いつ Bitmap オブジェクトを破棄すればよいですか?
ビットマップ廃棄のタイミングは、アプリケーションのワークフローに依存します。 OCR用にocrResultを作成した後、直ちにそれを削除してください。 ただし、複数の操作を実行したり、画像を表示したりする必要がある場合は、すべての操作が完了するまで生かしてください。 リソースの破棄を確実に行うため、常に using ステートメントまたは try-finally ブロックを使用してください。 OcrImageInputを破棄できることに留意してください。 複数の画像操作を含む複雑なシナリオについては、OCR画像最適化フィルターの例をご検討ください。
System.Drawing.Imageから読み取るには?
Readメソッドを用いて標準的なOCR処理を実行するだけで簡単に行えます。
:path=/static-assets/ocr/content-code-examples/how-to/input-system-drawing-read-image.cs
using IronOcr;
using Image = System.Drawing.Image;
// Instantiate IronTesseract
IronTesseract ocrTesseract = new IronTesseract();
// Open image file as Image
Image image = Image.FromFile("Potter.tiff");
// Import System.Drawing.Image
using var imageInput = new OcrImageInput(image);
// Perform OCR
OcrResult ocrResult = ocrTesseract.Read(imageInput);
Imports IronOcr
Imports Image = System.Drawing.Image
' Instantiate IronTesseract
Private ocrTesseract As New IronTesseract()
' Open image file as Image
Private image As Image = Image.FromFile("Potter.tiff")
' Import System.Drawing.Image
Private imageInput = New OcrImageInput(image)
' Perform OCR
Private ocrResult As OcrResult = ocrTesseract.Read(imageInput)
OCRのイメージとビットマップの違いは何ですか?
ImageはJPEG、PNG、GIF、TIFFなど、さまざまな画像形式を表現できる抽象基底クラスです。 OCR処理において、IronOCRはImageは異なるフォーマットを扱う際に、より高い柔軟性を提供します。 Bitmap はピクセル単位での操作機能を提供しますが、Image は一般的な画像処理に適しています。 どちらもIronOCRの先進的なTesseract 5エンジンで同様に機能します。どちらを選ぶかはOCRの性能よりも幅広いアプリケーションのニーズによります。
なぜ他の読み込み方法ではなく Image.FromFile を使用するのですか?
Image.FromFile は、ディスクから画像を読み込むための最もシンプルで直接的な方法です。 画像形式を自動的に検出し、ファイルの読み込み処理を行います。 MemoryStreamのような代替手法は、Webアプリケーションやメモリストリームを扱う場合に適しています。 FileStream は FileStream が破棄されるまでファイルをロックするため、マルチスレッドアプリケーションではこの点を考慮する必要があります。 高いパフォーマンスや同時アクセスが必要な制作シナリオでは、まず画像をメモリストリームにロードすることを検討してください。Multithreaded Tesseract OCR の例は、同時画像処理のベスト プラクティスを示しています。
IronSoftware.Drawing.AnyBitmapから読み取るにはどうすればよいですか?
同様に、AnyBitmap オブジェクトを作成または取得した後、OcrInput クラスを構築できます。 コンストラクタは、データをインポートするために必要なすべてのステップを処理します。 以下のコード例でこれを示します。
:path=/static-assets/ocr/content-code-examples/how-to/input-system-drawing-read-anybitmap.cs
using IronOcr;
using IronSoftware.Drawing;
// Instantiate IronTesseract
IronTesseract ocrTesseract = new IronTesseract();
// Open image file as AnyBitmap
AnyBitmap anyBitmap = AnyBitmap.FromFile("Potter.tiff");
// Import IronSoftware.Drawing.AnyBitmap
using var imageInput = new OcrImageInput(anyBitmap);
// Perform OCR
OcrResult ocrResult = ocrTesseract.Read(imageInput);
Imports IronOcr
Imports IronSoftware.Drawing
' Instantiate IronTesseract
Private ocrTesseract As New IronTesseract()
' Open image file as AnyBitmap
Private anyBitmap As AnyBitmap = AnyBitmap.FromFile("Potter.tiff")
' Import IronSoftware.Drawing.AnyBitmap
Private imageInput = New OcrImageInput(anyBitmap)
' Perform OCR
Private ocrResult As OcrResult = ocrTesseract.Read(imageInput)
なぜSystem.DrawingクラスではなくAnyBitmapを選択するのですか?
AnyBitmap は、Bitmap クラスと比較して、優れたクロスプラットフォーム互換性を提供します。 .NET 6以降では、AnyBitmapはWindows、Linux、macOSのいずれでもシームレスに動作します。 プラットフォームに依存しない一貫したAPIを提供するため、クラウドのデプロイメントやコンテナ化されたアプリケーションに最適です。 AnyBitmap は、画像処理タスク向けに特別に設計された、より優れたメモリ管理とパフォーマンスの最適化も提供します。 詳細な互換性情報については、互換性ドキュメントを参照してください。
AnyBitmapはどのプラットフォームをサポートしていますか?
AnyBitmap は、.NET が動作するすべての主要プラットフォーム(Windows(x86、x64、ARM)、Linux(Docker 用の Alpine Linux を含む)、macOS(Intel および Apple Silicon 両方))をサポートしています。 このように幅広いプラットフォームをサポートしているため、多様な環境で実行する必要がある最新 for .NETアプリケーションに推奨される選択肢となっています。 特に、AWS LambdaやAzure Functionsのクラウドデプロイメントに役立ちます。 Linux、macOS、Docker環境のガイドでは、プラットフォーム固有のセットアップについて詳しく説明しています。
AnyBitmapはメモリ管理をどのように処理しますか?
AnyBitmap は、自動ガベージコレクションの統合と明示的な破棄パターンを通じて、効率的なメモリ管理を実現します。 頻繁に割り当てられるバッファにメモリプーリングを使用し、パフォーマンス向上のためにコピーオンライトセマンティクスを実装しています。 ファイルロックを保持する可能性のある AnyBitmap とは異なり、AnyBitmap は画像をメモリに完全に読み込むため、ファイルアクセスに関する問題を防止します。 また、高スループットのシナリオでメモリ使用量をより適切に制御できるようにします。 大量の画像を処理するアプリケーションにおいて、AnyBitmapのメモリ効率性により、全体的なメモリ使用量を大幅に削減できます。 移行のヒントについては、System.Drawing.Common Alternatives ガイドを参照してください。
スキャン領域を指定するにはどうすればよいですか?
OcrInputクラスの構築において、スキャンする領域を指定できます。 これにより、OCR 用に画像ドキュメントの特定の領域を定義できます。 画像ドキュメントによっては、スキャン領域を指定することでパフォーマンスが大幅に向上することがあります。 提供されたコード例では、章番号とタイトルだけが抽出されています。
:path=/static-assets/ocr/content-code-examples/how-to/input-images-read-specific-region.cs
using IronOcr;
using IronSoftware.Drawing;
using System;
// Instantiate IronTesseract
IronTesseract ocrTesseract = new IronTesseract();
// Specify crop region
Rectangle scanRegion = new Rectangle(800, 200, 900, 400);
// Add image
using var imageInput = new OcrImageInput("Potter.tiff", ContentArea: scanRegion);
// Perform OCR
OcrResult ocrResult = ocrTesseract.Read(imageInput);
// Output the result to console
Console.WriteLine(ocrResult.Text);
Imports IronOcr
Imports IronSoftware.Drawing
Imports System
' Instantiate IronTesseract
Private ocrTesseract As New IronTesseract()
' Specify crop region
Private scanRegion As New Rectangle(800, 200, 900, 400)
' Add image
Private imageInput = New OcrImageInput("Potter.tiff", ContentArea:= scanRegion)
' Perform OCR
Private ocrResult As OcrResult = ocrTesseract.Read(imageInput)
' Output the result to console
Console.WriteLine(ocrResult.Text)
より良いパフォーマンスを得るためには、いつリージョン スキャンを使用すべきですか?
リージョンスキャンは、一貫したドキュメントレイアウトの特定の領域のテキストだけが必要な場合に、パフォーマンスを劇的に向上させます。 一般的な使用例としては、ヘッダー、フォームフィールド、請求書の合計、IDカード情報の抽出などがあります。 パフォーマンスが最も向上するのは、テキストの占める割合が小さい大きな画像です。 3000x4000ピクセルの請求書の場合、総額の領域だけをスキャンすると、全ページOCRよりも10~20倍速くなります。 また、リージョンスキャンは、他の領域からの潜在的なノイズを除去することで、精度を向上させます。 リージョンベースの例については、Content Areas & Crop Regions with PDFsガイドをご覧ください。
自分の地域の正しい座標を決定するにはどうすればよいですか?
座標を特定するには、Rectangleが(X, Y, Width, Height)形式を使用しており、(0,0)が左上隅であることを理解する必要があります。 まず、カーソル座標を表示する画像エディタで画像を開いてください。 あるいは、IronOCRのデバッグ機能を使って、検出されたテキスト領域を視覚化してください。 動的なレイアウトの場合は、まず IronOCR を使用して完全なスキャンを行い、その後 OcrResult を解析して、プログラムでテキストの位置を特定することを検討してください。 Highlight Texts for Debugging の例では、正確な座標決定のために OCR 領域を視覚化する方法を示しています。
領域が画像の境界を超えるとどうなりますか?
指定された領域が画像の境界を超えた場合、IronOCRは自動的に有効な画像領域にクリップします。 例えば、画像が1000x1000ピクセルで、矩形を(900, 900, 200, 200)で指定した場合、IronOCRは(900, 900)から(1000, 1000)までの領域のみを処理します。 この自動クリッピングはエラーを防ぎますが、座標が正しくない場合、テキストの抽出が不完全になる可能性があります。 常に、実際の画像寸法と照らし合わせて、リージョンを検証してください。 動的な画像サイズについては、固定ピクセルではなく、パーセンテージで領域を計算してください。 OCR Region of an Image ガイドでは、安全なリージョン処理の例をより多く提供しています。
OCR結果
using
OcrImageInput
OcrImageInput
IDisposable
using
System.Drawing.Bitmap
Bitmaps
new Bitmap(stream)
Images
new Bitmap(image)
new Bitmap(width, height)
Assembly.GetManifestResourceStream()
Bitmap
OcrImageInput
Bitmap
OcrImageInput
using
OcrImageInput
Bitmap
OcrImageInput
System.Drawing.Image
OcrImageInput
Image
Read
System.Drawing.Bitmap
System.Drawing.Image
OcrImageInput
Image
Bitmap
Image
Image.FromFile
Image.FromStream
Image.FromFile
Image
AnyBitmap
OcrImageInput
AnyBitmap
System.Drawing
System.Drawing.Common
AnyBitmap
AnyBitmap
AnyBitmap
AnyBitmap
System.Drawing.Bitmap
AnyBitmap
AnyBitmap
OcrImageInput
Rectangle
OcrResult
よくある質問
C#でOCRを使用してSystem.Drawing.Bitmapからテキストを抽出するにはどうすればよいですか?
IronOCRはSystem.Drawing.Bitmapオブジェクトからテキストを簡単に抽出することができます。まずIronTesseractクラスをインスタンス化し、Bitmapをusingステートメントを使ってOcrImageInputオブジェクトにラップし、最後にReadメソッドを呼び出します。最小限のコードは以下の通り: var result = new IronOcr.IronTesseract().Read(new IronOcr.OcrImageInput(bitmap));
なぜOcrImageInputを使用する際にusing文が重要なのですか?
OcrImageInputはIDisposableを実装しており、適切なクリーンアップが必要な管理されていないリソースを保持しているため、using文は非常に重要です。これがないと、特に複数の画像を処理する場合、メモリー・リークやファイル・ロックの危険性があります。IronOCRのOcrImageInputは、.NETアプリケーションの効率的なリソース管理のために適切な廃棄が必要です。
System.Drawing.ImageオブジェクトでOCRを実行できますか?
はい、IronOCRはSystem.Drawing.ImageオブジェクトのOCRをサポートしています。Imageオブジェクトをビットマップと同じようにOcrImageInputでラップするだけで、IronOCRはWindows、macOS、Linuxの各プラットフォームでシームレスにテキストを抽出します。
IronSoftware.Drawing.AnyBitmapとは何ですか?
IronSoftware.Drawing.AnyBitmapはIronDrawingのビットマップ・クラスで、.NETプロジェクトのSystem.Drawing.Commonを置き換えるオープンソース・ライブラリです。Windows、macOS、Linuxのクロスプラットフォーム互換性を提供し、異なるオペレーティングシステム間で一貫した画像処理が必要な場合にIronOCRで使用するのに理想的です。
テキスト抽出のために画像の特定の領域を指定できますか?
はい、IronOCRではクロップ領域を指定することで特定の読み取り領域を定義することができます。この機能により、System.Drawingオブジェクトの特定の部分にOCR処理を集中させることができ、画像の特定の部分からテキストを必要とする場合に、パフォーマンスと精度を向上させることができます。
IronOCRは複数の言語をサポートしていますか?
IronOCRは複数言語をサポートしており、異なる言語でのテキスト認識を必要とするグローバルアプリケーションに対する多用途ツールです。
IronOCRは既存のアプリケーションに統合できますか?
IronOCRはC#を使用して既存のアプリケーションに簡単に統合できるよう設計されており、開発者がソフトウェアにOCR機能を少ない手間で追加できるようにします。
ドキュメント管理でIronOCRを使用する利点は何ですか?
IronOCRを使用することで、スキャンされた文書を検索可能かつ編集可能なテキストに変換し、手作業によるデータ入力を減らし、文書のアクセス性を向上させることでワークフローを効率化します。
IronOCRはデータ精度をどのように向上させますか?
IronOCRはその高度な認識アルゴリズムと画像補正機能により、信頼性が高く正確なテキスト抽出プロセスを保証します。
IronOCRの無料トライアルを利用できますか?
はい、Iron SoftwareはIronOCRの無料トライアルを提供しており、ユーザーが購入決定をする前にその機能と能力をテストできます。

