Ajouter mes propres progrès sur ce, si quelqu'un a une meilleure solution:
J'ai été attiré la région de la boîte et le caractère cases à l'écran. La vision de l'API d'Apple est en fait très performant. Vous avez à transformer chaque image de votre vidéo sur une image et de le nourrir pour le logiciel de reconnaissance. C'est beaucoup plus précis que de se nourrir directement les pixels de la mémoire tampon de l'appareil photo.
if #available(iOS 11.0, *) {
guard let pixelBuffer = CMSampleBufferGetImageBuffer(sampleBuffer) else {return}
var requestOptions:[VNImageOption : Any] = [:]
if let camData = CMGetAttachment(sampleBuffer, kCMSampleBufferAttachmentKey_CameraIntrinsicMatrix, nil) {
requestOptions = [.cameraIntrinsics:camData]
}
let imageRequestHandler = VNImageRequestHandler(cvPixelBuffer: pixelBuffer,
orientation: 6,
options: requestOptions)
let request = VNDetectTextRectanglesRequest(completionHandler: { (request, _) in
guard let observations = request.results else {print("no result"); return}
let result = observations.map({$0 as? VNTextObservation})
DispatchQueue.main.async {
self.previewLayer.sublayers?.removeSubrange(1...)
for region in result {
guard let rg = region else {continue}
self.drawRegionBox(box: rg)
if let boxes = region?.characterBoxes {
for characterBox in boxes {
self.drawTextBox(box: characterBox)
}
}
}
}
})
request.reportCharacterBoxes = true
try? imageRequestHandler.perform([request])
}
}
Maintenant, je suis en train de réellement reconize le texte. Apple ne fournit pas construit dans le ROC modèle. Et je veux utiliser CoreML à le faire, donc je suis en train de convertir un Tesseract formés modèle de données pour CoreML.
Vous pouvez trouver Tesseract modèles ici: https://github.com/tesseract-ocr/tessdata et je pense que la prochaine étape est d'écrire un coremltools convertisseur qui prennent en charge ce type d'entrée et de sortie d'une .coreML fichier.
Ou, vous pouvez faire un lien vers TesseractiOS directement et essayer de l'alimenter avec votre région de boîtes et de caractère cases que vous obtenez à partir de la Vision de l'API.