ライブ環境でテストする
ウォーターマークなしで本番環境でテストしてください。
必要な場所でいつでも動作します。
テキストの画像を機械可読なテキスト形式に変換するために使用される手順は、光学式文字認識(Optical Character Recognition)として知られています。(OCR (光学式文字認識)). 例えば、フォーム、請求書、あるいはレシートをスキャンすると、コンピュータはスキャンした結果を画像ファイルとして保存します。画像ファイル内のデータは、テキストエディターを使用して編集、検索、またはカウントすることができません。 しかし、OCRソリューションを使用して、画像ファイルをテキストデータとして保存されたテキストドキュメントに変換することができます。
現代では、多くのビジネスワークフローが印刷メディアから情報を受け取ることを含んでいます。 異なる文書、例えば紙のフォーム、請求書、スキャンされた法的文書、テーブル抽出、手書きテキストおよび印刷されたテキストや契約書などは、すべてビジネスプロセスの一部です。 さらに、このような文書コンテンツをデジタル化すると、テキストが内部に隠されたイメージが作成されます。 画像内のテキストは、テキストドキュメントと同じ方法でワードプロセッシングツールによって処理されることはありません。 OCR技術は、テキスト画像を他のビジネスソフトウェアで分析できるテキストデータに変換することで、この問題を解決します。
OCRエンジンは、以下のステップを使用して動作します:
このプロセスでは、スキャナーが文書を読み取り、それをバイナリデータに変換します。 OCRソフトウェアはスキャンされた画像を認識し、明るい部分を背景として、暗い部分をテキストとして分類します。
OCRソフトウェアは、最初に画像を清掃し、エラーを除去して、データの読み取り準備をします。
テキスト認識のためのOCRアルゴリズムの主なタイプには、パターンマッチングと特徴抽出の二つがあります。
パターンマッチングプロセス全体を通して、文字の画像、つまりグリフが分離され、以前に記録されたグリフと比較されます。
特徴抽出のプロセスを通して、グリフは線、閉じたループ、線の方向、線の接合点などの特徴に分割されます。
この技術は、分析後に取得したテキストデータをデジタルファイルに変換します。 一部のOCRシステムは、スキャンされたドキュメントの前と後のバージョンを含む注釈付きPDFドキュメントを作成できます。
この記事では、OCRのための最も普及している2つのアプリケーションとドキュメントライブラリの比較について議論します。 これらは:
IronOCR
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 Augmented Artificial Intelligenceを使用して人間によるレビューを追加することもできます。(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パッケージマネージャーを拡張する。
その後、新しいウィンドウが検索バーに表示されます:IronOCRと入力してください。 右側のプロジェクトボックスにチェックを入れて、「インストール」をクリックしてください。
この方法を使用することで、開発者は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をダウンロードしてインストールすることができます。
以下の名前空間を含めて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
コードはシンプルでクリーン、非常に理解しやすく使いやすいです。
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つのパラメータを持つAmazonTextractClientオブジェクトを作成する必要があります: アクセスキーID
, シークレットアクセスキー
そして 地域
. 次に、を使用してリクエストを開始します StartDocumentTextDetectionRequestの開始()
method. リクエストオブジェクトは、その後、設定します 文書の場所
バケット名とキーを使用する。 このリクエストは、次に渡されます StartDocumentTextDetectionAsync
スタートドキュメントテキストディテクションアシンク() method. 非同期メソッドであるため、awaitキーワードをその前に使用する必要があります。また、 リターンリザルト (ReturnResult)
非同期関数 成功すると、結果が返され、jobidが保存されます。 ジョブIDは次に渡されます GetDocumentTextDetectionAsync(文書テキスト検出Async)()
メソッドを待機します 成功
応答 フォーイーチループは各ブロックをループしてそれが「WORD」、「PAGE」、または「LINE」かどうかをチェックし、テキスト認識を出力します。 最後に、ドキュメント処理のためにMainメソッドでこのメソッドを呼び出します。
結果はIronOCRにとても似ています。
画像からデータを読み取るのは品質が重要な役割を果たすため、情報を抽出する際には非常に難しいです。 両方のライブラリはテキストを抽出する機能を提供します。 ここでは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
再度、コードは前のものとほとんど似ています。 以下、リクエストを初期化するために 文書テキスト検出リクエスト()
method. 要求オブジェクトは、すべてのバイトを読み取ってドキュメントを設定します。 このリクエストは次に DetectDocumentTextAsync に渡されます。()** メソッド 非同期メソッドであるため、awaitキーワードをその前に使用する必要があります。また、 リターンリザルト (ReturnResult)
非同期関数 成功すると、結果はブロック単位で返されます。 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年間のソフトウェアサポートおよびアップグレード、開発/ステージング/本番環境の有効性、そして永久ライセンスが含まれています。(一回限りの購入). IronOCRの全価格構造とライセンスの詳細を見るには、 こちら をご覧ください。これ.
SaaSおよびOEM製品の再配布ロイヤリティフリーサービスを、一度のお支払いで$1,599でご利用いただけます。
AWS Textract API は、開発者に AWS Free Tier サービスを提供します。Amazon Textract を無料で始めることができます。 無料プランは3ヶ月間有効で、料金は以下に示されています。
価格の詳細についてはこちらをご覧ください リンク. さらに、価格計算機を使用してニーズに応じて価格を調整することもできます。
IronOCRはC#開発者に最先端のツールを提供しますTesseract API (テッセラクト 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に含まれるツールは次のとおりです:
IronBarcode
IronXL
IronOCR
IronPDF
IronWebscraper
このリンクを訪問して、以下を調べてくださいIRONSUITE.
9つの .NET API製品 オフィス文書用