フッターコンテンツにスキップ
IRONOCRの使い方

C#チュートリアルで請求書からテキストを取得する方法

Tesseractで領収書をOCRする方法

  1. TesseractでC#ライブラリOCRレシートをインストールする
  2. レシートのOCR用の機能豊富なC#ライブラリを調査
  3. Tesseractで領収書からデータを抽出する
  4. 抽出されたテキスト結果から特定のデータを検索する
  5. 入力したレシート画像のバーコードの値を読み取る

1. IronOCR、光学文字認識API

IronOCR は、領収書 OCR など、情報抽出のために画像からテキスト データを認識するために使用できる OCR ライブラリです。 これは、領収書認識用の現在入手可能な OCR エンジンの中で最も正確なものの 1 つであると考えられている Tesseract OCR エンジンに基づいて構築されています。 IronOCR は、PNG、JPG、TIFF、JSON、PDF 形式など、さまざまな種類のドキュメントから重要な情報を読み取り、複数の言語のテキストを認識できます。

IronOCR の重要な機能の 1 つは、画像が回転したり傾斜したりしている場合でも、テキストの方向を自動的に検出できることで、領収書 OCR に特に役立ちます。 レシートには多くの情報が含まれていることが多く、折り畳まれたりくしゃくしゃになったりしてテキストが歪んでしまうことがあるため、レシートのアップロードやデータ抽出時に正確なテキスト認識を行うには、これが不可欠です。

2. IronOCRの機能

  • C# OCR はディープラーニングを使用して、画像、スキャンされたドキュメント、PDF からテキストをスキャンして認識します。
  • .NET OCR は 125 を超える世界中の言語をサポートしています。
  • IronOCR は、PNG、JPG、TIFF、PDF など、さまざまなファイル形式の画像からテキストを読み取ることができます。
  • 抽出された情報からテキスト、構造化データ、JSON 出力、または検索可能な PDF を生成できます。
  • IronOCR は、.NET バージョン 5、6、7 (Core、Framework、Standard) をサポートしています。
  • IronOCR は、テキスト領域に基づいて入力をさまざまな画像に分割します。 コンピュータビジョンを使用して、テキスト要素を含む領域を識別します。

3. Visual Studioで新しいプロジェクトを作成する

Visual Studio を開いて、ファイル メニューに移動します。 "新しいプロジェクト"を選択し、"コンソール アプリケーション"を選択します。

プロジェクト名を入力し、パスを適切なテキストボックスに選択します。 その後、[作成]ボタンをクリックします。 以下のスクリーンショットに示されているように、要求される.NET Frameworkを選択します:

Visual Studioで新しいプロジェクトを作成する

コンソール アプリケーションのプロジェクト構造が生成されます。 完了すると、Program.cs ファイルが開き、ソース コードを記述して実行できるようになります。

! Visual Studio の新規プロジェクト ウィザードから生成された Program.cs ファイル

4. IronOCRをインストールする

Visual Studio では、IronOCR を C# プロジェクトに簡単に統合できます。 IronOCR は、C# .NET プロジェクトと統合するための複数の方法を提供します。 ここでは、そのうちの 1 つ、NuGet パッケージ マネージャーを使用して IronOCR をインストールすることについて説明します。

Visual Studioでは、ツール > NuGet パッケージ マネージャー > パッケージ マネージャー コンソールに移動します。

! Visual Studio NuGet パッケージ マネージャー コンソール

Visual Studio ウィンドウの下部に新しいコンソールが表示されます。 コンソールに以下のコマンドを入力し、Enter キーを押します。

Install-Package IronOcr

IronOCRはわずか数秒でインストールされます。

5. IronOCRを使用した領収書からのデータ抽出

IronOCRは、レシートから詳細なデータを抽出し、アクセスするための強力なOCRライブラリです。IronOCRを使用すると、レシートの写真を機械可読なテキストに変換できるため、データのプライバシーを損なうことなく、簡単に分析・処理できます。

以下は、IronOCR を使用して領収書からテキストを抽出する方法の例です。

using IronOcr;
using System;

class Program
{
    static void Main()
    {
        IronTesseract ocrTesseract = new IronTesseract();

        // Load the receipt image
        using (OcrInput ocrInput = new OcrInput("ocr.png"))
        {
            // Read the OCR result
            OcrResult ocrResult = ocrTesseract.Read(ocrInput);
            string recognizedText = ocrResult.Text;

            // Output the recognized text to the console
            Console.WriteLine(recognizedText);
        }
    }
}
using IronOcr;
using System;

class Program
{
    static void Main()
    {
        IronTesseract ocrTesseract = new IronTesseract();

        // Load the receipt image
        using (OcrInput ocrInput = new OcrInput("ocr.png"))
        {
            // Read the OCR result
            OcrResult ocrResult = ocrTesseract.Read(ocrInput);
            string recognizedText = ocrResult.Text;

            // Output the recognized text to the console
            Console.WriteLine(recognizedText);
        }
    }
}
Imports IronOcr
Imports System

