【问题标题】:How to read digits from some images using Python如何使用 Python 从某些图像中读取数字
【发布时间】:2020-09-11 04:26:54
【问题描述】:

我有一些我想从中读取数字的图片。我使用了 pytesseract 以及 cv2 阈值。

import cv2
import pytesseract
pytesseract.pytesseract.tesseract_cmd = r"C:\Program Files\Tesseract-OCR\tesseract.exe"

crop = ['crop.png','crop1.png','crop2.png','crop3.png']

for c in crop:


image = cv2.imread(c, 0)
#thresh = cv2.threshold(image, 0, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU)[1]
thresh = cv2.threshold(image, 0, 255,cv2.THRESH_OTSU)[1]
#thresh = cv2.GaussianBlur(thresh, (1,3), 0 )
#thresh = cv2.adaptiveThreshold(thresh,125, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, 11, 12)
#thresh = cv2.bilateralFilter(thresh, 15, 80, 80, cv2.BORDER_DEFAULT)
data = pytesseract.image_to_string(thresh, lang='eng',config='--psm 6')
print(data)
print('\nnext')
cv2.imshow('thresh', thresh)

但没有得到好的输出 请告诉我哪里做错了。

这是图片

https://ibb.co/thgXTSn

https://ibb.co/cYGYL2W

https://ibb.co/R2nbt0g

https://ibb.co/ZgPKy2N

【问题讨论】:

  • 你想得到图片的哪一部分?

标签: python ocr cv2 python-tesseract threshold


【解决方案1】:

您可以尝试在识别之前进行图像处理。例如,像这样:

image = cv2.imread(c, 0)

se=cv2.getStructuringElement(cv2.MORPH_ELLIPSE , (5,5))
close=cv2.morphologyEx(image, cv2.MORPH_CLOSE, se)
close=cv2.absdiff(close, image)
image=cv2.bitwise_not(close)

还可以尝试对图像进行上采样。 希望这能解决您的问题。

【讨论】:

  • 您好我使用了这个代码 se=cv2.getStructuringElement(cv2.MORPH_ELLIPSE , (5,5)) close=cv2.morphologyEx(image, cv2.MORPH_CLOSE, se) close=cv2.absdiff(close , 图像) thresh=cv2.bitwise_not(close) thresh = cv2.threshold(thresh, 0, 255,cv2.THRESH_OTSU)[1] thresh = cv2.GaussianBlur(thresh, (3,3), 0) 数据 = pytesseract。 image_to_string(thresh) 但 1 张图片仍然没有显示任何内容
  • MB cv2.resize()?
猜你喜欢
  • 2016-02-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多