我想从图像(作为.jpg文件的文档)中读取文本信息。
我将Tesseract 4.0与python包装程序tesserocr结合使用,我使用conda install -c simonflueckiger/label/tesseract-4.0.0-master tesserocr
安装了该包装。我还下载了英语和法语的tessdata(Tesseract训练过的数据文件),并使用了预先训练的Tesseract api。
可以正常看到:
import tesserocr
print(tesserocr.get_languages())
('D:\\anaconda3\\tessdata/', ['eng', 'fra'])
我正在使用python 3.6和Windows。
这是我的代码:
from tesserocr import PyTessBaseAPI
with PyTessBaseAPI() as api:
api.SetImageFile('data/sample2-2.jpg')
print(api.GetUTF8Text())
这确实有效,但是输出效果很差。
这是图像数据集中的an example(我减小了它的大小)。
实际图像尺寸为7250x12889,这是很大的
这是the output from Tesseract 4.0的屏幕截图。来自Tesseract 3.05的版本几乎相同。
如您所见,Tesseract的输出不是很令人信服。但是,我尝试了The first online OCR I saw,结果非常好。它实际上几乎是完美的,我几乎看不到整个输出的错误。 这是output的屏幕截图。
我希望Tesseract能够提供更好的结果,并且我认为我没有正确设置它,因为它应该能很好地工作,而且“未知” OCR api会以更大的结果击败它,这有点奇怪。 >
看看这两个输出,看起来Tesseract可以直接读取它的内容(很多不是真实的单词),而第二个OCR api将它读取的内容更正为真实的单词。
我知道Tesseract并不总是能提供良好的结果,我需要尝试一些预处理步骤,尽管我做了,但是我不了解的是这两种OCR API之间的质量差异很大。
我认为那是培训api的目的(不仅学习字体,还学习其中的语言和单词)。那么,就我而言,Tesseract是否经过正确培训?我想念什么吗?与第二个OCR API相比,获得如此糟糕的输出是否正常?