我有兴趣分析扫描的文档,表格,我希望能够检测某人是否检查过或填写过表格中不同位置的复选框(类似于可能是scantron),并且可能会捕获签名等形象。
由于这些复选框位于已知位置,我似乎可以在(x,y)处询问几个像素,如果它的颜色比N阈值更深,则将它们平均,然后进行检查。但是,我认为扫描可能会引起实际位置相对于图像边缘的大幅度变化。
很明显我是这个领域的新手,是否存在框架(开源或商业)或任何人可以指示我的任何模式或示例,开始这条道路。 (或者在.net中这可能是不可能的,我应该开始研究托管应用程序?)
答案 0 :(得分:0)
这被称为ICR(智能字符识别) 这是一个既定的领域。 ICR进行边缘检测,因为倾斜扫描很常见 你可以尝试自己做,但它有很多。
Leadtools不是免费的,我不为他们工作 但这是ICR作为工具(SDK)的一个很好的例子 LEADTOOLS ICR SDK
如果您有纸质文件,另一种选择是将它们带到商业扫描供应商 他们将拥有专为ICR设计的软件 他们还有高端扫描仪,可以与ICR一起使用。
答案 1 :(得分:0)
我不熟悉.NET图像处理,但我知道图像处理。所以我会给你理论,并提到OpenCV。
为了适应图像的偏斜,请查看Fourier transforms和Hough Transforms and Hough Lines.您基本上想要做的是运行fourier transform,然后将结果转换为BW图片。找到最强的HoughLines线,然后保留最长的线。这条线将是轴线之一,在我的实验中,它通常是垂直轴。找出与直线垂直线的偏差角度,然后(取决于特定的旋转算法)将图像旋转此量的负值。
如果旋转算法用0填充(或者使用距离图像颜色太远的白色),您可以使用之前找到的角度裁剪图像来计算偏差(这是您在学校学到的所有内容)派上用场了。)
然后找到包含页面上文字的bounding box并向下裁剪。在检查框是否被选中时,您需要查看区域,可能比复选框的大小大5到10个像素,具体取决于分辨率,以获得复选框ROI。
有了这个,您可能想看看是否写入了x%的ROI以验证是否选中了该框。