ライブ環境でテストする
ウォーターマークなしで本番環境でテストしてください。
必要な場所でいつでも動作します。
OCRは光学文字認識の略です。 画像ファイルを機械符号化テキストに変換する機能を提供します。 スキャンされたドキュメントは常にコンピュータによって画像ファイルとして保存されます。 これらの画像ファイルに含まれるデータは、通常のテキストエディタやワードプロセッシングアプリケーションを使用しても、検索、編集、またはテキスト形式で保存することはできません。 OCR処理は、これらの画像を機械で読み取れるテキストに変換し、ユーザーによる更なる処理を可能にします。
この現代において、インターネットを通じて共有されるスキャンされたドキュメントはデジタル形式であり、ほとんどがPDFや画像の形で提供されています。 画像をテキストに変換するオンラインリソースが多数利用可能です。 しかし、主に企業はこの機能を自社のソフトウェアアプリケーションに必要としています。 これを念頭に置くと、ソフトウェアアプリケーションに組み込むためのOCR処理技術を提供する多くのライブラリがあります。
この記事では、C#向けの最も人気のあるOCRライブラリのうち二つについて議論します。 これらは:
IronOCR for .NETは、画像およびPDFをスキャン、検索、読み取るためのC#ライブラリです。 画像またはPDFファイルを入力として取り込み、最新のTesseract 5カスタムビルド.NET OCRエンジンを使用して、テキスト、構造化データ、または検索可能なPDFドキュメントを出力します。 そのTesseractは、125以上の言語に対応しており、.NET CoreおよびStandard 2.0から7までのクロスプラットフォームをサポートしています。
IronOCRは、C#開発者がIronTesseract
クラスとAPIキーを使用して、画像を自動的にテキストに変換できる使いやすいAPIです。 速度、正確性、そして使いやすさを優先します。 また、訓練されたモデルセットを使用してテキストを見つけるために、コンピュータービジョンAPIの支援も行います。
IronOCRのもう一つの強力な機能は、すべての画像ファイルからバーコードやQRコードをスキャンし、そのテキストを読み取ることができることです。 IronOCRの他の重要な機能は以下の通りです。
System.Drawing Objects
、ストリーム、PDFドキュメント(最適化されたターゲットDPI)シンプルなデータ出力: .NET テキスト文字列、バーコードおよびQRデータ、画像
では、Google Cloud Vision APIを見てみましょう。
Google Cloud Vision API (グーグル クラウド ビジョン API)は、C#言語をサポートするGoogle Cloud OCRクライアントライブラリです。 C# 開発者が簡単にソフトウェアアプリケーションにコンピュータビジョン検出機能を統合できるようにします。 次の処理を行います: OCRを実行し、画像ファイルからテキストを検出、画像ラベル、顔認識、ランドマーク認識。
Google Cloud Vision APIは、RESTおよびRPC APIを使用して強力な事前学習済みの機械学習を提供します。(機械学習)モデル クラウドインポートビジョンAPIを使用すると、あらかじめ定義された数百万のカテゴリに画像を迅速に分類することができます。 また、オブジェクトの検出、印刷された文書および手書きのテキストからのテキスト読み取りも可能です。
ラベル検出: 画像に対する一般化されたラベルを返します
記事の残りは次のとおりです:
Visual Studio プロジェクトの作成
IronOCRのインストール
Google OCRのインストール
画像からテキストへ
バーコードおよびQRコードからテキストへ
PDFをテキストに変換
ライセンス
このチュートリアルでは、最新バージョンのVisual Studio 2022を使用します。 では、既にC#用にダウンロードしてインストール済みであると仮定します。 そうでない場合は、こちらからダウンロードできます:Visual Studioウェブサイト.
まず、両方のライブラリを使用するためにコンソールプロジェクトを作成する必要があります。 プロジェクトを作成する手順に従ってください:
新しいプロジェクトを作成をクリックします。
![C# ウィンドウズアプリケーションでバーコードを印刷する方法
図1 - 新しいプロジェクトを作成する](/static-assets/ocr/blog/google-ocr-api-alternatives/google-ocr-api-alternatives-1.webp)
与えられたオプションからC#コンソールアプリケーションを選択します。
次へ進む。
![C# Windowsアプリケーションでバーコードを印刷する方法
図3 - プロジェクトの構成](/static-assets/ocr/blog/google-ocr-api-alternatives/google-ocr-api-alternatives-3.webp)
追加情報から、最も安定したバージョンである.NET 6.0フレームワークを選択します。
以下の手順を実行すると、選択した場所にプロジェクトが作成されます。
次に、比較のためにプロジェクトにライブラリをインストールします。
IronOCRライブラリをインストールするための方法は複数あります。 それでは、一つずつ見ていきましょう。
NuGetは、プロジェクト内の依存関係をダウンロードしてインストールするためのパッケージマネージャーです。 そのパッケージにはコンパイル済みのコードが含まれています(DLL (ディーエルエル))およびマニフェストファイル。以下の方法を使用してアクセスします:
ソリューションの NuGet パッケージを管理する クリック
NuGet パッケージの管理をクリック
さて、NuGetパッケージマネージャーウィンドウが開きます。 IronOCRを検索して、インストールをクリックします。
NuGet公式ウェブサイトから直接ダウンロードすることができます。以下の手順に従ってください:
リンクをクリックしてください: ""。
ページの右側にある「Download package」オプションをクリックしてください。
ダウンロードしたパッケージを開くと、インストールが開始されます。
Iron Softwareのウェブサイトにアクセスし、IronOCR for .NETのウェブページに移動してください。 下までスクロールして、「Download DLL」または「Download Windows Installer」をクリックしてください。
Zipファイルがダウンロードされます。 抽出してプロジェクトファイルに追加するか、Windowsインストーラーを実行してください。 以下の手順に従ってプロジェクトに追加してください。
ソリューションエクスプローラーからVisual Studioのプロジェクトの依存関係を右クリックします。
次に、オプションの「Add Project Reference」を選択します。
ダウンロードしたDLLファイルの場所を参照します。
Visual Studioの「ツール」タブに移動します。
NuGetパッケージマネージャーオプションを拡張する。
Install-Package IronOCR
これにより、プロジェクトにIronOCRが自動的にダウンロードおよびインストールされます。
さて、プロジェクトでIronOCRを使用する準備が整いました。
その関数にアクセスする必要があるソースコードファイルの先頭に追加する必要がある名前空間は一つだけです。
using IronOCR;
using IronOCR;
Imports IronOCR
では、Google Vision OCRをインストールしましょう。
お客様のC#プロジェクトでビジョンAPIを使用するためには、以下の前提条件を満たす必要があります。
Google アカウントを作成
Google Cloud コンソールから新しいプロジェクトを作成
請求を有効にする
ビジョンAPIを有効にする
サービスアカウントを作成し、クレデンシャルを設定する
サービス アカウント キーの認証情報をJSONファイル形式でダウンロードしてください。
Google Cloud Visionのセットアップや要件に関する詳細は、公式ドキュメントでご覧いただけます。これ.
では、Visual StudioでOCR処理を行うためにGoogle Cloudクライアントライブラリをインストールするためには、NuGetパッケージマネージャーを使用する必要があります。
以下のメソッドを使用してアクセスしてください:
ソリューションの NuGet パッケージを管理をクリックします
NuGet パッケージの管理をクリック
![C# Windowsアプリケーションでバーコードを印刷する方法
図10 - NuGetパッケージの管理](/static-assets/ocr/blog/google-ocr-api-alternatives/google-ocr-api-alternatives-10.webp)
さて、NuGetパッケージマネージャーウィンドウが開きます。 Google Cloud Vision OCR を検索し、インストールをクリックします。
以下の名前空間を含めて、Google OCR Vision APIを使用してください:
using Google.Cloud.Vision.V1;
using Google.Cloud.Vision.V1;
Imports Google.Cloud.Vision.V1
また、JSONファイルでダウンロードしたキー認証情報を使用して環境変数を設定してください。
Environment.SetEnvironmentVariable("GOOGLE_APPLICATION_CREDENTIALS", "key.json");
Environment.SetEnvironmentVariable("GOOGLE_APPLICATION_CREDENTIALS", "key.json");
Environment.SetEnvironmentVariable("GOOGLE_APPLICATION_CREDENTIALS", "key.json")
さて、すべての設定が完了し、使用準備が整いました。
画像からデータを読み取る作業は非常に骨の折れる仕事です。 コンテンツを抽出する際には、画像の解像度と品質が重要な役割を果たします。 どちらのライブラリも光学文字認識(OCR)を提供します(OCR (光学式文字認識))画像からテキストを抽出する機能。
IronOCRは強力なIronTesseract
クラスを使用して、画像ファイルの内容を簡単に読み取ることができます。 ここではPNG画像を使用して画像ファイルからテキストを読み取るコードは次の通りです:
var OCR = new IronTesseract();
using (var Input = new OcrInput()){
Input.AddImage("test-files/employmentapp.png");
var Result = OCR.Read(Input);
Console.WriteLine(Result.Text);
}
var OCR = new IronTesseract();
using (var Input = new OcrInput()){
Input.AddImage("test-files/employmentapp.png");
var Result = OCR.Read(Input);
Console.WriteLine(Result.Text);
}
Dim OCR = New IronTesseract()
Using Input = New OcrInput()
Input.AddImage("test-files/employmentapp.png")
Dim Result = OCR.Read(Input)
Console.WriteLine(Result.Text)
End Using
IronOCRの出力は、提供された元の画像と一致します。 コードはクリーンで、技術的な複雑さがなく理解しやすいです。
Google Cloud Vision OCRは、異なるフォントを使用して画像をテキストに変換することもできます。 まず、資格情報ファイルを使用してクライアントを作成する必要があります。それから、このクライアントオブジェクトを使用して、DetectText
メソッドを呼び出し、アノテーション形式のレスポンスを取得できます。 コードは次のように与えられます:
Environment.SetEnvironmentVariable("GOOGLE_APPLICATION_CREDENTIALS", "key.json");
var client = ImageAnnotatorClient.Create();
var image = Image.FromFile("test-files/employmentapp.png");
var response = client.DetectText(image);
foreach (var annotation in response)
{
if (annotation.Description != null)
{
Console.WriteLine(annotation.Description);
}
}
Environment.SetEnvironmentVariable("GOOGLE_APPLICATION_CREDENTIALS", "key.json");
var client = ImageAnnotatorClient.Create();
var image = Image.FromFile("test-files/employmentapp.png");
var response = client.DetectText(image);
foreach (var annotation in response)
{
if (annotation.Description != null)
{
Console.WriteLine(annotation.Description);
}
}
Environment.SetEnvironmentVariable("GOOGLE_APPLICATION_CREDENTIALS", "key.json")
Dim client = ImageAnnotatorClient.Create()
Dim image As System.Drawing.Image = System.Drawing.Image.FromFile("test-files/employmentapp.png")
Dim response = client.DetectText(image)
For Each annotation In response
If annotation.Description IsNot Nothing Then
Console.WriteLine(annotation.Description)
End If
Next annotation
同じ画像を入力として与え、両方のライブラリの出力を比較します。
上記の出力から、IronOCRが画像出力形式を保持していることが明確にわかります。 Google OCRは正確な出力テキストを提供していますが、表の書式は保持されていません。 IronOCRは、指定された画像と全く同じようにテーブルの書式を維持しました。
IronOCR は画像を読み取る際に、バーコードやQRコードを読み取ることができるというユニークで便利な機能を提供します。 バーコードを検出し、その値を簡単に表示することができます。 まず、ReadBarCodes
構成を真に設定し、その後、OCR結果の各バーコードを反復処理します。 バーコードを読み取るコードは以下のとおりです:
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);
}
}
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);
}
}
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)
Next Barcode
End Using
入力された3つのバーコードはすべて正常に読み取られ、それらの隠されたテキストが表示されます。
Google Vision APIでは、まだこの機能は利用できません。 ソフトウェアアプリケーションでバーコードを読み取ることは便利です。 しかし、Google OCRは手書きのテキストを抽出し、スキャンされたドキュメントから画像ファイルとしてテキストを取得することができます。ラベル検出のコードは次のとおりです:
var client = ImageAnnotatorClient.Create();
var image = Image.FromUri("gs://cloud-samples-data/vision/using_curl/shanghai.jpeg");
var labels = client.DetectLabels(image);
Console.WriteLine("Labels (and confidence score):");
Console.WriteLine(new String('=', 30));
foreach (var label in labels)
{
Console.WriteLine($"{label.Description} ({(int)(label.Score * 100)}%)");
}
var client = ImageAnnotatorClient.Create();
var image = Image.FromUri("gs://cloud-samples-data/vision/using_curl/shanghai.jpeg");
var labels = client.DetectLabels(image);
Console.WriteLine("Labels (and confidence score):");
Console.WriteLine(new String('=', 30));
foreach (var label in labels)
{
Console.WriteLine($"{label.Description} ({(int)(label.Score * 100)}%)");
}
Imports System
Dim client = ImageAnnotatorClient.Create()
Dim image = System.Drawing.Image.FromUri("gs://cloud-samples-data/vision/using_curl/shanghai.jpeg")
Dim labels = client.DetectLabels(image)
Console.WriteLine("Labels (and confidence score):")
Console.WriteLine(New String("="c, 30))
For Each label In labels
Console.WriteLine($"{label.Description} ({CInt(Math.Truncate(label.Score * 100))}%)")
Next label
PDFファイルを読み込むことは、IronOCRで画像ファイルを読み込むことと同じくらい簡単です。 画像読み取りコードでは、AddImage
メソッドを AddPdf
に変更するだけで済みます。 コードは次のようになります:
var OCR = new IronTesseract();
using (var Input = new OcrInput()){
Input.AddPdf("test-files/example.PDF");
var Result = OCR.Read(Input);
Console.WriteLine(Result.Text);
}
var OCR = new IronTesseract();
using (var Input = new OcrInput()){
Input.AddPdf("test-files/example.PDF");
var Result = OCR.Read(Input);
Console.WriteLine(Result.Text);
}
Dim OCR = New IronTesseract()
Using Input = New OcrInput()
Input.AddPdf("test-files/example.PDF")
Dim Result = OCR.Read(Input)
Console.WriteLine(Result.Text)
End Using
抽出されたテキストは、PDFファイルと同じフォーマットです。
Google OCRは、PDF/TIFFドキュメントからテキストを抽出する機能も提供します。 ただし、Google Cloud Storageにファイルがある場合にのみ、テキストを検出します。 これにはGoogle Storageバケットを作成する必要があります。 C#のコードはここで実装するのは簡単ではなく、かなり長いです。 C# でファイル内のテキストを検出するサンプルは利用できません。 こちらをご覧ください:Javaコード参照として試してみてください。
IronOCRは開発目的で無料で使用できますが、商業利用にはライセンスが必要です。 また、すべての機能をお試しいただける無料トライアルも提供しています。 Liteパッケージは、$liteLicense から開始します。無料試用. IronOCRは、1年間の製品サポートとアップデートを無料で提供し、その後は1年あたり$399がかかります。 すべてのライセンスは永久ライセンスであり、一度の購入のみで隠れた料金はありません。 また、$1999の一回購入でSaaSおよびOEM製品向けのロイヤリティフリーの再配布カバレッジを選択することもできます。 ライセンスパッケージと価格プランの詳細については、こちらをご覧ください。これ.
Google Cloud Vision の価格プランは、アプリケーションが画像に対して実行する操作の数に基づいています。 複数ページを持つPDFのようなファイルの場合、各ページは画像として扱われます。 さらに、画像に適用される各機能は、個別の課金単位です。 例えば、同じ画像にテキスト検出とラベル検出を適用する場合、それぞれの機能が別々に課金されます。 以下に価格プランを示します。詳細については、こちらをご覧ください。リンク.
IronOCRは、C#開発者に対し、どのプラットフォームでも使用できる最も先進的なTesseract APIを提供します。 IronOCRは、Windows、Linux、Mac、Azure、AWS、Lambdaで展開でき、.NET Frameworkプロジェクトだけでなく、.NET Standardや.NET Coreもサポートしています。 我々はOCRスキャンの中でバーコードを読み取ることができ、さらにOCR結果をHTMLや検索可能なPDFとしてエクスポートすることもできます。
Google Cloud Vision APIは、進化したAIを搭載したAPIです。 MLアプリケーションの構築に非常に役立つさまざまな画像解析機能を提供します。 開発者はAPIキーを使用してGoogle Cloudと直接通信できるため、ローカルにファイルを保存する必要がありません。
IronOCRのライセンスはユーザーベースであり、製品を使用する開発者の数に基づいてライセンスを購入する必要があります。 Google Cloud Visionのライセンスは、情報を抽出しデータを分析するための写真の数に基づいています。 ライセンスは月単位であり、IronOCRライセンスと比較すると、大量の画像に対して価格が非常に高くなります。 さらに、IronOCRライセンスは一度の購入で生涯使用可能であり、OEMおよびSaaS配布に対応しています。
総括すると、両方のライブラリには機械学習機能が備わっています。 IronOCRには、Google OCRに対して若干の利点があります。それは、特にC# .NETフレームワーク向けに構築されており、高速かつ時間を節約できるからです。 それは非常に少ない行数のコードであらゆる機能を提供し、開発者が長いコードを書く労力を軽減します。 これは、最も人気のあるTesseract 5 APIに基づいて構築されており、画像やその他のファイル形式を容易に統合して解析し、精度の高い出力を提供します。 一方、Google Vision OCRはAIに基づいて構築されており、Java、PythonおよびRESTに重点を置いており、Google Cloudに接続されている場合にのみ実行できます。 これはサーバーサイドからの応答があるため、時間がかかることがあります。特定のニーズに応じてライブラリを選択できます。
今なら、2つの価格で5つのIron製品を手に入れることができます。Iron Suiteに含まれているツールは次の通りです:
9つの .NET API製品 オフィス文書用