title:Swift OCR example keywords:swift,ocr,macos # Swift OCR example ## Intro After getting new M1 whanted to try some fancy machine learning stuff that avaliable. Got inspired when seen new post on reddit about OCRImage tool realse. As it was written in Object-C https://www.turbozen.com/sourceCode/ocrImage/ ,so I decided that is good learning task to read the code and reimplement all in Swift. ## OCR The whole working prototype can fit just in few lines of code. All you need to create is text recognition requester and handle that collect results. There is few example on apple doc page. ```siwft func recognizeImageUrl(_ url:URL, _ error: Error?) { var pieces:[TextPiece] = [] var err:NSError? var textRequest = VNRecognizeTextRequest(completionHandler: recognizeTextHandler(request:error:)) var handler = VNImageRequestHandler(url: url) do { try handler.perform([textRequest]) } catch { print("Cannot perform request error:\(error)") } } func recognizeTextHandler(request: VNRequest, error: Error?) { print("Start recognize handler") guard let observations = request.results as? [VNRecognizedTextObservation] else { return } let recognizedStrings = observations.compactMap { observation in // Return the string of the top VNRecognizedText instance. return observation.topCandidates(1).first?.string } print("\(recognizedStrings)") } ``` ## Source code Example XCode project is located at http://git.main.lv/cgit.cgi/OCRImage.git/ clone it and launch with XCode ```bash git clone http://git.main.lv/cgit.cgi/OCRImage.git/ ``` ## Future developments Could be nice to add sorting text, and some option to import location of text to json file with coordinates. Drawing boxes around original image with detected text is next thing to add. And there is alot of things that could be added to make it full featured OCR software. ## Links http://git.main.lv/cgit.cgi/OCRImage.git/ https://www.turbozen.com/sourceCode/ocrImage/ https://turbozen.com/sourceCode/ocrImage/ocrImage_src/ https://developer.apple.com/documentation/vision/recognizing_text_in_images http://git.main.lv/cgit.cgi/OCRImage.git/tree/OCRImage/main.swift?h=main