我的问题是post关于使用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格式的表转换为文本?有什么东西逃过了我吗?
答案 0 :(得分:1)
主要问题是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
Shop§Dateopen§Town
Mike§2007-Nov-09§sourisvi|| e
Abbibas§2009-Jan-05§magiccity
Iuma $ 2009-Jan-05§vani|| a
Beboot§2009-Mar-31§at| antis
bascics $ 2008-Jun-27§o| d york