5

我的问题是关于使用 OCR 从图像中的表中提取数据的这篇文章。

我正在使用tesseract将表格图像转换为文本。除了不保留表格的格式外,这很好用。一种解决方案是用一些字母替换列,这些字母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

商店§开张日期§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|d york

于 2015-07-27T13:01:25.470 回答