我正在尝试编写一个应用程序来查找图像中的数字并将它们相加。
如何识别图片中的书写数字?
图像中有很多框,我需要获取左侧的数字并将它们相加得出总数。我怎样才能做到这一点?
编辑:我在图像上做了一个 java tesseract ocr,但我没有得到任何正确的结果。我该如何训练它?
还有
我做了一个边缘检测我得到了这个:
最佳答案
您很可能需要执行以下操作:
申请Hough Transform整个页面上的算法,这应该会产生一系列页面部分。
对于你得到的每个部分,再次应用它。如果当前部分产生了 2 个元素,那么您应该处理类似于上面的矩形。
完成后,您可以使用 OCR 提取数值。
在这种情况下,我建议您查看 JavaCV
(OpenCV Java Wrapper)它应该允许您处理 Hough 变换部分。然后你需要类似于 Tess4j
的东西。 (Tesseract Java Wrapper),它应该允许你提取你想要的数字。
作为额外说明,为了减少误报的数量,您可能需要执行以下操作:
如果您确定某些坐标永远不会包含您想要的数据,请裁剪图像。这应该给你一个更小的图片来处理。
将图像更改为灰度可能是明智之举(假设您使用的是彩色图像)。颜色会对 OCR 解析图像的能力产生负面影响。
编辑:根据您的评论,给出如下内容:
+------------------------------+
| +---+---+ |
| | | | |
| +---+---+ |
| +---+---+ |
| | | | |
| +---+---+ |
| +---+---+ |
| | | | |
| +---+---+ |
| +---+---+ |
| | | | |
| +---+---+ |
+------------------------------+
您将裁剪图像,以便通过裁剪图像删除没有相关数据的区域(左侧部分),您会得到如下结果:
+-------------+
|+---+---+ |
|| | | |
|+---+---+ |
|+---+---+ |
|| | | |
|+---+---+ |
|+---+---+ |
|| | | |
|+---+---+ |
|+---+---+ |
|| | | |
|+---+---+ |
+-------------+
我们的想法是运行 Hough 变换,这样您就可以获得包含如下矩形的页面片段:
+---+---+
| | |
+---+---+
然后您将再次应用霍夫变换并最终得到两个片段,然后您取左边的片段。
一旦你有了左段,你就可以应用 OCR。
您可以尝试事先应用 OCR,但充其量,OCR 将识别两个数字值,无论是写入的还是输入的,据我所知,这不是您所追求的.
此外,描绘矩形的额外线条可能会使 OCR 偏离轨道,并使其产生不良结果。
关于java - 从图像中识别数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29745704/