如何以编程方式读取图像中的电子邮件并将其转换为文本?

时间:2015-04-13 20:34:41

标签: csv image-processing ocr tesseract python-tesseract

我有一个包含1900多个GIF图像链接条目的CSV文件。

每张图片都包含一个电子邮件地址。

我想以编程方式读取每个条目并将它们转换为相应的文本,最好是在另一个或相同的CSV文件中。我使用Mac OS,而更喜欢使用Python或Java来实现这一目标。

如何使用OCR或任何其他方法进行操作?我们将非常感谢示例代码。

我已尝试过tesseract进行样本输入,但结果并不准确。这是我试过的:

 $ tesseract email.gif out

email.gif 如下:

greentours2010@yahoo.com

out.txt 中生成的输出为:

gveen|L7uvs2fl1fl@yahLm cum

CSV文件如下所示(前2个条目):

  

这是我在SO的第一个问题。如果我遗漏了任何其他相关信息,请道歉。我很乐意提供更多。

1 个答案:

答案 0 :(得分:3)

更新了答案

您的图片相当小,并且块状用于tesseract ...

enter image description here

你可以使用ImageMagick更好地扩大它们并使它们锐化:

convert email.gif -resize 600x -unsharp 0x8 -threshold 95% x.png     # Enlarge and sharpen
tesseract x.png text                                                 # OCR

enter image description here

<强>结果

tour@chworldtraveI.com

如果您的CSV文件看起来像您的示例,则称为file.csv     http://d1hnc0v5nyu4l2.cloudfront.net/kh/communications/original/1417577580/C2AFA720-7A9C-11E4-9201-22000AA51306?1417577580     http://d306v9rz034cgu.cloudfront.net/kh/communications/original/1367212416/55BE4627-B463-4523-8332-4046835D3D79?1367212416

你可以写

#!/bin/bash
while read f; do
   convert "$f" -resize 600x -unsharp 0x8 -threshold 95% image.png
   tesseract image.png text
   grep "[a-z0-9]" text.txt >> results.txt
done < file.csv

您的文件results.txt将有

sale@myeIitetour.net
cambodia]et@onIine.com.kh

如果您确实打算在OSX上使用ImageMagicktesseract,请考虑使用homebrew进行安装。它会让你的生活更轻松。问你是否不知道如何。

原始答案

嗯,这可能是使用tesseract的开始。基本上,您传递输入图像文件的名称(在我的示例中为email.png)和输出文本文件的基础,如下所示:

tesseract email.png text -psm 7

然后你会得到一些文件text.txt,就像这样

lmAV@chwL7v\d1vave\z:um

您可以尝试各种不同的参数和策略来清理输入文件,可能使用ImageMagick。

由于您没有说明您使用的是哪种操作系统,或者您的CSV文件是什么样的,因此目前很难再提供帮助。