![](/img/trans.png)
[英]Need help finding the correct config for Pytesseract be able to recognize this text
[英]Unable to recognize correct digit on Pytesseract
我無法使用 Pytesseract 識別我想要的數字,我做錯了什么嗎?
我的代碼
import cv2
from pytesseract import pytesseract
img = cv2.imread('foo.png')
for i in range(6,14):
text:str = pytesseract.image_to_string(img, config=f'--oem 3 --psm {i} digits').replace('\n','')
print(f"psm {i}: {text}")
我的輸入圖像
圖片 1
結果
psm 6:
psm 7:
psm 8:
psm 9:
psm 10:
psm 11:
psm 12: 4
psm 13:
圖 2
圖 2
結果
psm 6: .4
psm 7:
psm 8:
psm 9:
psm 10:
psm 11:
psm 12:
psm 13:
圖 3
結果
psm 6: 4
psm 7: 4
psm 8: 4
psm 9: 4
psm 10: 4
psm 11: 4
psm 12:
psm 13: 4
我怎樣才能得到我想要的結果? 感謝您的幫助。
所有圖像的高度均為 252 像素,最小寬度為 240 像素。
這里有一些嘗試。
您使用的是孤立的數字,因此沒有上下文可以幫助識別器,也沒有字典的幫助。 從英文句子開始,然后 go 到英文單詞,以驗證一切正常。 然后嘗試更難的孤立字母/數字任務。
嘗試在圖像上運行高斯模糊,將其閾值化為二進制,並要求對其進行識別。 或者,幾乎是同一件事,通過簡單地從 252 像素縮小到更小的東西來減少“顛簸”的偽影。 請記住,Tesseract 是在 300 dpi 和 600 dpi 的大約 8 到 16 pt 類型的圖像上訓練的。 矛盾的是,超大圖像可能不利於識別。
您的一些圖像看起來可能會被一些非零的 theta 扭曲。 考慮去偏移。 或者更好的是,考慮以各種分辨率生成地面實況圖像,這些圖像具有零偏斜。 Ghostscript 是一種流行的實現方式。
請更新問題以解釋您使用的是哪種 Ocr 引擎模式。 也許3
是 OEM_TESSERACT_LSTM_COMBINED ? 您確定需要指定選項嗎? 也就是說,當我們讓它默認時,我們會看到更差的性能嗎?
哇,確實有很多頁面分割模式,如上所述。 你沒有為引擎提供太多上下文,對於孤立的數字,如果你在圖像中寫“1 2 3”,甚至是“123”。 與您的示例個位數圖像相比,引擎有更好的機會驗證其對字體大小的估計,因此請考慮特定的 PSM 擅長什么。 並注意提供能夠發揮這種優勢的形象。 一旦我們看到一些相鄰的字符,下行和基線的估計就會好得多。
抱歉,沒有簡單的答案。 看起來你前面有一些實驗。 請讓我們知道您的發現!
我從命令行運行 tesseract,得到這個 output:
>tesseract 7.png - --psm 8
7
>tesseract 3.png - --psm 8
3
>tesseract 9.png - --psm 8
9
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.