簡體   English   中英

Pytesseract 無法識別圖像中的數字

[英]Pytesseract fails to recognize digits from image

Pytesseract 無法識別數字68 它認

  • 6作為5
  • 5作為5 ,
  • 3作為8
  • 8作為8
  • Oct0c: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.

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