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格式的表格转换为文本?有什么东西让我逃过一劫吗?
主要问题是QQ的垂直间距。通过添加一些垂直间距并调整图像大小,我得到了可接受的结果
\n\nim=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()\nRun Code Online (Sandbox Code Playgroud)\n\n这是之后获得的文本tesseract res-file.png outputfile
8888
\n8888
商店 \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