【问题标题】:EasyOCR not recognizing simple numbersEasyOCR 无法识别简单数字
【发布时间】:2021-03-19 14:40:34
【问题描述】:

我正在尝试分析视频中的页脚并检索当前页码。我得到了框架集合,但我正在努力阅读页码本身,使用 EasyOCR。

我已经尝试过使用 pytesseract,但效果不佳。我误解了数字:10 被识别为 113,6 被识别为 41,依此类推。总体而言,它非常不一致,即使我使用灰度、阈值和裁剪正确格式化了我的输入图像(仅分析页脚的页码区域)。

代码如下:

def getPageNumberTest(path, psm):
    image = cv2.imread(path)
    height = len(image)
    width = len(image[0])
    # the height of the footer
    footerHeight = 90 # int(height / 15.5)
    # retrieve only the footer from the image
    cropped = image[height-footerHeight:height,0:width]        

    results = reader.readtext(cropped)

这给了我以下输出:

是否有我缺少的设置?有没有办法指示 EasyOCR 只查找数字? 感谢任何帮助或提示!

编辑:

在对数字图像进行了一些优化之后,我现在回到开始,根本没有优化图像。剩下的就是转换为灰度和调整大小。

这是正常输入的样子:

但结果是:

这很奇怪,因为对于大多数数字(尤其是个位数)来说,这可以完美运行,产生超过 95% 的确定性...

我尝试使用 cv2.filter2D() 去模糊、阈值化、去噪、模糊、...

例如,当我使用阈值处理时,我的输出如下所示(忽略“1”,同样适用于单个数字“1”):

我查看了模式匹配,这不是一个选项,因为我事先不知道页码形状...

【问题讨论】:

  • 我试过了,输出还是不一致
  • 请在您的问题中添加未经修改的原始图像,并尽可能尝试使用更高分辨率的图像。
  • 我编辑了我的问题。我无法获得更高的分辨率,因为这些页面是从视频中截取的......

标签: python ocr data-conversion scanning


【解决方案1】:
txt = pytesseract.image_to_string(final_image, config='--psm 13 --oem 3 -c tessedit_char_whitelist=0123456789')

【讨论】:

  • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-30
相关资源
最近更新 更多