[英]Pytesseract fails to recognize digits from image
Pytesseract 無法識別數字6
和8
。 它認
6
作為5
和5
作為5
,3
作為8
和8
作為8
,Oct
為0c:
或0::
和Men
Wed
。使用的腳本:
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)
原始數據:
運行腳本后:
運行新腳本后:
在將圖像放入 Pytesseract 之前進行一些預處理以清理/平滑圖像會有所幫助。 具體來說,關閉小孔和去除噪聲的形態學操作可以增強圖像。 應用銳化過濾器也可能有所幫助。 調整內核大小或類型也可能有所幫助。 我相信--psm 6
在這里是最好的,因為圖像是一個統一的文本塊。 這是我在簡單的變形關閉后得到的
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()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.