tesseract 从表中读取值

DJJ*_*DJJ 5 python tesseract python-tesseract

我的问题是关于使用 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()
Run Code Online (Sandbox Code Playgroud)

这给了我以下图片 在此处输入图片说明

问题是 tesseract 甚至可以识别 QQ。我也把QQ列写在空白页上,tesseract不认。

有没有办法使用tesseract将png格式的表格转换为文本?有什么东西让我逃过一劫吗?

DJJ*_*DJJ 2

主要问题是QQ的垂直间距。通过添加一些垂直间距并调整图像大小,我得到了可接受的结果

\n\n
im=Image.open("file.png")\ndraw  = ImageDraw.Draw(im)\nfont=ImageFont.truetype("/usr/share/fonts/gnu-free/FreeSerifBold.ttf",12)\nby = font.getsize("S")[1]\ncol = [240,480]\npx = []\n\nfor y in range(0,im.size[1],by+5):\n    for x in col:\n        draw.text((x,y),"QQ",font=font,fill=0)\nim=im.resize((im.size[0]*2,im.size[1]*2))\nim.save("res-file.png")\nim.show()\n
Run Code Online (Sandbox Code Playgroud)\n\n

这是之后获得的文本tesseract res-file.png outputfile

\n\n

8888
\n8888

\n\n

商店 \xc2\xa7 开业日期\xc2\xa7Town
\nMike \xc2\xa72007-Nov-09\xc2\xa7sourisvi||e
\nAbbibbas \xc2\xa72009-Jan-05\xc2\xa7magic city
\nIuma $2009-Jan-05\ xc2\xa7vani||a
\nBeboot \xc2\xa72009-Mar-31\xc2\xa7at|antis
\nbascics $2008-Jun-27\xc2\xa7o|d york

\n