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

レシートスキャンAPI(開発者向けチュートリアル)

領収書スキャニングAPIは、高度なOCR技術を使用して領収書から主要なデータを抽出します。 手作業のエラーを排除し、生産性を向上させることで、データ入力プロセスを効率化します。 このAPIは多言語、通貨、形式をサポートしており、汎用性が高く正確です。 領収書の解析を自動化することで、企業は支出パターンを把握し、データに基づいた意思決定を行えます。 この記事では、C# OCR ライブラリのIronOCRを使用して領収書から重要な情報を抽出する方法を示します。

IronOCRの概要

IronOCRは、Iron Softwareによって開発された、多目的OCRライブラリおよびAPIであり、スキャンされた文書、画像、PDFなどのさまざまなソースからテキストを抽出するための強力なソリューションを開発者に提供します。 高度なOCRアルゴリズム、コンピュータビジョン、機械学習モデルを備えたIronOCRは、困難な状況でも高い精度と信頼性を保証します。 このライブラリは多言語とフォントスタイルをサポートしており、グローバルなアプリケーションに適しています。 IronOCRをアプリケーションに組み込んで機械学習の能力を活用することで、開発者はデータ入力、テキスト解析、その他のタスクを簡単に自動化し、生産性と効率を向上させることができます。

IronOCRを使用すると、文書、写真、スクリーンショット、さらにはライブカメラフィードからもJSONレスポンスとしてテキストを簡単に取得できます。 高度なアルゴリズムと機械学習モデルを利用して、IronOCRは画像データを分析し、個々の文字を認識し、それを機械可読なテキストに変換します。 抽出されたテキストは、データ入力、情報検索、テキスト解析、手動タスクの自動化など、さまざまな目的に使用できます。

前提条件

IronOCR の使用を開始する前に、いくつかの前提条件を満たす必要があります。 これらの前提条件には以下が含まれます:

  1. コンピューターに適切な開発環境が設定されていることを確認します。 これには通常、Visual Studio などの統合開発環境 (IDE) がインストールされている必要があります。
  2. C# プログラミング言語の基本を理解しておくことが重要です。 これにより、記事で提供されているコード例を効果的に理解して変更できるようになります。
  3. プロジェクトに IronOCR ライブラリがインストールされている必要があります。 これは、Visual Studio 内の NuGet パッケージ マネージャーを使用するか、コマンド ライン インターフェイスを通じて実行できます。

これらの前提条件が満たされていることを確認することで、IronOCR を操作するプロセスにすぐに取り掛かることができます。

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

IronOCR を使い始めるには、まず新しい Visual Studio プロジェクトを作成します。

Visual Studio を開いて [ファイル] に移動し、[新規] にマウスを移動して [プロジェクト] をクリックします。

領収書スキャニングAPI(開発者チュートリアル)、図1: 新しいプロジェクト画像 新しいプロジェクト画像

新しいウィンドウで、"コンソール アプリケーション"を選択し、"次へ"をクリックします。

領収書スキャニングAPI(開発者チュートリアル)、図2: コンソールアプリケーション コンソールアプリケーション

新しいウィンドウが表示されます。 新しいプロジェクトの名前と位置を入力し、次へをクリックします。

領収書スキャニングAPI(開発者チュートリアル)、図3: プロジェクト設定 プロジェクト設定

最後に、ターゲットフレームワークを指定し、作成をクリックします。

領収書スキャニングAPI(開発者チュートリアル)、図4: ターゲットフレームワーク ターゲットフレームワーク

さて、新しいVisual Studioプロジェクトが作成されましたので、IronOCRをインストールしましょう。

IronOCRの概要のインストール

IronOCR ライブラリをダウンロードしてインストールする方法はいくつかあります。 しかし、ここでは最も簡単な2つのアプローチを紹介します。

  1. Visual Studio NuGetパッケージマネージャーを使用する
  2. Visual Studio コマンドラインの使用

Visual Studio NuGetパッケージマネージャーを使用する

Visual Studio NuGet パッケージ マネージャーを利用することで、IronOCR を C# プロジェクトに含めることができます。

ツール> NuGet パッケージ マネージャー>ソリューションの NuGet パッケージの管理を選択して、NuGet パッケージ マネージャーのグラフィカル ユーザー インターフェイスに移動します。

