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

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

How to OCR Receipt in Tesseract

  1. Install C# library OCR receipt with Tesseract
  2. Explore features rich C# library for performing OCR on receipt
  3. Extract data from receipt with Tesseract
  4. Search in the extracted text result for specific data
  5. Read barcodes value on the input receipt image

1. IronOCR, An Optical Character Recognition API

IronOCR is an OCR library that can be used to recognize text data from images for information extraction, including receipt OCR. It is built on the Tesseract OCR engine, which is considered one of the most accurate OCR engines available to date for receipt recognition. IronOCR can read key information from different document types, including PNG, JPG, TIFF, JSON, and PDF formats, and it can recognize text in multiple languages.

One of the key features of IronOCR that makes it particularly useful for receipt OCR is its ability to automatically detect text orientation, even if the image has been rotated or skewed. This is essential for accurate text recognition on receipts uploads and data extraction, as receipts often contain a lot of information and can be folded or crumpled, causing the text to become skewed.

2. IronOCR Features

  • C# OCR uses Deep Learning to scan and recognize texts from pictures, scanned documents, and PDFs.
  • .NET OCR supports more than 125 global languages.
  • IronOCR can read text from images in many file formats, including PNG, JPG, TIFF, and PDF.
  • Text, structured data, JSON output, or searchable PDFs can be produced from extracted information.
  • IronOCR supports .NET versions 5, 6, and 7 (Core, Framework, and Standard).
  • IronOCR divides the input into different pictures based on text regions. It uses Computer Vision to identify areas that contain text elements.

3. Creating a New Project in Visual Studio

Open Visual Studio and go to the File menu. Select "New Project" and then choose Console Application.

Enter the project name and select the path in the appropriate text box. Then, click the Create button. Select the required .NET Framework, as shown in the screenshot below:

Creating a new project in Visual Studio

The project structure for the Console Application will now be generated. Once finished, it will open the Program.cs file, in which you can write and execute source code.

The Program.cs file generated from the Visual Studio New Project Wizard

4. Install IronOCR

In Visual Studio, you can integrate IronOCR with your C# project easily. IronOCR offers multiple ways to integrate with a C# .NET project. Here, we'll discuss one of them: Installing IronOCR using the NuGet Package Manager.

In Visual Studio, go to Tools > NuGet Package Manager > Package Manager Console

The Visual Studio NuGet Package Manager Console

A new console will appear at the bottom of Visual Studio's window. Type the below command in the console and press enter.

Install-Package IronOcr

IronOCR will be installed in just a few seconds.

5. Data Extraction from Receipts Using IronOCR

IronOCR is a powerful OCR library that can be used to extract and access detailed data from receipts. With IronOCR, you can convert a picture of a receipt into machine-readable text that can be easily analyzed and processed without compromising data privacy.

Here's an example of how you can use IronOCR to extract text from a receipt:

using IronOcr;
using System;

class Program
{
    static void Main()
    {
        IronTesseract ocrTesseract = new IronTesseract();

        // Load the receipt image
        using (OcrInput ocrInput = new OcrInput("ocr.png"))
        {
            // Read the OCR result
            OcrResult ocrResult = ocrTesseract.Read(ocrInput);
            string recognizedText = ocrResult.Text;

            // Output the recognized text to the console
            Console.WriteLine(recognizedText);
        }
    }
}
using IronOcr;
using System;

class Program
{
    static void Main()
    {
        IronTesseract ocrTesseract = new IronTesseract();

        // Load the receipt image
        using (OcrInput ocrInput = new OcrInput("ocr.png"))
        {
            // Read the OCR result
            OcrResult ocrResult = ocrTesseract.Read(ocrInput);
            string recognizedText = ocrResult.Text;

            // Output the recognized text to the console
            Console.WriteLine(recognizedText);
        }
    }
}
Imports IronOcr
Imports System

Friend Class Program
	Shared Sub Main()
		Dim ocrTesseract As New IronTesseract()

		' Load the receipt image
		Using ocrInput As New OcrInput("ocr.png")
			' Read the OCR result
			Dim ocrResult As OcrResult = ocrTesseract.Read(ocrInput)
			Dim recognizedText As String = ocrResult.Text

			' Output the recognized text to the console
			Console.WriteLine(recognizedText)
		End Using
	End Sub
End Class
$vbLabelText   $csharpLabel

Refer to the Reading Text from Image tutorial for further details on how IronOCR reads text from images using C#.

The output of the code above:

- LOGO SHOP
- LOREM IPSUM
- DOLOR SIT AMET 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 SEM NISIMASSA $0.50
- 7 DUIS FAMES DIS $7.60
- 8 FACILISI RISUS $810
- TOTAL AMOUNT $49.80
- CASH $50.00

6. Specific Data Extraction From Receipt Image Using IronOCR

IronOCR allows developers to retrieve crucial information from scanned receipts, such as tax amounts and merchant names.

Here is an example demonstrating how to extract the total amount value from a receipt image:

using IronOcr;
using System;

