簡體   English   中英

為什么 pytesseract 無法識別此圖像

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM