透かしなしで本番環境でテストしてください。
必要な場所で動作します。
30日間、完全に機能する製品をご利用いただけます。
数分で稼働させることができます。
製品トライアル期間中にサポートエンジニアリングチームへの完全アクセス
テキストの画像を機械読み取り可能なテキスト形式に変換するために使用される手順は、光学式文字認識(OCR)として知られています。 例えば、フォーム、請求書、あるいはレシートをスキャンすると、コンピュータはスキャンした結果を画像ファイルとして保存します。画像ファイル内のデータは、テキストエディターを使用して編集、検索、またはカウントすることができません。 しかし、OCRソリューションを使用して、画像ファイルをテキストデータとして保存されたテキストドキュメントに変換することができます。
現代では、多くのビジネスワークフローが印刷メディアから情報を受け取ることを含んでいます。 ビジネスプロセスには、紙のフォーム、請求書、スキャンされた法的文書、テーブルの抽出、および印刷されたテキストや契約書など、さまざまな文書が含まれます。 さらに、このような文書コンテンツをデジタル化すると、テキストが内部に隠されたイメージが作成されます。 画像内のテキストは、テキストドキュメントと同じ方法でワードプロセッシングツールによって処理されることはありません。 OCR技術は、テキスト画像を他のビジネスソフトウェアで分析できるテキストデータに変換することで、この問題を解決します。
OCRエンジンは、以下のステップを使用して動作します:
このプロセスでは、スキャナーが文書を読み取り、それをバイナリデータに変換します。 OCRソフトウェアはスキャンされた画像を認識し、明るい部分を背景として、暗い部分をテキストとして分類します。
OCRソフトウェアは、最初に画像を清掃し、エラーを除去して、データの読み取り準備をします。
テキスト認識のためのOCRアルゴリズムの主なタイプには、パターンマッチングと特徴抽出の二つがあります。
パターンマッチングプロセス全体を通して、文字の画像、つまりグリフが分離され、以前に記録されたグリフと比較されます。
特徴抽出のプロセスを通して、グリフは線、閉じたループ、線の方向、線の接合点などの特徴に分割されます。
この技術は、分析後に取得したテキストデータをデジタルファイルに変換します。 一部のOCRシステムは、スキャンされたドキュメントの前と後のバージョンを含む注釈付きPDFドキュメントを作成できます。
この記事では、OCRのための最も普及している2つのアプリケーションとドキュメントライブラリの比較について議論します。 これらは:
IronOCRは、画像やPDFのスキャン、検索、読み取りサービスを提供するC# .NETライブラリです。 127以上のグローバル言語パックが付属しています。 出力はテキスト、構造化データ、または検索可能なPDFとして達成されます。 .NETのバージョン6、5、Core、Standard、およびFrameworkをサポートしています。
IronOCRは、不完全にスキャンされた画像や文書からデータを自動的に検出し、抽出する優れた能力を持っています。 IronTesseract クラスは最もシンプルなAPIを持っています。 それは、どのプラットフォームでも利用可能な最高度に進化したTesseractのビルドを提供し、速度や精度が向上し、ネイティブのDLLとAPIを備えています。
IronOCRは、すべての画像形式からバーコードやQRコードをスキャンすることもでき、最新のTesseract 5エンジンを使用してテキストを読み取り、PDFスキャンを実行します。
PDFファイルに簡単にOCRを実行し、OCRを使用して検索可能なPDF文書をエクスポートできます。
それでは、AWS OCRを見てみましょう。
AmazonのAWS Textractは、スキャンされた文書からテキストやデータを自動的に抽出する機械学習(ML)サービスです。 それはシンプルな光学文字認識(OCR)を超えて、ディープラーニング技術を使用してフォームや表からデータを識別し、理解し、抽出します。
AWS OCR Textractは、機械学習を使用してあらゆる種類のドキュメントを読み取り処理し、手動の労力なしにテキスト、表形式のデータ、その他のデータを正確に抽出します。 データを抽出するのに数時間または数日かかる代わりに、Textractは迅速に行うことができます。 さらに、Amazon 拡張人工知能 (AI) を使用して人間によるレビューを追加し、モデルの監督を行ったり、機密データを確認したりできます。
意思決定を加速させることができるスケーラブルな文書解析。
記事の残りは次のとおりです:
Visual Studio プロジェクトの作成
IronOCRのインストール
AWS OCR Textractのインストール
PDFをテキストに変換
画像からテキストへ
バーコードおよびQRコードからテキストへ
ライセンス
このチュートリアルでは、Visual Studio 2022バージョンを使用しますので、インストールされていることを前提とします。
コンソールアプリケーション
最新かつ最も安定したバージョンの.NETフレームワークは6.0です。これを使用します。