領収書スキャニングAPI(開発者チュートリアル)、図5: NuGetパッケージマネージャー NuGetパッケージマネージャー

次に、新しいウィンドウが表示されます。 IronOCRを検索して、プロジェクトにパッケージをインストールします。

領収書スキャニングAPI(開発者チュートリアル)、図6: IronOCR IronOCR

追加の言語パックも、上記と同じ方法でインストールできます。

Visual Studioコマンドラインを使用する

  1. Visual Studioで、 [ツール] > [NuGet パッケージ マネージャー] > [パッケージ マネージャー コンソール]に移動します。
  2. パッケージマネージャーコンソールタブに次の行を入力します。

    Install-Package IronOcr

    領収書スキャニングAPI(開発者チュートリアル)、図7: パッケージマネージャーコンソール パッケージマネージャーコンソール

パッケージは現在のプロジェクトにダウンロード/インストールされ、使用する準備が整います。

領収書OCR APIを使用したデータ抽出

IronOCRを使用して領収書画像からデータを抽出し、構造化データ形式で保存することは、ほとんどの開発者にとって大きな助けになります。 IronOCRを使用すれば、わずか数行のコードでそれを達成することができます。 これを使用することで、行項目、価格、税金額、合計金額、さまざまな文書タイプによるさまざまな情報を抽出できます。

using IronOcr;
using System;
using System.Collections.Generic;
using System.Text.RegularExpressions;

class ReceiptScanner
{
    static void Main()
    {
        var ocr = new IronTesseract();
        // Load the image of the receipt
        using (var input = new OcrInput(@"r2.png"))
        {
            // Perform OCR on the input image
            var result = ocr.Read(input);

            // Regular expression patterns to extract relevant details from the OCR result
            var descriptionPattern = @"\w+\s+(.*?)\s+(\d+\.\d+)\s+Units\s+(\d+\.\d+)\s+Tax15%\s+\$(\d+\.\d+)";
            var pricePattern = @"\$\d+(\.\d{2})?";

            // Variables to store extracted data
            var descriptions = new List<string>();
            var unitPrices = new List<decimal>();
            var taxes = new List<decimal>();
            var amounts = new List<decimal>();

            var lines = result.Text.Split('\n');
            foreach (var line in lines)
            {
                // Match each line against the description pattern
                var descriptionMatch = Regex.Match(line, descriptionPattern);
                if (descriptionMatch.Success)
                {
                    descriptions.Add(descriptionMatch.Groups[1].Value.Trim());
                    unitPrices.Add(decimal.Parse(descriptionMatch.Groups[2].Value));

                    // Calculate tax and total amount for each item
                    var tax = unitPrices[unitPrices.Count - 1] * 0.15m;
                    taxes.Add(tax);
                    amounts.Add(unitPrices[unitPrices.Count - 1] + tax);
                }
            }

            // Output the extracted data
            for (int i = 0; i < descriptions.Count; i++)
            {
                Console.WriteLine($"Description: {descriptions[i]}");
                Console.WriteLine($"Quantity: 1.00 Units");
                Console.WriteLine($"Unit Price: ${unitPrices[i]:0.00}");
                Console.WriteLine($"Taxes: ${taxes[i]:0.00}");
                Console.WriteLine($"Amount: ${amounts[i]:0.00}");
                Console.WriteLine("-----------------------");
            }
        }
    }
}
using IronOcr;
using System;
using System.Collections.Generic;
using System.Text.RegularExpressions;

