【问题标题】:OCR - how to get text from outlined wordsOCR - 如何从概述的单词中获取文本
【发布时间】:2016-10-26 07:51:29
【问题描述】:

我有一个文本图像,其中的单词是轮廓而不是填充的。Tesseract 正在努力使任何单词正确 - 有没有人解决这些类型的问题?

我尝试过像反转这样的简单操作,但没有任何影响。我猜 tesseract 已经解决了这个问题。

图片示例:
Next 的典型输出:New
Previous 的典型输出:Pflevuows

(我的很简单)代码,以图片为参数:

import pytesseract
import sys
from PIL import Image

print(pytesseract.image_to_string(Image.open(sys.argv[1])))
print(sys.argv[1])

编辑:应用threshold binary 可以让我下一个,但似乎还没有上一个。

【问题讨论】:

  • 您可以尝试使用 OpenCV 进行 OCR 或分割或预处理(填充轮廓文本,或填充背景并反转图像)。
  • 我尝试使用 Floodfill,但 E 和 X 之间的空间没有被捕获。当我尝试反转它时,我没有收到任何文本
  • 看起来我想要的东西叫做骨架化。我已经开始阅读opencv,看看它是否有帮助。有人,救救我:(
  • 好吧,我已经安装了 OpenCV 和 Python 绑定,但不要指望它。您的问题是否仅限于这种确切的字体?手动填充轮廓时,tesseract 是否正确解码?
  • 不,我在 tesseract-ocr 的 git 中发现有一个 pdf doc 表示当前的骨架化方法不可靠。我不知道“当前”是什么时候出现的,但可能有解决方案(我只是还没有找到)。

标签: python opencv python-imaging-library ocr tesseract


【解决方案1】:

这对您来说可能为时已晚,但它会帮助任何看到这一点的人。我有同样的问题,我修复了它。 (解决方案是使用 OpenCV)

首先,使用二进制阈值。使用正确的值,您的字母不应该接触,这应该很好用。这特别是为了让您可以成功填充而不是卡在褪色的灰色上(这似乎是您之前尝试过的情况)

在此之后,用黑色填充。由于您的字母不会触及边框,因此应该会填充所有内容,尽管当我这样做时,我不得不在图像中的每个最外层像素上调用 Floodfill。

最后,翻转图像颜色。这可以通过 cv2.bitwise_not() 来完成。现在应该可以进行 OCR 了。

【讨论】:

  • 有点晚了 ;) 但正如您所说,希望对其他人有所帮助。从那以后,我使用 Floodfill 解决了许多问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-30
相关资源
最近更新 更多