python - Pytesseract 无法识别图像中的数字

标签 python opencv image-processing ocr python-tesseract

Pytesseract 无法识别数字 68。它识别

  • 65
  • 55
  • 38
  • 88
  • Oct0c:0::
  • WedMen

使用的脚本:

config= "-c tessedit_char_whitelist=01234567890.:ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz -psm 3 -oem 0"
text = pytesseract.image_to_string(image, config=config)

还尝试使用 1-12 之间的不同 psm 编号,但没有成功。增加对比度会导致更多数字无法识别:

kernel = np.ones((2,2),np.uint8)
dilation = cv2.dilate(im, kernel)#,iterations = 1)
text = pytesseract.image_to_string(dilation, config=config)

原始数据:

How the raw data looks like

运行脚本后:

After running the script

运行新脚本后:

After running new script

最佳答案

在将图像放入 Pytesseract 之前进行一些预处理来清理/平滑图像会有所帮助。具体来说,关闭小孔和去除噪声的形态学操作可以增强图像。此外,应用锐化滤镜也可能有所帮助。调整内核大小或类型也可能有所帮助。我相信 --psm 6 是最好的,因为图像是单个统一的文本 block 。这是我在简单的变形关闭后得到的结果

enter image description here

import cv2
import pytesseract

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

image = cv2.imread('1.png',0)
thresh = cv2.threshold(image, 150, 255, cv2.THRESH_BINARY_INV)[1]

kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (2,2))
close = cv2.morphologyEx(thresh, cv2.MORPH_CLOSE, kernel)
result = 255 - close

data = pytesseract.image_to_string(result, lang='eng',config='--psm 6')
print(data)

cv2.imshow('thresh', thresh)
cv2.imshow('result', result)
cv2.imshow('close', close)
cv2.waitKey()

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

相关文章:

python - 如何在时间序列预测中使用mysql数据集

c# - 从 C# 执行 Python 脚本

c++ - 如何修复 opencv 的慢 kmeans

c++ - 在 Windows 中使用 UTF8 字符串打开文件名

OpenCV 的 Sobel 过滤器 - 为什么它看起来如此糟糕,尤其是与 Gimp 相比?

java - Web 服务器上的文本到图像

python - 将 python 中的数据帧转换为以下格式的 json

python - pandas groupby 在分类系列中运行

python - 在python中去噪二值图像

matlab - Matlab中的图像处理/恢复