在日常工作、学习中,我们经常会拿到图片格式的表格数据,然后手动把数据输到excel中,如果数据较少的话,还可以,但是一旦数据较多,这个工作量将是难以想象的。
下面我们介绍一种利用Python+Opencv+pytesser把图像识别为Excel表格的方法。
首先看一下要处理的原始图片:
1.提取原图中的表格部分
对原图做垂直投影,见下图:
对原图做水平投影,见下图:
根据水平投影以及垂直投影的坐标,我们可以得出每个格子对应的图片。
以上图片仅仅是用于处理过程展示,可以根据实际需要进行处理。
2、分别对得到的每个图片进行识别
在这里我们使用用pytesser,OCR in Python using the Tesseract engine from Google。是谷歌OCR开源项目的一个模块,可将图片中的文字转换成文本。
result = pytesseract.image_to_string(Image.fromarray(region), "chi_sim", None, None)
3、重点、难点
由于pytesser对图片内容的要求比较高,所以处理的重点在于表格大小提取处理。在获取到表格位置后,我们可以根据实际情况来应对。在子图中最好能够去除表格的边框,这样识别率会有一个质的提高。
下面是处理结果:
姓 名|年 级|住 址|联 系 方 式|
张 三|42|深 圳 南 山|13812345678|
李 四|45|北 京 朝 阳|13999999999|
王 五|20|上 海 浦 东|13666666666|
赵 六|88|广 州 天 河|13333333333|
这里仅仅对规则表格进行了说明,对于不规则的表格可以采用由大到小递归的方式处理,至于效果如何,还没有进行验证,以后再进一步研究分享。