gpt4 book ai didi

ios - Tesseract OCR w/iOS & Swift 返回错误或乱码

转载 作者:搜寻专家 更新时间:2023-10-31 22:35:34 24 4
gpt4 key购买 nike

我使用本教程让 Tesseract OCR 与 Swift 一起工作:http://www.piterwilson.com/blog/2014/10/18/minimal-tesseact-ocr-setup-in-swift/

如果我上传演示图像并调用它就可以正常工作

 tesseract.image = UIImage(named: "image_sample.jpg");

但是如果我使用我的相机代码并拍摄相同图像的照片并调用

 tesseract.image = self.image.blackAndWhite();

结果要么像乱码

s I 5E251 :Ec‘-。 —7.//:E*髧g :_{:7 IC‘J 7 iii—1553‘: 嘶嘶作响——‘;-——:

; ~:~./: -:-‘-

'-:~£:': _-'~':

:37%; §:‘—_

:::::E 7,;.1f:,:~ ——,

或者返回 BAD_EXC_ACCESS 错误。我无法重现它给出错误或乱码的原因。这是我的相机捕获代码 (photo taken()) 和处理步骤 (nextStepTapped()):

 @IBAction func photoTaken(sender: UIButton) {

var videoConnection = stillImageOutput.connectionWithMediaType(AVMediaTypeVideo)

if videoConnection != nil {

// Show next step button
self.view.bringSubviewToFront(self.nextStep)
self.nextStep.hidden = false

// Secure image
stillImageOutput.captureStillImageAsynchronouslyFromConnection(videoConnection) {
(imageDataSampleBuffer, error) -> Void in
var imageData = AVCaptureStillImageOutput.jpegStillImageNSDataRepresentation(imageDataSampleBuffer)

self.image = UIImage(data: imageData)

//var dataProvider = CGDataProviderCreateWithCFData(imageData)
//var cgImageRef = CGImageCreateWithJPEGDataProvider(dataProvider, nil, true, kCGRenderingIntentDefault)
//self.image = UIImage(CGImage: cgImageRef, scale: 1.0, orientation: UIImageOrientation.Right)

}

// Freeze camera preview
captureSession.stopRunning()

}

}

@IBAction func nextStepTapped(sender: UIButton) {

// Save to camera roll & proceeed
//UIImageWriteToSavedPhotosAlbum(self.image.blackAndWhite(), nil, nil, nil)
//UIImageWriteToSavedPhotosAlbum(self.image, nil, nil, nil)

// OCR

var tesseract:Tesseract = Tesseract();
tesseract.language = "eng";
tesseract.delegate = self;
tesseract.image = self.image.blackAndWhite();
tesseract.recognize();

NSLog("%@", tesseract.recognizedText);

}

图像保存到相机胶卷,如果我取消对注释行的注释,图像将完全清晰可见。不知道为什么它不起作用。如果将图像作为支持文件直接上传到 Xcode 中,则读取图像上的文本没有问题,但如果我在屏幕上拍摄完全相同的图像,则无法读取。

最佳答案

偶然发现本教程:http://www.raywenderlich.com/93276/implementing-tesseract-ocr-ios

刚好提到缩放图片。他们选择的最大尺寸为 640。我将我的照片设为 640x480,所以我认为我不需要缩放它们,但我认为这段代码本质上是重新绘制图像。出于某种原因,现在我的照片 OCR 相当好。我仍然需要为较小的文本进行图像处理,但它非常适合大文本。通过这个缩放函数运行我的图像,我很高兴。

  func scaleImage(image: UIImage, maxDimension: CGFloat) -> UIImage {

var scaledSize = CGSize(width: maxDimension, height: maxDimension)
var scaleFactor: CGFloat

if image.size.width > image.size.height {
scaleFactor = image.size.height / image.size.width
scaledSize.width = maxDimension
scaledSize.height = scaledSize.width * scaleFactor
} else {
scaleFactor = image.size.width / image.size.height
scaledSize.height = maxDimension
scaledSize.width = scaledSize.height * scaleFactor
}

UIGraphicsBeginImageContext(scaledSize)
image.drawInRect(CGRectMake(0, 0, scaledSize.width, scaledSize.height))
let scaledImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()

return scaledImage
}

关于ios - Tesseract OCR w/iOS & Swift 返回错误或乱码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29336501/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com