相关疑难解决方法(0)

需要Tesseract收据扫描建议

我一直在与Tesseract一起努力争取各种OCR项目,我今天发现了一个用例,我认为这会是一个扣篮,但是经过几个小时后我仍然不满意.我想在这里提出问题,看看是否还有其他人就如何解决这个问题提出了建议.

我的妻子今天早上来找我,问她是否可以轻松扫描她收到的沃尔玛收据,随着时间的推移,建立了类别和特定物品价格的历史记录,这样我们就可以做一些趋势并轻松深入研究支出在哪里.起初我觉得这是一个非常高的订单,但在做了一些挖掘后,我发现了一些让我觉得这是触手可及的事情:

  1. 沃尔玛的收据一般,结构合理,易于阅读.他们甚至包括每个项目的UPC(可能对UPC数据库进行查找?)并且似乎用F或I对食品进行分类(不确定区别是什么)并且还有一个税法代码列,这可能证明是有用的我了解代码的含义秘诀.

  2. 我进一步发现,我可能能够获得某种沃尔玛项目查找API,这对于UPC查找非常有用.

  3. 他们有一个智能手机应用程序,可以扫描每张收据上打印的二维码.该应用程序从收据中查找"TC"代码,并从其服务器中提取整个逐项收据.它向您显示收据的优秀图形表示,包括所有项目的缩略图和成本等.如果此应用程序只是分类和汇总收据,我会完成!但唉,这不是应用程序的目的....

  4. 最后一个难题是,您可以导出计算机生成的收据的PNG图像,以防您想要保存并扔掉纸质版本.这对我而言是拍摄的,因为这些PNG是由计算机创建的,因此不受拍摄照片或扫描纸质收据的问题的影响

其中一个示例(稍微编辑以淡化某些区域,但另外完全从应用程序获得)在这里:

https://postimg.cc/image/s56o0wbzf/

您可以看到文本的重要部分完全对齐在5列中,这最终是这个问题的内容.如何让Tesseract准确地将其转换成文本.我有很多想法从这里开始,但这一切都从OCR开始!

我最亲近的就是这个例子:

http://pastebin.com/nuZJBVg8

我使用psm6和一个字符限制集强制它只做大写+数字+几个符号:

tessedit_char_whitelist 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ#()/*@%-.
Run Code Online (Sandbox Code Playgroud)

乍一看,OCR似乎几乎匹配.但是当你深入挖掘时,你会发现整体失败的可能性非常大.3s和8s几乎总是错的.与6s和5s相同.然后有时候它会完全跳过字符或者开始分崩离析(例如示例中的第31行).它开始将2s视为1,甚至只是缺少字符.第33行的SO PIZZA应为"2.82",但为"32".

我已经尝试对图像进行一些预处理以加厚字符,并确保它是纯黑色和白色但我的努力没有比沃尔玛的原始图像+上述命令更接近.

理想情况下,因为这是一个结构良好的PNG,如果我可以按像素宽度定义列,我希望它总是宽度相同,以便Tesseract可以独立地处理每一列.我试图研究这个但是我见过的UZN文件并没有像素宽度那样转换给我,它们看起来像高度是因为高度总是变化的因素不适用于这些因素.

另外,我需要弄清楚如何训练Tesseract准确地识别数字100%(这些字母并不重要).我开始研究如何训练程序,但说实话,它很快得到了解决,因为文档中的培训范围更多的是让它识别整个语言而不仅仅是10位数.

终极游戏解决方案将是一个管道链的命令,它从应用程序中获取原始PNG,并返回一个CSV,其中包含来自收据重要部分的5列数据.我不指望这个问题,但任何指导我的帮助将不胜感激!在这一点上,我只是觉得不再被Tesseract鞭打,所以我决心找到一种方法来掌握她!

ocr tesseract receipt

19
推荐指数
2
解决办法
1万
查看次数

标签 统计

ocr ×1

receipt ×1

tesseract ×1