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

How to programmatically read and convert email in an image to text?

我有一个包含 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 中的第一个问题。如果我错过了任何其他相关信息,我深表歉意。我很乐意提供更多。

更新答案

你的图像相当小,而且 blocky tesseract...

您可能会像这样使用 ImageMagick 更好地放大它们并锐化它们:

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

结果

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。

由于您没有说 OS 您使用的是什么,或者您的 CSV 文件是什么样的,目前很难提供进一步的帮助。