class Program
{
    static void Main()
    {
        IronTesseract ocrTesseract = new IronTesseract();

        // Set the language for OCR
        ocrTesseract.Language = OcrLanguage.English;

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

class Program
{
    static void Main()
    {
        IronTesseract ocrTesseract = new IronTesseract();

        // Set the language for OCR
        ocrTesseract.Language = OcrLanguage.English;

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

Friend Class Program
	Shared Sub Main()
		Dim ocrTesseract As New IronTesseract()

		' Set the language for OCR
		ocrTesseract.Language = OcrLanguage.English

		' 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 amount in the OCR result
			Dim totalAmount = If(ocrResult.Text.Contains("Total:"), ocrResult.Text.Split("Total:")(1).Split(vbLf)(0), "")
			Console.WriteLine("Total Amount: " & totalAmount)
		End Using
	End Sub
End Class
$vbLabelText   $csharpLabel

Thanks to the multiple settings provided by the OcrInput class, it is possible to optimize the input image for better accuracy in the OCR process.

Input

The input image used for demonstrating extraction of specific data from receipts

Output

- Total 16.5

7. Read Barcodes on Receipts

IronOCR can be used to read barcodes on receipts as well as text. To read barcodes on receipts, you will need to use the BarcodeReader class in combination with the ReadBarCodes method.

Here's an example of how to read barcodes:

using IronOcr;
using System;

class Program
{
    static void Main()
    {
        var ocrTesseract = new IronTesseract();
        ocrTesseract.Configuration.ReadBarCodes = true;

        // Load the receipt image with a barcode
        using (var ocrInput = new OcrInput("b.png"))
        {
            OcrResult ocrResult = ocrTesseract.Read(ocrInput);

            // Output the barcode values to the console
            foreach (var barcode in ocrResult.Barcodes)
            {
                Console.WriteLine(barcode.Value);
            }
        }
    }
}
using IronOcr;
using System;

class Program
{
    static void Main()
    {
        var ocrTesseract = new IronTesseract();
        ocrTesseract.Configuration.ReadBarCodes = true;

        // Load the receipt image with a barcode
        using (var ocrInput = new OcrInput("b.png"))
        {
            OcrResult ocrResult = ocrTesseract.Read(ocrInput);

            // Output the barcode values to the console
            foreach (var barcode in ocrResult.Barcodes)
            {
                Console.WriteLine(barcode.Value);
            }
        }
    }
}
Imports IronOcr
Imports System

Friend Class Program
	Shared Sub Main()
		Dim ocrTesseract = New IronTesseract()
		ocrTesseract.Configuration.ReadBarCodes = True

		' Load the receipt image with a barcode
		Using ocrInput As New OcrInput("b.png")
			Dim ocrResult As OcrResult = ocrTesseract.Read(ocrInput)

			' Output the barcode values to the console
			For Each barcode In ocrResult.Barcodes
				Console.WriteLine(barcode.Value)
			Next barcode
		End Using
	End Sub
End Class
$vbLabelText   $csharpLabel

Input Image

Input for Reading Barcode

Output Text

The result of processing the barcode image

8. Conclusion

The article above explains the process of installing and using IronOCR in a C# project to extract data from receipts, with example code snippets provided.

Please read the tutorial on reading text from images.

IronOCR is a part of the Iron Suite, which includes five different .NET libraries for manipulating documents and images. You can buy the entire Iron Suite for the price of just two IronOCR licenses.

Try IronOCR in your production apps with a free trial.

よくある質問

C# で領収書画像に対して IronOCR を使用して OCR を実行するにはどうすればよいですか?

IronOCR を使用して、OcrInput クラスに画像をロードし、アイテムリストや合計金額などのテキストデータを抽出するために Read メソッドを呼び出すことで、領収書画像に対して OCR を実行できます。

請求書処理において、Tesseract を超えて IronOCR を使用する利点は何ですか?

IronOCR は高い精度を提供し、125 以上の言語をサポートし、自動テキスト方向検出やディープラーニング機能などの機能を備えています。また、NuGet パッケージ マネージャーを使用して C# プロジェクトと簡単に統合できます。

Visual Studio プロジェクトに IronOCR を統合する方法は?

Visual Studio プロジェクトに IronOCR を統合するには、NuGet パッケージ マネージャーを使用します。ツール > NuGet パッケージ マネージャー > パッケージ マネージャー コンソールに移動し、その後 Install-Package IronOcr を実行してプロジェクトにライブラリを追加します。

IronOCR は、OCR の領収書で複数言語を扱えますか?

はい、IronOCR は 125 を超える世界の言語をサポートしており、多言語のテキストを含む領収書を処理するのに理想的です。

IronOCR は領収書のテキスト認識精度をどのように改善しますか?

IronOCR はディープラーニング、自動テキスト方向検出、および OCR 結果を向上するために画像を最適化する OcrInput クラスを使用することで、テキスト認識精度を改善します。

IronOCR を使用して、領収書から項目別リストを抽出することは可能ですか?

はい、IronOCR を使用してテキストデータを処理し、ラインアイテムをパターンマッチングで識別することにより、領収書から項目別リストを抽出できます。

IronOCR は領収書のバーコード読取をどのように処理しますか?

IronOCR は、BarcodeReader クラスと ReadBarCodes メソッドを使用して、領収書に含まれるバーコードをスキャンしてデコードします。

IronOCR は、領収書 OCR にどのようなファイルフォーマットを処理できますか?

IronOCR は、PNG、JPG、TIFF、PDF など様々なファイル形式を扱うことができ、さまざまな入力タイプに対して柔軟に対応します。

C# における請求書処理用に IronOCR を設定する手順は何ですか?

請求書処理のために IronOCR を設定するには、NuGet を使用してライブラリをインストールし、領収書画像を OcrInput で構成し、Read メソッドを使用してテキストデータを抽出することが含まれます。また、ライブラリの機能を使用して精度を向上させ、合計金額などの特定のデータを抽出します。

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