您很可能需要执行以下操作:
在整个页面上应用霍夫变换算法,这应该会产生一系列页面部分。
对于您获得的每个部分,请再次应用它。如果当前部分产生2个元素,那么您应该处理与上述相似的矩形。
完成后,您可以使用OCR提取数值。
在这种情况下,我建议您看一下JavaCV
(OpenCV Java包装器),它应该可以解决霍夫变换部分。然后,您将需要类似于Tess4j
(Tesseract Java包装器)的工具,该工具应允许您提取所需的数字。
另外,为减少误报的数量,您可能需要执行以下操作:
如果您确定某些坐标永远不会包含您要获取的数据,请裁剪图像。这应该为您提供一张较小的图片。
将图像更改为灰度可能是明智的(假设您正在使用彩色图像)。颜色可能会对OCR分辨图像的能力产生负面影响。
编辑:根据您的评论,给这样的东西:
+------------------------------+
| +---+---+ |
| | | | |
| +---+---+ |
| +---+---+ |
| | | | |
| +---+---+ |
| +---+---+ |
| | | | |
| +---+---+ |
| +---+---+ |
| | | | |
| +---+---+ |
+------------------------------+
您将对图像进行裁剪,以便通过裁剪图像来删除没有相关数据的区域(左侧的部分),您将得到如下所示的内容:
+-------------+
|+---+---+ |
|| | | |
|+---+---+ |
|+---+---+ |
|| | | |
|+---+---+ |
|+---+---+ |
|| | | |
|+---+---+ |
|+---+---+ |
|| | | |
|+---+---+ |
+-------------+
想法是运行Hough变换,以便您可以获取页面的包含矩形的段,如下所示:
+---+---+
| | |
+---+---+
然后,您将再次应用霍夫变换,最后得到两个片段,然后取左一个片段。
一旦有了左段,就可以应用OCR。
您可以尝试事先应用OCR,但是充其量,OCR会识别出两个数值,包括写入的值和键入的值,从我得到的结果来看,这并不是您想要的。
另外,描绘矩形的多余线条可能会使OCR偏离轨道,并导致产生不好的结果。
0
我正在尝试编写一个应用程序以查找图像中的数字并将其加起来。
如何识别图像中的书面编号?
图像中有很多框,我需要在左侧获取数字并将其求和以得出总计。我该如何实现?
编辑:我在图像上做了一个Java tesseract ocr,但是我没有得到任何正确的结果。我该如何训练?
也
我做了边缘检测,我得到了: