使用OpenCV和Python

时间:2017-10-03 11:09:52

标签: python opencv image-processing ocr

我是整个图像处理和ocr主题的新手。

任务: 我想要做的是阅读文章和从收据中支付的钱。收据很可能是智能手机相机拍摄的照片。我尝试使用Tesseract ocr,但是没有给我收据上的所有文字。特别是失踪的价格。之后,我想我可以使用opencv首先提取必要的文本区域,并仅将它们提供给Tesseract。这就是我需要帮助的地方。如果该方法可以重复用于图像的不同质量和格式,那将是理想的。 请记住,在文章和价格之间建立明确的关联是最重要的。实际的ocr将由数据库支持。请阅读“附加信息”部分以了解全局情况。

方法: 到目前为止,我的方法是从图片中提取收据区域为灰度,然后进一步制动。在corse中,图像被标准化为固定的宽度和高度,我正在尝试模糊。我确实设法通过将图像转换为黑白来获得水平线分离,通过将图像缩小到一个矢量并使用一个水平线中的所有像素值的总和来获得直方图。该直方图被平滑,以便我可以从中获得清晰的局部最小值。 这仍然让我有问题要弄清楚哪些线条实际上属于收据上的物品,而且我需要一个类似的东西用于物品和价格之间的垂直分离。

问题: 第一个问题是:我是否走在正确的轨道上?如果我做了正确的预处理,Tesseract可能会对整个图像做得好吗?或者甚至有一个完整的解决方案可用于我正在尝试的? 否则,您可能有一些替代计算线性分离的直方图? 此外,收据的图像几乎没有直线。是否有一种简单的方法(在黑白图片中)如果它的黑色区域(一个字母)碰到黑色区域(一个字母),我的线分隔符被推向白色方向,类似于沿着该线使用opencv内核但是它会动态向上移动下来?结果将是一条曲线蓝线真正分开两行文本(我可以在python中自己编写那个东西,但我觉得这样效率很低)

其他信息: 您可能需要知道的是,此任务是一个更大项目的一部分,我希望将购买的内容写入数据库以进行分析。因此,我的文章可以始终与现有文章集匹配,也可以手动更正并添加。 使图像按比例缩小以进行处理并再次缩放找到的区域以将原始图像用于实际的ocr是一种选择。 围绕图像处理会有一些额外的软件。这意味着图像将被上传到服务器(例如Raspberry Pi),或者理想情况下,处理将在稍后的智能手机App中进行。因此,如果可能,首选低硬件资源消耗。

我尝试过的其他事情是: Hough Lines获取文本框,但我发现图像中没有直线。 在图像处理的这个阶段,模糊和锐化的愚弄似乎没有那么大的影响。我只使用模糊来侵蚀收据上的文字,并且有一个非常白的区域,然后是我的收据区域。我还读到了通过最小化尺寸并最大化它来计算区域,同时保持像素密度(文本)尽可能高,但是对于我想要做的事情,它的缝合有点复杂?

我很乐意为床位理解提供更多信息,并提前多多感谢!

图片:

Black and white (Gaussian Blur) receipt

Blue Line Seperator on Receipt

0 个答案:

没有答案