Swift 3 Tesseract OCR识别返回的垃圾结果

时间:2017-08-16 00:23:59

标签: ios swift3 tesseract

感谢许多SO Tesseract OCR相关帖子,specifically this one,我现在正在将Tesseract集成到应用程序中,专门用于OCR的杂货收据。但是,我得到垃圾结果,我无法弄清楚为什么。我已经检查了tessdata语言文件,这是3.04 / 3.05版本的英文多维数据集数据文件。

以下是我的代码的核心:

            if let tesserect = G8Tesseract(language: "eng") {

            self.receiptPhoto.image = UIImage(named: "TradersReceipt")?.g8_blackAndWhite()
            self.receiptPhoto.image = self.receiptPhoto.image?.toGrayScale()
            self.receiptPhoto.image = self.receiptPhoto.image?.binarise()
            self.receiptPhoto.image = self.receiptPhoto.image?.scaleImage()

            // OCR the receipt in receiptPhoto
            tesserect.delegate = self as G8TesseractDelegate
            tesserect.engineMode = .tesseractCubeCombined
            tesserect.pageSegmentationMode = .singleBlock
            tesserect.image = self.receiptPhoto.image
            tesserect.recognize()

            // Update the UITextField in the destination VC being segued to
            textOfReceipt.text = tesserect.recognizedText

        }

请注意,toGrayScale等函数来自链接到本文第一句中的SO帖子。可以看出,我刚刚对Trader Joe的收据进行了硬编码测试,收据就在这里:

Trader Joe's Receipt

但是这是我的问题,显示的UITextView(textOfReceipt.text)是垃圾:

Garbage Results from tesseract.recognize

我觉得我错过了一些简单的事情。任何和所有帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

原来代码很好。 Tesseract只是不能很好地处理Trader Joe的收据,大概是因为Tesseract无法很好地处理Trader Joe使用的字体和/或与收据上的某些特殊字符混淆。其他收据做得更好,尽管OCR收据时的结果质量范围很广。如果我OCR常规文本,例如,从书中,结果是太棒了。