我的室友和我厌倦了每次去杂货店购物时手动拆分收据(特别是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"或其他随机的东西。我想我有两个选择:
以某种方式训练tesseract更好地阅读收据,但我以前没有机器学习的经验。我试着阅读Tesseract's trainning guide,但我有很多不熟悉的技术细节。我想象实际过程并不困难,因为我读的图像非常具体。
拍摄多张相关照片,使用Fred's ImageMagick Scripts之类的内容,将所有照片放入不同的滤镜中,通过tesseract放置照片的所有排列并合并结果。这个问题是1)我不确定如何进行合并。正则表达式很难实现。 2)我想仍然存在基线问题,比如阅读" A" as" H"。
任何人都可以帮助我解决这些问题;指出要完成这项工作的途径?或者启发我可以尝试的另一种方法?
答案 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
然后
textcleaner -f 25 -o 10 -g -e normalize -s 1 deskew.png deskew_clean.png
或者在ImageMagick的任何操作系统上,只需使用-deskew和-lat:
convert input.jpg -deskew 40% input_deskew.png
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?