java - 从图像中识别数字

标签 java image-processing ocr tesseract hough-transform

我正在尝试编写一个应用程序来查找图像中的数字并将它们相加。

如何识别图片中的书写数字?

enter image description here

图像中有很多框,我需要获取左侧的数字并将它们相加得出总数。我怎样才能做到这一点?

编辑:我在图像上做了一个 java tesseract ocr,但我没有得到任何正确的结果。我该如何训练它?

还有

我做了一个边缘检测我得到了这个:

enter image description here

最佳答案

您很可能需要执行以下操作:

  1. 申请Hough Transform整个页面上的算法,这应该会产生一系列页面部分。

  2. 对于你得到的每个部分,再次应用它。如果当前部分产生了 2 个元素,那么您应该处理类似于上面的矩形。

  3. 完成后,您可以使用 OCR 提取数值。

在这种情况下,我建议您查看 JavaCV (OpenCV Java Wrapper)它应该允许您处理 Hough 变换部分。然后你需要类似于 Tess4j 的东西。 (Tesseract Java Wrapper),它应该允许你提取你想要的数字。

作为额外说明,为了减少误报的数量,您可能需要执行以下操作:

  1. 如果您确定某些坐标永远不会包含您想要的数据,请裁剪图像。这应该给你一个更小的图片来处理。

  2. 将图像更改为灰度可能是明智之举(假设您使用的是彩色图像)。颜色会对 OCR 解析图像的能力产生负面影响。

编辑:根据您的评论,给出如下内容:

+------------------------------+
|                   +---+---+  |
|                   |   |   |  |
|                   +---+---+  |
|                   +---+---+  |
|                   |   |   |  |
|                   +---+---+  |
|                   +---+---+  |
|                   |   |   |  |
|                   +---+---+  |
|                   +---+---+  |
|                   |   |   |  |
|                   +---+---+  |
+------------------------------+

您将裁剪图像,以便通过裁剪图像删除没有相关数据的区域(左侧部分),您会得到如下结果:

+-------------+
|+---+---+    |
||   |   |    | 
|+---+---+    |
|+---+---+    |
||   |   |    |
|+---+---+    |
|+---+---+    |
||   |   |    |
|+---+---+    |
|+---+---+    |
||   |   |    |
|+---+---+    |
+-------------+

我们的想法是运行 Hough 变换,这样您就可以获得包含如下矩形的页面片段:

+---+---+    
|   |   |     
+---+---+ 

然后您将再次应用霍夫变换并最终得到两个片段,然后您取左边的片段。

一旦你有了左段,你就可以应用 OCR。

可以尝试事先应用 OCR,但充其量,OCR 将识别两个数字值,无论是写入的还是输入的,据我所知,这不是您所追求的.

此外,描绘矩形的额外线条可能会使 OCR 偏离轨道,并使其产生不良结果。

关于java - 从图像中识别数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29745704/

相关文章:

Java RCaller 重用一个函数

java - log4j Java 配置出现问题

java - 如何从菜单外部访问选项菜单项

ios - 使用 OpenCV 检测文本 block 发送到 Tesseract iOS

python - Pytesseract OCR 多个配置选项

java - AspectJ - 接口(interface)实现方法的切入点

iphone - iPhone中的图像处理魅力滤镜

python - opencv python中的图像匹配

linux - 在 Linux 中批量拟合图像(例如 GIMP)

python - 我在 google colab 中将图像转换为文本时出现 TesseractError : (2, 'Usage: pytesseract [-l lang] input_file' ) 错误