7

在此处输入图像描述 我正在尝试确定从扫描文档中提取手写数据的最佳方法。

手写数据位于特定的加框区域。我生成了文档的数字版本,因此我知道加框区域的坐标,并且如果需要,还可以生成文档的其他变体(即,被屏蔽以使字段更易于提取的版本)

我不能只使用文档生成中的坐标提取字段的原因是在扫描过程中发生了移位/缩放/透视修改,这可以不同地推/拉每个单独框的坐标(扫描的文档确实有用于对齐的角标记,但即使如此,通常也会发生意外的转换)。

我假设有两种方法可以解决这个问题:逐步检查页面上每个框的坐标,并尝试用一些技术/算法“纠正”它们,或者将完成的表格与空白表格进行比较(蒙面? ) 并尝试以这种方式提取正确的字段。

什么是最有效的技术/算法来调整这些修改并准确提取包含手写的区域?还有其他选择吗?

4

2 回答 2

0

有许多可能的技术可以为您的问题实现近 100% 的准确度。

只需按照此页面http://www.codeproject.com/Articles/24809/Image-Alignment-Algorithms中描述的步骤操作即可。简而言之,您首先计算两个图像之间的光流,然后估计产生这种光流的变换。

注意:当匹配的图像几乎相同时,这种方法效果最好。

于 2015-04-02T01:43:48.870 回答
0

你的第二种方法可以。更多细节:由于您已经打印了诸如“Section A”、“A6”和“other”之类的字母,并且您提到您有用于对齐的角标记,您可以将它们用作地标,执行 atemplate matching来查找坐标原始和扫描文档中的地标。然后使用这两组地标(角标记可能就足够了)生成仿射变换M = cv2.getAffineTransform(landmarks1, landmarks2),应用于cv2.warpAffine(img, M, ...)扫描的图像,将其变换为与原始文档匹配。这样,盒子将正确对齐(可能仍有一点偏移),然后您可以正确定位每个盒子。见https://www.geeksforgeeks.org/python-opencv-affine-transformation/

输入以上所有内容后,我发现这个网页用代码谈论同样的事情:https ://learnopencv.com/feature-based-image-alignment-using-opencv-c-python/

于 2021-08-24T18:33:39.743 回答