[英]Why pytesseract can't recognize this image
我正在這張圖片上測試 pytesseract OCR
但結果總是 30770.0 但我想要這個數字:997,70 僅供參考:這張圖片已經被轉換了:
img = img.convert('L') # greyscale
img = img.resize((img.size[0] * 3, img.size[1] * 3), 1)
img = ImageEnhance.Contrast(img).enhance(5.0)
img = ImageOps.equalize(img)
img = ImageOps.invert(img)
代碼下方:
pytesseract.pytesseract.tesseract_cmd = 'C:\\Program Files\\Tesseract-OCR\\tesseract.exe'
img2 = "full_snap__1609584655.png"
numStr2 = pytesseract.image_to_string(img2, lang='eng',config='--psm 10 --oem 1 digits -c tessedit_char_whitelist=0123456789')
print('997,70 :',float(numStr2))
我已經嘗試調整 pytesseract function image_to_string 的 --psm 參數,但它不起作用。
謝謝您的幫助
我對這個問題的解決方案是形態轉換。
如果你應用侵蝕
前景 object 的厚度或大小減小或圖像中的白色區域減小。 它對於去除小的白噪聲(正如我們在色彩空間章節中所見)、分離兩個連接的對象等很有用。
erd = cv2.erode(gry, None, iterations=1)
結果:
現在,如果您閱讀它:
print(pytesseract.image_to_string(erd))
結果:
997 70€
代碼:
import cv2
import pytesseract
img = cv2.imread("R83OY.png")
h, w, c = img.shape
gry = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
erd = cv2.erode(gry, None, iterations=1)
print(pytesseract.image_to_string(erd))
可能的問題:為什么將 kernel 設置為 None?
如果初始化 kernel (即 (5, 5) )並將其應用於圖像,結果將是:
如您所見,應用 kernel 並沒有改善結果。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.