使用TesserOCR读取收据

时间:2017-06-28 20:32:03

标签: python regex machine-learning ocr tesseract

我的室友和我厌倦了每次去杂货店购物时手动拆分收据(特别是Costco),所以我想用图片识别制作收据分割器。

我使用Tesserocr for python将收据的图片转换为文本,然后使用正则表达式匹配文本并从那里进行计算。问题是tesseract在将图像转换为文本方面做得很糟糕。这是我们receipt之一的图片,以及使用api.GetUTF8Text()”Wm- Belfsville #214j |0925 Balfimore Rve. (R1. Belfsvlll B, MD 20705 4P Member 111869052983 E 1952 SNEET8SRTLY 11.79 E 0000165287 CPN/1952 3.80“ E 1952 SNEET&SHTLY 11.79 E 0000165287 CPN/1952 3.80- 87745 ROTISSERIE 4.99 H 1 5597 BLUEBERRIES 6.99 E. 5597 BIUEBERRIES 6.99 E. 979210 CHOC MRNGOS 9.99 H F‘ 24311 VHR. MUFFIN 7.99 1 1060788 PRETZELCRISP 6.89 87745 ROTISSERIE 4.99 H - 87745 ROTISSERIE 4.99 H EZ 71096 RED DEL 7.99 El 1027557 KOREHNNOODLE 8.79 Ei 382861 KS IN CK BST 16.79 [S 91610 FROSTED FLKS 6.79 [3 11422 3 YR CHDR 12_27 [5 46849 SESNDPRKTEND 12.55 SUBTOTRL 13 _ THX 1,33 xu** TOTAL IIIIIIIBEEIHflI xxxxx XXXXXXX4540 CHIP Read 后的输出:&/ p>

myFunction

您可以看到输出很难处理。它写着" A"作为" H"有时阅读" E"作为" F"或其他随机的东西。我想我有两个选择:

  1. 以某种方式训练tesseract更好地阅读收据,但我以前没有机器学习的经验。我试着阅读Tesseract's trainning guide,但我有很多不熟悉的技术细节。我想象实际过程并不困难,因为我读的图像非常具体。

  2. 拍摄多张相关照片,使用Fred's ImageMagick Scripts之类的内容,将所有照片放入不同的滤镜中,通过tesseract放置照片的所有排列并合并结果。这个问题是1)我不确定如何进行合并。正则表达式很难实现。 2)我想仍然存在基线问题,比如阅读" A" as" H"。

  3. 任何人都可以帮助我解决这些问题;指出要完成这项工作的途径?或者启发我可以尝试的另一种方法?

1 个答案:

答案 0 :(得分:2)

如果您可以使用ImageMagick并且在类Unix系统(Linux,MacOSX,Windows w / Cygwin或Windows 10 unix环境)上,那么您可以在http://www.fmwconcepts.com/imagemagick/index.php尝试我的bash shell脚本,textdeskew和textcleaner 。例如:

textdeskew input.jpg deskew.png

deskew result

然后

textcleaner -f 25 -o 10 -g -e normalize -s 1 deskew.png deskew_clean.png

deskew and clean result

或者在ImageMagick的任何操作系统上,只需使用-deskew和-lat:

convert input.jpg -deskew 40% input_deskew.png

Imagemagick deskew result

convert input_deskew.png -negate -lat 25x25+10% -negate input_deskew_lat.png

Imagemagick deskew and lat result

或者将它们一起运行:

convert input.jpg -deskew 40% -negate -lat 25x25+10% -negate input_deskew_lat.png

这些是否有助于您的OCR?