Friend Class Program
	Shared Sub Main()
		Dim ocrTesseract As New IronTesseract()

		' Load the receipt image
		Using ocrInput As New OcrInput("ocr.png")
			' Read the OCR result
			Dim ocrResult As OcrResult = ocrTesseract.Read(ocrInput)
			Dim recognizedText As String = ocrResult.Text

			' Output the recognized text to the console
			Console.WriteLine(recognizedText)
		End Using
	End Sub
End Class
$vbLabelText   $csharpLabel

IronOCR が C# を使用して画像からテキストを読み取る方法の詳細については、"画像からのテキストの読み取り"チュートリアルを参照してください。

上記のコードの出力:

- LOGO SHOP
- LOREM IPSUM
- DOLOR SIT AMET CONSECTETUR
- ADIPISCING ELIT
- 1 LOREM IPSUM $3.20
- 2 ORNARE MALESUADA $9.50
- 3 PORTA FERMENTUM $5.90
- 4 SODALES ARCU $6.00
- 5 ELEIFEND $9.00
- 6 SEM NISIMASSA $0.50
- 7 DUIS FAMES DIS $7.60
- 8 FACILISI RISUS $810
- TOTAL AMOUNT $49.80
- CASH $50.00

6. IronOCRを使用した領収書画像からの特定データ抽出

IronOCR を使用すると、開発者はスキャンした領収書から税額や販売店名などの重要な情報を取得できます。

以下は、レシート画像から合計金額の値を抽出する方法を示す例です。

using IronOcr;
using System;

class Program
{
    static void Main()
    {
        IronTesseract ocrTesseract = new IronTesseract();

        // Set the language for OCR
        ocrTesseract.Language = OcrLanguage.English;

        // Load the receipt image
        using (OcrInput ocrInput = new OcrInput("ocr.png"))
        {
            // Optimize the input image for OCR
            ocrInput.DeNoise(true);
            ocrInput.Contrast();
            ocrInput.EnhanceResolution();
            ocrInput.ToGrayScale();

            OcrResult ocrResult = ocrTesseract.Read(ocrInput);

            // Search for the total amount in the OCR result
            var totalAmount = ocrResult.Text.Contains("Total:") ? ocrResult.Text.Split("Total:")[1].Split("\n")[0] : "";
            Console.WriteLine("Total Amount: " + totalAmount);
        }
    }
}
using IronOcr;
using System;

class Program
{
    static void Main()
    {
        IronTesseract ocrTesseract = new IronTesseract();

        // Set the language for OCR
        ocrTesseract.Language = OcrLanguage.English;

        // Load the receipt image
        using (OcrInput ocrInput = new OcrInput("ocr.png"))
        {
            // Optimize the input image for OCR
            ocrInput.DeNoise(true);
            ocrInput.Contrast();
            ocrInput.EnhanceResolution();
            ocrInput.ToGrayScale();

            OcrResult ocrResult = ocrTesseract.Read(ocrInput);

            // Search for the total amount in the OCR result
            var totalAmount = ocrResult.Text.Contains("Total:") ? ocrResult.Text.Split("Total:")[1].Split("\n")[0] : "";
            Console.WriteLine("Total Amount: " + totalAmount);
        }
    }
}
Imports Microsoft.VisualBasic
Imports IronOcr
Imports System

Friend Class Program
	Shared Sub Main()
		Dim ocrTesseract As New IronTesseract()

		' Set the language for OCR
		ocrTesseract.Language = OcrLanguage.English

		' Load the receipt image
		Using ocrInput As New OcrInput("ocr.png")
			' Optimize the input image for OCR
			ocrInput.DeNoise(True)
			ocrInput.Contrast()
			ocrInput.EnhanceResolution()
			ocrInput.ToGrayScale()

			Dim ocrResult As OcrResult = ocrTesseract.Read(ocrInput)

			' Search for the total amount in the OCR result
			Dim totalAmount = If(ocrResult.Text.Contains("Total:"), ocrResult.Text.Split("Total:")(1).Split(vbLf)(0), "")
			Console.WriteLine("Total Amount: " & totalAmount)
		End Using
	End Sub
End Class
$vbLabelText   $csharpLabel

OcrInputクラスによって提供される複数の設定により、入力画像を最適化して OCR プロセスの精度を向上させることができます。

入力

領収書から特定のデータを抽出するデモに使用した入力画像

出力

- Total 16.5

7. レシートのバーコードを読み取る

IronOCR は、テキストだけでなく領収書のバーコードも読み取ることができます。 レシートのバーコードを読み取るには、 BarcodeReaderクラスとReadBarCodesメソッドを組み合わせて使用する必要があります。

バーコードの読み取り方法の例を次に示します。

using IronOcr;
using System;

class Program
{
    static void Main()
    {
        var ocrTesseract = new IronTesseract();
        ocrTesseract.Configuration.ReadBarCodes = true;

        // Load the receipt image with a barcode
        using (var ocrInput = new OcrInput("b.png"))
        {
            OcrResult ocrResult = ocrTesseract.Read(ocrInput);

            // Output the barcode values to the console
            foreach (var barcode in ocrResult.Barcodes)
            {
                Console.WriteLine(barcode.Value);
            }
        }
    }
}
using IronOcr;
using System;

