【问题标题】:Unable to recognise number 5无法识别数字 5
【发布时间】:2019-03-31 19:51:19
【问题描述】:

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

过滤器尝试:

        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),

应用膨胀和腐蚀来消除一些噪音

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

训练数据:

eng.traineddata

原图

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

【问题讨论】:

  • 你使用的是 LSTM 版本的 tesseract 吗?请将预处理后的图像添加到您的问题和 tesseract 的当前输出中。
  • 发布的图像仅是后期预处理图像,是的,我使用的是 LSTM 版本。

标签: python opencv ocr tesseract python-tesseract


【解决方案1】:

试试--psm 10

import pytesseract
from PIL import Image
import requests
import io

response = requests.get('https://i.stack.imgur.com/ZcPqGs.jpg')
text = pytesseract.image_to_string(Image.open(io.BytesIO(response.content)), lang='eng',
                config='--psm 10')

print(text)

这应该产生5

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-03
    • 1970-01-01
    • 2020-11-07
    • 1970-01-01
    • 2021-03-11
    • 1970-01-01
    • 1970-01-01
    • 2021-03-19
    相关资源
    最近更新 更多