Tesseract将1检测为t



我正在尝试从屏幕截图中提取电子邮件。

这是图像-带电子邮件的图片

你可以在这张图中看到,有一封电子邮件。

我的代码-

image = cv2.imread('image_name.jpg')
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
thresh = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU)[1]
thresh = 255 - thresh
text = pytesseract.image_to_string(thresh, config = '--psm 6')

尝试了从灰度到阈值再到反向的所有方法,但似乎都不起作用。

之前,它检测到5为's', 1为'i',但在如上所示的图像预处理后,只有5的问题得到解决,但现在检测到1为't'。请帮助。

尝试了我能找到的所有预处理技术。

编辑1:首先,我是一个完全的初学者,所以我可能会说一些在编程世界中完全幼稚的话。所以,请原谅我。

这些是image_to_data函数对image-Email Email字符串本身&接触然而

我会发布预处理图像的结果,但当我试图运行cv2.imshow()-

时显示此错误该函数未实现。使用Windows, GTK+ 2重新构建库。x或Cocoa支持。如果你是Ubuntu或Debian,安装libgtk2.0-dev和pkg-config,然后重新运行cmake或配置脚本函数'cvShowImage'

我在Anaconda上运行jupyter notebook,这可能是这个错误的原因。

这是处理后的图像-处理后图像

我已经使用了Tesseract一些,我得到的最好的建议是使您的图像完全黑白,并尝试锐化边缘(这两种方法都可以使用opencv)。你也可以用一种特定的字体来训练openv,所以如果所有的邮件都是一样的,你可以试试。

也尽量保持你的图像大小相同,使它更大会降低它的质量。我现在没有办法完全测试你的形象,但这两件事对我帮助很大。(不幸的是)要记住的是,它永远不会是完美的,你可能不得不忍受它。

最新更新