C# 如何在ASP.Net MVC4 Web API项目中使用Microsoft OCR库(Microsoft.Windows.OCR)? TL;博士:

C# 如何在ASP.Net MVC4 Web API项目中使用Microsoft OCR库(Microsoft.Windows.OCR)? TL;博士:,c#,asp.net,asp.net-mvc,ocr,microsoft-ocr,C#,Asp.net,Asp.net Mvc,Ocr,Microsoft Ocr,有人知道如何引用服务器端ASP.Net Web应用程序(如MV4 Web API)上的Microsoft.Windows.Ocr(/WindowsPreview.Media.Ocr.dll)程序集,并利用该程序集中的Ocr功能将照片图像作为输入并从中提取文本内容吗?如果知道,请在回答中提供详细说明 问题细节(以及我迄今为止所尝试的内容) 我正在构建一个web应用程序,它获取上传到服务器的图像(通过文件上传UI屏幕),然后使用OCR读取文本,并在下一页显示文本,就在上传的图像旁边 由于大多数商业O

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

问题细节(以及我迄今为止所尝试的内容) 我正在构建一个web应用程序,它获取上传到服务器的图像(通过文件上传UI屏幕),然后使用OCR读取文本,并在下一页显示文本,就在上传的图像旁边

由于大多数商业OCR库的成本都很高(),我想我可以尝试使用Microsoft OCR库
Microsoft.Windows.OCR
,它是免费的而且似乎简单易用

因此,我尝试将Microsoft.Windows.OcrNuget包安装到我的ASP.Net MVC4 Web API项目中,结果成功

在那之后,我查看了我的MVC4WebAPI项目引用,令我惊讶的是,没有找到对Microsoft.Windows.Ocr.dll
程序集的引用

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

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

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

---------------------------
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   
---------------------------

然后我发现“受支持的平台”只有Windows Phone 8、Windows Phone 8.1、Windows 8.1(仅限Windows应用商店应用)。

但是肯定有办法在ASP.Net应用程序的服务器端使用这个OCR dll

有人知道如何在服务器端ASP.Net Web应用程序(如MV4 Web API)上引用Microsoft.Windows.Ocr(/
WindowsPreview.Media.Ocr.dll
)程序集,并利用该程序集中的Ocr功能将照片图像作为输入并从中提取文本内容吗?**如果知道,请在回答中提供详细说明。 任何“黑客”和/或示例代码都将不胜感激


谢谢

您可以跳到下面的更新2以获得有效的解决方案。

它将引发类型加载异常。也就是说,我发帖是因为我正试图做同样的事情,但无法让项目运行。下面是一些关于如何将winrt api引入非windows应用程序项目的基本说明

也不要尝试引用dll,而是引用winmd文件

下面是一个引用ocr库的示例控制台应用程序,但当您运行解决方案时,它会引发类型加载异常。()它应该可以轻松地从控制台应用程序移植到和asp.net应用程序。我不知道如何修复类型加载异常,也许你可以比我做得更远。如果你找到了解决方案,请发帖子

更新1(12/1/2014) 进一步挖掘揭示了以下程序集绑定错误。知道如何为进程设置包Id吗

文件:WindowsPreview.Media.Ocr!WindowsPreview.Media.Ocr.OcrEngine,版本=255.255.255.255,区域性=中性,PublicKeyToken=null,ContentType=WindowsRuntime.htm

文件内容:

*装配活页夹日志条目(2014年1月12日11:48:01下午)*

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

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

开始:Windows运行时类型绑定。 结束:进程没有包标识。(HRESULT的例外:0x80073D54)

更新2(12/03/2014) 这是一个令人讨厌的解决办法,但它在我的Windows8.1Surface Pro 3平板电脑上起了作用。WebOcr是一个webforms,但它可以很容易地为MVC进行重构

1) 下载。这是psuedo商店应用程序

2) 构建并运行应用程序。它似乎什么也做不了。没关系,它会用我们需要的新密钥更新注册表

3) 下载

4) 在Webocr项目中查找OcrCommandLineCaller.cs

5) 在HKEY\U CURRENT\U USER\Software\Classes\ActivatableClasses\Package\Some\u Sort\u Of \u Guid\u为您的应用程序\服务器\应用程序.应用程序..\AppUserModelId找到注册表项

如果需要有关查找注册表项的更多帮助,请参阅此问题

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

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

8) 根据您的心意修改任何代码,如果您有任何问题,请告诉我


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

IMHO,可能不值得您尝试使用目标平台不支持的库


您可以查看一些免费的替代方案。

我使用MS Office附带的MODI解决方案已经有几年了,对此非常满意(如果您购买了Office,它是免费的)。当它停播时,我相当失望。 我试过Tesseract。。。我真的很想喜欢它,但发现它慢,不准确的荷兰机器类型o
      ..