class ReceiptScanner
{
    static void Main()
    {
        var ocr = new IronTesseract();
        // Load the image of the receipt
        using (var input = new OcrInput(@"r2.png"))
        {
            // Perform OCR on the input image
            var result = ocr.Read(input);

            // Regular expression patterns to extract relevant details from the OCR result
            var descriptionPattern = @"\w+\s+(.*?)\s+(\d+\.\d+)\s+Units\s+(\d+\.\d+)\s+Tax15%\s+\$(\d+\.\d+)";
            var pricePattern = @"\$\d+(\.\d{2})?";

            // Variables to store extracted data
            var descriptions = new List<string>();
            var unitPrices = new List<decimal>();
            var taxes = new List<decimal>();
            var amounts = new List<decimal>();

            var lines = result.Text.Split('\n');
            foreach (var line in lines)
            {
                // Match each line against the description pattern
                var descriptionMatch = Regex.Match(line, descriptionPattern);
                if (descriptionMatch.Success)
                {
                    descriptions.Add(descriptionMatch.Groups[1].Value.Trim());
                    unitPrices.Add(decimal.Parse(descriptionMatch.Groups[2].Value));

                    // Calculate tax and total amount for each item
                    var tax = unitPrices[unitPrices.Count - 1] * 0.15m;
                    taxes.Add(tax);
                    amounts.Add(unitPrices[unitPrices.Count - 1] + tax);
                }
            }

            // Output the extracted data
            for (int i = 0; i < descriptions.Count; i++)
            {
                Console.WriteLine($"Description: {descriptions[i]}");
                Console.WriteLine($"Quantity: 1.00 Units");
                Console.WriteLine($"Unit Price: ${unitPrices[i]:0.00}");
                Console.WriteLine($"Taxes: ${taxes[i]:0.00}");
                Console.WriteLine($"Amount: ${amounts[i]:0.00}");
                Console.WriteLine("-----------------------");
            }
        }
    }
}
Imports Microsoft.VisualBasic
Imports IronOcr
Imports System
Imports System.Collections.Generic
Imports System.Text.RegularExpressions

Friend Class ReceiptScanner
	Shared Sub Main()
		Dim ocr = New IronTesseract()
		' Load the image of the receipt
		Using input = New OcrInput("r2.png")
			' Perform OCR on the input image
			Dim result = ocr.Read(input)

			' Regular expression patterns to extract relevant details from the OCR result
			Dim descriptionPattern = "\w+\s+(.*?)\s+(\d+\.\d+)\s+Units\s+(\d+\.\d+)\s+Tax15%\s+\$(\d+\.\d+)"
			Dim pricePattern = "\$\d+(\.\d{2})?"

			' Variables to store extracted data
			Dim descriptions = New List(Of String)()
			Dim unitPrices = New List(Of Decimal)()
			Dim taxes = New List(Of Decimal)()
			Dim amounts = New List(Of Decimal)()

			Dim lines = result.Text.Split(ControlChars.Lf)
			For Each line In lines
				' Match each line against the description pattern
				Dim descriptionMatch = Regex.Match(line, descriptionPattern)
				If descriptionMatch.Success Then
					descriptions.Add(descriptionMatch.Groups(1).Value.Trim())
					unitPrices.Add(Decimal.Parse(descriptionMatch.Groups(2).Value))

					' Calculate tax and total amount for each item
					Dim tax = unitPrices(unitPrices.Count - 1) * 0.15D
					taxes.Add(tax)
					amounts.Add(unitPrices(unitPrices.Count - 1) + tax)
				End If
			Next line

			' Output the extracted data
			For i As Integer = 0 To descriptions.Count - 1
				Console.WriteLine($"Description: {descriptions(i)}")
				Console.WriteLine($"Quantity: 1.00 Units")
				Console.WriteLine($"Unit Price: ${unitPrices(i):0.00}")
				Console.WriteLine($"Taxes: ${taxes(i):0.00}")
				Console.WriteLine($"Amount: ${amounts(i):0.00}")
				Console.WriteLine("-----------------------")
			Next i
		End Using
	End Sub
End Class
$vbLabelText   $csharpLabel

以下に示すように、IronOCRは領収書から要求されたテキストを簡単に抽出できます。

領収書スキャニングAPI(開発者チュートリアル)、図8: 出力 Output

領収書全体の抽出

領収書全体を抽出したい場合は、OCRの領収書で数行のコードを使用して簡単に行うことができます。

using IronOcr;
using System;

class WholeReceiptExtractor
{
    static void Main()
    {
        var ocr = new IronTesseract();
        using (var input = new OcrInput(@"r3.png"))
        {
            // Perform OCR on the entire receipt and print text output to console
            var result = ocr.Read(input);
            Console.WriteLine(result.Text);
        }
    }
}
using IronOcr;
using System;

class WholeReceiptExtractor
{
    static void Main()
    {
        var ocr = new IronTesseract();
        using (var input = new OcrInput(@"r3.png"))
        {
            // Perform OCR on the entire receipt and print text output to console
            var result = ocr.Read(input);
            Console.WriteLine(result.Text);
        }
    }
}
Imports IronOcr
Imports System

