IRONOCRの使用

C#でスーパーマーケットのレシートをOCRする(開発者チュートリアル)

公開済み 2024年12月15日
共有:

レシート今日の忙しい世界では期待されています。 食料品を購入する場合でも、レストランで食事をする場合でも、レシートを持っていると使用した金額がわかり、それに応じて予算を立てるのに役立ちます。 一方で、食料品店がレシートスキャナーを使用してレシートをスキャンする際、商品がどのように販売されるかについての洞察を得ることができ、販売予測に基づいて計画を立てることができます。

しかし、レシートは通常読みづらく、合計がいくらになるのか分かりにくいこともあります。 さらに、予算を考慮したい場合、購入できるアイテムの量を考えると、レシートからすべてのデータを手動で入力するのは面倒です。 領収書を紛失することは、なぜ今月の予算を超えてしまったのか突然分からなくなることを意味します。

この問題において、予算編成および金融アプリは、利用に向けてシフトしています。OCR (光学式文字認識)(光学文字認識)顧客がすべての領収書を簡単に追跡できるように、それらをスキャンしてデジタル化する手助けをします。 その結果、顧客がデータ入力を自動化し、経費を追跡し、購買行動の洞察を得ることができる一方で、領収書の入力時の人的エラーを最小限に抑えます。

OCR技術は、テキストや数値の領域を特定するために機械学習アルゴリズムを使用して、領収書やデジタル画像からデータを抽出します。 しかし、それには欠点がないわけではありません。 画像に多くのデジタルノイズがある場合、例えばぼやけや汚れがあると、戻ってくるデータがしばしば誤っていたり、混乱したりします。 したがって、開発者が領収書を読み取るためのメソッドをデバッグおよび最適化できる信頼できるライブラリを選択することが不可欠です。

IronOCRそのようなライブラリの一つです。 データを抽出する前に画像をフィルタリングしたい開発者のためにカスタマイズを提供し、レシートを読み取るための専門的なメソッドを提供します。 それは、開発者がデータが正確かどうかをデバッグおよびテストすることさえ可能にします。

この記事では、おそらくIronOCRがスーパーマーケットのレシートを処理およびフィルタリングしてデータの正確性を確保する方法の実例について説明します。

IronOCR: C# OCRライブラリ

C#でスーパーのレシートをOCRする (開発者向けチュートリアル): 図1 - IronOCR: C#のOCRライブラリ

IronOCRにカスタマイズされたバージョンを使用するC#ライブラリです。テッセラクトフードの下のOCRエンジン。 ライブラリは、すべてのOCR関連のニーズに対して、使いやすいメソッドと柔軟な機能を提供します。 標準技術に加えて、IronOCRは、開発者がTesseractのカスタマイズバージョンを完全に活用し、カスタマイズすることで、すべての関連タスクを達成できるようにします。 スーパーマーケットのレシートに役立つ重要な側面のいくつかは次のとおりです:

  1. 互換性: IronOCRは、.NET 8、7、6、5、および.NET Framework 4.6.2以降を含む、さまざまな.NETプラットフォームと完全に互換性があります。 Windows、macOS、Azure、Linuxを含むすべてのオペレーティングシステムをシームレスにサポートしているため、クロスコンパティビリティは問題ありません。

  2. 柔軟性とスケーラビリティ: このライブラリの柔軟性は、jpg、png、gifなどの一般的な画像形式を含む様々なOCR入力形式を処理できる能力に表れています。 それに加え、C#のネイティブ「System.Drawings.Objects」とシームレスに統合されるため、既存のコードベースへの統合が非常に簡単です。

  3. 使いやすさと充実したサポート: IronOCRは広範なドキュメントが用意されており、すべての機能を網羅した堅牢なAPIとチュートリアルが提供されています。 さらに、開発者はどんな支援が必要な場合でも24時間、週5日のサポートに依頼することができます。

  4. 多言語: 最大125言語とカスタム言語をサポートするIronOCRは、国際的なドキュメント処理に非常に柔軟なツールです。 それは製品名と価格の認識に優れており、レシートの識別に最適です。

IronOCRでスーパーマーケットのレシートを読む

ライセンスキー

IronOCRの操作にはライセンスキーが必要ですので、ご注意ください。 無料トライアルでキーを入手するには、こちらをご覧ください。リンク.

//Replace the license key variable with the trial key you obtained
IronOCr.License.LicenseKey = "REPLACE-WITH-YOUR-KEY";
//Replace the license key variable with the trial key you obtained
IronOCr.License.LicenseKey = "REPLACE-WITH-YOUR-KEY";
'Replace the license key variable with the trial key you obtained
IronOCr.License.LicenseKey = "REPLACE-WITH-YOUR-KEY"
VB   C#

トライアルキーを受け取ったら、プロジェクトにこの変数を設定してください。

コード例

開発者が、顧客が携帯電話で領収書をスキャンし、合計購入金額に基づいて追加ポイントを獲得できるモバイルアプリを開発するシナリオを仮定しましょう。

以下のコードは、IronOCRがスーパーマーケットのレシートをどのように扱い、OCR APIを使用して商品名、ラインアイテム、価格、名前などの関連データを抽出するかを示しています。

入力画像

C# でスーパーのレシートを OCR(開発者チュートリアル):図 2 - スーパーのレシート例

領収書OCRの実装