「作成」ボタンをクリックすると、プロジェクトが作成されます。
次に、使用するためのライブラリを一つずつインストールします。
IronOCRライブラリは4つの方法でダウンロードおよびインストールできます。 以下の通りです:
Visual StudioのNuGetパッケージマネージャーを使用する。
NuGetウェブサイトからの直接ダウンロード。
IronOCRウェブページ経由の直接ダウンロード。
Visual StudioのNuGetパッケージマネージャーを使用して、C#プロジェクトにIronOCRを組み込むことができます。
ツールを展開するか、ソリューション エクスプローラを右クリックしてください。
NuGetパッケージマネージャーを拡張する。
NuGetパッケージの管理
その後、新しいウィンドウが検索バーに表示されます:IronOCRと入力してください。 右側のプロジェクトボックスにチェックを入れて、「インストール」をクリックしてください。
イオンOCRを閲覧
この方法を使用することで、開発者はIronOCRライブラリと任意の言語パックをインストールすることができます。
IronOCRは、次の手順に従ってNuGetウェブサイトから直接ダウンロードできます:
リンク「https://www.nuget.org/packages/IronOcr/」に移動します。
右側のメニューからダウンロードパッケージオプションを選択してください。
ダウンロードパッケージをダブルクリックしてください。 自動的にインストールされます。
開発者は、このリンクを使用して、IronOCRライブラリをウェブサイトから直接ダウンロードできます。
ソリューションウィンドウからプロジェクトを右クリックします。
次に、「リファレンス」オプションを選択し、ダウンロードしたリファレンスの場所を参照します。
Visual Studio で、ツール -> NuGet パッケージ マネージャー -> パッケージ マネージャー コンソール に移動します
Install-Package IronOcr
パッケージは現在のプロジェクトにダウンロード/インストールされ、使用できる状態になります。
    コンソールアプリケーション
    コンソールアプリケーション
コマンドを入力した後、Enterキーを押すとインストールされます。
プログラムでIronOCRを使用するために、このコード行を含めてください:
using IronOcr;
using IronOcr;
			Imports IronOcr
		それでは、AWS Textractをインストールしましょう。
初めてAmazon Textractを使用する前に、以下のタスクを完了してください:
AWSサービスにサインアップします。
IAMユーザーを作成します。
アカウントにサインアップしてIAMユーザーを作成した後、C#を使用してAPIにプログラム的にアクセスするために、AWSコンソールでアクセスキーを設定できます。 必要なもの:
NuGetパッケージマネージャからAWS Textract SDKをダウンロードしてインストールすることができます。
NuGet パッケージマネージャー
AWS Textract
以下の名前空間を含めてAWS Textractを使用します:
using Amazon.Textract;
using Amazon.Textract.Model;
using Amazon.Textract;
using Amazon.Textract.Model;
			Imports Amazon.Textract
Imports Amazon.Textract.Model
		両方のライブラリはPDFファイルからテキストを抽出できます。 コードを一つずつ見てみましょう。
