EasyOCR无法识别简单数字

3
我正在尝试分析视频中的页面页脚并检索当前页码。我已经让帧集合工作了,但是我在使用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)

这让我得到了以下输出:

enter image description here

有没有我遗漏的设置?有没有一种方法可以指示EasyOCR仅查找数字?非常感谢您的任何帮助或提示!
编辑:
在尝试对数字图像进行一些优化后,我现在回到了最初状态,根本不对图像进行优化。剩下的只是将其转换为灰度并调整大小。
这是一个正常输入的样子:

input image

但是结果是:

output results

“这很奇怪,因为对于大多数数字(尤其是个位数),这样做非常完美,可获得超过95%的准确率......”
“我尝试了去模糊、二值化、使用cv2.filter2D()进行去噪、模糊处理等等。”
“例如,当我使用二值化时,我的输出看起来像这样(忽略“1”,单个数字“1”同样适用):”

results when using threshholding

我研究了一下模式匹配,但这不是一个选项,因为我事先不知道页码的形状...

尝试这个:https://github.com/JaidedAI/EasyOCR/issues/130。 - B200011011
我尝试过了,输出仍然不一致。 - Leon Bohmann
1
请在您的问题中添加未经修改的原始图像,并尽可能使用更高分辨率的图像进行尝试。 - B200011011
我编辑了我的问题。因为这些页面是从视频中获取的,所以我无法获得更高的分辨率... - Leon Bohmann
你在cv2中使用的内核数量是多少,才能得到最后一张图像? - Dr.jacky
2个回答

0
根据我的测试,PaddleOCR在大多数场景下比easyOCR表现更好。

你的回答可以通过提供更多支持信息来改进。请编辑以添加进一步的细节,例如引用或文档,以便他人可以确认你的答案是正确的。您可以在帮助中心中找到有关如何编写良好答案的更多信息。 - Community

0
txt = pytesseract.image_to_string(final_image, config='--psm 13 --oem 3 -c tessedit_char_whitelist=0123456789')

1
你的回答可以通过添加更多支持信息来改进。请[编辑]以添加进一步的细节,例如引用或文献,以便其他人可以确认您的答案是正确的。您可以在帮助中心中找到有关如何编写良好答案的更多信息。 - Community

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接