7

これらの画像をテキストに変換するための提案はありますか? 私は pytesseract を使用していますが、これを除いてほとんどの場合、うまく機能しています。理想的には、これらの数字を正確に読みたいと思います。最悪の場合、PIL を使用して「/」の左側の数字がゼロかどうかを判断することもできます。左から始めて最初の白いピクセルを見つけ、次に

ここに画像の説明を入力 ここに画像の説明を入力

from PIL import Image
from pytesseract import image_to_string

myText = image_to_string(Image.open("tmp/test.jpg"),config='-psm 10')
myText = image_to_string(Image.open("tmp/test.jpg"))

真ん中のスラッシュはここで問題を引き起こします。また、PIL の「.paste」を使用して、画像の周りに余分な黒を追加しようとしました。私が試すことができる PIL トリックは他にもいくつかあるかもしれませんが、必要がない限り、そのルートには行きたくありません。

config='-psm 10' を使用してみましたが、8 が ":" として表示されることもあれば、ランダムな文字が表示されることもありました。そして、私の0は何もないものとして通り抜けていました。

参照先: pytesseract は-psm 10 の1 桁の画像では機能しません

______________EDIT________________ 追加のサンプル:

ここに画像の説明を入力 1BJ2I]

ここに画像の説明を入力 DIS

ここに画像の説明を入力 10.I'10

ここに画像の説明を入力 20.I20

だから私は今のところうまくいっているように見えるいくつかのブードゥー変換を行っています. しかし、非常にエラーが発生しやすいように見えます:

def ConvertPPTextToReadableNumbers(text):
    text = RemoveNonASCIICharacters(text)
    text = text.replace("I]", "0")
    text = text.replace("|]", "0")
    text = text.replace("l]", "0")
    text = text.replace("B", "8")
    text = text.replace("D", "0")
    text = text.replace("S", "5")
    text = text.replace(".I'", "/")
    text = text.replace(".I", "/")
    text = text.replace("I'", "/")
    text = text.replace("J", "/")
    return text

最終的に生成されるもの:

ConvertPPTextToReadableNumbers return text =  18/20
ConvertPPTextToReadableNumbers return text =  0/5
ConvertPPTextToReadableNumbers return text =  10/10
ConvertPPTextToReadableNumbers return text =  20/20
4

2 に答える 2

4

一般に、ほとんどの OCR ツール (Tesseract など) は、印刷されたテキストの高解像度スキャンを処理するように調整されています。低解像度またはピクセル化された画像ではうまく機能しません。

ここで考えられる 2 つのアプローチは次のとおりです。

  1. 画像のフォント、背景、レイアウトが完全に予測可能であれば、Tesseract はまったく必要ありません。それは問題を複雑にするだけです。認識する必要がある各文字を表す画像のライブラリを構築し、画像の一部が参照画像と等しいかどうかを確認します

  2. それができない場合、または難しすぎると思われる場合は、hq*x アルゴリズムのいずれかを使用して、ピクセル化された画像を拡大できます。追加された詳細は、Tesseract に文字を確実に認識させるのに十分な場合があります。

于 2016-08-30T18:24:39.143 に答える