IronOCRは、先進的なTesseractを使用してPDFドキュメント形式からテキストを認識および読み取ることができます。 以下の簡単なコードは情報を抽出するために使用されます:
var Ocr = new IronTesseract();
using (var input = new OcrInput())
{
    input.AddPdf("example.pdf","password");
    // We can also select specific PDF page numbers to OCR
    var Result = Ocr.Read(input);
    Console.WriteLine(Result.Text);
    Console.WriteLine($"{Result.Pages.Count()} Pages");
    // Read every page of the PDF
}
var Ocr = new IronTesseract();
using (var input = new OcrInput())
{
    input.AddPdf("example.pdf","password");
    // We can also select specific PDF page numbers to OCR
    var Result = Ocr.Read(input);
    Console.WriteLine(Result.Text);
    Console.WriteLine($"{Result.Pages.Count()} Pages");
    // Read every page of the PDF
}
			Dim Ocr = New IronTesseract()
Using input = New OcrInput()
	input.AddPdf("example.pdf","password")
	' We can also select specific PDF page numbers to OCR
	Dim Result = Ocr.Read(input)
	Console.WriteLine(Result.Text)
	Console.WriteLine($"{Result.Pages.Count()} Pages")
	' Read every page of the PDF
End Using
		コードはシンプルでクリーン、非常に理解しやすく使いやすいです。
    例PDF
    IronOCR 出力
AWS Textract
Amazon Textractを使用すると、ドキュメントのテキスト検出と分析をアプリケーションに簡単に追加できます。 次のコードはPDFを読み取り、同じPDFを渡すために使用されます:
public static async void ReturnResult()
{
    AmazonTextractClient client = new AmazonTextractClient("your_access_key_id", "your_secret_access_key", Amazon.RegionEndpoint.AFSouth1);
    var request = new StartDocumentTextDetectionRequest();
    request.DocumentLocation = new DocumentLocation
    {
        S3Object = new S3Object
                {
                    Bucket = "your_bucket_name",
                    Name = "your_bucket_key"
                }
         };
         var id = await client.StartDocumentTextDetectionAsync(request);
         var jobId = id.JobId;
         var response = client.GetDocumentTextDetectionAsync(new GetDocumentTextDetectionRequest{
             JobId = jobId
         });
         response.Wait();
         if (response.Result.JobStatus.Equals("SUCCEEDED"))
         {
        foreach (var block in response.Result.Blocks)
                {
                    if (block.BlockType == "WORD")
                    {
                        Console.WriteLine(block.Text);
                    }
                    else if (block.BlockType == "PAGE")
                    {
                        Console.WriteLine(block.Text);
                    }
                    else if (block.BlockType == "Line")
                    {
                        Console.WriteLine(block.Text);
                    }
                }
            }
        }
}
static void Main(String [] args)
{
    ReturnResult();
}
public static async void ReturnResult()
{
    AmazonTextractClient client = new AmazonTextractClient("your_access_key_id", "your_secret_access_key", Amazon.RegionEndpoint.AFSouth1);
    var request = new StartDocumentTextDetectionRequest();
    request.DocumentLocation = new DocumentLocation
    {
        S3Object = new S3Object
                {
                    Bucket = "your_bucket_name",
                    Name = "your_bucket_key"
                }
         };
         var id = await client.StartDocumentTextDetectionAsync(request);
         var jobId = id.JobId;
         var response = client.GetDocumentTextDetectionAsync(new GetDocumentTextDetectionRequest{
             JobId = jobId
         });
         response.Wait();
         if (response.Result.JobStatus.Equals("SUCCEEDED"))
         {
        foreach (var block in response.Result.Blocks)
                {
                    if (block.BlockType == "WORD")
                    {
                        Console.WriteLine(block.Text);
                    }
                    else if (block.BlockType == "PAGE")
                    {
                        Console.WriteLine(block.Text);
                    }
                    else if (block.BlockType == "Line")
                    {
                        Console.WriteLine(block.Text);
                    }
                }
            }
        }
}
static void Main(String [] args)
{
    ReturnResult();
}
			Public Shared Async Sub ReturnResult()
	Dim client As New AmazonTextractClient("your_access_key_id", "your_secret_access_key", Amazon.RegionEndpoint.AFSouth1)
	Dim request = New StartDocumentTextDetectionRequest()
	request.DocumentLocation = New DocumentLocation With {
		.S3Object = New S3Object With {
			.Bucket = "your_bucket_name",
			.Name = "your_bucket_key"
		}
	}
		 Dim id = Await client.StartDocumentTextDetectionAsync(request)
		 Dim jobId = id.JobId
		 Dim response = client.GetDocumentTextDetectionAsync(New GetDocumentTextDetectionRequest With {.JobId = jobId})
		 response.Wait()
		 If response.Result.JobStatus.Equals("SUCCEEDED") Then
		For Each block In response.Result.Blocks
					If block.BlockType = "WORD" Then
						Console.WriteLine(block.Text)
					ElseIf block.BlockType = "PAGE" Then
						Console.WriteLine(block.Text)
					ElseIf block.BlockType = "Line" Then
						Console.WriteLine(block.Text)
					End If
		Next block
		 End If
