IRONOCRの使用

C#でのOCR請求書処理(開発者向けチュートリアル)

Kannaopat Udonpant
カンナパット・ウドンパント
2025年1月14日
共有:

イントロダクション

請求書データの処理とは、サプライヤーやベンダーからの請求書を受け取り、管理し、検証して、支払いが正確かつ迅速に行われるようにすることを指します。これは、ビジネス取引の取り扱いにおいて正確性、遵守、効率性を確保し、紙の請求書を避けるためのステップを含みます。 自動化された請求書処理は、手作業によるデータ入力エラーを大幅に削減し、効率を向上させることができます。 IronOCR は、デジタルファイルから請求書のデータやテキストを抽出するために使用できる強力な光学文字認識(OCR)ソフトウェアライブラリであり、C# アプリケーションにおける請求書のOCR処理の自動化に最適なツールです。

IronOCRのようなOCRソフトウェアを使用して請求書データを処理する方法

  1. Visual Studioプロジェクトを作成する。

  2. IronOCR C#ライブラリをインストールします。

  3. サンプル入力請求書画像。

  4. Tesseractを利用して、レシート画像からデータを抽出します。

  5. 画像の一部のみを読み取る。

光学文字認識(OCR)

光学文字認識は、さまざまなタイプの文書、PDF、またはテキストの画像を認識し、編集可能かつ検索可能なデータに変換する技術です。 OCR技術はテキストの画像を処理し、文字を抽出して機械で読み取り可能にします。 高度なOCR請求書ソフトウェアシステムは、財務管理ツールや請求書の自動化に役立ちます。

OCRの重要ポイント

  • 機能性: OCRソフトウェアは、画像やテキスト(例:写真やスキャンされた文書)をスキャンし、編集、検索、保存可能なデジタルテキストに変換します。
  • アプリケーション: OCRは、印刷された文書のデジタル化、請求書処理、フォームデータ抽出、自動車ナンバープレート認識(ANPR)、買掛金ワークフロー、書籍のスキャンなど、さまざまな業界で広く使用されています。
  • 技術: OCRは、アルゴリズムを使用して明暗のパターンを識別し、文字を解釈します。 最新のOCRシステムは、精度を向上させるために機械学習と人工知能も活用しています。
  • 利点:OCRは、データ入力の自動化、エラーの削減、データの検索および取得の容易化によって、生産性を向上させます。 また、文書のアーカイブをサポートし、企業がペーパーレスのワークフローを管理するのに役立ちます。

    OCR技術は大幅に進化し、非常に正確になり、多くの異なる請求書形式での文書の処理や請求書データの抽出に役立っています。これにより手動データ入力が削減され、手動での請求書処理が不要になり、データセキュリティが向上します。

IronOCR