using IronOcr;
#region
IronOcr.License.LicenseKey = "YOUR-KEY";
#endregion
// Instantiate OCR engine
var ocr = new IronTesseract();
using var inputPhoto = new OcrInput();
inputPhoto.LoadImage("supermarketexample.jpg");
// Perform OCR
OcrResult result = ocr.Read(inputPhoto);
string text = result.Text;
Console.WriteLine(text);
using IronOcr;
#region
IronOcr.License.LicenseKey = "YOUR-KEY";
#endregion
// Instantiate OCR engine
var ocr = new IronTesseract();
using var inputPhoto = new OcrInput();
inputPhoto.LoadImage("supermarketexample.jpg");
// Perform OCR
OcrResult result = ocr.Read(inputPhoto);
string text = result.Text;
Console.WriteLine(text);
Imports IronOcr
#Region ""
IronOcr.License.LicenseKey = "YOUR-KEY"
'#End Region
' Instantiate OCR engine
Dim ocr = New IronTesseract()
Dim inputPhoto = New OcrInput()
inputPhoto.LoadImage("supermarketexample.jpg")
' Perform OCR
Dim result As OcrResult = ocr.Read(inputPhoto)
Dim text As String = result.Text
Console.WriteLine(text)
VB   C#
  1. 最初に、コード例に IronOcr モジュールをインポートします。

  2. 次に、OCRエンジンをインスタンス化し、新しいIronTesseract変数を作成します。

  3. 次に、新しいOcrInputを作成し、画像を読み込みます。 この例では、変数に「ファイルパス」を提供します。 レシートの形式はさまざまな形式がありますが、この方法はすべての一般的な形式を受け入れることができます。

  4. 次に、`Read`メソッドを使用して画像を読み込みます。

  5. 次に、結果をコンソール出力に表示します。

コンソール出力: 領収書データ

C#でスーパーのレシートをOCRする(開発者向けチュートリアル):図3 - コンソール出力

上記のコンソール出力は、製品とラインアイテムを1行で印刷していることに注意してください。このメソッドは、ページ分割モードで動作し、レシート内の区切り線として機能する行のブロックを無視します。

デバッグと信頼性テスト

上記の領収書は精細な画像であり、顧客が領収書の写真を撮っただけの場合とは異なります。 実際の事例を扱う場合、アプリケーション内の一貫性を確保するために、データが無効と見なされるしきい値を確保するように、抽出されたデータの信頼度を検証する必要があります。

IronOCRには、抽出されたデータの正確性を検証するために、開発者が利用できる`confidence`という組み込みプロパティがあります。

OcrResult result = ocr.Read(inputPhoto);
string text = result.Text;
Console.WriteLine(text);
Console.WriteLine(result.Confidence);
OcrResult result = ocr.Read(inputPhoto);
string text = result.Text;
Console.WriteLine(text);
Console.WriteLine(result.Confidence);
Dim result As OcrResult = ocr.Read(inputPhoto)
Dim text As String = result.Text
Console.WriteLine(text)
Console.WriteLine(result.Confidence)
VB   C#

このコードは上記のものと同一です。 主な違いは、それが信頼度も出力することです。

C#でスーパーのレシートをOCRする(開発者チュートリアル):図4

`OcrResult` の `Confidence` プロパティは、OCR の統計的な精度の信頼度を表す重要な浮動小数点数です。 この値は、すべての文字の平均として計算されます。 低い値は、ぼやけたパスポート画像や追加情報などの問題の可能性を示します。 最高の信頼レベルは1で表され、最低は0で表されます。値が高いほど、抽出されたデータが正確であり、正確であると安全に想定できます。

ご覧のとおり、ストック画像でも信頼度はわずか75です。実際のシナリオでは、デジタルノイズのために信頼度がさらに低くなる可能性があります。

ノイズの除去とフィルター

上記のように、信頼度の低いデータを除外するだけでなく、IronOCRは画像として入力する前にノイズをクリアおよびフィルタリングすることも可能で、データ抽出の高精度を確保します。 使用する前に重複したスーパーのレシートに対して行うことができるいくつかの設定があります。

inputPhoto.DeNoise();
inputPhoto.ToGrayScale();
inputPhoto.DeNoise();
inputPhoto.ToGrayScale();
inputPhoto.DeNoise()
inputPhoto.ToGrayScale()
VB   C#

最初のメソッド「DeNoise」は、アルファチャネルを白に平坦化します。これは、デジタル写真には多くの予測されるノイズが存在するため、写真の精度を向上させる可能性があります。

2番目の方法「ToGrayScale」は、厳密には精度を向上させる方法ではありませんが、すべてのピクセルの色合いをグレースケールにすることで、レシートのバッチ処理の効率を高める手助けをします。

これらの方法に加えて、開発者はIronOCRを使用してスーパーのレシートから抽出されたデータのために希望する条件をフィルタリングするための設定をテストし、微調整する必要があります。

結論

C#でスーパーマーケットのレシートをOCRする (開発者チュートリアル): 図5 - IronOCR

自動化とともに、レシートOCRはレシートデータから貴重な洞察を引き出すのに役立つ強力な技術です。 また、個人が自身の支出を予算化し、個人的な興味のある分野を特定するのに役立つ強力なツールでもあります。 さらに、OCR技術は、レシートの取引番号をチェックすることで、改ざんされたり変更されたりしたレシートの防止を強化する方法としても機能します。

そのため、正しいレシートOCRソリューションを選ぶことは、精度、速度、スケーラビリティにおいて重要かつ必須です。 IronOCRは、それらすべてを統合しており、既存のプラットフォームに簡単に統合できるため、開発者に領収書スキャンに関する優位性を提供します。

IronOCRの使用が可能です試用ライセンス開発者が興味を持っている場合。

< 以前
C#でのOCR請求書処理(開発者向けチュートリアル)
次へ >
パスポートOCR SDK(開発者チュートリアル)