我花了一个kludging一个python脚本,将杂货收据转换为电子表格作为我的新年之一的一部分’S决议。似乎有 一些选择 在那里进行扫描和录制收据,但它’尚不清楚他们应用了OCR技术来自动将它们转换为电子表格。
这里’我使用的收据:
这个网站 提供了一些Python源代码,以检测图像中的边缘,然后检测收据的轮廓并转换任何缩短或其他查看失真—
为了检测边缘,代码将彩色图像转换为灰度,并应用Canny边缘检测方案,该方案涉及应用高斯模糊以抑制噪声,计算图像导数和寻找大值。结果显示在左上方的图像中,以及关于算法的更多细节 这里.
接下来,代码通过使用来查找收据的轮廓 OpenCV.‘s findcontours.,按区域对轮廓进行排序,并找到具有最大区域的轮廓,但具有四个顶点。
然后代码应用四点变换来扭曲收据以使其成为矩形形状,最后阈值灰度为增强对比度。上图中最右侧的面板显示了最终结果。
将图像转换为文本表,我使用过 pytesseract.,提供 OCR. 能力。我安装了包 tesseract. 使用 家用: “Brew安装Tesseract.”.
然后我抓住了代码 这个网站 要将最终结果转换为文本表:
st = pytesseract.image_to_string(Image.open(save_filename), config="-psm 6")
这 “psm=6” option 需要正确返回文本。
不幸的是,OCR分析是缺陷的’完美。例如,
被转换为
'* Cresgent R01 1 1800000401 4.82如果
所有线路的价格都罚款,但描述往往扭曲。无论如何,我决定更多地关心价格。幸运的是,Winco收据有“TF” or “TX”在最右边的一面,所以我执行了一个正则表达式搜索,以查找该字符串的开头并抓住左侧的字符。
最后,我将字符串转换为逗号分隔值列表,以加载Excel或Google纸张,留下损坏的描述和价格之间的空间,因此我可以输入我自己的描述,给予
CresgentR0111,4.82
在违法行为上,它对别人有用’ve posted the code 这里。使用我的脚本还需要源代码 pyimagesearch.,这需要提交电子邮件地址。