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:プロジェクトの構成

プロジェクトの構成

最後に、Target Frameworkを指定し、「Create」をクリックします。

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

ターゲットフレームワーク

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

IronOCRのインストール

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

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

  2. Visual Studioコマンドラインの使用

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

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

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

レシートスキャンAPI(開発者向けチュートリアル)、図 5: NuGet パッケージ マネージャー

NuGet パッケージ マネージャー

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

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

IronOCR

上記の方法を使用して、IronOCRの追加言語パックもインストールできます。

Visual Studioコマンドラインの使用

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

  2. パッケージマネージャーコンソールタブに次の行を入力してください:
    :ProductInstall
    :ProductInstall
SHELL

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

パッケージマネージャーコンソール

パッケージが現在のプロジェクトにダウンロード/インストールされ、使用可能になります。

レシートOCR APIによるデータ抽出

IronOCRを使用して領収書の画像データを抽出し、それを構造化データ形式で保存することは、多くの開発者にとって救世主です。 IronOCRを使用すると、ほんの数行のコードでそれを実現できます。 これを使用して、さまざまな種類のドキュメントから、行アイテム、価格、税額、合計金額などを抽出することができます。

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

var ocr = new IronTesseract();
using (var input = new OcrInput(@"r2.png"))
{
    var result = ocr.Read(input);
    var descriptionPattern = @"\[([A-Z0-9_]+)]\s+(.*?)\s+(\d+\.\d+)\s+Units\s+(\d+\.\d+)\s+Tax15%\s+\$(\d+\.\d+)";
    var pricePattern = @"\$\d+(\.\d{2})?";
    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');
    var descriptionMatch = Regex.Match(lines, descriptionPattern);
    if (descriptionMatch.Success)
    {
        var DescriptionValue = descriptionMatch.Groups [2].Value.Trim();
        descriptions.Add(DescriptionValue);
    }
    Console.WriteLine("Description: " + descriptions [i]);
    Console.WriteLine("Quantity: 1.00 Units");
    Console.WriteLine("Unit Price: $" + unitPrices [i]);
    taxes.Add(cost [i] * 0.15m); // Calculate Taxes (15%)
    Console.WriteLine("Taxes: $" + taxes [i]);
    amounts.Add(unitPrices [i] + taxes [i]);
    Console.WriteLine("Amount: $" + amounts [i]);
    Console.WriteLine("-----------------------");
}
using IronOcr;
using System;
using System.Collections.Generic;
using System.Text.RegularExpressions;

var ocr = new IronTesseract();
using (var input = new OcrInput(@"r2.png"))
{
    var result = ocr.Read(input);
    var descriptionPattern = @"\[([A-Z0-9_]+)]\s+(.*?)\s+(\d+\.\d+)\s+Units\s+(\d+\.\d+)\s+Tax15%\s+\$(\d+\.\d+)";
    var pricePattern = @"\$\d+(\.\d{2})?";
    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');
    var descriptionMatch = Regex.Match(lines, descriptionPattern);
    if (descriptionMatch.Success)
    {
        var DescriptionValue = descriptionMatch.Groups [2].Value.Trim();
        descriptions.Add(DescriptionValue);
    }
    Console.WriteLine("Description: " + descriptions [i]);
    Console.WriteLine("Quantity: 1.00 Units");
    Console.WriteLine("Unit Price: $" + unitPrices [i]);
    taxes.Add(cost [i] * 0.15m); // Calculate Taxes (15%)
    Console.WriteLine("Taxes: $" + taxes [i]);
    amounts.Add(unitPrices [i] + taxes [i]);
    Console.WriteLine("Amount: $" + amounts [i]);
    Console.WriteLine("-----------------------");
}
Imports Microsoft.VisualBasic
Imports IronOcr
Imports System
Imports System.Collections.Generic
Imports System.Text.RegularExpressions

Private ocr = New IronTesseract()
Using input = New OcrInput("r2.png")
	Dim result = ocr.Read(input)
	Dim descriptionPattern = "\[([A-Z0-9_]+)]\s+(.*?)\s+(\d+\.\d+)\s+Units\s+(\d+\.\d+)\s+Tax15%\s+\$(\d+\.\d+)"
	Dim pricePattern = "\$\d+(\.\d{2})?"
	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)
	Dim descriptionMatch = Regex.Match(lines, descriptionPattern)
	If descriptionMatch.Success Then
		Dim DescriptionValue = descriptionMatch.Groups (2).Value.Trim()
		descriptions.Add(DescriptionValue)
	End If
	Console.WriteLine("Description: " & descriptions (i))
	Console.WriteLine("Quantity: 1.00 Units")
	Console.WriteLine("Unit Price: $" & unitPrices (i))
	taxes.Add(cost (i) * 0.15D) ' Calculate Taxes (15%)
	Console.WriteLine("Taxes: $" & taxes (i))
	amounts.Add(unitPrices (i) + taxes (i))
	Console.WriteLine("Amount: $" & amounts (i))
	Console.WriteLine("-----------------------")
End Using
$vbLabelText   $csharpLabel

以下の通り、IronOCRは領収書から必要なテキストを簡単に抽出できます。

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

出力

レシート全体を抽出する

レシート全体を抽出したい場合、OCRレシートで数行のコードを使って簡単に実行できます。

using IronOcr;
using System;

var ocr = new IronTesseract();
using (var input = new OcrInput(@"r3.png"))
{
    var result = ocr.Read(input);
    Console.WriteLine(result.Text);
}
using IronOcr;
using System;

var ocr = new IronTesseract();
using (var input = new OcrInput(@"r3.png"))
{
    var result = ocr.Read(input);
    Console.WriteLine(result.Text);
}
Imports IronOcr
Imports System

Private ocr = New IronTesseract()
Using input = New OcrInput("r3.png")
	Dim result = ocr.Read(input)
	Console.WriteLine(result.Text)
End Using
$vbLabelText   $csharpLabel

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

レシートスキャンAPIの出力

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

IronOCRに関する詳細情報は、このライセンスページをご覧ください。 テキストを見つけるためにコンピュータビジョンを使用する方法について知るには、このコンピュータビジョンの使用方法ページをご覧ください。 レシートOCRに関するチュートリアルの詳細については、次のOCR C#チュートリアルをご覧ください。

Kannaopat Udonpant
カンナパット・ウドンパント
ソフトウェアエンジニア
ソフトウェアエンジニアになる前に、カンナパットは日本の北海道大学から環境資源学の博士号を取得しました。学位を取得する過程で、カンナパットはバイオプロダクション工学部に所属する車両ロボティクス研究所のメンバーにもなりました。2022年には、C#のスキルを活かしてIron Softwareのエンジニアリングチームに参加し、IronPDFに注力しています。カンナパットは、IronPDFで使用されているコードの大部分を作成した開発者から直接学べることに価値を見いだしています。同僚との学び合いに加えて、Iron Softwareで働くことの社会的側面も楽しんでいます。コードやドキュメントを書いていない時には、カンナパットは通常、PS5でゲームをしたり、『The Last of Us』を再視聴したりしています。
< 以前
開発者向けOCR自動化ガイド
次へ >
請求書処理に最適なOCR(最新リスト)