来自 table 的 tesseract 读取值

tesseract reading values from a table

我的问题是 post 关于使用 OCR 从图像中的 table 提取数据。

我正在使用 tesseract 将 table 图片转换为文本。除了不保留 table 的格式外,这很好用。一种解决方案是用一些字母替换列 tesseract 会识别并欺骗它接受 table 就像一些文本一样。

这是一个 table 没有列

的例子

我用下面的代码绘制"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 格式的 table 转换为文本?有什么事让我想不到吗?

主要问题是 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

商店§开业日期§城镇
迈克 §2007-Nov-09§sourisvi||e
阿比巴斯§2009-Jan-05§魔法城
Iuma $2009-Jan-05§vani||a
Beboot §2009-Mar-31§at|antis
基础知识 $2008-Jun-27§o|d 纽约