Pytesseract 错号

Pytesseract Wrong Number

我的识别有问题,在 .image_to_string() 命令后,我的一些输入图像明显是 1 变成了 4。

我的输入图片是这样的:
unedited img

然后我 运行 对它进行了一些预处理步骤(灰度、使用 otsu 进行阈值处理并放大图片),结果如下: preprocessed img

我也试过放大图片,但输出变化没有改善。

运行宁后:

    custom_config = "-c  tessedit_char_whitelist=0123456789LV --psm 13"
    pytesseract.image_to_string(processed_img, config=custom_config)

最终结果是一个字符串显示: 4LV♀ 我不明白我可以更改什么来获得 1 而不是 4。

提前感谢您的宝贵时间。

尝试设置“--psm 8 --oem 3”所有列表都在 enter link description here,虽然 psm 8 和 oem 3 通常工作正常。

♀ or \n\x0c 是因为您需要 custom_config = "-c page_separator=''" 作为配置,因为出于某种原因它将其添加为页面分隔符。您的配置中不需要任何其他内容。

拿到你的号码就是做加工,主要是尺寸。但是我发现这段代码效果最好。

import pytesseract
from PIL import Image
import cv2
pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'
import numpy as np 

imagepath = "./Pytesseract Wrong Number/kD3Zy.jpg" 
read_img = Image.open(imagepath)

# convert PIL image to cv2 image locally
read_img = read_img.convert('RGB')
level_img = np.array(read_img)
level_img = level_img[:, :, ::-1].copy()

# convert to grayscale
level_img = cv2.cvtColor(level_img, cv2.COLOR_RGB2GRAY)
level_img, img_bin = cv2.threshold(level_img, 128, 255, cv2.THRESH_BINARY | cv2.THRESH_OTSU)
level_img = cv2.bitwise_not(img_bin)
kernel = np.ones((2, 1), np.uint8)

# make the image bigger, because it needs at least 30 pixels for the height for the characters
level_img = cv2.resize(level_img,(0,0),fx=4,fy=4, interpolation=cv2.INTER_CUBIC)
level_img = cv2.dilate(level_img, kernel, iterations=1)

# --debug--
#cv2.imshow("Debug", level_img)
#cv2.waitKey()
#cv2.destroyAllWindows
#cv2.imwrite("1.png", level_img)

custom_config = "-c page_separator=''"
level = pytesseract.image_to_string(level_img, config=custom_config)
print(level)

如果你想保存取消注释#cv2.imwrite("1.png", level_img)