如何在ASP.Net MVC4 Web API项目中使用Microsoft OCR库(Microsoft.Windows.Ocr)?

Shi*_*iva 23 c# asp.net ocr asp.net-mvc microsoft-ocr

TL; DR:

有没有人知道在服务器端ASP.Net Web应用程序(如MV4 Web API)上引用Microsoft.Windows.Ocr(/ WindowsPreview.Media.Ocr.dll)程序集的方法,并利用该程序集中的OCR功能将照片图像作为输入并从中提取文本内容.它? 如果是,请在答案中提供详细说明.

问题详情(到目前为止我尝试过的)

我正在构建一个Web应用程序,它将上传到服务器的图像(通过文件上传UI屏幕),然后使用OCR读取文本,并在下一页上显示文本,就在上传的图像旁边.

由于大多数商业OCR库成本一只胳膊和长度(超过$ 1,300个我最后一次检查),我想我可以尝试使用微软OCR库 Microsoft.Windows.Ocr免费的,似乎是非常简单和容易使用.

所以我尝试将Microsoft.Windows.Ocr Nuget Package 安装到我的ASP.Net MVC4 Web API项目,并且成功了.

安装Microsoft.Windows.Ocr Nuget Package

之后,我浏览了我的MVC4 Web API项目参考资料,令我惊讶的是,没有找到对Microsoft.Windows.Ocr.dll程序集的引用.

缺少对Microsoft.Windows.Ocr.dll的引用

那么我尝试通过浏览到该\packages文件夹中的该程序集添加对Microsoft.Windows.Ocr.dll程序集的x86版本的引用,并从文件夹中选择WindowsPreview.Media.Ocr.dll\lib\win81\x86

注意:程序集名称是WindowsPreview.Media.Ocr.dll而不是Microsoft.Windows.Ocr.dll,不知道为什么!

浏览并选择Microsoft.Windows.Ocr.dll OCR程序集

当我这样做并单击确定时,我收到以下错误消息.

---------------------------
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   
---------------------------
Run Code Online (Sandbox Code Playgroud)

Microsoft OCR Library错误添加到Project

然后我从Nuget Page中发现"支持的平台"只是Windows Phone 8,Windows Phone 8.1,Windows 8.1(仅限Windows应用商店应用).

microsoft ocr library nuget error

但当然,必须有一种方法在ASP.Net应用程序中的服务器端使用此OCR dll

有没有人知道在服务器端ASP.Net Web应用程序(如MV4 Web API)上引用Microsoft.Windows.Ocr(/ WindowsPreview.Media.Ocr.dll)程序集的方法,并利用该程序集中的OCR功能将照片图像作为输入并从中提取文本内容.它?**如果是,请在答案中提供详细说明.

任何"黑客"和/或示例代码将非常感谢!!

谢谢!!

小智 5

您可以跳到下面的更新 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)它应该可以轻松地从控制台应用程序移植到 asp。净应用。我不知道如何修复类型加载异常,也许你可以做得比我更远。如果您确实找到了解决方案,请发布。

更新 1 (12/1/2014)

更多的挖掘揭示了以下程序集绑定错误。知道如何为进程设置包 ID 吗?

文件:WindowsPreview.Media.Ocr!WindowsPreview.Media.Ocr.OcrEngine,版本=255.255.255.255,Culture=neutral,PublicKeyToken=null,ContentType=WindowsRuntime.htm

文件内容:

* 组装活页夹日志条目 (12/1/2014 @ 11:48:01 PM) *

操作失败。绑定结果:hr = 0x80073d54。该进程没有包标识。

程序集管理器加载自:C:\Windows\Microsoft.NET\Framework64\v4.0.30319\clr.dll 在可执行文件 C:\Users\Wesley\Documents\Dev\ConsoleApplication2\Program.exe 下运行 --- 详细错误日志如下.

开始:Windows 运行时类型绑定。END :进程没有包标识。(来自 HRESULT 的异常:0x80073D54)

更新 2 (12/03/2014)

这是一个令人讨厌的解决方法,但它适用于我的 Windows 8.1 Surface Pro 3 平板电脑。WebOcr 是一个网络表单,但它可以很容易地为 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 问题。IApplicationActivationManager::ActivateApplication 在 C# 中?

6) 使用在注册表项中找到的奇怪的 guid 应用程序标识符更新 OcrCommandLineCaller.cs 中的 appActiveManager.ActivateApplication 调用。

7) 在 default.aspx.cs 中,将 saveAsPath 替换为您机器上的路径。在 Windows 商店应用程序中,有一个由 Windows.Storage.ApplicationData.Current.LocalFolder 表示的静态路径。为简单起见,这是我保存图像的路径。

8) 将任何代码修改为您满意的内容,如果您有任何问题,请告诉我。

这是一个非常粗糙和讨厌的解决方案,但它确实有效。


Ani*_*h V 5

如果您使用的是Visual Studio 2015和Windows 10,则

Microsoft.Windows.Ocr

已移至通用Windows平台。可以作为

Windows.Media.Ocr

因此,您需要使用已启用Windows 10的工具来升级VS 2015。

我执行了以下操作,并在我的Web API中添加了Windows.Media.Ocr作为参考。

  1. 在您的Web API项目的引用中,右键单击任何引用,然后单击“在对象浏览器中查看”。您的对象浏览器将如下所示 在此处输入图片说明
  2. “浏览:所有组件”框旁边有一个“ ...”按钮。工具提示显示为“编辑自定义组件集”。单击!
  3. 在“编辑自定义组件集”框中,单击“浏览”选项卡,然后导航到“ C:/ Program Files(x86)/ Windows Kits / 10 / References / Windows.Foundation.UniversalApiContract / 1.0.0.0”,然后单击生成的winmd文件。然后单击添加。
  4. 打好!
  5. 现在,单击显示为“添加到解决方案资源管理器中选定项目中的引用”的图标(这是“浏览:”旁边的“ ...”按钮中的第三个按钮)。您可以看到Windows.Media.Ocr可以使用。

注意:以下内容仅适用于VS 2015和Windows10。也应为通用Windows平台(UWP)更新VS 2015 。检查示例OCR。

希望这可以帮助。 更新 它导入到我的参考,但无法加载。希望它能为人们提供一些起点。谢谢!。