Friend Class WholeReceiptExtractor
	Shared Sub Main()
		Dim ocr = New IronTesseract()
		Using input = New OcrInput("r3.png")
			' Perform OCR on the entire receipt and print text output to console
			Dim result = ocr.Read(input)
			Console.WriteLine(result.Text)
		End Using
	End Sub
End Class
$vbLabelText   $csharpLabel

領収書スキャニングAPI(開発者チュートリアル)、図9: 領収書スキャンAPI出力 領収書スキャンAPI出力

IronOCRのような領収書画像スキャンAPIは、領収書からデータを抽出する自動化のための強力なソフトウェアソリューションを提供します。高度なOCR技術を活用することにより、企業は業者の名前、購入日、項目別リスト、価格、税金、および合計金額を含む領収書の画像やスキャンから重要な情報を簡単に抽出できます。 多言語通貨、領収書形式、およびバーコードサポートをサポートすることで、企業は領収書管理プロセスを効率化し、時間を節約し、支出パターンについての洞察を得て、データに基づいた意思決定を行うことができます。 IronOCRは、多目的なOCRライブラリおよびAPIとして、開発者に正確かつ効率的にさまざまなソースからテキストを抽出するためのツールを提供し、タスクの自動化を可能にし、全体的な効率を向上させます。 必要な前提条件を満たし、IronOCRをアプリケーションに統合することで、開発者は領収書データ処理の利点を活用し、ワークフローを強化することができます。

IronOCRについての詳細は、このライセンスページをご覧ください。 テキストを見つけるためにコンピュータビジョンを使用する方法については、このコンピュータビジョンのハウツーページをご覧ください。 領収書OCRに関する詳細なチュートリアルは、以下のOCR C#チュートリアルを訪れてください。

よくある質問

C#でOCRを使って領収書データの抽出を自動化するにはどうすればよいですか?

C#では、IronOCRを使用して領収書からラインアイテム、価格、税金、総額などの主要な詳細を高精度で抽出することができ、データ抽出を自動化できます。

C#で領収書スキャンプロジェクトを設定するための前提条件は何ですか?

C#で領収書スキャンプロジェクトを設定するには、Visual Studio、基本的なC#プログラミング知識、およびプロジェクトにインストールされたIronOCRライブラリが必要です。

Visual StudioでNuGetパッケージマネージャーを使用してOCRライブラリをインストールするにはどうすればよいですか?

Visual Studioを開いて、ツール > NuGetパッケージマネージャー > ソリューションのNuGetパッケージを管理する に移動し、IronOCRを検索してプロジェクトにインストールします。

Visual Studioコマンドラインを使用してOCRライブラリをインストールできますか?

はい、Visual Studioでパッケージマネージャーコンソールを開き、Install-Package IronOcr コマンドを実行することで、IronOCRをインストールできます。

OCRを使用して領収書全体のテキストを抽出するにはどうすればよいですか?

領収書全体のテキストを抽出するには、IronOCRを使用して領収書の画像全体に対してOCRを実行し、その抽出されたテキストをC#コードで出力します。

領収書スキャンAPIにはどのようなメリットがありますか?

IronOCRのような領収書スキャンAPIは、データ抽出の自動化、手動エラーの最小化、生産性の向上、支出パターンの洞察を提供し、より良いビジネス意思決定を可能にします。

OCRライブラリは複数の言語や通貨をサポートしていますか?

はい、IronOCRは複数の言語、通貨、領収書フォーマットをサポートしており、グローバルなアプリケーションに最適です。

画像からテキストを抽出する際のOCRライブラリの精度はどのくらいですか?

IronOCRは、先進のOCRアルゴリズム、コンピュータビジョン、機械学習モデルを使用して、高精度を保証します。困難なシナリオでも信頼性があります。

OCRを使用して領収書からどのようなデータを抽出できますか?

IronOCRは、ラインアイテム、価格、税額、総額、その他の領収書の詳細を抽出することができます。

レシート解析の自動化はビジネスプロセスをどのように改善できますか?

IronOCRを使用して領収書解析を自動化することで、手動入力を削減し、正確なデータ収集が可能になり、データ駆動型の意思決定をサポートします。

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