簡體   English   中英

無法識別 Pytesseract 上的正確數字

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

圖 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.

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