有没有办法让 MLVision 的文本识别速度更快?
Is there a way to make MLVision text recognition faster?
我正在为我的应用程序使用 MLVision 云文本识别。我 capture/upload 一张照片,然后我开始这个过程。当它识别图像并提取文本时,我将其分开并将每个分开的块附加到一个数组中。
下面的代码是整个过程。
lazy var vision = Vision.vision()
var textRecognizer: VisionTextRecognizer!
var test = [] as Array<String>
override func viewDidLoad() {
super.viewDidLoad()
let options = VisionCloudTextRecognizerOptions()
options.languageHints = ["en","hi"]
textRecognizer = vision.cloudTextRecognizer(options: options)
}
//where pickedImage is the image that user captures.
let visionImage = VisionImage(image: pickedImage)
textRecognizer.process(visionImage, completion: { (features, error) in
guard error == nil, let features = features else {
self.resultView.text = "Could not recognize any text"
self.dismiss(animated: true, completion: nil)
return
}
for block in features.blocks {
for line in block.lines{
//for element in line.elements{
self.resultView.text = self.resultView.text + "\(line.text)"
}
}
self.separate()
})
func separate(){
let separators = CharacterSet(charactersIn: (":)(,•/·]["))
let ofWordsArray = self.resultView.text.components(separatedBy: separators)
for word in ofWordsArray{
let low = word.trimmingCharacters(in: .whitespacesAndNewlines).lowercased()
if low != ""{
test.append(low)
}
}
print(test)
}
一切正常,我得到的结果是我 want.The 问题是我认为真的很慢。整个 process.Is 大约需要 20 秒,有什么方法可以让它更快?
提前致谢。
您正在使用 VisionCloudTextRecognizer。速度将取决于您的连接,在我的情况下它只有几秒钟。您的另一个选择是使用 on-device 文本识别或使用混合方法,您首先检测 on-device,然后稍后使用 Cloud API 进行更正。
我正在为我的应用程序使用 MLVision 云文本识别。我 capture/upload 一张照片,然后我开始这个过程。当它识别图像并提取文本时,我将其分开并将每个分开的块附加到一个数组中。
下面的代码是整个过程。
lazy var vision = Vision.vision()
var textRecognizer: VisionTextRecognizer!
var test = [] as Array<String>
override func viewDidLoad() {
super.viewDidLoad()
let options = VisionCloudTextRecognizerOptions()
options.languageHints = ["en","hi"]
textRecognizer = vision.cloudTextRecognizer(options: options)
}
//where pickedImage is the image that user captures.
let visionImage = VisionImage(image: pickedImage)
textRecognizer.process(visionImage, completion: { (features, error) in
guard error == nil, let features = features else {
self.resultView.text = "Could not recognize any text"
self.dismiss(animated: true, completion: nil)
return
}
for block in features.blocks {
for line in block.lines{
//for element in line.elements{
self.resultView.text = self.resultView.text + "\(line.text)"
}
}
self.separate()
})
func separate(){
let separators = CharacterSet(charactersIn: (":)(,•/·]["))
let ofWordsArray = self.resultView.text.components(separatedBy: separators)
for word in ofWordsArray{
let low = word.trimmingCharacters(in: .whitespacesAndNewlines).lowercased()
if low != ""{
test.append(low)
}
}
print(test)
}
一切正常,我得到的结果是我 want.The 问题是我认为真的很慢。整个 process.Is 大约需要 20 秒,有什么方法可以让它更快? 提前致谢。
您正在使用 VisionCloudTextRecognizer。速度将取决于您的连接,在我的情况下它只有几秒钟。您的另一个选择是使用 on-device 文本识别或使用混合方法,您首先检测 on-device,然后稍后使用 Cloud API 进行更正。