C# Windows 8.1应用程序的光学字符识别

C# Windows 8.1应用程序的光学字符识别,c#,windows-8,camera,ocr,windows-8.1,C#,Windows 8,Camera,Ocr,Windows 8.1,我对Windows8.1和光学字符识别完全陌生,所以我承认这对我来说是一个初学者的领域。我一直在寻找在我的Win8.1应用程序中实现OCR的方法,并且发现了这个妙招。不幸的是,与CameraCaptureUI不同,这个OcrControl似乎无法识别我的网络摄像头;事实上,其中一款是“内置后向摄像头,在拍照模式下支持1280x720或640x480分辨率” 我的第一个问题是:有没有办法绕过这个问题?例如,更改OcrControl的设置或Win8.1 emulator的设置 如果没有破解的方法(或

我对Windows8.1和光学字符识别完全陌生,所以我承认这对我来说是一个初学者的领域。我一直在寻找在我的Win8.1应用程序中实现OCR的方法,并且发现了这个妙招。不幸的是,与
CameraCaptureUI
不同,这个
OcrControl
似乎无法识别我的网络摄像头;事实上,其中一款是“内置后向摄像头,在拍照模式下支持1280x720或640x480分辨率”

我的第一个问题是:有没有办法绕过这个问题?例如,更改
OcrControl
的设置或Win8.1 emulator的设置

如果没有破解的方法(或者如果您以前没有尝试过
OcrControl
),那么我的第二个问题是:OCR是在本地实现还是通过调用web服务实现更可行?如果我要求列出一些适合我使用的.NET库的话,我会付出额外的努力——我认为这将是最简单的部分


无论如何,我对OCR的要求很简单:只需从一张纸上读取文本,然后将其转换为
字符串
或诸如此类的内容。多谢各位

我没有使用OcrControl,但我有一些评论

首先,如果OcrControl需要“在照片模式下支持1280x720或640x480分辨率的相机”,我可以从我自己在iPhone和Android移动相机上的测试中看出,这两种分辨率的图像几乎不能用于OCR,除非你在非常好的照明下拍摄非常小的东西(名片或更小的)。对于典型的页面大小的图片,此分辨率绝对不够。如果你的页面有非常大的字体,比如20点或更大的字体,可能会有用。我的测试基于720p的“视频”帧分辨率,与这里的要求相同。如果你一定要使用这些分辨率,我建议对图片进行后处理并人为提高分辨率

您有丰富的OCR库选择。免费图书馆是绝对可用的,并且在各种帖子中多次提到,只要看看其他与OCR相关的帖子就知道了。付费图书馆将更加强大,功能更加丰富,能够容忍图像失真,并从低质量的图像中提供更高质量的文本。如果您需要从跨平台设备进行访问,并且您的容量很低或不可预测(通常是每页付费),那么基于Web的API是一个不错的选择。如果您不想托管自己的服务器,这也是一个不错的选择。如果您的卷较大(每页成本较低),则后端服务器上的许可软件是一个不错的选择,但它需要提前进行软件许可、服务器维护等

无论您选择哪种系统,图像预处理都将是您最好的朋友,尤其是如果您可以针对您的特定相机型号或用户的图像拍摄风格微调清理。为OCR准备图像,为机器处理准备图像,这意味着机器的最佳图像不一定是最适合人眼的图像。例如,在预处理之前,将一个干净的原始图像输入OCR将产生比一些原始彩色图像更好的结果,即使B&W在你我看来都不太好。这是由“垃圾输入-垃圾输出”的概念支持的,今天我们还不能依靠移动相机提供足够好的开箱即用的质量,所以尽量让你的图像尽可能好。对于mobie设备,每个用户还将在每张图片中引入人为因素(抖动、低光照、失真等),这些因素也可能在后处理中得到纠正。我在这里共同撰写了几篇关于图像清理和OCR准备的文章:

免责声明。我讲的是15年的OCR集成经验。我是云API的首席开发人员,主要用于基于移动设备的图像处理,因为设备上的OCR很弱,而且后端服务器上的可用马力要大得多。我还为客户机安装了许多基于Windows的基于服务器的传统OCR系统,主要使用基于ABBYY服务器的产品。我还联合开发了一些iPhone/Android应用程序,这些应用程序都是围绕数码相机图片开发的。我还没有在Windows Mobile平台上进行开发,这是我在时间允许的情况下所期待的