IronOCRで手書き画像を読み取る方法

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

IronOCR は、画像から手書きテキストを確実にデジタル化する専門の ReadHandwriting メソッドを提供しており、不規則な間隔や筆画のバリエーションという固有の課題にもかかわらず、英語の手書きで約 90% の精度を達成します。

クイックスタート: IronOCRで手書き画像を見る

  1. IronOCR と IronOcr.Extensions.AdvancedScan パッケージをインストール
  2. IronTesseract インスタンスを作成します
  3. LoadImage() を使って手書き画像を読み込みます
  4. ReadHandwriting() メソッドを呼び出します
  5. OcrResult から抽出されたテキストにアクセスします
  1. IronOCR をNuGetパッケージマネージャでインストール

    PM > Install-Package IronOcr
  2. このコード スニペットをコピーして実行します。

    using IronOcr;
    
    var ocrTesseract = new IronTesseract();
    using var ocrInput = new OcrInput();
    ocrInput.LoadImage("handwriting.png");
    var ocrResult = ocrTesseract.ReadHandwriting(ocrInput);
    Console.WriteLine(ocrResult.Text);
  3. 実際の環境でテストするためにデプロイする

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

    arrow pointer

画像から手書きテキストを自動的に読み取ることは、人によって書き方が異なるため、非常に困難です。 この膨大な矛盾が、OCRを困難なものにしています。 古い記録、患者受け入れフォーム、顧客調査などの重要な文書では、依然として手作業による処理が必要なため、エラーの起こりやすいワークフローが発生し、データの完全性が損なわれています。

IronOCRは、手書き画像を確実に理解し、デジタル化する特別な方法を導入することで、この問題を解決します。 強力なTesseract 5エンジンをベースに構築されたIronOCRは、高度な画像処理と機械学習を組み合わせ、業界をリードする手書き文字認識機能を提供します。

このガイドでは、.NETアプリケーションに手書きOCRを実装する手順を順を追って説明します。歴史的文書のデジタル化、医療フォームの処理、手書きメモの変換など、IronOCRで信頼性の高い結果を得る方法を学ぶことができます。

IronOCRを使い始める


この機能を使用するには、まず IronOcr.Extensions.AdvancedScan パッケージをインストールする必要があります。 ReadHandwriting メソッドは現在英語のみをサポートしていることに注意してください。 複数言語の OCR の場合、適切な言語パックを使用して標準的な Read() メソッドを使用します。

IronOCRで手書き画像を読み取るには?

IronOCRで手書き画像を読むのは簡単です。 OCR エンジンをインスタンス化し、LoadImage で画像を読み込み、最後に手書き認識専用の ReadHandwriting メソッドを使用します。 抽出したテキストを印刷し、正確さと内容を確認してください。

処理の前に、画質補正フィルターを適用して可読性を高めることを検討してください。 これらのフィルタは、特にコントラストや解像度の低いスキャン文書に対して、認識精度を大幅に向上させることができます。

どのような入力形式を使用すればよいですか?

OCR処理用の筆記体を示す手書き入力画像のサンプル
: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)
$vbLabelText   $csharpLabel

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

抽出された手書きテキストと信頼度スコアを示すOCR出力結果

ReadHandwriting メソッドは 90.6% の信頼スコアを達成し、オープニングフレーズ"私の名前はエリン フィッシュです"を含むテキストの大部分を正しく識別しました。

この強力な結果は、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;

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'.
        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'.
        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
$vbLabelText   $csharpLabel

自動キャンセルを行うまでのミリ秒を指定するオプションである timeoutMs パラメーターを提供できます。 デフォルト値は -1 で、つまり時間制限がなく、操作は完了するまで続きます。

高度な処理テクニック

複雑な手書き認識シナリオについては、以下の高度なテクニックをご検討ください:

地域固有のOCR:フォームや構造化されたドキュメントを扱う場合、領域ベース OCR を使用して、手書きテキストを含む特定の領域に焦点を当てます。 このアプローチは、処理領域を限定することで精度を向上させます:

:path=/static-assets/ocr/content-code-examples/how-to/read-handwritten-image-4.cs
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
$vbLabelText   $csharpLabel

進捗追跡:複数の手書き文書のバッチ処理では、進捗追跡を実装して、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
$vbLabelText   $csharpLabel

どのような課題に注意すべきですか?

IronOCRは全体的な構造とテキストを保持する高い信頼性を達成しましたが、OCRはまだ手書き文字に苦戦しており、局所的なエラーにつながっています。 よくある課題として、抽出されたアウトプットの検証が必要です:

不規則な間隔:印刷されたテキストは、文字と文字の間隔が均一です。 手書きの場合、筆と筆の間隔や文字のつながりが大きく異なります。 これは不正確な文字のセグメント化を引き起こし、ununiformed が1つの単語ではなく(u n u n i f o c m e d) のように個々の文字に分割されるときに示されます。

筆跡のばらつき: 人にはそれぞれ個性的な筆跡があり、同じ文字でも毎回書き方が異なります。文字の接続とパターンは大幅に異なります。 エンジンは、ストロークの傾き、筆圧、フォルムのばらつきが大きいため、パターンマッチングの信頼性が標準化されたフォントよりも低くなる。

曖昧な文字形状: 手書きはたいてい単純化されたまたは急いだストロークを使用し、曖昧な形状を作り出します。速く書かれた ec に似ているか、連続した li が誤認識されるかもしれません。

品質と解像度の問題:スキャン画質が悪い、解像度が低い、インクが薄くなっているなどは、認識精度に大きく影響します。 このような問題が発生した場合は、一般的なトラブルシューティングガイドを参照して解決してください。

この方法を使用する場合は、出力が意図された入力と一致していることを確認し、間隔の狭い単語や形の悪い単語に特に注意してください。 ユースケースに特有の一般的な誤認識を処理するための後処理ロジックの実装を検討してください。

警告 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エンジン上に構築されており、高度な画像処理と機械学習アルゴリズムを組み合わせることで、業界をリードする手書き文字認識機能を実現しています。

IronOCRは既存のアプリケーションに統合できますか?

IronOCRはC#を使用して既存のアプリケーションに簡単に統合できるよう設計されており、開発者がソフトウェアにOCR機能を少ない手間で追加できるようにします。

ドキュメント管理でIronOCRを使用する利点は何ですか?

IronOCRを使用することで、スキャンされた文書を検索可能かつ編集可能なテキストに変換し、手作業によるデータ入力を減らし、文書のアクセス性を向上させることでワークフローを効率化します。

IronOCRはデータ精度をどのように向上させますか?

IronOCRはその高度な認識アルゴリズムと画像補正機能により、信頼性が高く正確なテキスト抽出プロセスを保証します。

IronOCRの無料トライアルを利用できますか?

はい、Iron SoftwareはIronOCRの無料トライアルを提供しており、ユーザーが購入決定をする前にその機能と能力をテストできます。

Curtis Chau
テクニカルライター

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

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

準備はできましたか?
Nuget ダウンロード 6,151,372 | バージョン: 2026.7 リリースされたばかり
Still Scrolling Icon

まだスクロールしていますか?

すぐに証拠が欲しいですか? PM > Install-Package IronOcr
サンプルを実行 あなたの画像が検索可能なテキストになるのをご覧ください。