IronOCR ハウツー ストリーム OCRのためにC#でストリームから読み取る方法 カーティス・チャウ 更新日:2026年1月10日 IronOCR をダウンロード NuGet ダウンロード DLL ダウンロード Windows 版 無料トライアル LLM向けのコピー LLM向けのコピー LLM 用の Markdown としてページをコピーする ChatGPTで開く このページについてChatGPTに質問する ジェミニで開く このページについてGeminiに問い合わせる Grokで開く このページについてGrokに質問する 困惑の中で開く このページについてPerplexityに問い合わせる 共有する Facebook で共有 Xでシェア(Twitter) LinkedIn で共有 URLをコピー 記事をメールで送る This article was translated from English: Does it need improvement? Translated View the article in English IronOCR は、ストリームを OcrInput または OcrImageInput コンストラクターに渡すことで、C# のストリームから直接画像データを読み取り、ファイルをディスクに保存せずに効率的な OCR 処理を可能にします。 ストリームとは、読み書きが可能なバイナリ情報の連続的な流れのことです。 プログラミングでは、ストリームは、管理可能なチャンクで処理することにより、メモリには大きすぎるデータを効率的に処理します。 IronOCRのインポートメソッドは画像データストリームを直接受け取ります。 ストリーム・データをインポート・メソッドに渡すと、必要なすべてのステップが自動的に処理されます。 高度なシナリオについては、さまざまな入力形式を準備するための広範なオプションを提供するOcrInput クラスを参照してください。 クイックスタート: 数秒で OCR 入力にストリームを使用する この例では、 System.IO.Stream をIronOCRに入力し、ファイル パスをスキップして、最小限のコードを使用して認識されたテキストを取得することで、即時 OCR を示します。 IronOCR をNuGetパッケージマネージャでインストール PM > Install-Package IronOcr このコード スニペットをコピーして実行します。 using var input = new IronOcr.OcrInput(stream); var result = new IronOcr.IronTesseract().Read(input); 実際の環境でテストするためにデプロイする 今日プロジェクトで IronOCR を使い始めましょう無料トライアル Free 30 Day Trial 最小限のワークフロー(5ステップ) ストリームから読み取るためのC#ライブラリをダウンロードする 画像ストリームデータを取得し準備する 画像をインポートするには、**`OcrImageInput`**コンストラクタに画像ストリームを渡します。 OCRを実行するには`Read`メソッドを使用します 切り抜き領域を指定して読み込みエリアを定義する IronOCRでストリームを読むには? まず、OCR を実行するためにIronTesseractクラスをインスタンス化します。 画像ファイルをインポートするには、AnyBitmap の FromFile メソッドを使用します。この AnyBitmap オブジェクトは画像データをストリームに変換します。 次に、using ステートメントを使用して、GetStream メソッドでイメージ ストリームを渡し、OcrImageInput オブジェクトを作成します。 最後に、Read メソッドを使用して OCR を実行します。 :path=/static-assets/ocr/content-code-examples/how-to/input-streams-read-streams.cs using IronOcr; using IronSoftware.Drawing; // Instantiate IronTesseract IronTesseract ocrTesseract = new IronTesseract(); // Read image file to AnyBitmap AnyBitmap anyBitmap = AnyBitmap.FromFile("Potter.tiff"); // Import image stream using var imageInput = new OcrImageInput(anyBitmap.GetStream()); // Perform OCR OcrResult ocrResult = ocrTesseract.Read(imageInput); $vbLabelText $csharpLabel ストリームベースOCRは、画像のアップロードを受け取るウェブアプリケーション、データベースからの画像を処理するアプリケーション、またはディスクに書き込まれるべきでない一時的なデータを処理するアプリケーションに役立ちます。 ストリーム アプローチは、System.Drawing オブジェクトやその他の画像操作ライブラリとシームレスに統合されます。 なぜ OCR にストリームを使用するのですか? ストリームを使用することで、.NET 開発者にはいくつかの利点があります: 1.メモリ効率:ファイル全体をメモリにロードするのではなく、チャンク単位でデータを処理します。 2.セキュリティ:ディスク上に一時ファイルを作成せずに機密文書を処理する 3.パフォーマンス: ファイルシステム操作によるI/Oオーバーヘッドを排除します。 4.柔軟性:Webアップロード、データベースBLOB、およびインメモリ変換を使用します。 複数ページのドキュメントの処理やPDFストリームの処理のために、IronOCRは同じシンプルなAPIを維持し、堅牢なパフォーマンスを提供します。 スキャンされた文書を扱う場合、ストリーム処理によってスキャンされた文書を効率的に読むためにIronOCRの機能を活用することもできます。 ストリーム OCR のスキャン領域を指定するにはどうすればよいですか? 大きな画像のパフォーマンスを向上し、特定の領域から特定の読み取り値を取得するには、CropRectangle クラスを利用します。 OcrImageInput コンストラクタは、2 番目のパラメータとして CropRectangle オブジェクトを受け入れ、イメージ ドキュメントのどの領域を読み取るかを指定できます。 以下のコード例では、章番号とタイトル領域のみを読み取るように指定しています。 :path=/static-assets/ocr/content-code-examples/how-to/input-streams-read-specific-region.cs using IronOcr; using IronSoftware.Drawing; using System; // Instantiate IronTesseract IronTesseract ocrTesseract = new IronTesseract(); // Read image file to AnyBitmap AnyBitmap anyBitmap = AnyBitmap.FromFile("Potter.tiff"); // Specify crop region Rectangle scanRegion = new Rectangle(800, 200, 900, 400); // Add image using var imageInput = new OcrImageInput(anyBitmap.GetStream(), ContentArea: scanRegion); // Perform OCR OcrResult ocrResult = ocrTesseract.Read(imageInput); // Output the result to console Console.WriteLine(ocrResult.Text); $vbLabelText $csharpLabel このテクニックは、画像の特定の領域をOCRする必要がある場合や、テキストが予測可能な場所に表示される構造化ドキュメントを扱う場合に特に役立ちます。 テーブルや構造化データを含むより複雑なシナリオについては、ドキュメント内のテーブルを読む方法を調べてください。 スキャン領域は出力でどのように見えますか? どのような高度なストリーム処理技術を使用できますか? ストリームを使用する場合は、IronOCRの追加機能を活用して認識精度を高めてください。 画像最適化フィルターは、OCR処理の前にストリームデータに直接適用することができます: using IronOcr; using IronSoftware.Drawing; using System.IO; // Process stream with filters public string ProcessStreamWithFilters(Stream imageStream) { IronTesseract ocrTesseract = new IronTesseract(); // Configure for better accuracy ocrTesseract.Configuration.BlackListCharacters = "~`$#^*_}{][|\\"; ocrTesseract.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.AutoOsd; using var input = new OcrImageInput(imageStream); // Apply preprocessing filters input.Deskew(); input.DeNoise(); input.Sharpen(); var result = ocrTesseract.Read(input); return result.Text; } using IronOcr; using IronSoftware.Drawing; using System.IO; // Process stream with filters public string ProcessStreamWithFilters(Stream imageStream) { IronTesseract ocrTesseract = new IronTesseract(); // Configure for better accuracy ocrTesseract.Configuration.BlackListCharacters = "~`$#^*_}{][|\\"; ocrTesseract.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.AutoOsd; using var input = new OcrImageInput(imageStream); // Apply preprocessing filters input.Deskew(); input.DeNoise(); input.Sharpen(); var result = ocrTesseract.Read(input); return result.Text; } $vbLabelText $csharpLabel 画像処理を強化するには、フィルタ ウィザードを使用して、特定のドキュメント タイプに最適な前処理ステップを自動的に決定することを検討してください。さらに、ストリーム内の回転した画像や傾いた画像を処理する場合、画像の向きを修正する機能を使用すると、OCR 精度を大幅に向上させることができます。 異なるストリームソースで作業するにはどうすればよいですか? IronOCRは様々なストリームソースをシームレスに処理します。 ウェブフォームからのアップロード処理、データベースからの画像取得、フォーマット間の変換など、APIは一貫性を保っています: // From MemoryStream byte[] imageBytes = GetImageBytesFromDatabase(); using var memoryStream = new MemoryStream(imageBytes); using var input = new OcrImageInput(memoryStream); // From FileStream using var fileStream = new FileStream("document.png", FileMode.Open); using var input2 = new OcrImageInput(fileStream); // From network stream using var webClient = new WebClient(); using var networkStream = webClient.OpenRead("https://example.com/image.jpg"); using var input3 = new OcrImageInput(networkStream); // From MemoryStream byte[] imageBytes = GetImageBytesFromDatabase(); using var memoryStream = new MemoryStream(imageBytes); using var input = new OcrImageInput(memoryStream); // From FileStream using var fileStream = new FileStream("document.png", FileMode.Open); using var input2 = new OcrImageInput(fileStream); // From network stream using var webClient = new WebClient(); using var networkStream = webClient.OpenRead("https://example.com/image.jpg"); using var input3 = new OcrImageInput(networkStream); $vbLabelText $csharpLabel 最適な結果を得るためには、低解像度のストリームで作業する場合、DPI設定を調整することを検討してください。 IronOCRは自動的にDPI検出を行いますが、手動で設定することで、特定のユースケースの精度を向上させることができます。 マルチページ ドキュメントを扱う場合は、ストリーム処理によって マルチページ TIFF および GIF ファイルを処理することを検討してください。 ストリームからの OCR 結果をどのように扱えばよいですか? ストリームを処理した後、IronOCRは単純なテキスト抽出を超えたリッチな結果オブジェクトを提供します。 OcrResult クラスには、信頼度スコア、位置、構造など、認識されたテキストに関する詳細な情報が含まれています。 // Process stream and analyze results using var input = new OcrImageInput(stream); var result = new IronTesseract().Read(input); // Access detailed results foreach (var page in result.Pages) { Console.WriteLine($"Page {page.PageNumber} Confidence: {page.Confidence}%"); foreach (var paragraph in page.Paragraphs) { Console.WriteLine($"Paragraph: {paragraph.Text}"); Console.WriteLine($"Location: X={paragraph.X}, Y={paragraph.Y}"); } } // Export results string text = result.Text; string searchablePdf = result.SaveAsSearchablePdf("output.pdf"); string hocrHtml = result.SaveAsHocrHtml("output.html"); // Process stream and analyze results using var input = new OcrImageInput(stream); var result = new IronTesseract().Read(input); // Access detailed results foreach (var page in result.Pages) { Console.WriteLine($"Page {page.PageNumber} Confidence: {page.Confidence}%"); foreach (var paragraph in page.Paragraphs) { Console.WriteLine($"Paragraph: {paragraph.Text}"); Console.WriteLine($"Location: X={paragraph.X}, Y={paragraph.Y}"); } } // Export results string text = result.Text; string searchablePdf = result.SaveAsSearchablePdf("output.pdf"); string hocrHtml = result.SaveAsHocrHtml("output.html"); $vbLabelText $csharpLabel 結果オブジェクトは、検索可能なPDFやhOCRのHTMLフォーマットにエクスポートするメソッドも提供しており、ストリーム入力から検索可能なドキュメントアーカイブを簡単に作成できます。 デバッグのために、highlight texts featureを使って、IronOcrが画像から何を検出したかを視覚化することができます。 どのようなパフォーマンスを考慮すべきか 複数のストリームを処理する場合や、高スループットの OCR ソリューションを実装する場合は、以下の最適化戦略を検討してください: 1.インスタンスの再利用: 単一のインスタンスを作成し、複数の操作で再利用します。 2.進捗追跡を実装する:大規模なストリームでは、進捗追跡を使用して処理状況を監視します。 3.並列処理: IronOCR は複数のストリームの同時処理をサポートします 4.画質を最適化する:最適な解像度と鮮明さを確保するためにストリームを前処理します。 パフォーマンスを最大化するために、高速 OCR 設定オプションを検討し、バッチ処理用に マルチスレッド処理の実装を検討してください。 時間に敏感なアプリケーションで作業する場合、タイムアウトを理解することで、長時間実行される OCR 操作を効果的に管理することができます。 一般的なストリームの問題をトラブルシューティングするには? ストリームを扱う場合、特定の課題に遭遇する可能性があります。 よくあるシナリオの解決策をご紹介します: -ストリーム位置: IronOCR に渡す前に、常にストリーム位置を 0 にリセットします。 -廃棄: using ステートメントを使用して、リソースの適切なクリーンアップを確実に実行します。 フォーマットのサポート: IronOCRはストリームを通してJPEG、PNG、TIFF、BMPを含む様々な画像フォーマットをサポートします。 メモリ管理:大きなストリームの場合、チャンク処理またはストリーミング・アプローチを検討する。 複雑な文書や標準的な OCR では満足のいく結果が得られない場合、コンピューター ビジョン機能を使用すると、テキストをより正確に検索して抽出することができます。 さらに、低品質ストリームを扱う場合は、認識率を大幅に向上させる前処理テクニックについて、低品質スキャンの修正のガイドを参照してください。 ストリームやその他の入力メソッドの詳細については、包括的なハウツーガイドやコード例を参照してください。 よくある質問 画像データをディスクに保存せずに、OCRを実行するにはどうすればよいですか? IronOCRでは、OcrInputまたはOcrImageInputコンストラクタに画像ストリームを渡すことで、画像ストリームを直接処理することができます。これは一時ファイルを作成することなく効率的なOCR処理を可能にし、ウェブアップロードやデータベースのBLOB、あるいはディスクに触れるべきでない機密文書を扱うのに理想的です。 OCR 処理の入力として使用できるストリームの種類は? IronOCRは画像データを含むあらゆるSystem.IO.Streamを受け入れます。これには、ウェブアップロードからのメモリストリーム、データベースのBLOBフィールドからのストリーム、画像操作ライブラリから作成されたストリームが含まれます。OcrInputまたはOcrImageInputにストリームを渡すと、ライブラリは必要なすべての変換ステップを自動的に処理します。 C#でストリームにOCRを実行する最も簡単な方法は何ですか? 最も手っ取り早い方法は、ストリームでOcrInputオブジェクトを作成し、Readメソッドを呼び出すことです: 'using var input = new IronOcr.OcrInput(stream); var result = new IronOcr.IronTesseract().Read(input);'.この最小限のコードはOCRを実行し、認識されたテキストを即座に返します。 OCRにファイルパスの代わりにストリームを使用するのはなぜですか? IronOCRによるストリームベースOCRはいくつかの利点を提供します:データをチャンク単位で処理することによるメモリ効率、ディスク上の一時ファイルを回避することによるセキュリティの強化、ファイルI/Oのオーバーヘッドを排除することによるパフォーマンスの向上、ウェブアップロードやデータベースのBLOBを扱う際の柔軟性などです。 画像ストリームの特定の領域を指定して読み取ることはできますか? はい、IronOCRではストリームを処理する際、クロップ領域を指定して読み取り領域を定義することができます。この機能により、文書全体を処理することなく、画像の特定の部分にOCRを集中させることができ、速度と精度の両方が向上します。 ストリーム処理は、他の画像操作ライブラリとどのように統合されていますか? IronOCRのストリーム・アプローチは、System.Drawingオブジェクトや他 for .NET画像操作ライブラリとシームレスに統合されています。AnyBitmapクラスを使用して、GetStreamメソッドを使用して画像をストリームに変換することができ、OCRを他の画像処理ワークフローと簡単に組み合わせることができます。 カーティス・チャウ 今すぐエンジニアリングチームとチャット テクニカルライター Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。開発以外にも、CurtisはIoT(Internet of Things)への強い関心を持ち、ハードウェアとソフトウェアの統合方法を模索しています。余暇には、ゲームをしたりDiscordボットを作成したりして、技術に対する愛情と創造性を組み合わせています。 レビュー済み Jeffrey T. Fritz プリンシパルプログラムマネージャー - .NETコミュニティチーム Jeffはまた、.NETとVisual Studioチームのプリンシパルプログラムマネージャーです。彼は.NET Conf仮想会議シリーズのエグゼクティブプロデューサーであり、週に二回放送される開発者向けライブストリーム『Fritz and Friends』のホストを務め、テクノロジーについて話すことや視聴者と一緒にコードを書くことをしています。Jeffはワークショップ、プレゼンテーション、およびMicrosoft Build、Microsoft Ignite、.NET Conf、Microsoft MVPサミットを含む最大のMicrosoft開発者イベントのコンテンツを企画しています。 準備はできましたか? Nuget ダウンロード 5,525,971 | バージョン: 2026.3 リリース 無料トライアル NuGet 無料版 総ダウンロード数: 5,525,971 ライセンスを見る まだスクロールしていますか? すぐに証拠が欲しいですか? PM > Install-Package IronOcr サンプルを実行 あなたの画像が検索可能なテキストになるのをご覧ください。 NuGet 無料版 総ダウンロード数: 5,525,971 ライセンスを見る