End Sub
}
Shared Sub Main(ByVal args() As String)
	ReturnResult()
End Sub
		コードは少し扱いにくく、長く、オブジェクトの渡しと取得には注意が必要です。 まず、3つのパラメーター:AccessKeyId、SecretAccessKey、Regionを使用して、AmazonTextractClientオブジェクトを作成する必要があります。 次に、StartDocumentTextDetectionRequest() メソッドを使用してリクエストを開始する必要があります。 リクエストオブジェクトは次に、バケット名とキーを使用してDocumentLocationを設定します。 このリクエストは、StartDocumentTextDetectionAsync() メソッドに渡されます。 非同期メソッドであるため、ReturnResult関数を非同期にし、その前にawaitキーワードを使用する必要があります。 成功すると、結果が返され、jobidが保存されます。 ジョブIDはGetDocumentTextDetectionAsync()メソッドに渡され、SUCCEEDEDの応答を待ちます。 フォーイーチループは各ブロックをループしてそれが「WORD」、「PAGE」、または「LINE」かどうかをチェックし、テキスト認識を出力します。 最後に、ドキュメント処理のためにMainメソッドでこのメソッドを呼び出します。
結果はIronOCRにとても似ています。
    AWS Textract出力
画像からデータを読み取るのは品質が重要な役割を果たすため、情報を抽出する際には非常に難しいです。 両方のライブラリはテキストを抽出する機能を提供します。 ここではpngファイルを使用します。
コードは前のものにほとんど似ています。 ここでは、AddPDF メソッドが AddImage メソッドに置き換えられています。
var Ocr = new IronTesseract();
using (var Input = new OcrInput()){
    Input.AddImage("test-files/redacted-employmentapp.png")
    //... you can add any number of images
    var Result = Ocr.Read(Input);
    Console.WriteLine(Result.Text);
}
var Ocr = new IronTesseract();
using (var Input = new OcrInput()){
    Input.AddImage("test-files/redacted-employmentapp.png")
    //... you can add any number of images
    var Result = Ocr.Read(Input);
    Console.WriteLine(Result.Text);
}
			Dim Ocr = New IronTesseract()
Using Input = New OcrInput()
	Input.AddImage("test-files/redacted-employmentapp.png") var Result = Ocr.Read(Input)
	Console.WriteLine(Result.Text)
End Using
		
    修正済みの従業員データ
出力はクリーンで、数行のコードだけで技術的な複雑さなしに完璧な結果となり、元の画像と一致しています。
    画像出力
