拍照并使用TesseractOCR

时间:2018-03-23 03:17:25

标签: ios swift tesseract

所以我想拍一些文字的照片,但是当使用tesseract时它会给我以下错误:

  

actual_tessdata_num_entries_< = TESSDATA_NUM_ENTRIES:错误:断言   失败:在文件tessdatamanager.cpp中,第53行

所以当ViewController1抓取图片时,会将其发送到TextViewController,如下所示:

ViewController1发送:

extension CameraViewController: AVCapturePhotoCaptureDelegate {
    func photoOutput(_ output: AVCapturePhotoOutput, didFinishProcessingPhoto photo: AVCapturePhoto, error: Error?) {
        if let imageData = photo.fileDataRepresentation() {
            self.image = UIImage(data: imageData)
            let text = TextViewController()
            text.image = self.image
            self.present(text, animated: true, completion: nil)
        }
    }
}

它应该在TextViewController()中收到并显示在textView上,但它只是崩溃了:

@IBOutlet weak var textView: UITextView!
    var image: UIImage?

    override func viewDidLoad() {
        super.viewDidLoad()

        if let tesseract = G8Tesseract(language: "eng") {
            tesseract.delegate = self
            tesseract.image = self.image
            tesseract.recognize()

            textView.text = tesseract.recognizedText
        }
}

1 个答案:

答案 0 :(得分:0)

实际上,该错误与您的代码无关。您在代码中链接的.traineddata无法使用当前版本的Tesseract-OCR-iOS

因为pod 'TesseractOCRiOS', '4.0.0'与tesseract引擎版本3.03-rc1一起运行。如果您使用来自源tessdata的最新训练数据文件,则它仅适用于Tesseract 4.0.0而不适用于3.03-rc1。

如果您只想使用eng.traineddata,可以查看解决方案here。另一种选择是自己训练[lang] .traineddata并且tesseract是完全可训练的。如果需要,可以查看tesseract training process