Pytesseract 无法读取简单的数字
Pytesseract can't read simple numbers
我正在尝试使用 pytesseract 读取此数字: 并且当我这样做时打印出 IL
:
import pytesseract
pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract'
text = pytesseract.image_to_string(Image.open("Number.jpg"))
print(text)
我也尝试过将图像转换为黑色或白色: 但这也没有用。我做错了什么?
我认为您错过了将 pytesseract
' 页面分段模式 (psm
) 配置设置为 7
,它将图像视为单个文本行。 ()
我也应用了阈值,我的结果:
当我将 psm
设置为 7
txt = pytesseract.image_to_string(thr, config="--psm 7 digits")
print(txt)
结果:
14
代码:
import cv2
import pytesseract
img = cv2.imread("d3njD.jpg")
gry = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
thr = cv2.adaptiveThreshold(gry, 255, cv2.ADAPTIVE_THRESH_MEAN_C,
cv2.THRESH_BINARY_INV, 11, 4)
txt = pytesseract.image_to_string(thr, config="--psm 7 digits")
print(txt)
cv2.imshow("thr", thr)
cv2.waitKey(0)
请注意,对于其他图像,此解决方案可能无效。您可能需要额外的图像处理方法,或者您需要更改参数。
- pytesseract 版本:
4.1.1
pytesseract
效果最佳,并提供白底黑字的准确输出。预处理是获得准确结果的主要部分。但在您的情况下,一个简单的逆二进制阈值处理足以获得正确的输出,因为您的图像根本不包含任何噪声。只有在光线不均匀的情况下才应使用自适应阈值。
>>> image = cv2.imread("14.jpg",0)
>>> thresh = cv2.threshold(image,0,255,cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU)[1]
>>> data = pytesseract.image_to_string(thresh,config= '--psm 6 digits')
>>> data
'14'
我认为tesseract的版本不会造成任何问题。
Tesseract 版本 tesseract v5.0.0-alpha.20200223
pytesseract 版本 pytesseract Version: 0.3.4
我正在尝试使用 pytesseract 读取此数字:IL
:
import pytesseract
pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract'
text = pytesseract.image_to_string(Image.open("Number.jpg"))
print(text)
我也尝试过将图像转换为黑色或白色:
我认为您错过了将 pytesseract
' 页面分段模式 (psm
) 配置设置为 7
,它将图像视为单个文本行。 (
我也应用了阈值,我的结果:
当我将 psm
设置为 7
txt = pytesseract.image_to_string(thr, config="--psm 7 digits")
print(txt)
结果:
14
代码:
import cv2
import pytesseract
img = cv2.imread("d3njD.jpg")
gry = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
thr = cv2.adaptiveThreshold(gry, 255, cv2.ADAPTIVE_THRESH_MEAN_C,
cv2.THRESH_BINARY_INV, 11, 4)
txt = pytesseract.image_to_string(thr, config="--psm 7 digits")
print(txt)
cv2.imshow("thr", thr)
cv2.waitKey(0)
请注意,对于其他图像,此解决方案可能无效。您可能需要额外的图像处理方法,或者您需要更改参数。
- pytesseract 版本:
4.1.1
pytesseract
效果最佳,并提供白底黑字的准确输出。预处理是获得准确结果的主要部分。但在您的情况下,一个简单的逆二进制阈值处理足以获得正确的输出,因为您的图像根本不包含任何噪声。只有在光线不均匀的情况下才应使用自适应阈值。
>>> image = cv2.imread("14.jpg",0)
>>> thresh = cv2.threshold(image,0,255,cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU)[1]
>>> data = pytesseract.image_to_string(thresh,config= '--psm 6 digits')
>>> data
'14'
我认为tesseract的版本不会造成任何问题。
Tesseract 版本 tesseract v5.0.0-alpha.20200223
pytesseract 版本 pytesseract Version: 0.3.4