IronOCRで手書き画像から文字起こし・テキスト抽出を行う方法
IronOCR は、画像から手書きのテキストを確実にデジタル化する特殊な ReadHandwriting メソッドを提供し、不規則な間隔やストロークの変化といった固有の課題にもかかわらず、英語の手書き文字認識で約 90% の精度を実現します。
クイックスタート: IronOCRで手書き画像を読み取る
1.IronOCRとIronOcr.Extensions.AdvancedScanパッケージをインストールしてください。
IronTesseractインスタンスを作成するLoadImage()を使用して手書き画像を読み込みます。ReadHandwriting()メソッドを呼び出すOcrResultから抽出したテキストにアクセスします。
-
IronOCR をNuGetパッケージマネージャでインストール
PM > Install-Package IronOcr -
このコード スニペットをコピーして実行します。
using IronOcr; var ocrTesseract = new IronTesseract(); using var ocrInput = new OcrInput(); ocrInput.LoadImage("handwriting.png"); var ocrResult = ocrTesseract.ReadHandwriting(ocrInput); Console.WriteLine(ocrResult.Text); -
実際の環境でテストするためにデプロイする
今日プロジェクトで IronOCR を使い始めましょう無料トライアル
画像から手書きテキストを自動的に読み取ることは、人によって書き方が異なるため、非常に困難です。 この膨大な矛盾が、OCRを困難なものにしています。 古い記録、患者受け入れフォーム、顧客調査などの重要な文書では、依然として手作業による処理が必要なため、エラーの起こりやすいワークフローが発生し、データの完全性が損なわれています。
IronOCRは、手書き画像を確実に理解し、デジタル化する特別な方法を導入することで、この問題を解決します。 強力なTesseract 5エンジンをベースに構築されたIronOCRは、高度な画像処理と機械学習を組み合わせ、業界をリードする手書き文字認識機能を提供します。
このガイドでは、.NETアプリケーションに手書きOCRを実装する手順を順を追って説明します。歴史的文書のデジタル化、医療フォームの処理、手書きメモの変換など、IronOCRで信頼性の高い結果を得る方法を学ぶことができます。
IronOCRを使い始める
IronOCRを使って手書き画像を読み取る方法
- 手書き画像を読み取るための C# ライブラリをダウンロードする。
- OCRエンジンをインスタンス化する
- `LoadImage`で手書き画像を読み込みます。
- `ReadHandwriting`メソッドを使用して、サンプルの手書き画像からデータを抽出します。
- **OcrResult**プロパティにアクセスして、抽出されたデータを表示および操作します。
この機能を使用するには、まずIronOcr.Extensions.AdvancedScanパッケージをインストールする必要があります。 ReadHandwriting メソッドは現在英語のみをサポートしていることに注意してください。 複数言語の OCRの場合は、適切な言語パックを使用して標準の Read() メソッドを使用します。
IronOCRで手書き画像を読み取るには?
IronOCRで手書き画像を読むのは簡単です。 まず OCR エンジンをインスタンス化し、次に LoadImage を使用してイメージを読み込み、最後に手書き認識用に設計された特殊な ReadHandwriting メソッドを使用します。 抽出したテキストを印刷し、正確さと内容を確認してください。
処理の前に、画質補正フィルターを適用して可読性を高めることを検討してください。 これらのフィルタは、特にコントラストや解像度の低いスキャン文書に対して、認識精度を大幅に向上させることができます。
どのような入力形式を使用すればよいですか?
:path=/static-assets/ocr/content-code-examples/how-to/read-handwritten-image.cs
using IronOcr;
using System;
// Instantiate OCR engine
var ocr = new IronTesseract();
// Load handwriting image
var inputHandWriting = new OcrInput();
inputHandWriting.LoadImage("handwritten.png");
// Perform OCR on the handwriting image
OcrHandwritingResult result = ocr.ReadHandwriting(inputHandWriting);
// Output the recognized handwritten text
Console.WriteLine(result.Text);
// Output the confidence score of the OCR result
Console.WriteLine(result.Confidence);
Imports IronOcr
Imports System
' Instantiate OCR engine
Dim ocr As New IronTesseract()
' Load handwriting image
Dim inputHandWriting As New OcrInput()
inputHandWriting.LoadImage("handwritten.png")
' Perform OCR on the handwriting image
Dim result As OcrHandwritingResult = ocr.ReadHandwriting(inputHandWriting)
' Output the recognized handwritten text
Console.WriteLine(result.Text)
' Output the confidence score of the OCR result
Console.WriteLine(result.Confidence)
どのような結果を期待できますか?
ReadHandwriting メソッドは 90.6% の信頼度スコアを達成し、冒頭のフレーズ"My name is Erin Fish"を含むテキストの大部分を正しく識別しました。
この強力な結果は、IronOCRが困難な手書き文字にも対応できることを示しています。 このエンジンは、文字間隔や文字のつながりに苦労しながらも、核となるメッセージの抽出に成功しました。 これはIronOCRが複雑で非標準的なテキストを効果的に処理することを示しています。
OCR の初心者の方は、手書き認識に取り組む前に、simple OCR tutorial で基本を理解してください。
非同期バージョンはどのように使用しますか?
IronOCR は非同期バージョンをサポートしています: ReadHandwritingAsync。 これは、処理前に入力画像を取得する必要がある非同期コードを扱う場合に役立ちます。 async support documentation は、非同期 OCR 操作の実装に関する包括的なガイダンスを提供します。
同じ入力を使って、asyncメソッドの使い方を説明します:
:path=/static-assets/ocr/content-code-examples/how-to/read-handwritten-image-async.cs
using IronOcr;
using System;
using System.Threading.Tasks;
using System;
using System.Threading.Tasks;
#endregion
public class read_handwritten_image_async
{
public async Task codeAsync()
{
// Instantiate OCR engine
var ocr = new IronTesseract();
// Load handwriting image
var inputHandWriting = new OcrInput();
inputHandWriting.LoadImage("handwritten.png");
// Perform OCR using the async method with 'await'.
// The compiler automatically infers this top-level code block as an 'async Task Main()' method.
OcrHandwritingResult result = await ocr.ReadHandwritingAsync(inputHandWriting);
// Output the recognized handwriting text
Console.WriteLine(result.Text);
// Output the confidence score of the OCR result
Console.WriteLine(result.Confidence);
Imports IronOcr
Imports System
Imports System.Threading.Tasks
Public Class ReadHandwrittenImageAsync
Public Async Function CodeAsync() As Task
' Instantiate OCR engine
Dim ocr As New IronTesseract()
' Load handwriting image
Dim inputHandWriting As New OcrInput()
inputHandWriting.LoadImage("handwritten.png")
' Perform OCR using the async method with 'Await'.
' The compiler automatically infers this top-level code block as an 'async Task Main()' method.
Dim result As OcrHandwritingResult = Await ocr.ReadHandwritingAsync(inputHandWriting)
' Output the recognized handwriting text
Console.WriteLine(result.Text)
' Output the confidence score of the OCR result
Console.WriteLine(result.Confidence)
End Function
End Class
オプションの timeoutMs パラメータを指定して、自動キャンセルまでのミリ秒数を指定できます。 デフォルト値は -1 で、時間制限がなく、操作が完了するまで実行されることを意味します。
高度な処理テクニック
複雑な手書き認識シナリオについては、以下の高度なテクニックをご検討ください:
地域固有のOCR:フォームや構造化されたドキュメントを扱う場合、領域ベース OCR を使用して、手書きテキストを含む特定の領域に焦点を当てます。 このアプローチは、処理領域を限定することで精度を向上させます:
using IronOcr;
using IronSoftware.Drawing;
var ocrTesseract = new IronTesseract();
using var ocrInput = new OcrInput();
// Define a specific region for signature area
var signatureRegion = new CropRectangle(x: 100, y: 500, width: 300, height: 100);
ocrInput.LoadImage("form-with-signature.png", signatureRegion);
var signatureResult = ocrTesseract.ReadHandwriting(ocrInput);
Console.WriteLine($"Signature text: {signatureResult.Text}");
using IronOcr;
using IronSoftware.Drawing;
var ocrTesseract = new IronTesseract();
using var ocrInput = new OcrInput();
// Define a specific region for signature area
var signatureRegion = new CropRectangle(x: 100, y: 500, width: 300, height: 100);
ocrInput.LoadImage("form-with-signature.png", signatureRegion);
var signatureResult = ocrTesseract.ReadHandwriting(ocrInput);
Console.WriteLine($"Signature text: {signatureResult.Text}");
Imports IronOcr
Imports IronSoftware.Drawing
Dim ocrTesseract As New IronTesseract()
Using ocrInput As New OcrInput()
' Define a specific region for signature area
Dim signatureRegion As New CropRectangle(x:=100, y:=500, width:=300, height:=100)
ocrInput.LoadImage("form-with-signature.png", signatureRegion)
Dim signatureResult = ocrTesseract.ReadHandwriting(ocrInput)
Console.WriteLine($"Signature text: {signatureResult.Text}")
End Using
進捗追跡:複数の手書き文書のバッチ処理では、進捗追跡を実装して、OCR 操作を監視します:
ocrTesseract.OcrProgress += (sender, e) =>
{
Console.WriteLine($"Processing: {e.ProgressPercent}% complete");
};
ocrTesseract.OcrProgress += (sender, e) =>
{
Console.WriteLine($"Processing: {e.ProgressPercent}% complete");
};
ocrTesseract.OcrProgress += Sub(sender, e)
Console.WriteLine($"Processing: {e.ProgressPercent}% complete")
End Sub
どのような課題に注意すべきですか?
IronOCRは全体的な構造とテキストを保持する高い信頼性を達成しましたが、OCRはまだ手書き文字に苦戦しており、局所的なエラーにつながっています。 よくある課題として、抽出されたアウトプットの検証が必要です:
不規則な間隔:印刷されたテキストは、文字と文字の間隔が均一です。 手書きの場合、筆と筆の間隔や文字のつながりが大きく異なります。 これにより、ununiformed が単一の単語ではなく個別の文字 (非統一) に分割される場合のように、文字の分割が不正確になります。
筆跡のばらつき: 人にはそれぞれ個性的な筆跡があり、同じ文字でも毎回書き方が異なります。文字の接続とパターンは大幅に異なります。 エンジンは、ストロークの傾き、筆圧、フォルムのばらつきが大きいため、パターンマッチングの信頼性が標準化されたフォントよりも低くなる。
曖昧な文字形状:手書きでは、簡略化された筆致や急ぎ足の筆致が使われることが多く、曖昧な形状が生まれます。急いで書かれたiが誤認される場合もあります。
品質と解像度の問題:スキャン画質が悪い、解像度が低い、インクが薄くなっているなどは、認識精度に大きく影響します。 このような問題が発生した場合は、一般的なトラブルシューティングガイドを参照して解決してください。
この方法を使用する場合は、出力が意図された入力と一致していることを確認し、間隔の狭い単語や形の悪い単語に特に注意してください。 ユースケースに特有の一般的な誤認識を処理するための後処理ロジックの実装を検討してください。
ReadHandwriting メソッドでは、筆記体の場合、OCR 抽出の精度が低くなります。 よくある質問
画像から手書きテキストを抽出する場合、どの程度の精度が期待できますか?
IronOCRのReadHandwritingメソッドは、手書きOCRを特に難しくする不規則な間隔やストロークのバリエーションという固有の課題にもかかわらず、英語の手書き認識において約90%の精度を達成しています。
手書き認識に対応している言語は?
IronOCRのReadHandwritingメソッドは現在英語のみサポートしています。多言語OCRの場合は、特殊な手書きメソッドではなく、適切な言語パックを使用した標準のRead()メソッドを使用する必要があります。
手書きOCRにはどのような追加パッケージをインストールする必要がありますか?
IronOCRの手書き認識機能を使用するには、IronOCRのメインライブラリに加えてIronOcr.Extensions.AdvancedScanパッケージをインストールする必要があります。
C#で基本的な手書き認識を実装するにはどうすればよいですか?
IronTesseractインスタンスを作成し、LoadImage()を使用して手書き画像をロードし、ReadHandwriting()メソッドを呼び出し、OcrResultから抽出されたテキストにアクセスします。IronOCRは複雑な画像処理と機械学習を自動的に処理します。
どのような種類の手書き文書を処理できますか?
IronOCRは、過去の記録、患者の入室フォーム、顧客アンケート、手書きメモなど様々な手書き文書を処理することができます。このライブラリは人間の手書きの不一致を処理するように設計されており、手作業による処理ではエラーが発生しやすくなっています。
手書き認識機能を支えている技術は何ですか?
IronOCRの手書き文字認識は、強力なTesseract 5エンジン上に構築されており、高度な画像処理と機械学習アルゴリズムを組み合わせることで、業界をリードする手書き文字認識機能を実現しています。