class Program
{
    static void Main()
    {
        var ocrTesseract = new IronTesseract();
        ocrTesseract.Configuration.ReadBarCodes = true;

        // Load the receipt image with a barcode
        using (var ocrInput = new OcrInput("b.png"))
        {
            OcrResult ocrResult = ocrTesseract.Read(ocrInput);

            // Output the barcode values to the console
            foreach (var barcode in ocrResult.Barcodes)
            {
                Console.WriteLine(barcode.Value);
            }
        }
    }
}
Imports IronOcr
Imports System

Friend Class Program
	Shared Sub Main()
		Dim ocrTesseract = New IronTesseract()
		ocrTesseract.Configuration.ReadBarCodes = True

		' Load the receipt image with a barcode
		Using ocrInput As New OcrInput("b.png")
			Dim ocrResult As OcrResult = ocrTesseract.Read(ocrInput)

			' Output the barcode values to the console
			For Each barcode In ocrResult.Barcodes
				Console.WriteLine(barcode.Value)
			Next barcode
		End Using
	End Sub
End Class
$vbLabelText   $csharpLabel

入力画像

バーコード読み取り入力

出力 Text

バーコード画像を処理した結果

8. 結論

上記の記事では、C# プロジェクトに IronOCR をインストールして使用し、領収書からデータを抽出するプロセスについて説明しており、サンプル コード スニペットも提供されています。

画像からテキストを読み取る方法に関するチュートリアルをお読みください。

IronOCR は、ドキュメントと画像を操作するための 5 つの異なる .NET ライブラリを含むIron Suiteの一部です。 わずか 2 つのIronOCR ライセンスの価格で、Iron Suite 全体を購入できます。

無料トライアルで、本番環境のアプリで IronOCR をお試しください。

よくある質問

C# で領収書画像に対して IronOCR を使用して OCR を実行するにはどうすればよいですか?

IronOCR を使用して、OcrInput クラスに画像をロードし、アイテムリストや合計金額などのテキストデータを抽出するために Read メソッドを呼び出すことで、領収書画像に対して OCR を実行できます。

請求書処理において、Tesseract を超えて IronOCR を使用する利点は何ですか?

IronOCR は高い精度を提供し、125 以上の言語をサポートし、自動テキスト方向検出やディープラーニング機能などの機能を備えています。また、NuGet パッケージ マネージャーを使用して C# プロジェクトと簡単に統合できます。

Visual Studio プロジェクトに IronOCR を統合する方法は?

Visual Studio プロジェクトに IronOCR を統合するには、NuGet パッケージ マネージャーを使用します。ツール > NuGet パッケージ マネージャー > パッケージ マネージャー コンソールに移動し、その後 Install-Package IronOcr を実行してプロジェクトにライブラリを追加します。

IronOCR は、OCR の領収書で複数言語を扱えますか?

はい、IronOCR は 125 を超える世界の言語をサポートしており、多言語のテキストを含む領収書を処理するのに理想的です。

IronOCR は領収書のテキスト認識精度をどのように改善しますか?

IronOCR はディープラーニング、自動テキスト方向検出、および OCR 結果を向上するために画像を最適化する OcrInput クラスを使用することで、テキスト認識精度を改善します。

IronOCR を使用して、領収書から項目別リストを抽出することは可能ですか?

はい、IronOCR を使用してテキストデータを処理し、ラインアイテムをパターンマッチングで識別することにより、領収書から項目別リストを抽出できます。

IronOCR は領収書のバーコード読取をどのように処理しますか?

IronOCR は、BarcodeReader クラスと ReadBarCodes メソッドを使用して、領収書に含まれるバーコードをスキャンしてデコードします。

IronOCR は、領収書 OCR にどのようなファイルフォーマットを処理できますか?

IronOCR は、PNG、JPG、TIFF、PDF など様々なファイル形式を扱うことができ、さまざまな入力タイプに対して柔軟に対応します。

C# における請求書処理用に IronOCR を設定する手順は何ですか?

請求書処理のために IronOCR を設定するには、NuGet を使用してライブラリをインストールし、領収書画像を OcrInput で構成し、Read メソッドを使用してテキストデータを抽出することが含まれます。また、ライブラリの機能を使用して精度を向上させ、合計金額などの特定のデータを抽出します。

Kannaopat Udonpant
ソフトウェアエンジニア
ソフトウェアエンジニアになる前に、Kannapatは北海道大学で環境資源の博士号を修了しました。博士号を追求する間に、彼はバイオプロダクションエンジニアリング学科の一部である車両ロボティクスラボラトリーのメンバーになりました。2022年には、C#のスキルを活用してIron Softwareのエンジニアリングチームに参加し、IronPDFに注力しています。Kannapatは、IronPDFの多くのコードを執筆している開発者から直接学んでいるため、この仕事を大切にしています。同僚から学びながら、Iron Softwareでの働く社会的側面も楽しんでいます。コードやドキュメントを書いていない時は、KannapatはPS5でゲームをしたり、『The Last of Us』を再視聴したりしていることが多いです。