IronOCR は、画像、PDF、およびその他のドキュメント形式からテキストを抽出し、OCR請求書ソフトウェアを開発し、買掛金ワークフローを実装することができる、.NET (C#) 用の強力な光学式文字認識 (OCR) ライブラリです。 それは、OCR機能を会計システムや経理システムに統合するための使いやすいAPIを提供します。

IronOCRの主な機能

  • テキスト抽出: 様々な画像形式(PNG、JPG、TIFFなど)やPDFからテキストを抽出できます。これには会計ソフトウェア用の複数ページのPDFも含まれます。
  • 精度: IronOCRは、高度なアルゴリズムと機械学習技術を使用して、テキスト認識において高い精度を提供します。特に、ノイズの多い画像や低品質の画像でも、未払金プロセスや早期支払い割引のために正確に認識します。
  • 言語サポート: このライブラリは英語、スペイン語、フランス語を含む複数の言語をサポートしており、異なる言語でのテキスト認識を支援します。
  • 使いやすさ: IronOCRは、開発者がOCR技術の深い技術的知識を必要とせずに、アプリケーションに迅速にOCR機能を統合できるシンプルなAPIを提供します。
  • バーコードとQRコードの認識: 標準のテキスト認識に加えて、IronOCRは画像からバーコードとQRコードを検出して抽出することもできます。
  • PDFサポート: スキャンされたPDFからテキストを読み取り、抽出することができるため、請求書、領収書、およびその他のビジネス文書の処理に役立ちます。
  • カスタマイズ: このライブラリは、精度を調整したり、異なる画像解像度を処理したりするなど、特定のニーズに応じてOCR設定をカスタマイズできます。

前提条件

始める前に、以下を確認してください。

  • Visual Studioはあなたのマシンにインストールされています。
  • C#(シーシャープ)プログラミングの基本的な理解。
  • プロジェクトにIronOCR NuGetパッケージがインストールされています。

ステップ1: Visual Studioプロジェクトを作成する

Visual Studioを開き、「新しいプロジェクトの作成」をクリックしてください。

C#でのOCR請求書処理(開発者チュートリアル):図1 - 新規プロジェクト

オプションからコンソールアプリを選択します。

C#でのOCR請求書処理(開発者チュートリアル):図2 - コンソールアプリ

プロジェクト名とパスを提供してください。

C#でのOCR請求書処理(開発者チュートリアル):図3 - プロジェクト設定

.NETバージョンタイプを選択してください。

C#におけるOCR請求書処理(開発者チュートリアル):図4 - 対象フレームワーク

ステップ 2: IronOCR C# ライブラリをインストールする

Visual Studioのプロジェクトで、ツール > NuGetパッケージマネージャー > ソリューションのNuGetパッケージを管理 に進みます。 「参照」タブをクリックして、IronOCRを検索します。 IronOCR を選択し、インストールをクリックします。

C#におけるOCR請求書処理(開発者チュートリアル):図5 - IronOCR

もう一つのオプションは、コンソールと以下のコマンドを使用することです。

dotnet add package IronOcr --version 2024.12.2
dotnet add package IronOcr --version 2024.12.2
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'dotnet add package IronOcr --version 2024.12.2
$vbLabelText   $csharpLabel

ステップ 3: サンプル入力請求書画像

請求書番号が記載されたデジタル請求書のサンプル画像。

C#でのOCR請求書処理(開発者チュートリアル):図6 - サンプル入力

ステップ4: Tesseractを利用してレシート画像からデータを抽出する

次のコードを使用して、OCR請求書処理のために請求書からデータを抽出します。

using IronOcr;
License.LicenseKey = "Your License";
string filePath = "sample1.jpg"; // image for invoice OCR
// Create an instance of IronTesseract
var ocr = new IronTesseract();
// Load the image or PDF file
using (var ocrInput = new OcrInput())
{
    ocrInput.LoadImage(filePath);
    // Optionally apply filters if needed 
    ocrInput.Deskew();
    // ocrInput.DeNoise(); 
    // Read the text from the image or PDF
    var ocrResult = ocr.Read(ocrInput);
    // Output the extracted text
    Console.WriteLine("Extracted Text:");
    Console.WriteLine(ocrResult.Text);
    // next steps are to process data and use the extracted and validated data with invoice date
}
using IronOcr;
License.LicenseKey = "Your License";
string filePath = "sample1.jpg"; // image for invoice OCR
// Create an instance of IronTesseract
var ocr = new IronTesseract();
// Load the image or PDF file
using (var ocrInput = new OcrInput())
{
    ocrInput.LoadImage(filePath);
    // Optionally apply filters if needed 
    ocrInput.Deskew();
    // ocrInput.DeNoise(); 
    // Read the text from the image or PDF
    var ocrResult = ocr.Read(ocrInput);
    // Output the extracted text
    Console.WriteLine("Extracted Text:");
    Console.WriteLine(ocrResult.Text);
    // next steps are to process data and use the extracted and validated data with invoice date
}
Imports IronOcr
License.LicenseKey = "Your License"
Dim filePath As String = "sample1.jpg" ' image for invoice OCR
' Create an instance of IronTesseract
Dim ocr = New IronTesseract()
' Load the image or PDF file
Using ocrInput As New OcrInput()
	ocrInput.LoadImage(filePath)
	' Optionally apply filters if needed 
	ocrInput.Deskew()
	' ocrInput.DeNoise(); 
	' Read the text from the image or PDF
	Dim ocrResult = ocr.Read(ocrInput)
	' Output the extracted text
	Console.WriteLine("Extracted Text:")
	Console.WriteLine(ocrResult.Text)
	' next steps are to process data and use the extracted and validated data with invoice date
End Using
$vbLabelText   $csharpLabel

コードの説明

提供されたコードは、C#でIronOCRライブラリを使用してOCR(光学文字認識)を使い、画像(例:請求書)からテキストを抽出する方法を示しています。 以下はコードの各部分の説明です(実際のコードなし):

  1. ライセンスキーの設定:

    コードはIronOCRのライセンスキーを設定することから始まります。 このライブラリの全機能を使用するには、このキーが必要です。 有効なライセンスをお持ちの場合は、「Your License」を実際のライセンスキーに置き換えてください。

  2. 入力ファイルの指定

    filePath 変数は、請求書が含まれている画像の場所を保持します(この場合は「sample1.jpg」)。 これは、テキスト抽出処理が行われるファイルです。

  3. OCRインスタンスの作成:

    IronTesseractのインスタンスが作成されます。 IronTesseractは、入力データ(画像またはPDF)に対してOCR処理を実行する責任を持つクラスです。

  4. 画像の読み込み

    コードは次に、OcrInputオブジェクトを作成し、画像をロードするために使用します(この場合、filePathで指定されたJPGファイル)。 LoadImageメソッドは、画像ファイルを読み込み、OCRの準備をするために使用されます。

  5. 画像フィルターの適用:

    コードには、任意の画像処理メソッド、例えばDeskew(傾いた画像の補正)やDeNoise(画像からノイズを除去する)を適用することでOCRの精度を向上させることができるフィルターステップが含まれています。 この場合、Deskewメソッドのみがアクティブです。

  6. OCRの実行:

    • ocr.Read() メソッドは、読み込まれた画像からテキストを抽出するために使用されます。 ocrInputオブジェクト(画像を保持している)はこのメソッドに渡され、抽出されたテキストを含むOcrResultオブジェクトを返します。
  7. 抽出されたテキストの表示

    • 抽出されたテキストはコンソールに出力されます。 このテキストは、IronOCRが画像から認識したもので、さらなる処理に使用できます。

出力

C#でのOCR請求書処理(開発者向けチュートリアル):図7 - 請求書番号を含むOCR出力

ステップ 5: 画像の特定の領域のみを読み取る

画像の効率を向上させるため、一部のみを抽出に使用できます。

using IronOcr;
using IronSoftware.Drawing;
License.LicenseKey = "Your Key";
string filePath = "sample1.jpg"; 
// Create an instance of IronTesseract
var ocr = new IronTesseract();
// Load the image or PDF file
using (var ocrInput = new OcrInput())
{
    var ContentArea = new Rectangle(x: 0, y: 0, width: 1000, height: 250);
    ocrInput.LoadImage(filePath, ContentArea);
    // Optionally apply filters if needed 
    ocrInput.Deskew();
    // ocrInput.DeNoise(); 
    // Read the text from the image or PDF
    var ocrResult = ocr.Read(ocrInput);
    // Output the extracted text
    Console.WriteLine("Extracted Text:");
    Console.WriteLine(ocrResult.Text);
}
using IronOcr;
using IronSoftware.Drawing;
License.LicenseKey = "Your Key";
string filePath = "sample1.jpg"; 
// Create an instance of IronTesseract
var ocr = new IronTesseract();
// Load the image or PDF file
using (var ocrInput = new OcrInput())
{
    var ContentArea = new Rectangle(x: 0, y: 0, width: 1000, height: 250);
    ocrInput.LoadImage(filePath, ContentArea);
    // Optionally apply filters if needed 
    ocrInput.Deskew();
    // ocrInput.DeNoise(); 
    // Read the text from the image or PDF
    var ocrResult = ocr.Read(ocrInput);
    // Output the extracted text
    Console.WriteLine("Extracted Text:");
    Console.WriteLine(ocrResult.Text);
}
Imports IronOcr
Imports IronSoftware.Drawing
License.LicenseKey = "Your Key"
Dim filePath As String = "sample1.jpg"
' Create an instance of IronTesseract
Dim ocr = New IronTesseract()
' Load the image or PDF file
Using ocrInput As New OcrInput()
	Dim ContentArea = New Rectangle(x:= 0, y:= 0, width:= 1000, height:= 250)
	ocrInput.LoadImage(filePath, ContentArea)
	' Optionally apply filters if needed 
	ocrInput.Deskew()
	' ocrInput.DeNoise(); 
	' Read the text from the image or PDF
	Dim ocrResult = ocr.Read(ocrInput)
	' Output the extracted text
	Console.WriteLine("Extracted Text:")
	Console.WriteLine(ocrResult.Text)
End Using
$vbLabelText   $csharpLabel

コードの説明

このコードは、IronOCRを使用して画像の特定の領域からテキストを抽出し、オプションで精度を向上させるために台形補正などのフィルターを適用します。 抽出されたテキストが表示され、その後の利用の準備が整います。

ライセンス設定:

コードの最初の部分は、IronOCRのライセンスキーを設定することを含みます。 これはライブラリでOCR機能を使用するために必要です。 ライセンスキーはIronOCRから取得した実際のキーに置き換える必要があり、これによりライブラリの全機能にアクセスできます。

2. 画像ファイルパスの定義:

処理したい画像のファイルパスを指定します。 この画像(この場合はJPGファイル)は、OCRがテキストを抽出するドキュメントまたはコンテンツを含んでいます。 パスは、ローカルシステム上の画像ファイルまたは他のアクセス可能なストレージを指すことができます。

OCRインスタンスの作成:

IronTesseractクラスのインスタンスが作成されます。 このオブジェクトは、画像に対して光学文字認識を行う中核エンジンです。

4. 処理する領域の定義:

画像内に矩形(注目領域)が定義されています。 この長方形は、OCRエンジンが注目する画像の一部を指定します。 この例では、矩形は左上隅 (x=0, y=0) を起点とし、幅が1000ピクセル、高さが250ピクセルです。 このステップは画像の関連部分のみをOCR処理するのに役立ち、精度と速度を向上させます。

5. 画像の読み込み:

画像はOCRエンジンに読み込まれますが、処理されるのは定義された長方形(コンテンツエリア)のみです。 これにより、OCRを画像の特定の部分に限定することができ、特に背景やロゴなど、処理したくない不要な部分を含む画像の場合に便利です。

6. フィルターの適用:

コードはオプションで画像にデスキューフィルターを適用します。 デスキューは、傾きや回転がある画像をまっすぐにすることで、OCRの精度を向上させるプロセスです。 別のフィルター、denoise は利用可能ですが、コメントアウトされています。 有効にすると、画像からノイズ(不要なマーク)が除去され、OCRの精度がさらに向上する可能性があります。

7. テキストの抽出:

OCRエンジンは、画像(または指定された領域)を読み取り、認識したテキストを抽出します。 結果は、認識されたテキストを保持するオブジェクトに保存されます。

8. 抽出されたテキストを出力する:

最後に、抽出されたテキストがコンソールに出力されます。 このテキストはOCRプロセスの結果であり、さらに処理、検証、またはデータ入力やドキュメント管理などのアプリケーションで使用することができます。

出力

C# での OCR 請求書処理 (開発者チュートリアル): 図 8 - 抽出された出力

ライセンス(試用版あり)

IronOCRは請求書からデータを抽出するためにキーが必要です。ライセンスページからデベロッパートライアルキーを取得してください。

using IronOcr;
License.LicenseKey = "Your Key";
using IronOcr;
License.LicenseKey = "Your Key";
Imports IronOcr
License.LicenseKey = "Your Key"
$vbLabelText   $csharpLabel

結論

この記事では、請求書処理を始めるためのIronOCRの基本的な例を紹介しました。 このコードをさらにカスタマイズおよび拡張して、特定の要件に適合させることができます。

IronOCRは、画像やPDFからテキストを抽出するための効率的で統合しやすいソリューションを提供し、請求書処理に最適です。 C#の文字列操作や正規表現と組み合わせてIronOCRを使用することで、請求書から重要なデータを迅速に処理して抽出できます。

これは基本的な請求書処理の例であり、より高度な設定(言語認識、複数ページのPDF処理など)を使用することで、特定の使用ケースに適した精度を向上させるためにOCR結果を微調整することができます。

IronOCRのAPIは柔軟で、請求書の処理を超えた幅広いOCRタスクに使用できます。これには、レシートのスキャン、ドキュメント変換、データ入力の自動化が含まれます。

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