python - 无法识别数字 5

标签 python opencv ocr tesseract python-tesseract

我正在使用 Pytesseract 来识别数字 5 的图像,令我震惊的是,即使在应用了各种过滤器(如 GlaussianBlur 和 Threshold)并应用膨胀和腐 eclipse 来去除噪声之后,它仍然无法识别图像。

尝试过的过滤器:

        1: cv2.threshold(cv2.GaussianBlur(img, (9, 9), 0), 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)[1],
        2: cv2.threshold(cv2.GaussianBlur(img, (7, 7), 0), 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)[1],
        3: cv2.threshold(cv2.GaussianBlur(img, (5, 5), 0), 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)[1],
        4: cv2.threshold(cv2.medianBlur(img, 5), 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)[1],
        5: cv2.threshold(cv2.medianBlur(img, 3), 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)[1],
        6: cv2.adaptiveThreshold(cv2.GaussianBlur(img, (5, 5), 0), 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, 31, 2),
        7: cv2.adaptiveThreshold(cv2.medianBlur(img, 3), 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, 31, 2),

应用膨胀和腐 eclipse 去除一些噪声

    kernel = np.ones((1, 1), np.uint8)
    img = cv2.dilate(img, kernel, iterations=1)
    img = cv2.erode(img, kernel, iterations=1)

训练数据:

工程训练数据

原始图片

enter image description here

不确定这里出了什么问题,我阅读了 Tesseract 的文档并应用了其中提到的所有预处理步骤。有人可以帮助我在这里出错吗

最佳答案

试试 --psm 10

import pytesseract
from PIL import Image
import requests
import io

response = requests.get('/image/ZcPqGs.jpg')
text = pytesseract.image_to_string(Image.open(io.BytesIO(response.content)), lang='eng',
                config='--psm 10')

print(text)

这应该产生 5

关于python - 无法识别数字 5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53019112/

相关文章:

c++ - 如何将 Iplimage 放在图片框上?

python - 在 shell 中运行代码和从文件中运行代码之间的区别

python - 即使我确定间距,为什么也会出现这种缩进错误?

memory-leaks - OpenCV内存泄漏问题

php - 如何为 PHP(开源)设置和运行 Tesseract OCR?

ocr - Tesseract 训练新字体

image-processing - 图像处理以提高 tesseract OCR 准确性

python - 在Watson Speech to Text API中不返回说话者标签/歧义

python - 如何将一个数据框的行添加到另一个数据框的列?

c++ - 在 OpenCV C++ 中将图像的所有白色像素更改为透明