Python 自定义字体的PyteSeract对数字的分类不正确

Python 自定义字体的PyteSeract对数字的分类不正确,python,image-processing,classification,ocr,python-tesseract,Python,Image Processing,Classification,Ocr,Python Tesseract,我正在尝试使用pytesseract检测价格 然而,我有非常糟糕的结果 我有一个大图像,在不同的位置有几个价格。 这些位置是恒定的,所以我将图像裁剪下来,并将每个区域保存为新图像,然后尝试检测文本 我知道文本只包含0123456789美元 我使用trainyourteseract.com培训了我的新字体 例如,我拍摄了这张照片 将其大小加倍,并设置阈值以获得此结果 通过tesseract运行它,并获得8的输出 任何帮助都将不胜感激 def getnumber(self, img): g

我正在尝试使用pytesseract检测价格

然而,我有非常糟糕的结果

我有一个大图像,在不同的位置有几个价格。 这些位置是恒定的,所以我将图像裁剪下来,并将每个区域保存为新图像,然后尝试检测文本

我知道文本只包含0123456789美元

我使用trainyourteseract.com培训了我的新字体

例如,我拍摄了这张照片

将其大小加倍,并设置阈值以获得此结果

通过tesseract运行它,并获得
8
的输出

任何帮助都将不胜感激

def getnumber(self, img):
   grey = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
   thresh, grey = cv2.threshold(grey, 50, 255, cv2.THRESH_BINARY_INV)

   filename = "{}.png".format(os.getpid())
   cv2.imwrite(filename, grey)

   text = pytesseract.image_to_string(Image.open(filename), lang='Droid',
                                      config='--psm 13 --oem 3 -c tessedit_char_whitelist=0123456789.$¢')
   os.remove(filename)
   return(text)

你在正确的轨道上。在为OCR预处理图像时,您希望得到黑色文本,背景为白色。其思想是放大图像,用大津的阈值得到二值图像,然后进行OCR。我们使用
--psm 6
告诉Pytesseract假设一个统一的文本块。查看更多配置选项。这是经过处理的图像:

OCR结果:

代码

机器规格:

Windows 10
opencv-python==4.2.0.32
pytesseract==0.2.7
numpy==1.14.5

太好了,谢谢你,现在看来很管用。500像素宽是一个好的一般大小,还是只是你为这些图像选择的一个随机值?这是一个随机值,主要是放大图像以提高检测。根据我的经验,至少大于
300
像素是好的。如果你能让别人知道你的问题已经解决,那么这只是一个很好的通用尺寸:)
Windows 10
opencv-python==4.2.0.32
pytesseract==0.2.7
numpy==1.14.5