以下のコードは画像からテキストを検出するのに役立ちます:
public static async void ReturnResult()
{
    AmazonTextractClient client = new   AmazonTextractClient("your_access_key_id", "your_secret_access_key", Amazon.RegionEndpoint.AFSouth1);
    var request = new DetectDocumentTextRequest();
    request.Document = new Document {
            Bytes = new MemoryStream(File.ReadAllBytes(@"test-files/redacted-employmentapp.png"))}; 
    var result = await client.DetectDocumentTextAsync(request);
    foreach (var block in result.Blocks)
    {
        if (block.BlockType == "WORD")
        {
            Console.WriteLine(block.Text);
        }
    }
}
static void Main(String [] args)
{
    ReturnResult();
}
public static async void ReturnResult()
{
    AmazonTextractClient client = new   AmazonTextractClient("your_access_key_id", "your_secret_access_key", Amazon.RegionEndpoint.AFSouth1);
    var request = new DetectDocumentTextRequest();
    request.Document = new Document {
            Bytes = new MemoryStream(File.ReadAllBytes(@"test-files/redacted-employmentapp.png"))}; 
    var result = await client.DetectDocumentTextAsync(request);
    foreach (var block in result.Blocks)
    {
        if (block.BlockType == "WORD")
        {
            Console.WriteLine(block.Text);
        }
    }
}
static void Main(String [] args)
{
    ReturnResult();
}
			Public Shared Async Sub ReturnResult()
	Dim client As New AmazonTextractClient("your_access_key_id", "your_secret_access_key", Amazon.RegionEndpoint.AFSouth1)
	Dim request = New DetectDocumentTextRequest()
	request.Document = New Document With {.Bytes = New MemoryStream(File.ReadAllBytes("test-files/redacted-employmentapp.png"))}
	Dim result = Await client.DetectDocumentTextAsync(request)
	For Each block In result.Blocks
		If block.BlockType = "WORD" Then
			Console.WriteLine(block.Text)
		End If
	Next block
End Sub
Shared Sub Main(ByVal args() As String)
	ReturnResult()
End Sub
		再度、コードは前のものとほとんど似ています。 ここでは、DetectDocumentTextRequest() メソッドを使用してリクエストを開始する必要があります。 要求オブジェクトは、すべてのバイトを読み取ってドキュメントを設定します。 このリクエストはDetectDocumentTextAsync()メソッドに渡されます。 非同期メソッドであるため、ReturnResult関数を非同期にし、その前にawaitキーワードを使用する必要があります。 成功すると、結果はブロック単位で返されます。 foreachループは、各ブロックをループして「WORD」であるかどうかをチェックし、その後テキスト認識を出力するために使用されます。 最後に、ドキュメント処理のためにMainメソッドでこのメソッドを呼び出します。
出力はIronOCRに似ていますが、最初にファイルをAWSバケットにアップロードする必要があります。
IronOCRのユニークな機能の一つは、テキストをスキャンしている最中にドキュメントからバーコードやQRコードを読み取ることができる点です。 OcrResult.OcrBarcode クラスのインスタンスは、各スキャンされたバーコードに関する詳細情報を開発者に提供します。 AWS Textractはこの機能を提供していません。
以下にIronOCRのコードを示します:
var Ocr = new IronTesseract();
Ocr.Configuration.ReadBarCodes = true;
using (var input = new OcrInput())
{
    input.AddImage("test-files/Barcode.png");
    var Result = Ocr.Read(input);
    foreach (var Barcode in Result.Barcodes)
    {
        Console.WriteLine(Barcode.Value);
        // type and location properties also exposed
    }
}
var Ocr = new IronTesseract();
Ocr.Configuration.ReadBarCodes = true;
using (var input = new OcrInput())
{
    input.AddImage("test-files/Barcode.png");
    var Result = Ocr.Read(input);
    foreach (var Barcode in Result.Barcodes)
    {
        Console.WriteLine(Barcode.Value);
        // type and location properties also exposed
    }
}
			Dim Ocr = New IronTesseract()
Ocr.Configuration.ReadBarCodes = True
Using input = New OcrInput()
	input.AddImage("test-files/Barcode.png")
	Dim Result = Ocr.Read(input)
	For Each Barcode In Result.Barcodes
		Console.WriteLine(Barcode.Value)
		' type and location properties also exposed
	Next Barcode
