EasyOCR不识别简单数字

2024-10-03 06:19:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图分析视频中的页脚并检索当前页码。我让框架集合工作,但我正在努力阅读页码本身,使用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()去模糊、阈值化、去噪、模糊

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

results when using threshholding

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


Tags: thepath图像imagelen阈值数字width