我在开发一个iOS应用时,一切看起来运作良好,直到我尝试捕捉数字时钟、计算器、血压计、电子温度计等设备的图像时才遇到问题。
不知何故,Apple Vision Framework 和 VNRecognizeTextRequest 无法识别这种原始LCD屏幕上的文本:
你可以尝试使用Apple的示例项目来捕捉数字,但它会失败。或者你可以尝试Vision Framework的任何其他示例项目,它也无法将数字识别为文本。
作为框架的最终用户,我能做些什么?有没有解决方法?
回答:
训练模型…
使用包含数字时钟、计算器、血压计等屏幕的多达10,000张图像,训练你自己的.mlmodel
模型。为此,你可以使用Xcode Playground
或Apple Create ML
应用。
以下是你可以复制并粘贴到macOS Playground中的代码:
import Foundationimport CreateMLlet trainDir = URL(fileURLWithPath: "/Users/swift/Desktop/Screens/Digits")// let testDir = URL(fileURLWithPath: "/Users/swift/Desktop/Screens/Test")var model = try MLImageClassifier(trainingData: .labeledDirectories(at: trainDir), parameters: .init(featureExtractor: .scenePrint(revision: nil), validation: .none, maxIterations: 25, augmentationOptions: [.blur, .noise, .exposure]))let evaluation = model.evaluation(on: .labeledDirectories(at: trainDir))let url = URL(fileURLWithPath: "/Users/swift/Desktop/Screens/Screens.mlmodel")try model.write(to: url)
从图像中提取文本…
如果你想知道如何使用Vision框架从图像中提取文本,请查看这篇文章。