End Using
		そのコードは自明であり、理解しやすいです。
IronOCR は、開発者ライセンスを無料で提供するライブラリです。 また、独自の価格構造も備えています。 Liteバンドルは$749から始まり、隠れた料金はありません。 SaaSやOEM製品の再配布も可能です。 すべてのライセンスには、30日間の返金保証、1年間のソフトウェアサポートとアップグレード、開発/ステージング/本番環境の有効性、そして永続ライセンス(1回限りの購入)が含まれています。 IronOCRの価格構成全体とライセンスの詳細を見るには、こちらをご覧ください。
    IronOCRの価格プラン
SaaSおよびOEM製品の再配布ロイヤリティフリーサービスを、一度のお支払いで$1,599でご利用いただけます。
    SAASサービス
AWS Textract API は、開発者に AWS フリーティアサービスを提供します。Amazon Textract を無料で始めることができます。 無料プランは3ヶ月間有効で、料金は以下に示されています。

    料金表
こちらのリンクから料金の詳細をご覧いただけます。 さらに、価格計算機を使用してニーズに応じて価格を調整することもできます。
IronOCRは、C#開発者に向けて、あらゆるプラットフォーム上で最も高度なTesseract APIを提供します。 IronOCRは、Windows、Linux、Mac、Azure、AWS、Lambda上で展開可能であり、.NET Frameworkプロジェクトだけでなく、.NET Standardおよび.NET Coreもサポートしています。 我々はOCRスキャンの中でバーコードを読み取ることができ、さらにOCR結果をHTMLや検索可能なPDFとしてエクスポートすることもできます。
Amazon Textractを使用すると、ドキュメントのテキスト検出と分析をアプリケーションに簡単に追加できます。 Amazon Textractは、Amazonのコンピュータビジョン科学者によって開発された、日々何十億もの画像と動画を分析するための実績のある高スケーラブルなディープラーニング技術に基づいています。 機械学習の専門知識は必要ありません。 Amazon Textractには、画像ファイルやPDFファイルを解析するためのシンプルで使いやすいAPIが含まれています。 Amazon Textractは常に新しいデータから学習しており、Amazonはこのサービスに新しい機能を継続的に追加しています。
IronOCRのライセンスは開発者ベースであり、製品を使用する開発者の人数に基づいてライセンスを購入する必要があります。 AWS Textractのライセンスは、情報を抽出しデータを分析するためのドキュメントのページ数に基づいています。 ライセンスは月ごとで、大量のページ数になるとIronOCRライセンスと比較して価格が非常に高くなります。 さらに、IronOCRライセンスは一度購入すれば生涯使用でき、OMEおよびSaaS配布をサポートします。
全体的な比較で言うと、IronOCR と AWS OCR はどちらも文書や画像からテキストを検出するための機械学習機能を備えています。 IronOCRは、高速で時間を節約できるため、AWS OCRに対してわずかな優位性があります。 コードはシンプルで、ドキュメントからテキストを検出する際には分かりやすいです。 そのタスクは、いくつかのメソッドで達成されます。 一方、AWS Textractは同じ作業を達成するために多くの方法を使用します。 これはサーバーの応答を増加させ、時間がかかることがあります。 次のように入力した場合でも、IronOCRが約99%の確率で正確に内容を読み取ることができます。documentがひどくフォーマットされておらず、傾いていて、デジタルノイズが含まれていました。IronOCRは、パフォーマンスを調整したり、入力画像を大幅に変更する必要なく、すぐに使用可能です。 速度が格段に向上: IronOCR.2020+ は以前のバージョンと比べて最大10倍速く、エラーを250%以上削減します。
さらに、Iron Softwareは現在、2つの価格で5つのツールパッケージを提供しています。Iron Suiteに含まれるツールは次のとおりです:
IronWebscraper
このリンクを訪れてIRONSUITEを探索してください。