web-dev-qa-db-ja.com

ASP.Net MVC4 Web APIプロジェクトでMicrosoft OCRライブラリ(Microsoft.Windows.Ocr)を使用する方法は?

TL; DR:

MV4 Web APIなどのサーバー側ASP.Net Webアプリケーション上のMicrosoft.Windows.Ocr(/ WindowsPreview.Media.Ocr.dll)アセンブリを参照し、そのアセンブリのOCR機能を利用して入力として写真画像を取得し、抽出する方法を知っている人はいますか?それからテキストコンテンツ? はいの場合、回答に詳細な手順を記入してください。

質問の詳細(およびこれまでに試したこと)

(ファイルアップロードUI画面を介して)サーバーにアップロードされた画像を取得し、[〜#〜] ocr [〜#〜]を使用してテキストを読み取り、テキストを表示するWebアプリケーションを構築しています。アップロードされた画像のすぐ隣の次のページ。

ほとんどの市販のOCRライブラリにはアームと長さがかかるため( 前回チェックしたときに1,300ドル以上Microsoft OCRライブラリMicrosoft.Windows.Ocrつまり[〜 #〜] free [〜#〜]そして 非常に単純な のようで、簡単に使用できます。

そこで、ASP.Net MVC4 Web APIプロジェクトにMicrosoft.Windows.OcrNugetパッケージをインストールしようとしましたが、成功しました。

install the Microsoft.Windows.Ocr Nuget Package

その後、MVC4 Web APIプロジェクトリファレンスを調べましたが、驚いたことに、Microsoft.Windows.Ocr.dllAssemblyへの参照が見つかりませんでした。

reference to Microsoft.Windows.Ocr.dll missing

そこで、\packagesフォルダー内のアセンブリを参照してx86バージョンのMicrosoft.Windows.Ocr.dllアセンブリへの参照を追加し、\lib\win81\x86からWindowsPreview.Media.Ocr.dllを選択しようとしました。フォルダ

注:アセンブリ名はWindowsPreview.Media.Ocr.dllであり、Microsoft.Windows.Ocr.dllではありません。理由はわかりません!

browse to and select Microsoft.Windows.Ocr.dll OCR Assembly

それを実行して[〜#〜] ok [〜#〜]をクリックすると、次のエラーメッセージが表示されました。

---------------------------
Microsoft Visual Studio
---------------------------
A reference to   
'D:\TestProjects\packages\Microsoft.Windows.Ocr.1.0.0\lib\win81\x86\
 WindowsPreview.Media.Ocr.dll' could not be added. Please make sure 
 that the file is accessible, and that it is a valid Assembly 
 or COM component.
---------------------------
OK   
---------------------------

Microsoft OCR Library Error adding to Project

次に、 Nugetページ から、「サポートされているプラ​​ットフォーム」はWindows Phone 8、Windows Phone 8.1、Windows 8.1(Windowsストアアプリのみ)であることがわかりました。

Microsoft ocr library nuget error

しかし、確かに、ASP.Netアプリケーションのサーバー側でこのOCR dllを使用する方法が必要ですか?

MV4 Web APIのようなサーバーサイドASP.Net Webアプリケーション上のMicrosoft.Windows.Ocr(/ WindowsPreview.Media.Ocr.dll)アセンブリを参照し、そのアセンブリのOCR機能を利用して入力として写真画像を取得し、テキストコンテンツを抽出する方法を知っている人はいますか? ** はいの場合、回答に詳細な手順を記載してください。

「ハッキング」やサンプルコードは大歓迎です!!

ありがとうございました!!

23
Shiva

Visual Studio 2015とWindows 10を使用している場合、

Microsoft.Windows.Ocr

ユニバーサルWindowsプラットフォームに移動しました。として利用可能です

Windows.Media.Ocr

そのため、Windows 10用のツールを有効にしてVS 2015をアップグレードする必要があります。

私は次のことを行い、Windows.Media.OcrはWeb APIの参照として追加されました。

  1. Web APIプロジェクトの参照で、参照のいずれかを右クリックし、[オブジェクトブラウザーで表示]をクリックします。オブジェクトブラウザは次のようになります enter image description here
  2. [参照:すべてのコンポーネント]ボックスの横に[...]ボタンがあります。ツールチップには「カスタムコンポーネントセットの編集」と表示されます。クリックしてください!
  3. [カスタムコンポーネントセットの編集]ボックスで[参照]タブをクリックし、[C:/ Program Files(x86)/ Windows Kits/10/References/Windows.Foundation.UniversalApiContract/1.0.0.0]に移動して、結果のwinmdファイルをクリックします。 [追加]をクリックします。
  4. ヒット!
  5. [ソリューションエクスプローラーで選択したプロジェクトの参照に追加]というアイコンをクリックします([参照:]の横にある[...]ボタンの3番目のボタンです)。 Windows.Media.Ocrが使用可能であることがわかります。

注:以下はVS 2015とWindows 10でのみ機能します。VS2015も niversal Windows Platform (UWP)に更新する必要があります。サンプルOCRについて this を確認してください。

お役に立てれば。 Update参照にインポートされましたが、ロードに失敗しています。それが人々に何らかの出発点を提供することを願っています。ありがとう!。

5
Anish V

有効なソリューションについては、以下のアップデート2にスキップできます。

タイプロード例外をスローします。私は同じことをしようとしているが、プロジェクトを実行できないため、投稿していると言われています。ここでは、winrt APIを非Windowsアプリプロジェクトに取り込む方法に関する基本的な手順を示します。

http://weblogs.thinktecture.com/cnagel/2012/10/calling-winrt-from-windows-desktop-apps.html

また、dllを参照しようとせず、代わりにwinmdファイルを参照してください。

Ocrライブラリを参照するサンプルコンソールアプリを次に示しますが、ソリューションを実行すると、タイプロード例外がスローされます。( https://github.com/Xandroid4Net/MicrsoftOcrConsoleApp )Itコンソールアプリからasp.netアプリケーションに簡単に移植する必要があります。型のロード例外を修正する方法がわかりませんが、おそらく私よりも遠くまで行くことができます。解決策を見つけたら投稿してください。

更新1(2014年1月1日)

さらに掘り下げると、次のアセンブリバインドエラーが明らかになりました。プロセスにパッケージIDを設定する方法はありますか?

ファイル:WindowsPreview.Media.Ocr!WindowsPreview.Media.Ocr.OcrEngine、Version = 255.255.255.255、Culture = neutral、PublicKeyToken = null、ContentType = WindowsRuntime.htm

ファイルの内容:

* Assembly Binder Log Entry(2014/12/1/@ 11:48:01 PM)*

操作は失敗しました。バインド結果:hr = 0x80073d54。プロセスにはパッケージIDがありません。

ロードされたアセンブリマネージャー:C:\ Windows\Microsoft.NET\Framework64\v4.0.30319\clr.dll実行可能C:\ Users\Wesley\Documents\Dev\ConsoleApplication2\Program.exeの下で実行---詳細なエラーログが続きます。

BEGIN:Windowsランタイムタイプバインド。 END:プロセスにはパッケージIDがありません。 (HRESULTからの例外:0x80073D54)

更新2(2014年12月3日)

これは厄介な回避策ですが、Windows 8.1 Surface Pro 3タブレットでは機能しました。 WebOcrはWebフォームですが、MVC用に簡単にリファクタリングできます

1) https://github.com/Xandroid4Net/CommandLineOcr をダウンロードします。これは、擬似ストアアプリです。

2)アプリをビルドして実行します。何もしないように見えます。大丈夫です。必要な新しいキーでレジストリを更新します。

3) https://github.com/Xandroid4Net/WebOcr をダウンロードします。

4)WebocrプロジェクトでOcrCommandLineCaller.csを見つけます。

5)HKEY_CURRENT_USER\Software\Classes\ActivatableClasses\Package\Some_Sort_Of_Guid_For_Your_APP\Server\App.App ....\AppUserModelIdでレジストリキーを見つけます

