python3.7 3.9 3.10 pytesseract0.3.4 0.3.5 0.3.6 0.3.9 tesseract 3 4 5
换电脑,换系统,换软件版本,换库版本,换语言包,换图片,不处理和处理图片都试过了,全都是小方块
识别结果写入TXT
import pytesseract
import numpy as np
import cv2.cv2 as cv2
img=cv2.imread('photo2051001204417.png')
img=img[2: 39, 3: 128]
gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
thresh,yzm = cv2.threshold(gray,200,255,cv2.THRESH_BINARY)
# yzm:表示需要操作的数组
# 160:表示阈值
# 255 表示最大值
# 降噪
yzm = cv2.morphologyEx(yzm,cv2.MORPH_CLOSE,np.ones(shape=(2,2)))
# 先膨胀 让黑色遭点消失,再侵蚀让黑色加粗
# dilate = cv2.dilate(yzm,np.ones(shape=(2,2)))
# yzm = cv2.erode(dilate,np.ones(shape=(3,3)))
cv2.imwrite('new_img.png',yzm)
cv2.imshow('window1',yzm)
cv2.waitKey(1000)
cv2.destroyWindow('window1')
result=pytesseract.image_to_string(yzm)
print(result)
用了很多方法处理图片都不行,是不是tesseract本身有问题?
应该是左、上边影响了, 去掉了就能识别了。
每个字符是各不相同的一种颜色,或许可以过滤颜色逐个字符提取出来,重新生成白底黑字的图片,然后训练字体。
兄弟,我用了你的程序,生成没有问题呀
import pytesseract
import numpy as np
import cv2
img=cv2.imread('Vertification.png')
img=img[2: 39, 3: 128]
gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
thresh,yzm = cv2.threshold(gray,200,255,cv2.THRESH_BINARY)
# yzm:表示需要操作的数组
# 160:表示阈值
# 255 表示最大值
# 降噪
yzm = cv2.morphologyEx(yzm,cv2.MORPH_CLOSE,np.ones(shape=(2,2)))
# 先膨胀 让黑色遭点消失,再侵蚀让黑色加粗
# dilate = cv2.dilate(yzm,np.ones(shape=(2,2)))
# yzm = cv2.erode(dilate,np.ones(shape=(3,3)))
cv2.imwrite('new_img.png',yzm)
cv2.imshow('window1',yzm)
cv2.waitKey(1)
cv2.destroyWindow('window1')
result=pytesseract.image_to_string(yzm)
print(result)