web-dev-qa-db-ja.com

tesseract 4.0の数値のみを使用したpytesseractが機能しない

Pythonで最新バージョンのtesseract 4.0のみを呼び出す番号を取得しようとした人はいますか?

以下は3.05で機能しましたが、4.0でも文字を返します。数字ファイルを除くすべての構成ファイルを削除しようとしましたが、それでも機能しませんでした。どんな助けも素晴らしいでしょう:

imは日付、黒いテキスト、白い背景の画像です。

import pytesseract
im =  imageOfDate
im = pytesseract.image_to_string(im, config='outputbase digits')
print(im)
11
CuriousGeorge

tessedit_char_whitelistとしてconfig option

ocr_result = pytesseract.image_to_string(image, lang='eng', boxes=False, \
           config='--psm 10 --oem 3 -c tessedit_char_whitelist=0123456789')

この助けを願っています。

10
thewaywewere

Pytesseractでtessedit_char_whitelistフラグを使用してもうまくいきませんでした。ただし、回避策の1つは、機能するフラグを使用することです。これはconfig = 'digits'です。

import pytesseract
text = pytesseract.image_to_string(pixels, config='digits')

ここで、pixelsは画像の数の多い配列です(PIL画像も機能するはずです)。これにより、pytesseractは数字のみを返すようになります。ここで、それが返すものをカスタマイズするために、桁構成ファイルを見つけます。

C:\ Program Files(x86)\ Tesseract-OCR\tessdata\configs

数字ファイルを開き、必要な文字を追加します。 pytesseractを保存して実行すると、カスタマイズされた文字のみが返されます。

3
Robert Harris

このGitHubの問題 で確認できるように、ブラックリストとホワイトリストはtesseractバージョン4.0では機能しません。

このブログ記事 で説明したように、この問題には3つの解決策があります。

  1. Tesseractをバージョン> 4.1に更新
  2. The answer from @ thewaywewere の説明に従ってレガシーモードを使用します
  3. 単純な正規表現を使用してすべての数値を抽出するpython関数を作成します。

    def replace_chars(text):
        list_of_numbers = re.findall(r'\d+', text)
        result_number = ''.join(list_of_numbers)
        return result_number
    
    result_number = pytesseract.image_to_string(im)
    
0
mhellmeier