5

私の質問は、OCR を使用して画像内のテーブルからデータを抽出することに関するこの投稿に続きます。

tesseractテーブル画像をテキストに変換するために使用しています。これは、テーブルの形式が保持されないことを除けば、うまく機能します。解決策の 1 つは、列をいくつかの文字で置き換えて、tesseractそれをだましてテーブルをテキストとして認識させることです。

列のないテーブルの例を次に示しますここに画像の説明を入力

次のコードを使用して、「QQ」の列を描画します

im=Image.open("file.png")
draw  = ImageDraw.Draw(im)
font=ImageFont.truetype("/usr/share/fonts/gnu-free/FreeSerifBold.ttf",12)
by = font.getsize("S")[1]
col = [240,480]
px = []

for y in range(0,im.size[1],by):
    for x in col:
        draw.text((x,y),"QQ",font=font,fill=0)

im.save("res-file.png")
im.show()

次の画像が表示されます ここに画像の説明を入力

問題は、tesseract が QQ を認識していることです。空白のページにもQQ列を書きますが、tesseractはそれを認識しませんでした。

tesseract を使用して、このテーブルを png 形式のテキストに変換する方法はありますか? 私を逃したものはありますか?

4

1 に答える 1

2

主な問題は、QQ の垂直方向の間隔にありました。垂直方向のスペースを追加して画像のサイズを変更することで、許容できる結果が得られました

im=Image.open("file.png")
draw  = ImageDraw.Draw(im)
font=ImageFont.truetype("/usr/share/fonts/gnu-free/FreeSerifBold.ttf",12)
by = font.getsize("S")[1]
col = [240,480]
px = []

for y in range(0,im.size[1],by+5):
    for x in col:
        draw.text((x,y),"QQ",font=font,fill=0)
im=im.resize((im.size[0]*2,im.size[1]*2))
im.save("res-file.png")
im.show()

これが後に得られたテキストですtesseract res-file.png outputfile

8888
8888

ショップ §Date open§Town
Mike §2007-Nov-09§sourisvi||e
Abbibas §2009-Jan-05§magic city Iuma
$2009-Jan-05§vani||a
Beboot §2009-Mar-31§at|antis
基本 $2008-Jun-27§o|ニューヨーク

于 2015-07-27T13:01:25.470 に答える