IRONOCRの使用

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

Kannaopat Udonpant
カンナパット・ウドンパント
2023年2月23日
更新済み 2023年12月18日
共有:

IronOCR、光学文字認識API

IronOCRは、画像からテキストデータを認識して情報抽出を行うために使用できるOCRライブラリであり、領収書OCRを含みます。 それは、レシート認識に関してこれまでで最も正確なOCRエンジンの一つとされるTesseract OCRエンジンの上に構築されています。 IronOCRは、PNG、JPG、TIFF、JSON形式、およびPDFなどのさまざまなドキュメントタイプから重要な情報を読み取るために使用でき、複数の言語でテキストを認識できます。

IronOCRの領収書OCRの利便性を特に高める主な機能やサービスの一つは、画像が回転または傾いていても、自動的にテキストの向きを検出できる点です。 これが正確なテキスト認識にとって不可欠です。レシートのアップロードとデータ抽出の際、レシートには多くの情報が含まれ、折りたたまれたり、シワが寄ったりすることがあり、テキストが歪む可能性があるためです。

2. IronOCRの機能

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

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

Visual Studioソフトウェアを開き、[ファイル]メニューに移動します。 「新しいプロジェクト」を選択し、その後に「コンソールアプリケーション」を選択します。

プロジェクト名を入力し、適切なテキストボックスでパスを選択してください。 次に、「Create」ボタンをクリックします。 以下のスクリーンショットのように、必要な .NET フレームワークを選択してください。

C# チュートリアルで請求書からテキストを取得する方法 図 1: Visual Studio で新しいプロジェクトを作成する

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

Visual Studio プロジェクトは、コンソール アプリケーションの構造を生成します。 完了すると、Program.csファイルが開きます。このファイルでソースコードを記述および実行できます。

C# チュートリアルで請求書からテキストを取得する方法、図 2: Visual Studio 新しいプロジェクトウィザードから生成された program.cs ファイル

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

4. IronOCR のインストール

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

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

C# チュートリアルで請求書からテキストを取得する方法、図3: Visual Studio NuGet パッケージ マネージャー コンソール

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

クリックすると、Visual Studioのウィンドウの下に新しいコンソールが表示されます。 コンソールに以下のコマンドを入力し、Enterキーを押してください。

Install-Package IronOcr

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

レシートからのデータ抽出をIronOCRを使用して行う

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

以下は、IronOCRを使用してレシートからテキストを抽出し、レシートOCRの動作を示す方法の例です。

using IronOcr;
using System;

IronTesseract ocrTesseract = new IronTesseract();

using (OcrInput ocrInput = new OcrInput("ocr.png"))
{
    OcrResult ocrResult = ocrTesseract.Read(ocrInput);
    string RecognizedText = ocrResult.Text;

    Console.WriteLine(RecognizedText);
}
using IronOcr;
using System;

IronTesseract ocrTesseract = new IronTesseract();

using (OcrInput ocrInput = new OcrInput("ocr.png"))
{
    OcrResult ocrResult = ocrTesseract.Read(ocrInput);
    string RecognizedText = ocrResult.Text;

    Console.WriteLine(RecognizedText);
}
Imports IronOcr
Imports System

Private ocrTesseract As New IronTesseract()

Using ocrInput As New OcrInput("ocr.png")
	Dim ocrResult As OcrResult = ocrTesseract.Read(ocrInput)
	Dim RecognizedText As String = ocrResult.Text

	Console.WriteLine(RecognizedText)
End Using
$vbLabelText   $csharpLabel

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

上記のコードの出力は以下の通りです:

- LOGO SHOP
- LOREM IPSUM
- DOLOR SITAMET 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 SEMNISIMASSA $0.50
- 7 DUIS FAMES DIS $7.60
- 8 FACILISIRISUS $810
- TOTAL AMOUNT $49.80
- CASH $50.00

レシート画像からの特定データ抽出にIronOCRを使用

強力なOCRライブラリであるIronOCRは、開発者がスキャンされたレシートから税額や販売者名などの重要な情報を取得することを可能にします。

以下は、領収書の画像から合計金額を抽出するためにIronOCRを使用する方法の例です:

using IronOcr;
using System;

IronTesseract ocrTesseract = new IronTesseract();

ocrTesseract.Language = OcrLanguage.English;

// Code line to 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 price in the OCR result
    var totalPrice = ocrResult.Text.Contains("Total:") ? ocrResult.Text.Split("Total:")[1].Split("\n")[0] : "";
    Console.WriteLine("Total Price: " + totalPrice);
}
using IronOcr;
using System;

IronTesseract ocrTesseract = new IronTesseract();

ocrTesseract.Language = OcrLanguage.English;

// Code line to 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 price in the OCR result
    var totalPrice = ocrResult.Text.Contains("Total:") ? ocrResult.Text.Split("Total:")[1].Split("\n")[0] : "";
    Console.WriteLine("Total Price: " + totalPrice);
}
Imports Microsoft.VisualBasic
Imports IronOcr
Imports System

Private ocrTesseract As New IronTesseract()

ocrTesseract.Language = OcrLanguage.English

' Code line to 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 price in the OCR result
	Dim totalPrice = If(ocrResult.Text.Contains("Total:"), ocrResult.Text.Split("Total:")(1).Split(vbLf)(0), "")
	Console.WriteLine("Total Price: " & totalPrice)
End Using
$vbLabelText   $csharpLabel

`OcrInput` クラスによって提供される複数の設定のおかげで、OCRプロセスにおける精度向上のために入力画像を最適化することが可能です。

入力

C#チュートリアルで請求書からテキストを取得する方法、図4: 領収書から特定のデータを抽出するために使用された入力画像

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

出力

- Total 16.5

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

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

以下に、レシート画像上のバーコードを読み取るためにIronOCRを使用する方法の例を示します。

using IronOcr;
using System;

var ocrTesseract = new IronTesseract();
ocrTesseract.Configuration.ReadBarCodes = true;
using (var ocrInput = new OcrInput("b.png"))
{
    var ocrResult = ocrTesseract.Read(ocrInput);
    foreach (var barcode in ocrResult.Barcodes)
    {
        Console.WriteLine(barcode.Value);
    }
}
using IronOcr;
using System;

var ocrTesseract = new IronTesseract();
ocrTesseract.Configuration.ReadBarCodes = true;
using (var ocrInput = new OcrInput("b.png"))
{
    var ocrResult = ocrTesseract.Read(ocrInput);
    foreach (var barcode in ocrResult.Barcodes)
    {
        Console.WriteLine(barcode.Value);
    }
}
Imports IronOcr
Imports System

Private ocrTesseract = New IronTesseract()
ocrTesseract.Configuration.ReadBarCodes = True
Using ocrInput As New OcrInput("b.png")
	Dim ocrResult = ocrTesseract.Read(ocrInput)
	For Each barcode In ocrResult.Barcodes
		Console.WriteLine(barcode.Value)
	Next barcode
End Using
$vbLabelText   $csharpLabel

入力画像

C#で請求書からテキストを取得する方法チュートリアル、図4:バーコード読み取りの入力

バーコード読み取りの入力

出力テキスト

C#のチュートリアルで請求書からテキストを取得する方法、図5: バーコード画像の処理結果

バーコード画像の処理結果

8. 結論

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

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

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

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

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