簡體   English   中英

為什么 tesseract 不能提取具有黑色背景的文本?

[英]Why can't tesseract extract text that has a black background?

我附上了一個非常簡單的文本圖像,我想要從中獲取文本。 它是黑色背景的白色。 在肉眼看來,它似乎是絕對清晰的,但顯然對它來說是垃圾。 我嘗試更改 oem 和 psm 參數,但似乎沒有任何效果。 請注意,這適用於其他圖像,但適用於這個。

它應該被提取為 Chand

請嘗試在您的機器上運行它,看看它是否有效。 否則我可能不得不完全改變我的 ocr 引擎。

注意:在我嘗試在圖像周圍添加黑色像素以幫助提取過程之前,它一直在工作。 另外我不認為 tesseract 是在白色背景上的黑色文本上訓練的。 它也應該能夠做到這一點。 另外,如果這是真的,為什么它適用於與此格式相同的其他文本圖像

編輯:奇跡般地,我再次嘗試運行腳本,這次它能夠正確提取 Chand,但在下面提到的情況下失敗了。 另請查看我使用的參數。 我已經閱讀了文檔,我覺得這將是正確的選擇。 我已添加圖片供您參考。 這不僅僅是這張圖片。 為什么 tesseract 對於如此簡單的用例會失敗?

在此處輸入圖像描述

在此處輸入圖像描述

要找到所需的結果,您需要了解以下內容:

輸入圖像用粗體書寫,我們需要縮小粗體字體,然后假設 output 為單個統一的文本塊。

為了縮小圖像,我們可以使用侵蝕

結果將是:

侵蝕 結果
在此處輸入圖像描述 CHAND
在此處輸入圖像描述 BAKLIWAL

代碼:


# Load the library
import cv2
import pytesseract

# Initialize the list
img_lst = ["lKpdZ.png", "ZbDao.png"]

# For each image name in the list
for name in img_lst:

    # Load the image
    img = cv2.imread(name)

    # Convert to gry-scale
    gry = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

    # Erode the image
    erd = cv2.erode(gry, None, iterations=2)

    # OCR with assuming the image as a single uniform block of text
    txt = pytesseract.image_to_string(erd, config="--psm 6")
    print(txt)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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