レジストリキーの検索についてさらにサポートが必要な場合は、このSOの質問を参照してください。 C#のIApplicationActivationManager :: ActivateApplication?

6)レジストリキーで見つかった奇妙なGUIDアプリ識別子でOcrCommandLineCaller.csのappActiveManager.ActivateApplication呼び出しを更新します。

7)default.aspx.csで、saveAsPathをマシン上のパスに置き換えます。 Windowsストアアプリには、Windows.Storage.ApplicationData.Current.LocalFolderで表される静的パスがあります。これは、簡単にするために画像を保存したパスです。

8)コードを自由に変更して、質問がある場合はお知らせください。

これは非常にラフで厄介なソリューションですが、動作します。

4
user3027550

私は数年前からMS Officeに同梱されているMODIソリューションを使用していましたが、とても満足していました(Officeを購入した場合は無料でした)。中止されたとき、私はむしろ失望しました。 Tesseractを試してみました...私は本当にそれが好きでしたが、良質でオランダの機械タイプには時間がかかり、不正確であることがわかりました...そしてあなたのように、本質的に趣味のプロジェクトに200ドルを費やすことは正当化できませんでした。

必死の検索の後、ここの誰かがTOCR(Transym製品)を指摘してくれました。すぐにエピファニーが続きました。 ;-)私は現時点でTransymと提携していないと言う必要があると思います、そして、はい、私は全額を支払いました...60ポンド!(タイプミスなし... 60 quid)、VATを含めて113ユーロになりました。

本質的にはインテグレーター向けです(スキャン/ビューア/ OCRアプリが含まれていますが、これは単にデモを意味するだけです-ライセンスを購入すると、そのソースコードが取得されます)。 APIは時代遅れです(OCRエンジンのように、かなり成熟したコードベースです)が、高速で安定しており、予想外に正確です。 DokuStarエンジンや他の難解なエンジンほど正確ではありませんが、私のアプリケーション(オランダ語と英語のマシンタイプ)では、1000ドルをはるかに超えるさまざまなエンジンに対して独自の機能を備えています。オランダのマシンタイプでの認識精度は優れています(手書きは行いません)。私の意見では、お金の価値の面で、それはとんでもなく良いです。 APIについて:私は、ニーズに合わせて初歩的な.NETラッパーを作成しました。これは数晩で行われました。

Webサイトで利用可能な評価版があります( http://www.transym.com/index.htm )。そして、もしあなたがそうするならば、私はお金を得ません;-)

3
Peter Huppertz

私見、おそらくあなたがターゲットにしているプラ​​ットフォームでサポートされていないライブラリを使用しようとするあなたの努力の価値はありません。

this answer をチェックして、いくつかの無料の選択肢を見つけることができます。

1
NightOwl888

Uwpdesktop NuGetを使用して、デスクトップアプリでUWP OCR APIを動作させることができました。

インストールパッケージuwpdesktop

その後、UWP APIを呼び出すことができます。

0
user2863528