gpt4 book ai didi

c# - 有谁知道用于Windows Phone的OCRing 7段显示器的任何API?

转载 作者:太空狗 更新时间:2023-10-29 21:08:31 26 4
gpt4 key购买 nike

我正在尝试开发一个WindowsPhone8.1应用程序,但我需要识别来自不同显示器的一些号码。
我在遵循这个例子:
http://bsubramanyamraju.blogspot.com/2014/08/windowsphone-81-optical-character.html
正在使用Microsoft OCR运行库:
https://www.nuget.org/packages/Microsoft.Windows.Ocr/
不过,当我试图辨认出那些照片时,它就不起作用了。甚至我也发现了这个网站:
https://www.unix-ag.uni-kl.de/~auerswal/ssocr/
有人有推荐信吗?或者有人知道与之相关的代码吗?
谢谢你的宝贵知识。

最佳答案

我希望你的问题的答案是“当然,这里是”与黑匣子进程链接任何ocr工具,但有几个方面涉及,这是最好分开考虑。
首先,在你考虑任何ocr之前,有一些关于图像预处理的工作。你的图片样本大不相同,包含了所有的问题。
示例1的对比度较低,因此当它被二值化为黑白层(大多数ocr在某个阶段将在内部执行)时,没有要处理的字符。经过二值化处理后如下:
有关图像预处理的其他详细信息,请参阅此ocr博客:http://www.ocr-it.com/guide-to-better-mobile-images-from-cell-phone-camera-for-higher-quality-ocr
其次,图像的头部没有dpi信息,一些ocr技术使用这些信息来确定图像的适当比例。如果没有标题信息,某些ocr程序可能会设置某些默认dpi,这可能与图像匹配,也可能与图像不匹配,从而影响ocr结果。这并不重要,但如果可以在图片创建时实现,则首选。
样本2具有足够的对比度,自适应公证返回清晰图像。头文件中也缺少dpi分辨率值。
示例3具有非常清晰的对比度,但在标题中也没有分辨率dpi。
一旦你有了为ocr处理优化的图像,下一步就是研究ocr技术。
我没有测试你曾经提到的,假设你有正确的实现,但没有成功与他们。我测试了我以前使用过的其他ocr工具。
一般来说,我不知道有7段ocr。然而,我能够适应这个特殊任务的其他通用ocr。我尝试过的所有“开箱即用”或默认设置的ocr都无法处理此识别。这是合乎逻辑的。为什么?因为大多数普通的ocr是用来识别每个字符不可分割的像素模式的。这与“字符可分性”原则有关,该原则用于将单词分隔成单独的字符。换句话说,内部ocr算法寻找组成每个字符的连接笔划。更强大的商业ocr允许在像素模式上有一些中断,但它们应该是最小到无的,比如打印或扫描中的缺陷,这可能会导致字符片段丢失。
7段显示本质上将在每个字符中有多个中断,这与字符可分性原则相冲突。
更强大的ocr技术具有a)更大的像素模式中断容忍度和/或b)具有特殊设置来处理这些情况。
我将使用ocr-it基于web的ocr api平台进行进一步的测试,这是我所熟知的。我是ocr功能的开发人员。我也在自己的ios和android应用程序中广泛使用它。OCR-IT API基于强大的商业OCR引擎,因此它对字符缺陷具有很好的容忍能力,并且在这种情况下可以使用一些控件。
样本3.这是最容易处理的样品,所以我先测试了一下。使用ocr-it api,使用默认设置发出请求,请求输出为txt格式,我得到以下结果:
ocr似乎是a)将字符分割成两个单独的行,b)尝试读取尽可能接近有效字符的结果模式。
基于此快速分析,对OCR设置进行一次调整将导致以下识别:
在ocr结果中产生重大差异的设置是从默认打印类型切换到使用“dotmatrix”,它位于整个ocr-it api设置xml的中间:

<Job> 
<InputURL>http://i.stack.imgur.com/wOtFx.jpg</InputURL>
<CleanupSettings>
<Deskew>false</Deskew>
<RemoveGarbage>false</RemoveGarbage>
<RemoveTexture>false</RemoveTexture>
<RotationType>NoRotation</RotationType>
</CleanupSettings>
<OCRSettings>
<PrintType>DotMatrix</PrintType>
<OCRLanguage>English</OCRLanguage>
<SpeedOCR>false</SpeedOCR>
<AnalysisMode>MixedDocument</AnalysisMode>
<LookForBarcodes>false</LookForBarcodes>
</OCRSettings>
<OutputSettings>
<ExportFormat>Text</ExportFormat>
</OutputSettings>
</Job>

使用点阵打印类型打开了必要的算法,以增加字符结构的中断容忍度,这种中断通常由点阵打印机的特性在点阵打印中发生。或者,可以使用“打字机”打印类型,因为在打印字体中也需要字符分隔符,因此由ocr自动处理。
可以对api设置再做一次更改,以便使用“digits”字符集(语言)运行ocr,从而有效地消除了将1误读为i等的任何可能性。
样本2.在这个示例中,每个角色结构中的间隙要宽得多。即使是处理dotmatrix或typerwriter打印类型的标准算法也无法适应这些巨大的差距。使用所有可能的设置变化返回如下内容:
字符分割似乎是个问题。一种技术解决方案可以追溯到图像预处理。可以实现一个简单的算法来填充7段字符的每个段之间的间隙。不必非常精确,比如:
但这足以产生一个完美的ocr结果。
由于事先可能不知道哪些7段式液晶显示器需要填充间隙,而哪些不需要填充间隙,因此我建议将此算法应用于具有小间隙或大间隙的所有液晶7段式图像。我会把间隙的大小限制在不超过一段的宽度。考虑到这些屏幕具有不同的背景色和分段颜色,如果对二值化(黑白)图像执行此预处理算法,则可以大大简化此预处理算法。
总的来说,这项任务是可能的与ocr和近开箱即用的功能,假设一些图像预处理被执行。总的来说,我认为任何与ocr相关的项目,特别是该项目,都需要图像预处理。
如果你有任何关于ocr或图像预处理的问题,下午我。

关于c# - 有谁知道用于Windows Phone的OCRing 7段显示器的任何API?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28399756/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com